프로그래머로 사는 법 (Making it big on software)
이 책을 읽으며 인상적인 기억하고 싶은 내용들을 기록했습니다.
소프트웨어 전문가 되려면 해야할 경험과 스킬들
-
최소한 네 가지 서로 다른 프로그래밍 언어와 네 가지 서로 다른 데이터 형식 (JPEG, XML, TEXT, MPEG 등)을 배운다.
-
적어도 천 명이 동시에 사용할 수 있을 정도의 소프트웨어를 개발한다.
-
1테라바이트 규모의 데이터까지도 스케일링할 수 있는 소프트웨어를 개발한다.
-
열 명 이상 참여하는 프로젝트에서 일한다.
-
지금은 질문에 답해줄 사람이 없는, 만들어진 지 5년 넘게 지난 코드를 확장하는 일을 한다.
-
남이 만든 코드의 결함을 적어도 40개 이상 수정한다.
-
UNICODE를 입력받고 두 가지 이상의 언어로 사용자 출력(에러메시지, GUI 텍스트 등)을 하는 다국어 지원 코드를 작성한다.
-
다음과 같은 상황에서의 성능 특성을 연구한다. 1) CPU 캐시 미스가 있는 상황과 없는 상황에서 메모리로 부터 데이터 가져오기 2) 디스크에서 연속된 블럭에서 읽어오는 경우가 무작위 입출력 탐색으로 읽어오기 3) 큰 블록의 입출력과 작은 크기의 입출력 4) 세가지 많이 쓰이는 언어 (JAVA, C/C++, PHP 등)
"프로그래머는 독창성과 논리적 사고력보다는 사례 분석의 완전성을 기준으로 평가해야 한다."
-
A, J. 펄리스, 프로그래밍에 대한 연구
인터뷰 - 비야네 스트롭스트룹 (C++ 언어의 창시자하고 최초로 구현한 인물)
-
어떤 때 성공했다는 느낌을 받으시나요? 뭔가 흥미진지하고 중요한 것에 제가 한 일이 쓰이는 걸 보면 성공했다는 느낌을 받습니다. 예를 들어 NASA 화성 탐사체 영상 분석 및 자동 운전 서브시스템에 C++언어가 쓰였을 때 짜릿한 느낌을 받았습니다.
-
소프트웨어 분야에서 불만거라고 할 만한 것은 없나요? 관리자난 경영진 중에 프로그래밍을 조립 라인에서 하는 저수준의 업무로 치부해 버리려는 사람이 많습니다. 그런 시각은 장기적으로 볼 때 비효율적이고 소모적인데다 비용을 증가시키게 마련입니다.
-
일과 삶의 조화를 어떻게 이루는지요? 일이 전부가 되는 상황을 피하는 비결이 있나요? 저는 일과 무관한 걸 많이 읽습니다. 달리기도 많이 합니다. 좋은 사람과 좋은 음식을 먹는 것을 좋아합니다. 출장 스케줄을 잡을 때는 일과 무관한 일정도 집어 넣으려고 노력합니다. 전부 일과 삶의 조화에 도움이 됩니다. 하지만 연구라는 건 딱 일과 시간에만 할 수 있는 일이 아닙니다.
-
소프트웨어 분야에서 성공하는 방법에 대해 조언 한 말씀 해 주시죠? 행운을 잡으시기 바랍니다. 자기가 잘 하는 일을 하시기 바랍니다. 열심히 일하되 너무 강박저긍로 하지는 마시기 바랍니다. 인간적으로 살길 바랍니다. 새로운 기회를 알아채고 시도해보지 못할 만큼 너무 하나에만 집중하거나, 너무 강박적으로 일하거나, 너무 자기 자시에게 확시해서는 행운을 잡을 수가 없습니다.
C++을 성공으로 이끈 강점
-
시간 및 공간적인 면에서 경쟁력
-
다양한 시스템에 적용할 수 있는 특성
-
C 언어와의 호환성
-
언어 메커니즘의 범용성(OOP 전용 언어가 아님)
-
한정된 목표 (C++는 완전한 시스템이 아니라 언어로 국한됨)
소트웨어 회사를 볼 때 다음과 같은 열 가지를 생각해 보자 (71 페이지)
-
전문적이 고품질 시스템을 만든 경험이 있는 회사인가?
-
뭔가 배울 만한, 진정 재능을 갖춘 사람이 있는 회사인가?
-
내가 들어갈 자리가 흥미로운 자리이고, 내가 믿을 수 있는 것과 관련하여 장기적인 성장 가능성을 가진 자리인가?
-
성공하기 위한 필요조건을 제대로 이해하고 실제 성공 실적을 가진, 상식에 맞게 행동하는 경영진이 있는 회사인가?
-
자기가 생산하는 제품에 대한 비전을 분명하게 가지고 있는 회사인가?
-
독립 연구 조직이 있는 회사인가?
-
어떻게 혁신하는 회사인가? 얼마나 근원적인 혁신을 이뤄낸 회사인가?
-
괘적하고 유연한 업무 환경을 갖추고 있는가? 내 라이프 스타일과 어울리는 회사인가?
-
회사가 안정적일 것 같은가? 10년 후에도 존속할 수 있는 회사라는 믿음이 가는가?
-
업계 표준에 걸맞는 수준의 급여를 지급하는 회사인가?
바람직한 소프트웨어 개발자 이력서
-
리더십 경력 :: 어떤 조직의 이사회에서 일했다거나 지역 스포츠 리그를 조직했다거나 하는 식으로 과외 활동에서의 경력을 포함하여 관리, 기술, 조직 리더십과 관련된 경력을 모두 수록한다.
-
특정 분야의 기술 :: TCP/IP를 배웠다면, 그 프로토콜을 직접 구현하고 개발해 본 적이 있는 것은 큰 장점이 된다.
-
수상경력
-
혁신 :: 특허나 학술논문
-
전문가 활동 :: 학술 단체 가입이나 컴퓨터 관련 동아리 활동 내용
-
과외활동 :: 리더십, 창의력이나 지적 능력을 보여줄 수 있는 항목은 모두 적자. 예를 들어 음악을 했다거나 축구 선수로 활동했다거나 토론 대회에서 활약한 경험 같은데게 두드러지도록 이력서를 작성하자.
훌륭한 면접을 위한 15가지 비결
-
해당 분야에 대해 연구하고, 그 기업의 현 위치를 파악한다.
-
면접일 전까지 그 회사에서 개발하는 기술에 관한 이해를 넓히고, 그 기술의 시장을 조사하자.
-
스킬 테스트용 질문, 퍼즐 형 문제, 현장에서의 프로그래밍 테스트에 대비한다.
-
자신감과 겸손함을 동시에 보인다.
-
명확하게 소통할 수 있다는 것을 보인다.
-
소프트웨어 분야에서의 폭넓은 관심을 보인다.
-
지피지기면 백전백승이다.
-
대부분 면접관은 어떻게드 지원자를 떨어뜨리기 위해 노력한다. 이 사람을 떨어뜨릴 구실을 찾게 마련이고, 회사에 맞지 않는 사람 때무에 생길 수 있는 골치거리, 애로 사항을 미리 방지하는 쪽에 더 관심이 많다. 떨어뜨릴 구실이 마땅하지 않으면 그 지원자는 다음 단계로 넘어갈 수 있다. 따라서 괜히 자진해서 상대방에게 추가 정보를 제공하는 일은 없어야 한다. 공연히 자기 인생사를 늘어놓고 부적절한 정보를 알려주는 바람에 시작도 하기 전에 자신을 침몰시키는 지원자가 부지기수다. 면접관이 이끌어가는 대로 쫓아가면서 개인 정보를 괜히 털어놓는 일은 피하는 것이 최선이다 .
-
긍정적인 면만 부각한다.
-
열정을 보이자.
-
회사에 대한 부정적인 질문은 하지 않는다.
-
개인 신상이나 건강에 관한 정보를 절대 공개하지 않는다.
-
자기선전을 준비한다.
-
거짓말을 하지 않는다.
-
면접후 에티켓을 갖춘다.
-
면접이 끝난 후에 전화나 이메일로 너무 귀찮게 만들지 않는다. 회사에서 필요로 하는 사람이라면 지구 끝까지라도 쫓아갈 것이다. 아무런 연락이 오지 않는다면 어떤 이유로든 관심이 없어졌다는 뜻으로 해석하면 된다. 어떤 회사도 최고의 지원자는 쉽게 놓아주지 않는다. 믿어도 좋다. 면접이 끝나고 나면 자신이 지원한 자리에 대한 열정과 시간을 내 준 면접관에 대한 감사의 메시지로 가득한 감사 쪽지 또는 이메일을 보내는 것으로 충분하다. 그걸로 끝이다.
-
면접코칭 전문 커리어코치로 부터 코칭을 받으면 좋다.
-
기타 면접 절차를 더 수월하게 이끌어 갈 수 있는 방법
-
면접 하루나 이틀 전에 면접 장소에 가보자. 장소나 사람에 대한 감각을 미리 익혀 두면 면접하러 갔을 때 그 회사에 더 맞는 사람처럼 행동하기가 수월할 것이다 .
-
자연스럽게 행복하면 더 자신감 있는 인상을 줄 수 있다.
-
그 회사에 대해 좋은 감정이 있다는 것을 드러내자.
-
이력서를 인쇄해서 가지고 가자.
인터뷰 :: 존 벤틀리 ( 생각하는 프로그래밍 저자)
한마디 주의사항을 말씀 드릴께요.
자기가 사랑하는 일을 하세요. 저는 제 프로그래밍에 대한 열정 덕분에 정말 많은 것을 얻었습니다.
자기 꿈을 추구하면서 저처럼 행운과 기쁨을 얻을 수 있기를 기원합니다.
자신이 사랑하는 일을 하라 - 존 벤틀리
-
행복을 찾으세요.
-
배울 수 있는 건 뭐든 배우세요.
-
새로운 것을 시도해 보세요. 하지만 옛것을 지키세요.
-
최고의 사람과 함께 일하세요.
-
조언자를 찾으세요. 자신이 존경하는 사람으로부터 배우세요.
-
자기 팀, 자기 회사, 자기 분야, 자기 이웃에게 보답하세요.
-
글쓰기와 코딩을 꾸준히 연습하세요. 동료의 일을 검토해 주고, 자신의 일도 동료에게 검토 받으세요.
-
자기 회사, 팀, 동료 등에게 멋진 사람이 되세요. 충성심은 서로 주고받는 것입니다.
-
좋은 책을 읽으세요. 저는 영작 책 중에서는 스트렁크와 화이트의 'Elements of Style', 수학 문제 풀이 책 중에서는 폴랴의 'How to Solve It', 실제 문제 해결에 관한 책 중에서는 'The Woolsey Papers'를 좋아합니다.