20년간 소프트웨어 엔지니어로서 배운 20가지
(simplethread.com)- 난 아직 잘 모름 : 우리는 평생 배워야 하는 사람들
- 소프트웨어 개발에서 제일 중요한 것은 필요한 것을 만드는 것
- 최고의 소프트웨어 엔지니어는 디자이너처럼 생각함
- 최고의 코드는 코드가 없거나, 유지할 필요가 없는 코드
- 소프트웨어는 목적을 위한 수단
- 때로는 톱날 가는 것을 멈추고, 뭐라도 자르기 시작해야함
- 뭐가 가능한지 잘 이해하지 못한다면 좋은 시스템을 설계할 수 없음
- 모든 시스템은 결국 짜증나니까, 극복할 것
- 아무도 "왜"를 충분히 묻지 않음
- 우리는 10x 프로그래머를 찾는 것보다, 0.1x 프로그래머를 피하는데 훨씬 더 집중해야함
- 시니어 엔지니어와 쥬니어 엔지니어의 가장 큰 차이는 도구나 소프트웨어 작성 방식에 대한 자신만의 의견을 형성 했는지 여부
- 사람들은 진정으로 혁신을 원하지 않음
- 당신의 데이터는 시스템의 가장 중요한 부분
- 기술적 상어(빠른 변화에도 오래 살아남은 기술)를 찾을 것
- 겸손을 무지로 착각하지 말 것
- 소프트웨어 엔지니어는 정기적으로 글을 작성해야함
- 프로세스를 가능한 간결하게(Lean) 유지할 것
- 소프트웨어 엔지니어도 (모든 인간과 마찬가지로) 주인 의식을 느껴야 함
- 지원자가 좋은 팀원이 될지, 면접으로 알 수 있는건 없다.
- 항상 더 작은 시스템을 구축하기 위해 노력할 것
중요
- 이 글의 처음에 이런 경고가 있습니다.
"어드바이스가 많은 블로그"를 읽으려고 할때, 대부분의 조언은 Contextual한데 많은 어드바이스들은 그 컨텍스트와 함께 전달되지 않음
컨텍스트를 이해하지 못하는 어드바이스는 무의미하거나 심지어 해로움 - 그래서 자신의 컨텍스트에 대한 설명을 약간 적어놨는데,
- 경력의 첫 절반은 중소기업/스타트업에서 일했고, 컨설팅 회사에 가서 큰 비즈니스 쪽 일을 했음
- 그리고는 SimpleThread 를 창업해서 2명에서 25명으로 키웠음
- 10년전에는 대부분 중소기업과 일을 했고, 지금은 대기업/중소기업이 혼합
- 그래서 본인은
- 항상 매우 작은것 부터 많은 일을 해야하는 작고, Lean 한 팀에서 일했음
- 특정 도구보다는 "작동하는 소프트웨어"를 중요하게 생각함
- 항상 새로운 프로젝트를 시작하지만, 여러 시스템을 유지보수 해야함
- 대부분의 고려사항들보다, 엔지니어 생산성을 중요시함
- 이 컨텍스트를 이해하고 위에 글을 보기 바랍니다. 제목만 옮겼으니 상세내용들은 원문을 참고하세요.
- 소프트웨어의 가장 어려운 부분은 올바른 것을 구축하는 것
이건 - 소프트웨어의 가장 중요한 부분은 필요한 것을 구축하는 것
이 더 좋아보입니다.
사람들이 혁신에 대해서 이야기하지만, 실제로는 혁신적인 것을 가져다 주면 대부분 부정적인 피드백이 온다고 하는거고요. 그래서 길게 보고 진행해야 한다고 얘기합니다.