토요일, 4월 30, 2016

[B급 프로그래머] 끝내주는 프로그래머가 되기 위해 필요한 요건은?

Quora를 읽다 보니 What are the things required to become a hardcore programmer?라는 질문이 올라와서 한 번 정리해보았다. "끝내주는 프로그래머가 되기 위해 필요한 요건은?" 과연 무엇일까?

  1. 모르는 코드에 대해 용감하게 뛰어들어라. 익숙하지 않은 코드 기반으로 뛰어드는 행위는 불편함과 공포를 초래한다. 많은 사람들은 심지어 시도조차 하지 않는다. 만일 이런 두려움을 개의치 않는다면 훨 씬 쉽게 중요한 기술을 습득하게 되며, 이런 과정을 거치며 상당히 뛰어난 프로그래머가 된다. 오픈소스 라이브러리나 다른 팀에서 만든 라이브러리가 생각처럼 동작하지 않는다면, 디버깅을 위해 원시 코드로 뛰어드는 유연성을 제공한다. 여기서도 성장 마인드셋이 중요하다.
  2. 디버깅 기술을 완벽하게 습득하라. "예상처럼 코드가 동작하지 않는 이유가 무엇일까?" 소프트웨어 공학자로서 매일 묻는 질문이다. 효율적인 디버깅 능력은 일을 제대로 해내기 위한 공학도의 능력에 예상외로 많은 영향을 미친다. 하지만, 학교에서 제대로 가르치지 않으며 기술 면접에서도 저평가된 부문이다. 효율적인 디버깅 방법은 무엇일까? 핵심을 말하자면 과학적인 수단을 동원해 파고들면 된다.
    • 무슨 일이 일어나고 있는지 추측하자.
    • 추측이 옳다고 가정하고, 추측의 추이가 어떻게 될지 파악하자.
    • 이런 추이를 반박하는 증거를 수집하기 위해 관찰하자.
    • 모순점을 발견했다면, 추측이 틀렸으므로 다시 추측하자. 모순점을 발견하지 못했다면, 가능한 설명을 하나 확보했다.
  3. 시간을 절약하는 도구에 투자하라. 컴퓨터가 처음 등장했을 때, 컴퓨터 자원은 제한되어 있었으며 비쌌기에 프로그래머는 최대한 아껴서 사용했어야만 했다. 오늘날 아마존 클라우드 비용은 몇 푼 안 된다. 반면에 여전히 하루는 24시간이고 일주일은 7일이다. 이는 컴퓨터에 넘길 수 있는 수작업이 있다면 이를 최대한 컴퓨터에 넘겨야 함을 의미한다. 시간을 절약하는 도구와 자동화된 작업 흐름에 투자함으로써 이를 달성할 수 있다. 자동화는 밤낮을 가리지 않으며 다른 문제에 초점을 맞출 수 있게 만든다. 기계가 할 수 있는 일을 사람이 하지 마라.
  4. 반복 속력을 최적화하라. 정의된 함수 위치를 찾아 탐색하는 데 12초가 걸린다고 가정하자. 하루에 60회 비슷한 작업을 한다면, 파일을 뒤적거리는 과정에 매일 12분을 소비하는 셈이다. 텍스트 편집기에서 키보드 단축기를 충분히 익혀 12초가 아니라 2초에 가능하게 만든다면 10분을 절약할 수 있다.
  5. 시스템 수준의 사고 능력을 배양하라. 프로그래밍을 할 때, 명세에 맞춰 코드를 구현했다면, 작업이 "끝난" 것으로 간주하기 쉽다. 하지만 실제로는 빙산의 일각에 불과하다. 정말 중요한 코드를 빌드하고 배포하기 위해서는 전체 시스템 수준으로 코드 범위를 확장하게 사고 단계를 높여야 한다.
    • 코드가 다른 코드 기반이나 다른 사람이 만들고 있는 기능과 어떻게 맞아 떨어지는가?
    • 충분히 자체 테스트를 진행했으며, QA 팀에서도 만들어진 기능을 충분히 테스트했는가?
    • 코드 배포를 위해 양산 환경에 어떤 변경을 가할 필요가 있는가?
    • 새로운 코드가 다른 동작 중인 시스템의 성능이나 행동 방식에 불리한 영향을 주지 않는가?
    • 코드를 사용하는 고객이나 사용자가 예상처럼 행동하는가?
    • 코드가 예상대로 비즈니스에 좋은 영향을 미치는가?
EOB

토요일, 4월 23, 2016

[B급 프로그래머] 4월 3주 소식

(금주의 짤방: 리더쉽의 5단계. 1.능력이 뛰어난 개인 - 2.합심하는 팀원 - 3.역량있는 관리자 - 4.유능한 리더 - 5.레벨5 경영자 via @realgsong)

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리
EOB

[일상다반사] 클린코드 복간판 판매부수 5000권 돌파 소식과 이벤트

