3. 시작하며
2015년 조사에 따르면 전문가 집단의 유망 직업 전망은 다음과 같다.
결과에 따르면 프로그래머는 매우 좋은 직업이다… 진짜?
4. 프로그래머 직업의 진실
• 3D 업종
– 대부분의 프로그래머는 허리나 목에 문제가 있다
– 잦은 야근으로 만성 두통이나 우울증에 시달린다
• 의외로 박봉
– 게임 회사가 그나마 많이 주는 편인데 … 말 다했지
• 미래가 불투명하다
– 내가 은퇴할 때까지 프로그래머로 일 할 수 있을까?
35. 프로그래머의 본분
관리자들이 강하게 밀어붙이는 이유는 그것이 그들의 본분이기 때문이다.
프로그래머들의 본분은 좋은 코드로 양질의 소프트웨어를 만드는 것이다.
다행히도 많은 관리자들은 좋은 코드가 필요하다는 것에 동의한다.
설사 관리자가 나쁜 코드를 요구하더라도 그대로 따른다면
그것은 프로그래머답지 못한 행동이다
45. 애자일 선언문
절차와 도구를넘어선 개성과 화합
종합적인 문서화를 넘어선 동작하는 소프트웨어
계약과 협상을 넘어선 고객과의 협력
계획 준수를 넘어서 변화에의 대응
46. 수많은 애자일의 실패
대부분의 애자일은 크런치 상태를 풀어 쓴 것이다.
애자일의 짧은 주기와 요구사항 변경은 코드를 더 난잡하
게 만들고 무능력한 프로그래머를 애자일 뒤로 숨게 하는
효과가 있다.
47. 그럼에도 불구하고
소프트웨어 개발이 불확실하고 이를 유연하게 받아들임으
로써 위험도를 낮출 수 있다는 것에 동의하고 개선된 애자
일 방법론을 계속 연구중
48. 진행상황 파악이 쉽다
결과물에 대해서 신뢰도가 높다
작업 진행 속도가 빠르다
변화에 대응하기 유리하다
제품의 개발 방향 공유가 잘 된다
팀간의 소통이 활발해진다
상황 변화에 취약하다
문제가 마지막에 가서 발견되기 쉽다
최종일정을 도무지 알 수 없다
팀원 모두가 핵심 인력이어야 한다
프로젝트 기여도 측정이 어렵다
폭포수 모델 개발 애자일 개발
49. 애자일 활용 방법
• 예상치 못한 야근이 계속 이어질 때
• 데모 시연 일정이 짧을 때
• 팀원들이 프로젝트 관심도가 너무 낮을 때
게임회사에서는
일반적으로
폭포수 모델이
잘 맞지…
53. 버전 컨트롤 소프트웨어
• CVS
– 가장 오래된 버전 컨트롤 시스템
– 체크인/체크아웃을 통해 동시성 관리
• Subversion (SVN)
– CVS 시스템의 개량 모델
– 버전을 도입해서 파일의 변화를 추적
• Git
– 소스코드 관리에 특화된 버전 컨트롤 시스템
– 전통적인 모델과는 달리 서버에 접속을 유지할 필요가 없다
– 최근 트렌드. 뭔가 있어 보인다
• Mercurial
– Git 의 형제 (둘다 리눅스 커널 소스 관리를 위해 시작)
– 페이스북이 소스코드 관리에 사용하면서 알려지기 시작
57. 프로그래머의 진로
• 아키텍트 : 시스템 설계를 전문으로 하며 객체화나 패턴 적용
등을 주로 담당한다.
• 테스터 : 유닛테스트나 오토매틱 테스트를 전문으로 하는 직
업. 한국에는 그다지 유명하지 않지만 미국같은 곳에서는 유
망 직업으로 소개되기도 한다.
• 빌드/통합 : 빌드 마스터라고도 하며, 소스코드 커밋관리와 자
동 빌드 시스템, 브랜치 관리를 하게 된다. 넓은 의미로 오픈
소스 프로젝트에서 기여자 관리로 이에 해당한다고 할 수 있
다.
58. 프로그래머의 진로
• 테크니컬 리드 : 프로젝트에 필요한 원천 기술과 문제 해결기법에 대해서
가이드 해준다. 결과물에 대한 이해가 높아야 하고 이를 완성하는데 기여하
여야 한다.
• 매니져 : 테크니컬 리드가 작업이 진행되게 하는직책이라면, 매니져는 작업
자체를 설정하는 직책이다. 일정과 퀄리티에 대한 가이드를 해주어야 하며
리더쉽이 필요한 직책이다. 오래 일한 사람에게 매니져를 주는 경우가 많은
데, 매니징 스킬에 대한 이해도 없이 실패하는 경우가 많다.
• PM : 제품을 생산해서 실제 클라이언트(사용자) 손에 들어갈 때 까지의 과
정을 종합적으로 관리한다. 개발 프로세스에 대한 지식을 필요로 하기 때문
에 개발자가 PM 으로 직책을 이동하는 것이 유리하지만, 현실적으로 마켓
팅이나 사업 담당이 개발 프로세스를 공부해서 오는 경우가 대부분이다.
지쳐서 정리가
안된다.
59. 리더쉽도 훈련이다
일을 시킨다
권위를 이용한다
일이 잘못되면
책임을 묻는다.
방법을 알고 있다
명령을 한다
“Go”
일을 가르친다
의도를 알려준다
일이 잘못되면
문제를 해결한다
방법을 보여준다
요청을 한다
“Let’s go”
60. 티내면서 일하기
• 매니져는 프로그래머가 무엇을 했는지 잘 모른다
• 자신의 작업이 창의적이고 높은 밸류를 가지고 있다면
적극적으로 설명해본다.
• 자신의 작업을 다른 사람에게 명쾌하게 설명하는 것은
의외로 어렵다.
– 이것을 훈련하면 이직 할 때 큰 도움이 …
61. 업무 외 활동
• 커뮤니티 활동
– 개발자 커뮤니티
– 스터디 모임
• 오픈 소스 프로젝트 기여
• 컨퍼런스/워크샵 참여
– http://www.slideshare.net/devcatpublications/ndc2013-19986939
62. 퇴근 후 수입 활동은 주의
대부분의 회사에서 아르바이트를
비롯한 “투잡” 에 대해서 금지하고
있다.
사규에 어긋나지 않도록 주의!
63. 건강 관리
• 개인적인 경험으로 건강에 무리가 갈정도의 야근이나 폭음 등
은 조심하자
• 야근으로 인한 건강악화가 생겨도 업무상 관계 인정이 매우
힘들다
– 거기다가 환자가 직접 증명해야 한다.
• 때로는 과감한 휴식도 장기전을 위해 필요하다고 조언한다.
– 돈과 건강을 바꿀 수 있는 것은 건강했을 때 단 한번 뿐이다.