소프트웨어 공장 신입 개발자를 위한 가이드 V1.0소개

 

현재 회사에서 일하고 있는 업무상 소프트웨어 개발자를 많이 만나게 된다.

현재 학생부터 정말 오랫동안 소프트웨어 개발에 종사하고 계신 사장님까지 아주 작은 회사에서 아주 큰 회사까지 정말 다양하게 만나서 그 이야기를 들어보면 사람만큼이나 정말 다양하다.

 

소프트웨어 개발자는 소프트웨어를 만드는 사람이다. 소프트웨어 디자인에 참여 하는 사람도 있고, 하루 종일 개발만 하는 사람도 있고, 테스팅을 하는 사람도 있다. 이건 아주 아주 간단히 축약을 한 것이고 실제 소프트웨어를 만드는데 참여하는 사람은 이것보다 상상이상으로 많다. 이건 팀 구성에서 자세히 알아 보도록 하겠다.

 

개발자들과 팀장 그리고 사장님을 만나다 보면, 소개를 요청 하는 경우가 간혹 있다. 개발자의 경우 이력서까지 보내주시는 분들이 있는데, 이력서를 보면 정말 천편일률적인 경우가 대부분인 것 같다.

대부분 언제부터 개발을 시작했는지부터 알고 있는 기술은 먼지 그리고 참여한 프로젝트를 아주 멋지게 나열한 이력서가 대부분이었던 것 같다.

특히 자신이 사용 가능하거나 사용해본 기술 목록은 환상적인 10단 콤보 수준인데, 재미있는 건 학생이나 현업 개발자나 차이가 별로 없다.

 

좋은 소프트웨어 개발자는 방어적 코딩으로 개발을 하고, 디자인과 코드를 리뷰하고, Unit이나 TDD, 리팩토링을 통해 지속적으로 수정, 테스팅하고 분석을 통해 지속적으로 개선해서 좋은 제품을 만드는 게 덕목일 것 같다.

그러기 위해서는 제품이 돌아갈 운영체제도 알아야 하고, 개발 환경과 런타임, 개발 언어 그리고 개발 도구는 기본이고 여기에 개발 방법론부터 모델링, 데이터베이스, 등 정말 알아야 할 게 많은 것 같다. 그러니 당연히 위의 10단 콤보는 이런 것들이 쭉 나열되어 있다.

 

저 또한 이런 기술들을 공부하고, 2000년부터 이런 것들을 꾸준히 강연해 왔다.

 

너무 궁금해서 마이크로소프트에서 제품을 직접 만드는 개발팀에서는 신입 개발자에게 무엇을 가장 중요하게 생각하는지 궁금해서 오랜 시간 동안 제품 개발에 참여하신 분에게 질문을 하니 아래 요소를 꼽았다.

 

협업(협력)

의사 결정

혁신

학습

시간 관리

의사 소통(듣기, 말하기, 쓰기, 협상, 미팅 등)

 

그리고, 몇 가지 문서 링크를 주셨는데, 보면서 공부하니 도움이 많이 된 것 같다.

제가 공부한 내용들과 주위에서 들은 것들 그리고 잡다한 것을 정리해서 소프트웨어 회사에 들어가는 신입급 개발자들에게 필요한 가이드를 시리즈로 블로깅 하면 어떨까 해서 이 시리즈를 생각하게 되었다.


제목은 소프트웨어 공장 신입 개발자를 위한 가이드 V1.0” 이다.


소프트웨어 생명 주기부터 경력 관리까지 총 10가지 주제로 구성할 계획이다.

목표는 매주 하나의 주제를 블로그로 적자 인데, 사실 분량이 꽤 많은 내용도 있어 매주 하나의 주제는 쉽지 않을 것 같다. 제 생각으로는 대략 16주 정도면 될 것 같다. 여기에는 C#이나 코딩 가이드, Visual Studio 사용법, 세부 빌드 프로세스 등은 직접적으로 설명하지 않는다.

대신 중간에, 박스 형태 내용으로 추가할까 한다.

준비 기간도 꽤 되었고, 많은 것을 보이려는 욕심도 있다 보니 16주짜리 주제라 부담 또한 만만찮은 것 같다.

자 그럼 첫 질문 들어 갑니다!

 

현재 내가 일하고 있는 개발환경에서 가장 방해가 되는 요소 세가지만 꼽아 보세요. 그리고 그걸 없애기 위해 난 무슨 노력을 하고 있는지그리고 그게 해결(또는 제거J)이 되었을 때, 바뀌게 되는 효과와 개발 생산성은 어떻게 될지 생각해 보세요? (아무래도 세가지 요소 중 PM이나 팀장 이런 단어가 꼭 들어갈 것 같아 해결이라고 했습니다. 제거는 좀J)

 

아래는 앞으로 진행할 목록 입니다.

 

1.     소프트웨어 생명 주기

A.     소프트웨어 프로세스 모델

B.     품질 프로세스

C.     스크럼

2.     팀 구성

3.     협력

A.     함께 일하기

B.      기대

4.     의사 소통

A.     대화 기술

B.      문서 기술

5.     좋은 제품 개발

A.     성능

B.      신뢰

C.      계측 및 국제화

D.     보안

E.      유지 보수

6.     디버깅

A.     버그란?

B.      버그를 피할 수 있는 코딩

C.      실패의 재현

D.     문제 파악

E.      에러 수정

7.     기능 구현

A.     측정

B.      디자인

1.      왜 디자인인가?

2.      디자인 프로세스와 원칙

3.      디자인 영향

4.      연습

5.      디자인 문서

C.      테스팅

1.      버그의 영향(효과)

2.      개발자 테스팅 연습

D.     코드 검사

1.      검사란 무엇이고 왜 해야 하나

2.      검사 프로세스

3.      프로세스 향상

8.     일정

9.     우선 순위와 시간 관리

A.     우선 순위

B.      결정

C.      시간 관리

D.     과유불급

10.   경력 관리

11.   결론

 

Posted by SF공장장

티스토리 툴바