레이블이 사람과 기술인 게시물을 표시합니다. 모든 게시물 표시
레이블이 사람과 기술인 게시물을 표시합니다. 모든 게시물 표시

2008년 11월 24일 월요일

The 12 Best Questions for Team Members

제가 구독하는 블로그에서 유용한 정보가 있어서 소개를 할까합니다.
이 설문은 First, Break All the Rules: What the World's Greatest Managers Do Differently (Marcus Buckingham and Curt Coffman)에 소개가 되어 있습니다.

아래 12가지 설문을 통해서 직업의 만족도, 상사와의 관계, 자기계발등 조직의 몰입도를 측정할 수 있습니다.
IT나 Software 조직에 국한 된 것이 아니라, 모든 회사나 조직에 적용 가능한 일반적인 설문입니다.

1. Do you know what is expected of you at work?
Do you know what are wrong ways and right ways of doing your work? Or do you think nobody would notice the difference if you’d switched to coding on your office walls with a crayon marker?
2. Do you have the materials and equipment you need to do your work right?
Are tools and processes supplied and customized for you? Or do you feel that buying and carrying your own stone tablets for writing source code would be an improvement over your current situation?
3. Do you get the opportunity to do what you do best every day?
Are your talents being used to their fullest potential? Or will your mother and her Chihuahua have just about the same chance at success when they’d attempt to take over the work that you do?
4. Did someone recently give you recognition or praise for doing good work?
Is anyone noticing you’re making a difference, in a positive way? Or are they more eager to point at that minor error that almost completely blew up the company, but actually didn’t?
5. Do your colleagues seem to care about you as a person?
Are they interested in your hobbies, your spouse, your friends and family? Or are you not comfortable enough to reveal that you have this fascination for bonsai trees, and are planning to marry one?
6. Are you encouraged to work on your (self-)development?
Has someone discussed with you how you can further improve as a person? Or do you think they won’t even care if you changed into Captain Code, saving the world from bugs and bad formatting?
7. Do people make your opinion count?
Are your colleagues listening to you? Or might you just as well talk to the receptionist’s hair dresser, for all the good it would bring you?
8. Do you feel that your job is important?
Do you understand how your work is a significant part of the value your organization tries to create? Or do you feel that your holidays have about the same amount of impact on the success of your organization?
9. Are your colleagues committed to doing quality work?
Do you feel that doing the best work possible is important to your co-workers? Or do they care more about their working times, their dogs, their collections of beer bottles, and the value of their stock?
10. Do you (or would you like to) consider some colleagues as friends?
Do you enjoy meals, movies, games, or even holidays with some of your colleagues? Or do you intentionally live at the other side of the country, staying as far away from them as possible?
11. Does someone care about the progress of your work?
Is someone interested in what you do at work, and how your work is coming along? Or do they prefer to talk about the weather, or their own heroic stories of saving the company?
12. Are you given the opportunity (time/resources) to learn and grow?
Do you have the means and ability to improve the way you do your work? Or are you expected to learn and grow on your own time, while walking the dog, or taking a shower?

2008년 11월 13일 목요일

신입 개발자가 들어오면?

신입 개발자가 들어오면 어떻게 하시나요?

회사에서 소프트웨어를 개발하기 위해서는 많은 것을 알아야 함에도 불구하고 딱히 가르칠게 별로 없는 경우를 많이 보았습니다. 체계적인 교육 방법로 마땅치 않고요.
어떻게 신인 개발자를 가르치고 있는지 제가 아는대로 한번 나열을 해보죠.
  • 멘토(사수)를 지정해서 맨투맨으로 이거 저거 생각나는 대로 알려준다.
  • 회사에 문서는 정말로 많다. 책꽂이로 한 벽 가득이다. 그 중에서 뭘 보라고해야 할지 잘 모르겠다.
  • 제품에 관한 변변한 문서가 하나도 없다. 있다 하더라도 부실하거나 옛날 버전이다. 그래서 말로 아는대로 설명해준다.
  • 개발하는 제품의 메뉴얼을 보여주고 제품의 기능을 익히게 한다.
  • 일단 일을 시키고 본다. 물어보는 것이 있으면 그때 그때 알려준다.
  • 소스코드를 보게 한다. 소스코드를 분석해서 스스로 제품의 구조를 알아내는 것도 큰 공부다.