독자 여러분들께 기쁜 소식 하나 전달해드리겠다. 엊그제 클린코드 복간판이 5000권을 돌파했다! 다른 출판사에서 처음 나온 책은 대략 1000권 정도 판매되었으리라 추정하고 있으므로 누적으로 6000권 정도 판매했다고 보면 틀림없을 것 같다. 요즘과 같은 출판계 불황에 놀라울 따름이다.

두 가지 관점에서 의의를 찾아야 할 것 같다. i) 자바 세상에서 품질이 높은 코드를 작성하기 위한 독자 여러분들의 관심이 아주 높다 ii) 좋은 책은 꾸준히 사랑 받는다.

그래서 애독자 여러분을 위한 이벤트를 준비해보았다. 우선, 신규 구매 독자를 위해 구매 영수증(오늘부터 유효하다) 인증샷을 보내주시면 세 분을 추첨해 커피 기프티콘을 선물드리겠다. 다음으로 기존 독자분들 중에서 클린 코드 책을 읽고 나서 겪은 경험담을 공유해주시면 블로그에 실어드리고 특히 가장 멋진 경험을 나눠주신 두 분에 대해 소프트웨어 악취를 제거하는 리팩토링: 구조적 설계 문제를 풀어내는 최선의 실천법과 커피 기프티콘을 선물로 보내 드리겠다. 기간은 4월 말까지다.

다시 한 번 독자 여러분들의 성원에 감사드린다. 꾸벅~

EOB

토요일, 4월 16, 2016

[독서광] 명저, 비즈니스에 답하다

몇 년 전에 [독서광] 100 Best Business Books - 당신이 찾는 비즈니스의 모든 것이라는 책을 독자 여러분들께 소개했었는데, 오늘은 이와 유사한 국내서를 한 권 소개하려 한다. '명저, 비즈니스에 답하다'라는 제목으로 나온 이 책은 세계적인 비즈니스 명저 35권을 추천하고 20권을 선별해 사례 중심으로 흥미롭고 알기 쉽게 소개하며 그 중 10권을 집중 조명하고 있다. '100 Best Business Books'가 지난 50년간 주목받은 경제경영 베스트셀러 100권을 엄선해 정리했지만, 선별한 책에 대해 아주 간략한 정보(책 주제, 책이 중요한 이유, 책이 도움을 주는 방식, 기타 참고 도서)만을 제공하기 때문에 감질맛이 났다면, '명저, 비즈니스에 답하다'는 선별된 책에 나오는 주요 내용을 요약 정리함으로써 빠른 시간 내에 필요한 내용을 습득할 수 있게 도와준다.

책은 크게 의사결정, 마케팅, 리더십, 경영전략, 혁신&창의성, 소비, 세일즈, 대인 관계, 자기 계발, 메가 트렌드라는 10가지 주제를 놓고 각 분야에서 책 두 권을 골라내어 본문에 나오는 재미있는 부분을 소개하는 동시에 의미하는 바를 정리하는 형태를 따른다. 물론 이런 유형의 책을 많이 읽어본 독자분이라면 책 내용이 다소 부족하다는 느낌이 들 수도 있지만, 어디까지나 요약과 소개라는 책의 의도 때문이므로 특별히 문제는 없어 보인다.

결론: 비즈니스에 관심이 많지만 시간이 부족한 분들께 추천한다.

EOB

토요일, 4월 09, 2016

[B급 프로그래머] 4월 1주 소식

(금주의 짤방): 충돌(collison) 위험에 처한 차량

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 빅데이터/인공지능 소식
  5. 기타 읽을거리

마무리 영상:

EOB

토요일, 4월 02, 2016

[독서광] 어떻게 의욕을 끌어낼 것인가

지난 번에 소개한 성공의 새로운 심리학(빌 게이츠가 올해의 책으로 추천해서 세간의 화제가 되었었다)과 마찬가지로 오늘 소개할 '어떻게 의욕을 끌어낼 것인가' 역시 이분법적인 방식으로 세상을 바라보더라도 강력한 통찰을 얻을 수 있음을 보여준다. 이 책은 신호등의 빨간불과 파란불 같은 인간의 두 가지 동기 성향에 대해 다루는데, 하나는 손실을 최소화하고 실패를 피하려 노력하는 '안전지향'(빨간 불)이며 다른 하나는 보상을 최대화하고 기회를 놓치지 않으려는 '성취지향'(파란불)이다. 동기 성향이 중요한 이유는 우리의 일상 삶은 물론이고 업무까지도 영향을 미치기 때문이다. 특정 개인이 어떤 동기 성향을 보이느냐에 따라 일하는 스타일, 관리 방법, 동기 부여 방법이 180도 바뀌기 마련이다. 아, 이런 관점에서 타인의 동기 성향은 물론이고 자신의 동기 성향을 파악하면 남과 다른 나에 대해 고민할 필요가 줄어드니 일석이조의 효과를 얻을 수 있다다.

