1. 아키텍쳐를 위해 투쟁합니다.
소프트웨어는 말 그대로 부드러움을 지니도록 만들어졌습니다. 소프트웨어가 중심인 산업의 핵심은 이 부드러움입니다. 비즈니스 목표를 달성하기 위해, 그리고 고객에 꾸준하게 가치를 전달하기 위해 소프트웨어는 변경하기 쉬워야(부드러워야) 합니다.
문제는 당연히 시스템의 아키텍쳐입니다. 아키텍쳐가 특정 형태를 다른 형태보다 선호하면 할수록, 새로운 기능을 이 구조에 맞추는게 더 힘들어집니다.
그렇기 때문에 아키텍쳐를 위해 투쟁해야 합니다. 소프트웨어 엔지니어는 다른 이해관계자들과 동등하게 논쟁해야 합니다. 이는 소프트웨어 엔지니어의 가장 중요한 역할 중 하나입니다.
아키텍쳐가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 시스템에 변경을 가하는 일이 현실적으로 불가능해집니다. 이러한 상황이 발생하도록 용납했다면, 이는 결국 소프트웨어 엔지니어가 스스로 옳다고 믿는 가치를 위해 충분히 투쟁하지 않았다는 뜻입니다.
2. 아이디어 구상을 시작할 때부터 참여합니다.
좋은 팀은 제품 관리자, 제품 디자이너, 엔지니어가 함께 모여 앉아서 기능성, 사용자 경험, 가용 기술에 대해 서로 주고받으며 포용합니다. 나쁜 팀은 각자의 소속 자리에 앉아서, 문서를 통해 업무를 요청하고 미팅을 잡아달라고 다른 사람에게 요청합니다.
혁신의 열쇠는 팀의 엔지니어입니다.
엔지니어는 제품 발견 단계에서 아이디어 구상을 시작할 때부터 참여할 필요가 있습니다. 이는 엔지니어가 고객의 문제에 직접 노출되어야 한다는 의미이기도 합니다. 그렇게 하지 않으면, 엔지니어들의 중요한 통찰이 프로세스에 너무 늦게 반영됩니다.
Acme에는 현재 총 12명의 소프트웨어 엔지니어가 있습니다. CTO 1명, VP of Engineering 1명, 테크 리드 2명, 소프트웨어 엔지니어 8명으로 구성되어 있습니다. 업무는 목적 조직 단위로 하고, 매주 1시간씩 모두 함께 기술 스터디를 하거나 업무중에 부딪혔던 기술적인 도전 과제에 대해 경험을 공유하고 있습니다.
Acme는 TypeScript(JavaScript)를 사용하여 개발하고 있습니다. (전체 기술에 대한 경험이 없으셔도 상관없습니다.)
Acme에서 VP of Engineering를 맡고 있는 김영훈입니다. 한 때 팀으로 일하는 것보다 혼자서 일 하는게 더 좋은 성과를 낼 수 있다고 믿었는데, 수많은 삽질과 몇 번의 서비스 실패, 몇 번의 번아웃을 겪고난 후, ‘혼자보다 팀으로 일할 때 더 큰 성과를 낼 수 있다’고 생각이 바뀌었습니다. 지금은 훌륭한 동료들과 함께 팀으로 성과를 내고 있고, 매니저로서 엔지니어가 생산성을 높일 수 있도록 업무에 몰입할 수 있는 환경을 구축하기 위해 노력하고 있습니다.
안녕하세요 Acme에서 CTO를 맡고 있는 박국진입니다. 저는 2007년 넥슨에서 소프트웨어 엔지니어로 처음 커리어를 시작하였으며, 최근 5년동안은 스타트업에서 일하면서 기술 중심의 제품을 만드는 일을 하고 있습니다. 소프트웨어 엔지니어링 조직 및 관리에 대해서는 Joel on Software 시리즈(Joel Spolsky), Peopleware, Slack(Tom DeMarco), The Manager's Path(Camille Fournier)와 같은 책에서 많은 영향을 받았으며, 일반적인 관리 영역에서는 피터 드러커와 앤디 그로브의 영향을 받았습니다. 특히 최소 한달에 한번 모든 엔지니어와 일대일 미팅을 통해 최대한 업무에 어려움이 없도록 지원하려고 노력하고 있습니다.
서류 → 온라인 코딩 테스트 → 화상 면접 → 대면 면접