위와 같은 현상이 소설은 아닙니다. 실제로 주변에서 흔히 있는 일을 적어본 겁니다.
우리는 전혀 다르다라고 하시는 분도 있나요?
아니면 이게 무슨 문제지? 라고 생각하는 분도 있나요? 음... 그럼 그렇게 생각하는 것이 또 문제네요. ^^

사실 신입개발자가 들어왔을 때 효율적으로 교육을 시킬 수 있는 역량을 갖추는 일은 쉬운 것이 아닙니다.
그 정도 되면 회사가 소프트웨어 개발 회사로서 왠만한 모든 것은 다 갖추고 있는 것이니까요.

이는 "닭이 먼저냐 달걀이 먼저냐"와 비슷합니다.
그렇게 잘 교육된 신입 개발자는 나중에 고참이 되어서 새로운 신입사원에게 자신이 겪은 대로 할 것입니다.

모든 것을 다 갖추어야 한다고 하면 막막하니까 핵심적인 것만 몇 가지 얘기를 해보죠.

내가 어느 소프트웨어 회사에 신입 개발자로 입사를 했습니다.
당연히 그 소프트웨어 회사는 다음과 같은 기본적인 시스템은 갖추고 있어야 합니다.
  • 소스코드관리시스템
  • 버그관리시스템
  • 개발 프로세스
  • 코딩컨벤션(프로그래밍 가이드)
그리고 입사를 하면 가장 먼저 위의 시스템과 프로세스, 규칙을 익히고 제품에 대한 기본적인 개발문서를 보게 됩니다. 이때 문서가 너무 많거나 아예 없거나 부실해서 있으나마나 하면 소용이 없죠.
그래서 제품의 스펙문서(SRS, Software Requirements Specification)을 먼저 보고 제품을 이해하게 되면 설계서를 보게 되죠. SRS라는 용어가 낯선 분이 있을텐데, SRS는 앞으로 제가 올리는 수많은 글들의 주요 주제가 될 예정이니 지금은 그냥 소프트웨어의 스펙을 정리한 문서라고만 생각해도 됩니다.

이제 저는 소프트웨어 개발에 투입될 기본적인 준비는 된 겁니다. 

그리고 나면 버그를 고치는 일부터 할당이 됩니다. 아주 쉬운 버그부터 시작합니다.
고참은 고치는데 10분이면 될 일은 나는 반나절은 걸려서 해야 할 겁니다. 그래도 그만한 가치가 있는 일이지요.
  • 먼저 버그관리시스템에서 버그를 할당 받습니다.
  • 선배가 어느 파일을 어떻게 고쳐야 하는지도 가이드를 해줍니다.
  • 소스코드관리시스템에서 코드를 내려 받아서 소스코드를 수정합니다.
  • 선배들이 코드리뷰를 해줍니다.
  • 빌드스크립트를 이용해서 빌드도 해봅니다.
  • 개발자 Unit Test도 수행하고요.
  • 버그관리시스템도 갱신합니다.
이런 일을 몇 번 하면서 점점 더 어려운 일을 하지만 항상 선배들이 코드리뷰를 해줍니다.
그러고 나면 설계에도 참여를 하고 새로운 모듈이나 제품도 맡게 됩니다.

엄청나게 많은 일을 몇 줄로 작성을 하다 보니 너무 간단해지기는 했지만 기본은 아래 3가지 입니다.
  • 제대로된 시스템(Infrastructure system)과 개발 프로세스
  • 최신 버전으로 업데이트된 제대로 적힌 핵심 개발문서(SRS)
  • Code Review, Peer Review
사실 이 기본을 갖추는 일은 매우 어려운 일입니다.
어떻게 이러한 기본을 갖춰나가야 할지에 대한 의문이 있다면 저와 계속 의논을 해나가면 어떨까요?