by 박PD
2009/06/09 20:36
parkpd.egloos.com/1915905
덧글수 : 5
원본
7장 프로그래밍 작업의 다양성 # 프로와 아마추어의 차이
워드 커닝햄(위키위키 고안자, OOP, 디자인패턴, XP의 선구자)의 인터뷰 "프로페셔널은 동료를 관찰하고 그들로부터 테크닉을 흡수할 수 있는 것이 매우 중요합니다. 아마추어는 "저는 제 방식으로만 일합니다"라고 말할 수 있습니다. 프로페셔널은 "한동안 당신의 방식으로 해보고 어떻게 되는지 봅시다"라고 말할 수 있어야 합니다." 항상 훌륭한 것으로부터 배울것이 있는게 아니라, 잘못된 것에도 배우는 것이 있다. 좀더 넓게 크게 생각해서 지켜보는 마음가짐을 가져야 한다. ologist`s blog 인용 생각해 볼 문제 8장 개인의 성격 # 미치광이 파괴자 프로그래밍뿐이 아니라, 모든 것에서 통용되는 진리 가장 무서운 적은 "어설프게 알고 있는 것"과 "자만"이다 MBTI 테스트 데우스 엑스 마키나 고대 그리스와 로마 연극에서 줄거리를 풀어나가고 해결하기 위해 신이 때맞춰 나타나는 것. 신이 기중기(그리스어로 '메카네')를 이용하여 하늘에서 나타났기 때문에 이 연극 장치를 '데우스 엑스 마키나'라고 부르게 되었다. 고대 이래로 예기치 않게 나타난 구조자나 혼란, 혹은 질서를 가져오는 뜻밖의 사건(예를 들면 미국 서부영화에서 결정적 순간에 기병대가 나타나 비극을 막는 것 따위)을 일컬을 때도 이 용어가 사용되어왔다. 이 연극장치는 BC 4세기부터 사용되었다. 소포클레스의 〈필록테테스 Philoctetes〉 연극에서도 여러 번 신이 등장하여 위기를 해결한다. 9장 지능 또는 문제해결력 # 심리적 자세와 거리한참을 고생한 버그 for ( int i = 0; i < 10; ++i) ; <- 요거 { 처리.. } 10장 동기 부여와 훈련, 경험 # 동기부여 문제는 푸는 것보다 발견하는 것이 더 중요하다. '나는 무엇을 해결하고 있는가?' '지금 이건 누구의 문제인가?' '이게 진짜 해결하고 싶은 문제인가?' 프로그래밍 직업의 다양성, 개인의 성격 # 같이 일하기 싫은 프로그래머의 성격? 같이 일해야 한다면 어떻게 해야할까?책임감 없는 프로그래머 뭔가 다른 동기(짝사랑을 맺어준다던가) 로 우연찮게 친해질 수도 있다 개인 사정으로 인한 성격 변화에 대한 대처부모님 병 수발 때문에 잠이 부족해져서 짜증이 많아진 직원개인사 때문에 회사 업무에 지장이 생기면 프로의 자세가 아니다(윌 스미스의 '행복을 찾아서') 개발자끼리 알력이 생겼을 때 중재해 줄 수 있는 대모같은 사람이 팀에 있으면 좋겠다 문제를 자기 맘대로 재정의해서 풀어버리는 개발자 코딩 랩퍼(코딩하면서 중얼중얼 랩으로 불만을 얘기하는 개발자), 우울라이저 만화 '바텐더' 에 나오는 얘기 - 스탠다드를 지키면 실수를 막을 수 있다 여친과 헤어진 후 비탄속에서 업데이트 하다가 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 이 문제는 당신만 해결가능하다인센티브를 준다는 건 경영자 입장에서 해 줄 수 있는 최고의 보상 그 약속을 제대로 지키지 않기 때문에 인센티브로 동기부여를 못 하는거지, 개발자가 인센티브를 싫어하는 건 아니다 기술을 습득하는 나만의 방법은?책에 나와있는 코드를 다 일일이 타이핑 해 본다 공책에 손으로 코딩해 본다(예전 포트란때는 그렇게 했다) 쉬운 책(혹은 만화책) 부터 같은 주제의 책을 여러권 동시에 산다 다른 도메인의 지식 습득(예 : 미술) 도 큰 도움이 되더라
포스트 메타 정보
덧글
상관없는(?) 질문인데, MindMap 툴은 어떤 걸 쓰시나요?
요즘 마인드 맵을 쓸 일 종종 생겨서요.
라고 하는군요. 개인 사용자에 한해서 무료라고 합니다.