알라딘MGG와이드바


프로그래밍심리학/개인행위로보는프로그래밍 개발 이야기

원본




7장 프로그래밍 작업의 다양성 #

프로와 아마추어의 차이
  • 워드 커닝햄(위키위키 고안자, OOP, 디자인패턴, XP의 선구자)의 인터뷰
    "프로페셔널은 동료를 관찰하고 그들로부터 테크닉을 흡수할 수 있는 것이 매우 중요합니다. 
    아마추어는 "저는 제 방식으로만 일합니다"라고 말할 수 있습니다. 프로페셔널은 
    "한동안 당신의 방식으로 해보고 어떻게 되는지 봅시다"라고 말할 수 있어야 합니다."

    항상 훌륭한 것으로부터 배울것이 있는게 아니라, 잘못된 것에도 배우는 것이 있다. 좀더 넓게 크게 생각해서 지켜보는 마음가짐을 가져야 한다. [http]ologist`s blog 인용

  • 생각해 볼 문제

8장 개인의 성격 #

  • 미치광이 파괴자
    프로그래밍뿐이 아니라, 모든 것에서 통용되는 진리
    가장 무서운 적은 "어설프게 알고 있는 것"과 "자만"이다

  • [http]MBTI 테스트

  • 데우스 엑스 마키나
    고대 그리스와 로마 연극에서 줄거리를 풀어나가고 해결하기 위해 신이 때맞춰 나타나는 것.
    신이 기중기(그리스어로 '메카네')를 이용하여 하늘에서 나타났기 때문에 이 연극 장치를 
    '데우스 엑스 마키나'라고 부르게 되었다. 고대 이래로 예기치 않게 나타난 구조자나 
    혼란, 혹은 질서를 가져오는 뜻밖의 사건(예를 들면 미국 서부영화에서 결정적 순간에 
    기병대가 나타나 비극을 막는 것 따위)을 일컬을 때도 이 용어가 사용되어왔다. 이 
    연극장치는 BC 4세기부터 사용되었다. 소포클레스의 〈필록테테스 Philoctetes〉 
    연극에서도 여러 번 신이 등장하여 위기를 해결한다.


9장 지능 또는 문제해결력 #

  • 심리적 자세와 거리[http]한참을 고생한 버그

    1. forint i = 0; i < 10; ++i)                                                                                              ; <- 요거  
    2. {  
    3.       처리..  
    4. }  

10장 동기 부여와 훈련, 경험 #

  • 동기부여 
    문제는 푸는 것보다 발견하는 것이 더 중요하다.
    '나는 무엇을 해결하고 있는가?'
    '지금 이건 누구의 문제인가?'
    '이게 진짜 해결하고 싶은 문제인가?'

프로그래밍 직업의 다양성, 개인의 성격 #

  • 같이 일하기 싫은 프로그래머의 성격? 같이 일해야 한다면 어떻게 해야할까?
    • 책임감 없는 프로그래머
    • 뭔가 다른 동기(짝사랑을 맺어준다던가) 로 우연찮게 친해질 수도 있다
    • 개인 사정으로 인한 성격 변화에 대한 대처
      • 부모님 병 수발 때문에 잠이 부족해져서 짜증이 많아진 직원
        • 개인사 때문에 회사 업무에 지장이 생기면 프로의 자세가 아니다(윌 스미스의 '행복을 찾아서')
    • 개발자끼리 알력이 생겼을 때 중재해 줄 수 있는 대모같은 사람이 팀에 있으면 좋겠다
    • 문제를 자기 맘대로 재정의해서 풀어버리는 개발자
    • 코딩 랩퍼(코딩하면서 중얼중얼 랩으로 불만을 얘기하는 개발자), 우울라이저

  • [http]만화 '바텐더' 에 나오는 얘기 - 스탠다드를 지키면 실수를 막을 수 있다
    • 여친과 헤어진 후 비탄속에서 업데이트 하다가 DB 를 날려먹은 사례가 2-3명이나 있다!

  • 버그를 고치는 자세
    • 일단 고친 후 결과를 지켜보자 vs 원인을 제대로 알 때까지 그대로 두자
    • 방어 코드를 넣어서 제품을 보낸 적도 있다
  • 디버깅 - 대박 버그를 잡았을 때의 희열(아무도 안 알아주더라도)
  • 프로그래밍 하다보면 성격이 변하는 듯
    • 다른 직업도 그에 맞게 성격이 바뀌는 것 같다

  • 일하는 도중 휴식삼아 하는 일, 스트레스를 풀기 위해 하는 일은?
    • 일주일에 하루 정도 밤새 게임하는 등의 일탈, 잠이 최고, 운동

  • 도메인을 잘 아는 프로그래머 vs 공부 안 하는 프로그래머
    • 시게루도 게임 안 한다더라 -> 게임을 안 하면 대화가 안 된다 -> 너무 게임만 하면 베끼기만 한다, 게임 공부한다면서 실제로는 놀기만 하는 개발자가 많다 -> 게임을 싫어하면서 게임 개발하는 사람도 있다

  • 다른 부서(예 : QA, CS) 의 이해를 위해 job switch 해 본 적 있나?
    • 신입을 몇 개월 QA 에 보냈는데, 나중에 물어보니 신입들은 하나도 도움 안 되더라고 하더라. 1,2년 개발시킨 후에 보냈어야 하지 않았을까?
    • CS 에서 하루 정도 앉아서 고객 상담을 들어보니, 고객이 내가 생각한 것과는 참 다르구나 는 걸 알게 되었다

  • 개발 마인드를 전파할 수 있는 방법은? 불가능한가?

  • 신입에게 어떤 업무를 줘야할까?
    • 자사 게임을 한 달간 시킨다
    • 한 달간 코드 리딩만 시킨다(절대 코드를 수정할 수는 없음). 다른 사람의 코드를 읽는 능력이 생기더라
    • 주석이 없는 함수에 주석을 다 달아라고 시킨다
    • UML 이나 다른 문서화를 시킨 후, 발표를 시킨다
    • 그냥 놔 둔후, 나중에 뭐 했는지 물어본다(알아서 일을 찾아서 하는 사람이 되자)
    • 3개월간 알고리즘 문제를 풀게 한 후, drop 시키기도 한다

  • 팀에서 사람마다 다른 재능을 효율적으로 활용한 경험이 있는가?
    • 디버깅 잘 하는 사람, 설계 잘 하는 사람, 요구사항 분석 잘 하는 사람
    • 하지만 급한 버그가 났을 때는, 사람마다 다양한 시각에서 버그를 볼 수 있기 때문에 팀원 전체가 버그를 잡는게 중요하다
    • 즉, 너무 성향별로 작업을 나누면 오히려 안 좋을 수 있다
    • 그리고 편애로 보일 수 있기 때문에, 팀장 입장에서는 그냥 '스탠다드'로 하는 게 낫다

  • (면접을 볼 때) 이 사람이 정말 프로그래밍을 사랑하는지 알 수 있는 질문은?
    • 자기 개발 여부(공부, 책, 스터디 등), 혹은 오픈소스 참여 등을 얘기하는가?
      • 이런 건 거짓말해도 조금만 캐 내어보면 다 들통난다.
    • 기획서를 주고 어떻게 구현할지 설명해 보라고 한다

  • 문제 해결 : 컴퓨터는 거짓말을 하지 않는다
    • 뭔가 잘못 돌아간다면 99.999% 는 사람이 잘 못 한거다
    • 사실 0.0001 % 는 기계 잘못인 경우도 있다.

  • 싫어하는 작업을 맡았을 때 재미있게 일할 수 있는 방법은?
    • 반복 작업을 자동화하거나, 문서화해 보자.
    • 이번 기회에 이 작업으로 내가 뭘 할 수 있을지를 고민해 보자
      .
  • 일은 주어진 시간을 다 채울때까지 늘어난다 - 파킨슨
    • 느슨하게 일정잡은 프로그래머
    • 팀장이 일을 파악하지 못하면 이런 일을 막을 수 없다

  • 비자아적 프로그래밍 vs 창조적 프로그래밍(software creativity 2.0)
    • 서로 어울리는 작업이 있지 않을까?

  • 목표로 했던 기능을 일정보다 빨리 구현한 상태
    • 다른 일을 더 할 것인가? 이번 일을 더 심화할 것인가?
    • 이건 기획자나 PD 와 상의해야 할 듯
    • 상점을 3 번째 구현중인데, prototype 때 너무 많은 걸 보여줬더니 힘들어졌다
      • 구현하는 도중에 계속 feedback 을 주고 받자

  • 피드백을 높이는 방법
    • msn 대신 팀별 IRC 를 열어, 모든 채팅은 전체 채팅으로 만들어 둔다
      • 누가 뭐 하는지 전부 알 수 있게 된다
    • 파트원끼리는 항상 전체 메일
    • 아틀란티카 온라인 팀처럼, 내가 만든 작업물은 전부 인트라넷에 올리고, 다른 팀원은 항상 칭찬만 리플에 달아주기

동기부여와 훈련 경험, 지능 또는 문제 해결력 #

  • 동기부여 : 인센티브를 주겠다 vs 이 문제는 당신만 해결가능하다
    • 인센티브를 준다는 건 경영자 입장에서 해 줄 수 있는 최고의 보상
    • 그 약속을 제대로 지키지 않기 때문에 인센티브로 동기부여를 못 하는거지, 개발자가 인센티브를 싫어하는 건 아니다

  • 기술을 습득하는 나만의 방법은?
    • 책에 나와있는 코드를 다 일일이 타이핑 해 본다
    • 공책에 손으로 코딩해 본다(예전 포트란때는 그렇게 했다)
    • 쉬운 책(혹은 만화책) 부터 같은 주제의 책을 여러권 동시에 산다

  • 다른 도메인의 지식 습득(예 : 미술) 도 큰 도움이 되더라


덧글

  • all2one 2009/06/09 22:26 # 삭제 답글

    생각할거리가 많군요. 잘 읽었습니다.
  • 써니 2009/06/09 23:41 # 답글

    프로그래밍 책은 꼭 사서 읽고, 올려주시는 포스팅와 대조해 보겠습니닷!

    상관없는(?) 질문인데, MindMap 툴은 어떤 걸 쓰시나요?
    요즘 마인드 맵을 쓸 일 종종 생겨서요.
  • 박PD 2009/06/11 09:46 #

    http://conceptleader.com/
    라고 하는군요. 개인 사용자에 한해서 무료라고 합니다.
  • 테트라 2010/04/05 16:54 # 삭제 답글

    좋은 글입니다. 제 블로그로 퍼갈게요. 만일 원치 않으시면 바로 지우도록 하겠습니다.
  • 박PD 2010/04/05 20:39 #

    네. 댓글 남기고 퍼가주셔서 감사합니다.
댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2