독자 여러분을 위해 간략한 소개 자료가 담긴 동영상을 공유해드린다.

지금부터 간단한 테스트를 한번 해보자. 나는 안전지향적인 성격이 강할까? 아니면 성취지향적인 성격이 강할까? 다음 항목에 대개 각각 1점(전혀 그렇지 않다)에서 4점(대단히 그렇다)까지 점수를 매겨보기 바란다.

  1. 평소에 나는 실수를 막고 상사와의 갈등을 피하는 데 초점을 맞춘다.
  2. 나는 내가 맡은 업무상 책임과 의무에 미홉할까 봐 걱정이 된다.
  3. 나는 일을 통해 희망과 포부를 달성할 수 있으리라 자신한다.
  4. 나는 내 직업적 목표를 달성하지 못할까 봐 자주 적정한다.
  5. 나는 직업적 성공을 달성할 방법에 대해 자주 생각해본다.
  6. 나는 일이 어떻게 잘못될 수 있을까 곧잘 상상해보곤 한다.
  7. 지금 직장에서 나의 일차적인 목표는 직업적 야망을 달성하는 것이다.
  8. 지금 직장에서 나의 일차적인 목표는 실직을 피하는 것이다.
  9. 평소에 나는 기회를 포착하고 그 기회를 향해 열심히 노력하는 데 초점을 맞춘다.
  10. 나는 장차 내가 얼마나 크게 성공할까 곧잘 상상해보곤 한다.

이미 눈치챈 분들도 계시겠지만 Q1+Q2+Q4+Q6+Q8=안정지향 점수, Q3+Q5+Q7+Q9+Q10=성취지향 점수이다. 일 개인이 안정지향적이면서 성취지향적일 수도 있다는 사실에 주목할 필요가 있다. 일의 유형에 따라 또는 일의 상황에 따라 어떤 경우는 안정지향적으로 반응하다가 어떤 경우에는 성취지향적으로 반응해도 놀랍지 않다. 성향별로 업무와 관련해 강점과 주의할 점을 정리하면 다음과 같다.

 성취지향형안정지향형
업무에서 강점창의성, 혁신, 기회 포착, 신속한 일 처리, 브레인스토밍정확성, 안정성, 일이 매끄럽게 진행되도록 하는 데 능함, 분석적 사고
주의해야 할 점지나친 낙관주의, 엉성하고 성급한 일 처리, 한꺼번에 너무 많은 일을 감당하려고 함, 계획성 부족위험 기피, 너무 느린 일 처리, 마감 시한으로 인한 스트레스, 현재 상태에 지나치게 안주함

그렇다면 성향별로 효과를 발휘하기 위해 적합한 메시지를 어떻게 던질까? 책에서는 다음과 같은 방법을 제안한다. 1) 획득(성취지향) 또는 손실(안정지향)의 관점으로 프레이밍하기, 2) 이유(성취지향) 또는 방법(안정지향) 강조하기, 3) 형용사(성취지향) 또는 동사(안정지향) 사용하기, 4) 성공 또는 실패 회피를 강조하기, 5) 변화 또는 안정성 강조하기, 6) 모험 또는 신중한 접근을 말하기, 7) 감정 또는 이성에 호소하기, 8) 활기 또는 차분한 제스처 사용하기, 9) 전체(성취지향) 또는 부분(안정지향) 강조하기

1)번 예를 들어보면 다음과 같다.

 이익에 접근손실을 회피
축구 연습다섯 번 중 적어도 세 번은 득점을 하기 바란다.다섯 번 중 두 번 이상은 실축하지 말아야 한다.
건강 관리활동적인 생활을 함으로써 얻을 수 있는 혜택은 다음과 같습니다.비활동적인 생활을 함으로써 치러야 할 대가는 다음과 같습니다.
업무 인센티브매출 목표치를 달성했을 때 발생하는 좋은 일들매출 목표치를 달성하지 못했을 경우 발생하는 나쁜 일들

2)번 예를 들어보면 다음과 같다.

 이유방법
축구 연습리그 최고의 팀이 됩시다!상대편의 단단한 수비를 뚫는 기술에 집중합시다.
건강 관리규칙적으로 운동을 하면 외모도 기분도 좋아질 것입니다.규칙적으로 운동을 하면 칼로리가 연소되고 신진대사가 활발해집니다.
업무 인센티브우수 성과자들은 빠르게 진급할 수 있습니다.상위 세 명의 우수 성과자들만 올해 승진 자격을 얻게 됩니다.

약간의 차이가 가져올 놀라운 효과에 대해 알게 되면 동기성향에 대해 새롭게 바라보게 될 것이다.

결론: 2016년 1분기 강력 추천도서이며, 특히 동기 부여와 관련해 고민이 많은 분들이라면 반드시 읽어보시기 바란다.

EOB