'허니몬의 IT 이야기/프로그래머, '코드 엔지니어''에 해당되는 글 99건

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'



이 글이 주변 분들에게 '읽을만했다'는 평가에 힘입어 2번째 이야기를 써봅니다. 프로젝트에서 담당했던(지금 생각하면 그리 복잡하지도 어렵지도 않았는데, 처음 시작할 때는 참 막막했던) 일이 어느정도 정리가 되면서 무리하게 야근을 하지 않으면서 조금 느긋함을 누릴 수가 있군요. ^^ 일하는 곳 부근 커피숍 한구석에 앉아서 투다다닥 글을 써내려가고 있습니니다. 

원래 이런건 누가 '잘한다 잘한다 잘한다' 라고 해줘야 흥이나서 투다다다다 하고 써내려가는 거거든요.



  내가 양재에 위치한 CJ시스템즈 산하의 CJ교육센터(내가 교육을 수료할 때쯤, CJ시스템즈에서 교육센터를 폐쇄하였다. 왜 그랬는지는 지금도 의문이다)에서 6개월짜리 Java Expert 교육과정을 듣기 시작한 것은 3월 중순이었다. 2월달에는 태국 푸켓 섬에서 조금 더 바다로 나아간 ‘9개의 섬’이란 뜻을 가진 ‘시밀란’에 45일의 다이빙 투어를 다녀왔다. 시밀란투어를 갈 당시에 내 통장에는 대략 800만원 정도의 여유자금이 있었다(실업급여 포함?). 다이빙 투어는 실업급여를 받은 걸로 다녀올 생각으로 가볍게 다녀왔다.



  처음 떠나는 해외여행이었고 참 편하게 다이빙을 즐겼다. 그리고는 버는 것 없이 열심히 썼다. _-);; 그래서 교육을 마치고 취업을 준비하려고 할 때 쯤에는 통장은 거의 바닥을 보였다. 다행히 그때쯤 한 회사에 들어가면서 생활비를 벌었고, 조금씩 여유가 생기기 시작했다. 하지만, 이 글을 쓰고 있는 지금도 통장은 바닥이 보이려고 하고 있다. !? 돈은 아껴쓴다고 하는데 통장의 잔고는 늘어나지 않는 것은 왜 그런지 참 불가사의하다.

  이 때쯤부터 블로그(http://ihoney.pe.kr)와 위키(http://sunfuture.springnote.com)에 교육내용들을 정리하기 시작했다. 덕분에 블로그를 잘 뒤지면 그 때의 기록들이 비교적 상세히 남아있어 추억에 잠길 때면 블로그를 뒤적여본다. 그 시작(http://www.ihoney.pe.kr/285)도 그리 거창하거나 복잡스럽지 않다. 시밀란에 가서 실컷 스쿠버다이빙을 즐기고 와서 교육을 시작했다. 처음에는 HTML, CSS, Javascript Front-end 쪽에 대한 기초를 배웠다. 대학교때 배웠던 내용이었으므로 그리 어렵지 않았다. 그리고 Oracle 그 다음에 Java 언어로 들어간다.


사진 속의 주인공은 나와 사촌이자 'NewYorker Hooni(http://kimdohoon.com/)'를 운영하고 있는 뉴요커(유부남이자 귀여운 미뇽이의 아버지)


  CJ정보기술교육센터(길어서 귀찮으니 줄여서 이하 ‘교육센터’)에서 마련한 Java 교육과정은

  다른 교육기관들의 교육과정과 크게 차이나지 않았지만 교육을 담당하시던 팀장님(‘강영식’님)이 열성적으로 해주신 탓에 알차게 진행되었다(하루라도 연락없이 땡땡이 치면 가차없이 연락을 해주고, 진도를 제대로 따르지 못하는 이들이 있으면 걱정해주고, 참 잘해주셨다). 




  Java는 대학교때 1학기 수업으로 ‘수박 겉할기’로 배운 것이 전부였던 나로서는 어느정도 Java 라는 언어에 대해서 자신감을 가질 수 있는 계기가 되었다(하지만, 지금도 Java 라는 언어는 어렵고 어렵다. 몇년이 더 지나야 익숙해질 수 있을까?).

내가 듣고 있던 교육과정은 ‘미취업자’를 대상으로 하는 교육이었다. 그래서 다양한 분야의 사람들이 몰려들었다(교육센터에서 교육대상자를 선정할 때 가능하면 IT 비관련대상자로 했다. ‘잘 모르는 사람이 들으면 더 열심히 듣는다.’ 의 논리였다. 나의 경우도 그러지 않았을까? ㅎㅎ.). 


교육과정에서 내준 과제 등을 미리 풀어서는 스프링노트(http://sunfuture.springnote.com/pages/3013096)에 적어서 반원들에게 배포하는 시건방을 떨었으니... 그런데 이런 시건방은 ‘아무것도 모르는 지금’도 떨고 있다. _-); 난 건방져


  아참, 교육생들에 대한 이야기를 하다가 말았는데... 처음에 교육을 시작할 때는 24명의 인원이 시작을 했지만, 마지막 수행프로젝트를 마치고 수료식을 할 때는 17명이 남았다. 7명이 도중에 적성이 맞지 않는다거나 다른 직종으로 조기 취업하는 등의 이유로 이탈하게 되었다. 그리고 이 17명 중에서 자바쪽이 아닌 쪽에서 일하는 사람들(휴대폰-임베디드쪽 2, ASP1 , 델파이 1, 경리 3, 유지보수 1명 등)이 더 많았다


개발자(프로그래머)’라는 직업은 다른 쪽보다 ‘노력’도 중요하겠지만 ‘적성’이 중요한 요소라는 생각이 든다. 나도 ‘적성’이 맞는지는 모르겠다.


나는 '적성'보다는 어디에 가서든 중간은 가는 ‘특성’으로 ‘적성’을 적절하게 랩핑해서 살아가고 있는건 아닐까?


  교육과정 중에 반장을 자처하면서 참 여러가지들을 경험할 수 있었다

  교육생들끼리 의견충돌로 주먹다짐을 하는 상황에 서있기도 했고, 프로젝트를 진행하면서 

이기적인 모습(자율적으로 프로젝트팀을 구성하도록 해뒀더니[이례적으로 팀장님에게 이야기해서 2주전부터 프로젝트를 미리미리 준비해서 잘 만들어보라고] ‘왠걸?’ 잘하는 사람들끼리 쑥덕쑥떡해서 못하는 사람들은 제외를 시키고 팀을 구성해버린 것이다. 이때 참 어이가 없었다. 그렇게 사전에 이야기 해서 사람들끼리 잘 조율해서 균형있게 팀을 꾸리기를 바랐지만 내 바람은 보기좋게 깨졌다. 결국은 팀장님과 강사님의 개입으로 팀원을 분배했다. 잘하는 사람들만 모여서 만든 팀은 걍 냅뒀다. '얼마나 잘하나 보자.' 라는 나쁜 심보로...)

들도 보고 늦은 시간까지 야근(은 정말 뗄래야 뗄 수 없는 것일까? ㅎㅎ)을 하면서 프로젝트에 집중했다. 한달여의 시간을 프로젝트에 집중하면서 거기에 푹 빠져들었다.




  그때 교육과정에서 배운 내용과 지금 수행하고 있는 업무의 간극은 굉장히~~~~ 크다. 6개월의 기간을 통해 자바를 전부 배우고 익히는 것에 무리가 있다는 것은 배우는 중에도, 일하고 있는 지금도 번번히 되내이는 부분이다. 어떻게 보면 대학에서 1학기 배운 Java 보다는 그 깊이나 넓이가 커진 것은 분명하지만, 6개월만 뚝딱 배우고 ‘마스터’했다고 할 수 있는 프로그래밍 언어는 없다고 생각한다. 주변에서 끊임없이 공부하고 교류하고 익히는 프로그래머들의 모습을 보면 그 사실은 더욱 극명해진다. 한걸음 나아가기 위해서, 한단계 오르기 위해서 많은 시간과 노력을 필요로 하는 것은 어느 직업이나 마찬가지겠지만 끊임없이 새로운 기술적인 트렌드가 쏟아져 나오는 IT 쪽에서는 심각한 스트레스로까지 여겨진다. 나는 그렇게 생각하지만 ‘마스터’는 그렇게 생각지 않으시는 것도 같다. ㅎㅎ


이제 막 교육과정을 마치거나 졸업을 하고 취업을 준비하고 있는 개발자 준비생들에게 중요한 것,


자신이 배운 것이 전부가 아니다. 자신이 모르는 것이 많다는 것을 인정하고 아는 것’


이다. 새로운 것을 배우고 새로운 곳에 적응하고 새로운 흐름에 올라타기 위해서 필요한 마음가짐이라 생각한다. 흔한 비유로 ‘개구리가 멀리 뛰어오르기 위해서 몸을 움추리듯 자신을 낮춰라’ 라고 할까나? _-);; 이렇게 말은 하지만... 사실,


난 건방지다.’


모르면 모른다. 알면 안다.’ 이야기 한다.


모르는 걸 안다고 말하는 것 만큼 쉽지만 어려운 일이 있을까?

취업을 준비하면서 취업상담을 해주던 헤드헌터가 이야기 했다.


“‘무조건 했다. 할줄 안다.’고 이야기 해라. 면접관들이 어떻게 알겠는가? 취업하고 배우면 된다.”


틀린 말은 아니다. 하지만 맞는 말도 아니다. 취업준비생에게 중요한 것이 취업이겠지만, 자신이 가지지 못한 것을 가졌다고 허세를 부리면서 취업을 하기를 권하고 싶지 않다.


정직이 최선이다.’


그것이 ‘시작하는 자의 자세’라고 생각한다. 어차피 자신이 가진 것이 없다는 것은 상대방도 알고 있다. 화려한 이력들로 이력서를 꾸며봐야 몇마디의 질문과 행동으로 뽀록나기 쉽상이다.


내가 아닌 나는 내가 아니다.’


시간이 지나면 꾸며져있던 나는 원래대로 돌아가게 된다. 그럼 나를 고용한 사람도 힘들고 나도 힘들어진다. 있는 그대로를 보여주자. 있는 그대로의 ‘나’를 보여줬더니 안된다고? _-);;; 그럼 꾸미지 말고 새로 만들어!! 이런 거에 토달시간에 차라리 운동을 하면서 무거워진 몸을 가볍게 하란 말야. 안된다고, 하기싫다고 투덜거릴 시간이 아깝잖아. Move! Move!





이렇게 번갯불에 콩볶아 먹듯이 1.2 Java Expert 교육과정(http://sunfuture.springnote.com/pages/3003742)에 대해서 글을 써내려왔습니다. ㅡ_-) 그 때 참 재미있었는데... 기억은 안나(읭?)!!! 지금도 재미나게 일을 하고 있고, 앞으로도 그렇게재미있게 일을 했으면 합니다. ^^


다음 이야기는 << 1.3. 교육과정 수료 후 취업과정과 일하면서 느낀 여러가지 것들 >> 에 대해서 정리해보고자 합니다. 2009년 10월에 취업한 후에 지금 회사에서 근무하기까지 1년 반동안 4번의 이직을 한 화려한 이직경험도 나올 것 같습니다.


To be continue...일까?????


P.S. 아... 앞에 앉아 계신 아리따운 여성분에게 자꾸 눈이 가요...

이런 몹쓸 눈!!!

ㅌㅌㅌㅌㅌㅌㅌ

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

이 글을 써야지하고 틀만 잡아놓고 묻어두고 있었는데...

2011/04/28 - [허니몬에 관한 보고서/허니몬의 물병편지] - 개발자의 길, Developer's road

최근 자주 만나면서 얼굴을 익힌 어느 지인(개발자들 사이에서 'Outsider' 로 유명하신 분)의 소환에 

다시 글을 써야겠구나.


라고 꿈틀거리면서 글을 써내려가는 채비를 합니다. 글의 구조는 보시는 것처럼 

  1. 개발자 입문

    1. 나의 입문 과정

    2. Java 교육 과정의 현재와 업계의 상황

    3. 교육과정과 현업의 괴리감

  2. 개발자 성장

    1. 새로운 것들을 접하다.

    2. 많은 사람들을 만나다.

    3. 부지런히 정진하기

  3. 개발자 미래

    1. 3년 후

    2. 5년 후

    3. 10년 후

    4. 현재를 준비하기

의 구조로 되어 있습니다.  나의 입문과정을 시작해볼까요~~




1. 개발자 입문

1.1. 나의 입문 과정

  내가 '개발자'가 되기로 결심하게된 계기는 그리 거창하거나 멋있지 않았다. 어려서 하고 싶었던 일(퀴즈탐험 ‘신비의 세계’()를 보며 자란 나는 ‘생태학자’가 되고 싶었다)을 하지 못하게 되면서 다음 진로를 고민하던 중에 선택하게된 차선책이었다.


  생태학자가 되려고 생물학과에 들어갔지만, 내가 바라는 ‘동물 생태학’을 다루시는 교수님(어류 생태학을 다루는 박사님은 계셨다)이나 과목이 없었다. ‘동물 생태학’과 같은 고전 생물학은 거의 사라지고, ‘분자생물학’과 같은 응용 생물학 쪽으로 학문의 흐름이 변해가고 있는 상황이었다. 학과에 계신 교수님들의 전문분야도 대체적으로 이런 ‘분자생물학’ 이나 ‘식물 생태학’ 쪽에 치우쳐져 있던 탓에 뜻한 바를 제대로 이루기가 어려웠다.

  아쉬운 마음을 뒤로하고, 계획했던 대로 1학년 과정을 마치고 군대를 다녀왔다. 4월에 제대한 나는 9개월정도의 여유시간이 있었다. 지인의 소개로 용산의 컴퓨터 전문업체에서 파트타임을 하면서 사람들과 만나는 시간을 가지며 컴퓨터에 조금씩 매료되어갔다. 초등학교 6학년때쯤부터 A.T. 컴퓨터를 가지고서 게임을 하면서 컴퓨터와는 친숙한 편이었다. 지금도 그때의 경험을 바탕으로 해서 쓸만한 컴퓨터는 내손으로 쓱쓱 조립하고 사용환경을 설정하는 것에는 능숙한 편이다. 용산에서 일하면서, 컴퓨터학과 쪽으로 갈걸하고 고민하기 시작한다.

  그리고 1학기가 시작하는 것에 맞춰 학교에 복학했다.
  내가 다니던 강원대의 생물학 전공 코스는 1학년때 생명과학부로 120명이 정원으로 시작하여 생물학 기초수업을 듣고 2학년이 되면서 생화학, 미생물학, 생물학으로 전공을 선택하도록 되어 있었다. 생물학과는 그중에서 가장 인기가 없는 학과였다. 그것과 상관없이, 생태학을 배울 수 있었기 때문에 복학신청하면서 바로 생물학과로 들어온 나와는 달리, 내가 들어갈 당시에는 이상하게도 생물학과가 경쟁률이 높았다. 왜그런가 살펴보니 3개 학과 중 생물학과만 유일하게 교직이수 과정을 이수할 수 있었기 때문이었다. 이 교직이수 과정은 학과에서 상위 10%(즉 학과정원 40명 중 4)만 신청할 수 있었다. 교직이수를 하고 바로 교직으로 나간 케이스는 없었다. 어쨌든 교직이수 쪽은 내 관심분야는 아니어서 무시하고 있었는데, 이 수업을 듣던 후배녀석 덕분에 복수전공에 대해서 알게 되었고, 3학년이 되면 ‘학과 대표’를 하기로 되어있던 상황이라 ‘전과’보다는 ‘복수전공’쪽을 선택하게 되었다.

  복수전공을 시작하면서, 나보다 2년동안 더 많이 공부한 ‘컴퓨터과학과’ 학생들을 따라잡는게 어렵지 않을까 고민했지만 생각했던 것보다는 그렇게 수준차이가 나지는 않았다. 2학년과정을 마치고 군대에 다녀온 복학생들이 많은 편이어서 그런지도 모르겠다. 그 덕분에 별다른 위화감을 느끼지 않고 학과 수업을 따르면서 1년반을 들었다. 4학년 1학기를 마치고 ‘유럽여행을 가자!’라는 즉흥적인 생각으로 1년간의 휴학신청을 하고 ‘여행경비를 벌기 위한 파트타임’을 시작했다. _-); 이 선택이... 2년의 시간을 허비하게 만드는 잘못된 선택이었다는 것을 깨닫지 못한 채...


  내가 어려서부터 좋아하던 사촌형이 있다. 그 형 덕분에 어려서부터 컴퓨터를 만질 수 있었고 컴퓨터의 길로 빠져들 수 있었기 때문에 그 형과 자주 연락하면서 지내고 있었다. 유럽여행 가려고 일하는 중이야.’ 라는 이야기를 듣자, 나 사업하는데 네가 좀 도와줘라.’ 좋아하던 형인지라 별 고민 안하고 ‘그래.’ 하고 흥쾌히 승락했다. ‘2년만 도와줘. 그러면 너 유럽여행 갈 때 비행기값은 내가 지원해줄게.’ ‘좋아!’

  그리고는 일을 시작한다. 그 일이란게, 서울시 산하에 있는 서울 상수도사업본부에서 PC 유지보수를 하는 일이었다. 유지보수라고 해봐야 고장난 PC를 고치거나 사용자의 자료를 백업받고 운영체제를 설치하고 복구해주는 정도의 일이었다. 이 일을 하면서 두리둥실했던 내 성격이 많이 까칠해졌다. 일하는 동안 ‘병’ 회사의 과장과 번번히 충돌을 하는데, 회사 대표를 맡은 형님은 이것을 ‘제대로 중재’해주지 못했고 그러면서 일에 대한 스트레스가 쌓여갔다. 그나마 다행이었던 것은, 일을 하면서 남은 1학기를 수료할 수 있도록 베려해준 덕에 졸업에는 별 무리가 없었다. 이 일을 하면서 내가 아는 사람들을 끌어들였었는데, 내가 제대로 챙겨주지 못하여 지금도 미안한 마음을 가지고 있다. 지금은 연락이 끊겨버린 녀석도 있다. 에휴...

  계약은 2년 단위로 연장이 되어야 하는데, 2년을 연장하기 위해서 ‘갑’에 해당하는 본부측 담당자와 원활한 관계를 유지하면서 이런저런 사업계획을 제시했어야하는데, 형은 그 부분에 대해서 너무 신중한 나머지 너무 많은 것을 ‘병’ 회사에게 빼앗기고 있는 상황이었다. 그러면서 점점 형과의 관계도 악화되어 가기 시작했다

  그러다가 같이 일한지 111개월이 되는 즈음 형이 내게 그만둘 것을 종용해왔다. ‘그만두겠습니다.’ 말하고 한달의 의무적인 근무를 해주었다.그러던 중에 ‘병’ 회사 소속의 같이 일하던 형이 나에게 ‘병’ 회사에서 일해볼 것을 제안해왔다형에 대한 반발심에 ‘병’ 회사에 찾아가 영업담당자분과 면접도 봤다그리고는 그 회사에 대해서 입사도 그 자리에서 바로 결정되었다나도 내 나름의 살길을 찾으려는 마음에 본 면접이었지만그 회사로 가고나면 형과의 관계가 악화될 걸 고심하면서 ‘입사제안’을 거절했다그런 내 마음도 모르고 형과의 불화는 깊어져갔다. 

 

이 때, 같이 일하는 사람(동료) 그리고 회사에 대해서 신중하게 고민하는 버릇이 들었다. 선택은 빠르게 하는 것이 좋다. 아니다’라는 판단이 들 그 순간 자리를 박차고 일어서는 것이 나를 위해서 좋았다. 일하던 당시의 이야기는 http://sunfuture.springnote.com/pages/4425579 에 나온 부분을 봐도 괜찮겠다. _-);; 지금 보니 이런 종류의 글을 쓰려다가... 묻어뒀었는데... 이 글도 역시나 묻힐 뻔 했는데, 누군가의 요청으로 살아날 궁면을 맞이하게 되었다. 그동안 덮어둔 이야기가 얼마나 될까나....


  그렇게 일을 그만두고 유럽여행을 가려고 준비하고 있었는데, 내가 놀고있다는 소문을 들은 사촌이 자신이 일하는 곳의 교육과정을 듣는게 어때 라는 제안을 해왔다. 유럽여행을 다녀와서 일자리를 구할 것을 고심하고 있던 나는 여행은 뒤로 하고 교육과정을 시작했다. 사촌의 제안을 받아들임으로 해서 Java 개발자로서의 길이 시작되었다. 




다음 이야기는 6개월간 Java 교육 과정을 들으면서 보고들은 것들과 생각들을 정리해보겠다. 혼자라도 꾸역꾸역 써봐야겠다. 이런 여유가 생기는 것도... 프로젝트가 어느정도 마무리 되어가는 덕분이겠지?

1.2. Java 교육 과정의 현재와 업계의 상황

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

JUNITINACTION:단위테스트의모든것
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 피터 타치브 (인사이트, 2011년)
상세보기

  회사에 읽을만한 책으로 굴러들어온(?) 녀석이 있어서, 낼름 집어들고 읽은지 2주가 되어간다. 출퇴근길에 쭈욱 훑어읽은지는 1주일(...)쯤 되어서 내용이 잘 기억나지 않을 즈음, 이렇게 반의무감을 부여하면서 독후감을 쓰기 시작한다. 이 책의 모든 내용을 제대로 이해하기에는 턱없이 부족한 내공의 소유자이다보니 글을 쓰는 부분에서 많은 부족함이 드러나겠지만, 시도하지 않는 것보다는 나으니까 이렇게 글을 써본다.
테스트를 해야하는 상황 속에서, 다양한 테스트 기법들 속에서 적절한 테스트를 선정하여 수행하는 것은 어렵다.
오늘 퇴근길에 전철에서, 울트라 슈퍼 개발자와 나란히 앉아 테스트에 대한 이야기를 하면서 가진 전제다.
  많은 개발자와 아키텍트들이 TDD를 통해서 개발을 진행하는 것이 여러가지 이득이 있으니 그러해야한다고 이야기한다. 그러나 대다수의 개발자들은 이런 개발방법에 대해서 제대로 이해하거나 접하지 못한 경우가 굉장히 많다. 나의 경우에도 얼마 전까지만해도 TDD가 무엇인지, 어떤 상황 속에서 사용하는 것인지도 몰랐었다. 그러다가 우연히 TDD에 대한 베타리딩을 시도하면서 '미지의 세계와 조우'를 하게 되었다.
  그 책은,
테스트주도개발TDD실천법과도구
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA일반
지은이 채수원 (한빛미디어, 2010년)
상세보기
요 녀석이다. 지금도 종종 꺼내어 펼쳐본다. 이 책은 TDD에 대한 촉(Skin ship)을 느껴보기에 참 좋은 책이다. 유머러스한 저자가 자신의 노하우를 잘 뽑아낸 작품이기도 하다. 정작 저자께서는 많이 아쉬움을 표하는 작품이기도 하니, 조만간 '조금 더 쌔끈해진 모습으로 나오지 않을까' 하는 기대를 하고 있기도 하다.

최근 강조되고 있는 개발기법 중 하나가 TDD(Test Driven Development)
- TDD에 대한 글
  = TDD - Wikipedia : http://en.wikipedia.org/wiki/Test-driven_development
  = 알면서 왜 안할까 TDD - Toby's Epril : http://toby.epril.com/?p=500
  = 내가 생각하는 TDD - benelog : http://benelog.egloos.com/2766714


TDD란,

빨간 정지 신호등(실패)에서 녹색 통과 신호등(성공)으로 바꾸기
위한 노력(과정)이다. 

라고 할까나?
 
  TDD에 대한 공부를 하면서도 여전히 어려운 것이... Mock 과 DBUnit을 이용하는 부분인데, 이 책에서는 상세하게 잘 다뤄져있는 편이다. 요즘 Hibernate를 이용한 ORM(http://en.wikipedia.org/wiki/Object-relational_mapping)에 대해서 공부를 하고 싶은 욕심이 생기고 있는데, 쉬이 접근하지 못하고 있다가, 이 책에서 JPA를 사용하기 위해 테스트할 수 있는 방법에 대해서 설명한 부분들을 보고 학습코드(테스트 코드)를 작성해볼 경험을 가질 수 있었다. 이 책에서는 다양한 테스트 기법이 설명되어 있고, 테스트 전략을 가지고서 시도해볼 수 있도록 상세하게 설명해주고 있다.
  개인적으로 구매해서 '찬찬히 예제를 따라하면서 익혀두면 언젠가는 써먹을 수 있지 않을까?'하는 생각을 품게 하는 책이다.

  요즘의 개발환경은 IDE 개발툴을 이용하기 때문에, 터미널 등에서 테스트를 진행할 경우는 흔하지 않다. 이 책 초반에 터미널에서 커맨드를 입력하여 단위테스트를 진행하는 부분이 나온다. 그렇게 커맨드창에서 명령어를 입력하여 테스트를 실행하는 장면에서는 '뭐 이런걸 다. 요즘 누가 이런걸 쓴다고.' 라면서 살짝 깔보듯 읽기를 시작했다. 하지만 이 책은 그렇게 단위테스트의 초창기 사용방법부터 시작해서 차근차근 사용법을 알려주기 시작한다. Ant와 Maven을 이용한 자동화 테스트, 테스트 케이스와 테스트 스위트(Test Suite)를 구성하고 실행하는 방법, 통합툴을 이용하여 지속적으로 테스트를 진행하는 방법에 이르기까지 시시콜콜하다고 할 수 있을만큼 다양한 테스트 기법과 그걸 사용할 수 있는 전략을 설명해준다.

  어떻게 보면... TDD의 가장 핵심줄기라고 할 수 있는 테스트 전략이 이 책에 소개되어 있다.

테스트 가능한 코드 작성하기
- 공개 API는 계약이다.
- 종속성을 줄여라.
- 생성자는 간단하게 만들어라.
- ...

등등의 주옥같은 개념들이 담겨있다. 좀 더 쓰고 싶지만~ 그 이상의 내용들은 직접 구매해서 보시면 좋겠습니다. 저도 한권 살겁니다~ ^^

TDD에 대해 전반적으로 훑으면서 읽어보려고 한다면

테스트주도개발TDD실천법과도구
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA일반
지은이 채수원 (한빛미디어, 2010년)
상세보기
에서 TDD의 개념과 재미를 접하고,
JUNITINACTION:단위테스트의모든것
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 피터 타치브 (인사이트, 2011년)
상세보기
에서 TDD의 전략과 적절한 적용범위 등에 대해 생각하고,
자바개발자도쉽고즐겁게배우는테스팅이야기
카테고리 컴퓨터/IT > 프로그래밍/언어 > JAVA > JAVA
지은이 이상민 (한빛미디어, 2009년)
상세보기
에서 TDD를 통해서 얻게되는 이점들에 대해서 알게될 것이다.

의 순으로 읽으면 괜찮겠다 싶다. 여기에다가
메이븐
카테고리 미분류
지은이 박재성 (한빛미디어, 2011년)
상세보기
에서 메이븐에 대해서 잘 배우고, Hudson을 활용하는 방법도 배우면 참 좋겠는데... ㅎㅎ 이렇게 나열하고 보니, 책장사같다. ㅡ_-);;
지금은!! 프로젝트에 투입되어 프로젝트에서 사용중인 아키텍쳐와 개발기술들을 익히는 것만으로도 참 버겁다.
이러면서 주말이면 자전거타고 어디갈까 고민하고 있...

사실 이 책은... 한번 쭈욱하고 훑어봤다. 그리고 마음에 드는 부분들을 몇개 찝어뒀다. 개인적으로는 책에 줄을 쭉쭉 긋고 낙서를 하면서 읽는 편인지라 회사책을 함부로 다루기가 뭐해서 쉽게 다룰 수가 없다. ^^; 빠른 시일내에 구매를 해서 찬찬히 내용을 훑어보고 또다른 블로그에 그 내용을 정리해보면서 내것으로 만들어가면 내 개발능력이 조금 더 향상되지 않을까? 
TDD는 자신의 개발기술을 향상시키기 위한 특별한 무기가 되어줄 것이다.
나는 그렇게 믿고 있다. 그리고 그 무기는 자신의 발등을 찍는 도끼가 되지 않을 것이라고 확신하고 있다.

실패는 성공의 어머니!!




P.S. 

기회가 닿으면 틈틈히 세미나나 컨퍼런스에 참여하고, 기술서적을 읽고, 개발자들을 만나면서 그들이 관심가지는 분야들에 대해서 귀기울이는 것에는 '조금 더 나은 개발자'가 되고 싶은 내 작은 소망이 표출되는 것이라 생각한다. 나는 여전히 배고프고 어리석다. 그래서 더 많은 것을 보고, 듣고, 느끼고, 생각하고, 행동하면서 배워야한다.
  주말에 그 모습을 드러내는 귀차니즘과 게으름을 적절하게 퇴치할 수 있다면 참 좋을텐데...


살짝 아쉬운 점.

  어느 번역서에서나, IT용어를 한글로 표현하는 부분은 고민이 많은 부분이다. 이런 고민은 베타리딩을 몇번 하면서 저자분들이 고민하는 경우를 목격하면서 공감하고 있다. 이 책에서도 조금 아쉬운 점이 있다면, IT용어와 한글의 표현이 뒤섞여있는 편(어떤 장에서는 한글단어로 적혀있고, 어떤 장에서는 그 장의 핵심 키워드들이 영단어로 표현되어 있음)이다. 초반에 스텁(Stub)이나 테스트 스위트(Suite)의 경우 어느 개발자들에게는 익숙한 단어기에 자연스레 그 단어를 떠올리는 이도 있겠지만, TDD를 처음 접하는 개발자들에게는 낯설면서 어리둥절한 느낌을 줄 수가 있다. 번역자분과 출판 관계자들께서 고민을 하셨을 부분이었을 것이다. 
  그 도서에서 단어가 처음 나타나는 곳에서는 단어 옆에 영단어를 표기하여 어떤 의미를 가지는지 분명하게 이해할 수 있도록 했으면 좋겠다.


 
허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
Something Four
유럽​​에 옛부터 전해지는 전설에서 신부가 결혼식 날 "4 개의 Something"을 착용하면, 영원히 행복하게 될 수 있다고 알려져 있다.
Something Blue
블루는 명료의 상징이며 행복의 색. 파란색을 살짝 눈에 띄지 않는 곳에 붙이는 것으로, 행복이 찾아온다고 알려져 있다.

Something New
날마다 행복하길 바라며 새것을 하나하나 장만하면서 행복한 결혼 생활을 보낼 수있는 것으로 알려져 있다.

Something Old
어머니와 할머니에게서 물려받은 보석 및 액세서리를 착용하면 조상 (가족) 과 연결된 평화로운 가정이 된다고 알려져 있다.

Something Borrowed
행복한 결혼생활을 하고 있는 이들에게서 빌린 것을 가지고 결혼하게되면, 행복하게 살게된다고 알려져 있다.


바텐더.18
카테고리 만화 > 직업만화
지은이 ARAKI JOH (학산문화사, 2011년)
상세보기
주말을 맞아 '바텐더 18'권을 훑어보다가 '바의 보물'에 대한 이야기를 끌어가는 부분에서 4가지 보물들이 개발자가 찾고 있는 것들과 크게 다르지 않은 것 같다는 생각을 품게 되었다. 어느 분야에서건 그 분야에서 높은 곳을 향하기 위해 필요한 기본 요소인가 하고 공감했다.
<바의 보물> 4가지
[오래된 것] == 눈
오래된 것을 간파하는 냉정한 눈.

[새로운 것] == 신용
새로운 것이 닳아 오래된 것이 될만큼, 닳아 없어질 정도의 시간을 들여야 비로소 진정한 보물이 되는 것

[빌린 것] == 신념
다른 사람에게 빌린 것이기에 바꿀 수 없는 것, 바꿔선 안되는 것, '마음'을 잇는 신념

[파란 것] == 높은 뜻
파랑은 하늘, 신의 상징. 아무리 손을 뻗어도 닿을 수 없는 색

바에서 일하는 바텐더에게 필요한 보물 4가지.
SW업계에서 일하는 개발자에게도 반드시 필요한 보물 4가지가 있지 않을까?
 라는 생각을 하며, 억지로 4개를 끼워맞춰본다. 나의 생각에 동조하는 이도 있을 것이고, 다른 생각을 가진 이도 있을 것이고, 반대하는 이도 있을 것이다. 하지만 '자신의 보물이 될만한 것'들을 생각해볼 수 있는 좋은 기회로 여겨줬으면 한다.


개발자의 4가지 보물, Developer's Something four.


Something new == 기술(안목)
• 새로운 개념과 기술들이 쏟아져나오는 IT업계
  요즘 정말 많은 기술과 서비스들이 쏟아져 나오면서 다양한 IT 트렌드를 만들어가고 있다. 최근 업계에서 가장 관심을 받고 있는 IT 트렌드를 뽑아보자면, '모바일'과 '클라우드 컴퓨팅'이 아닐까 생각한다(내 개인적인 생각일지도 모르지만). '모바일'에는 무선 인터넷 기술, 위치정보, 터치 기술, 배터리, 디스플레이 등의 다양한 기술이 어울어져있는 IT산업의 종합축소판이라고 할 수 있고, '클라우드 컴퓨팅'은 가지고 있는 컴퓨터자원을 보다 효율적으로 활용하기 위해 뜬구름 같은 '거대한 시스템 플랫폼'을 구축하고, 필요에 따라서 그것을 활용할 수 있도록 지원해주고 있다. 이 과정에서 PaaS(Platform as a Service)라고 하는 모델이 생겨나고, 가상화, 분산처리 등의 기술들이 발달하기 시작했다. 그 외에도 내가 사용하는 기술들 밑바탕에도 수많은 개념들이 스며들어 있다. 
  이제 막 개발의 맛을 들여가고 있는 내 입장에서, 배워야할 것들이 점점 늘어만가는 것은 '부담'이 된다. 휘유유후!!

• 기술 트렌드를 좇는 ‘기술만능주의’에 빠져있는 많은 개발자들
  이렇게 쏟아져 나오는 기술과 서비스들을 대하면서, 개발자들은 '기술'만을 우선시 하는 '기술 만능주의'에 빠져드는 우를 범하는 경우가 많다. 새로운 기술이 최고라고 생각하며, 자신이 진행하는 프로젝트에 반드시 그 기술을 적용해야만 성이 풀리는 이들이 많다. 그들은 개발자일 수도 있고, 프로젝트의 아키텍쳐를 책임지는 아키텍트일 수도 있고, 프로젝트를 이끄는 PM일 수도 있고, 초울트라 슈퍼파워를 가지고 있는 갑(甲)일 수도 있다(개인적인 생각으로는, '갑'이 '기술 만능주의'에 빠져버리면 이것만큼 대책을 찾기 어려운 것도 없다.).

• 개발자가 가져야할 보물 첫번째, 그것은 자신이 구현하려고 하는 기능에 적합한 ‘기술’을 선택할 수 있는 안목
  최신 유행하는 기술과 서비스가 반드시 좋다고 할 수 없다. 하지만 나쁘다고 할 수 없다.
이게 사실이다. '귀에 걸면 귀걸이, 코에 걸면 코걸이' 식의 답변은 아니다. 내가 구현해야 하는 기능에 필요한 기술과 서비스는 최신의 것일 수도 있지만, 오래 전에 이미 나와서 익숙한 것들인 경우도 있다. 그래서 과거의 것들을 찾아보려고 '구글링'을 하는 것이다. 과거의 기술 서적들을 잘 보관해두었다가 필요할 때 꺼내어보는 것이다. 
  '새로운' 것과 '오래된' 것. 이것들 사이에서 자신에게 필요한 것들을 선택적으로 사용할 수 있는 능력을 갖춰야한다. 이 능력을 정의하자면 '안목(眼目)'이라고 할 수 있다.

안목 : 사물을 보고 분별하는 견식
이라고 한다. 개발자에게 있어, ['안목'이란, 자신에게 '익숙한 것'보다 '새로운 것'과 '오래된 것'들에서 적합한 것들을 찾아내어 판단하고사용하는 능력]이라고 생각한다. '새로운 것'과 '오래된 것'보다 중요한 것은 '익숙한 것'을 배제할 수 있는 용기다. 이 '용기'에도 관심을 가져주었으면 좋겠다. ^^ '익숙한 것'이 구현해야할 기술에 적합하지 않을 수 있다는 것을 인식하는 것도 '안목'이 아닐까?
  

Something old == 사람
• 10년 이상의 경력을 가진 개발자를 찾기 힘든 SW개발업계
  어느 기술세미나에서 강연자(내 기억으로는 Kenu님이었음), '경력이 10년 이상이 되신 분들은 손을 들어보세요.' 했을 때, 100여 명이 넘는 참관객들 중에서 손을 든 사람은 10명이 채 되지 않았다. 우리나라 개발자 중에 오랜시간을 개발에 집중하면서 활동하는 사람들이 귀하다. 개발 경력이 쌓이면서 개발자들은, '관리자'가 될 것인지 '개발자'가 될 것인지, 선택의 기로에 서게된다. 그리고 꽤 많은 개발자들이 여러가지 이유로 관리자가 된다. SW개발은 그 기술에서 손을 놓는 순간, 빠른 속도로 SW개발능력이 감퇴한다. 관리자가 되고나면, 자신이 그동안 쌓아왔던 경험을 팔아 살아가게 된다.
  다행히도, 난 뒤늦게 개발자의 세계에 들어왔다, 내 주변에는 내가 본보기로 삼을만한 훌륭한 개발자들이 많다. 어느 개발자는 나보다 어리기도 하고, 어느 개발자는 나보다 나이가 많기도 하다. 나이가 중요한 것은 아니다. 그들이 개발자로서 살아가는 그 열정을 보면서 난 10년, 20년 그 이상을 바라보는 그들과 함께 걷고 싶다는 욕심을 품게 되었다.

• 빠르게 기술을 습득하고 적용해야하는 SW개발분야지만, 그 속에서도 많은 경험을 가지고 있는 장인 개발자가 필요하다.

프로그래머의길멘토에게묻다
카테고리 컴퓨터/IT > 프로그래밍/언어 > 프로그래밍일반
지은이 데이브 후버 (인사이트, 2010년)
상세보기
이 책에서는 '장인'이 있다. 그리고 이 장인의 지도를 받으면서 '견습생 -> 숙련공 -> 마스터' 가 될 가능성이 높아진다. '장인'의 지도를 받는다고 해서 모든 '견습생'이 '장인'이 되는 것은 아니다. 미래는 알 수 없는 것이지 않은가? 
대학에서 배우는 소프트웨어에 대한 이론적인 교육만으로 현업에서 바로 적용하며 사용할 수 있을까?
  '없다.'라고 단언할 수 있다. 기본기마저도 부족하다(그렇다고 나는 뭐 기본기가 탄탄한가? Orz...). 그렇게 경험이나 기본기가 부족한 이들을 '쓸만한' 인재로 이끌어줄 수 있는 사람이 필요하다. 그런 사람들이 '장인'이다. '장인'은 오래 묵을수록 맛깔나는 '장'과 같지 않은가? 우리나라 SW업계가 더욱 성숙하기 위해서도 많은 경험을 머금고 있는 개발자들이 많아지길 바란다.

• 어느 업종이든 그것이 무르익기 위해서 갖춰줘야할 것은 사람이다.
• 신입 개발자가 전문가 혹은 장인 개발자가 되기까지 많은 시간과 노력을 필요로 한다.
• 다른 개발자들과 교류하면서 정보를 공유하고, 친목을 도모하고, 고통을 공유할 수 있다.


• 개발자도 사람이다. 사람과 사람이 어울려서 살아가야 한다.
  과거의 개발자들은 '괴인'처럼 묘사되었다. 어둠이 가득한 방안에서, 파란 불빛을 내뿜는 모니터를 빤히 들여다보면서, 구부정한 자세로 키보드를 빠른 속도로 투다다다닥치면서 수백줄의 소스코드를 만들어가는 모습으로 묘사된다. 혹은 퀭한 얼굴로 괴팍스런 이야기들만 주절주절 꺼내는 인물로 묘사되기도 한다. 나도 개발자가 되기 전에는 그런 모습을 생각했었다. 그러나, 개발자가 되고 다른 개발자들과의 만남이 늘어나면서 '과거의 기억'속에 개바자들과는 전혀 다른 모습을 가지고 있음을 새삼 느끼게 된다. 어린아이 같이 순수한 마음과 무엇인가를 깊게 파고드는 탐구심 등을 가지고 있는 이들이었다. 그리고 서로가 알고 있는 것들을 서로 공유하고, 취미에 대한 의견을 나누기도 하고, 스터디를 하면서 새로운 것들을 배우는 것에 익숙했다. 개발자로서 살아가기 위해 필요한 것은 '사람'이다. 

Something borrowed == 노트북? 오픈소스.
개발자가 '빌려쓰는' 것은 뭐가 있을까?
하고 고민을 하다가 누군가가 이야기 한 '전설의 노트북, 전설의 키보드, 전설의...' 이야기가 떠오른다. SI쪽에서 회사에 입사를 하게되면 여러가지 조건(입사후 1년이 되면 퉁치는 경우, 구매시 절반을 보조해주는 경우, 구입후 월급에 일정할부액을 보조해주는 경우 등)으로 자신이 사용할 컴퓨터를 조달받게 된다. 대체적으로 가지고 다니면서 사용할 수 있는 '노트북'을 구매하게 된다.
그래서 '빌려쓰는 노트북'인건가..!?
  하지만, 이건 좀 거시기 하잖은가. 그래서 곰곰히 생각을 해봤다. 우리가 빌려쓰는 것 중에 바꿀 수 없는 것, 변할 수 없는 것은 뭐가 있을까?

우리는 오픈소스를 사용한다. 누군가가 자신의 노력을 쏟아부어 만든 특별한 녀석들을 사용하고 있다.
• 이름 모를 개발자가 만들어낸 애플리케이션
• 자신이 만든 것을 다른 사람들과 공유하려는 정신
• 그 정신이 지켜지길 바라며 생겨난 다양한 오픈소스 프로젝트
• 그것을 사용하면서 만든 이에게 감사하는 마음

  오픈소스를 활용하는 사례가 늘어나고 있다. 정말 'SI의 모든 분야에 오픈소스가 사용된다.'라고 할 수 있을 만큼, 우리는 오픈소스를 널리 손쉽게 사용하고 있다. 그 오픈소스에는 그것을 만든 이들의 숭고한 의지(혹은 장난?)가 스며들어있다. 그것은, 그것을 빌려쓰는, 우리가 '바꿀 수 없는 것, 바뀔 수 없는 것'이다. 간혹, 이런 오픈소스를 변형하여, '자기들만의 것'이라고 주장하는 이들이 나타나기 때문에 요즘 부쩍 눈에 띄는 활동이 '오픈소스 라이센스'와 관련된 활동이다. 꽤 오래 전부터 거론되는 이야기이다보니, 사용하기 전에 한번은 더 살펴보는 노력을 기울여주길 바란다.
- 참고 : KLDP - 오픈소스 라이센스 가이드

Something blue == 이상(높은 뜻!)
  ‘백발이 성성할 때가지 개발자이고 싶다.’
  내 주위의 많은 개발자들이 꿈꾸는 미래의 모습이다. 백발이 성성한 모습으로, 커피숍에 앉아 시원한 아메리카노를 한모금 마시면서 여유로운 표정으로 화면을 바라보고 있는 개발자.

'이상과 현실은 다르다'고 한다. 다르다는 건 인정하다. 그렇다고 포기할 수는 없다. '포기하기 싫다.'라는 것이 내 솔직한 생각이다.

뒤늦게 '개발자'가 되고자 이 바닥에 뛰어들었다. 그리고 이 분야에 계신 많은 분들이 꿈꾸는 미래가 아닐까? 
이상, 높은 뜻은 머리 위에 있다. 하늘에 있다. 머리를 들고 푸른 하늘을 보며, 도전의 의지를 다시 되새겨본다.



과연 위에서 말한 네 가지(안목, 사람, 오픈소스, 이상)를 획득할 수가 있을까!!?
네가지 보물을 찾아 떠나는 여행은 이제 시작이다.


허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
지난 1월에 회사를 그만두고, 3월말까지 신나게 놀았습니다. 정말 신나게 놀았다.
사람들을 많이 만나고, 책도 많이 보고, 여기저기 구경도 다니면서 31살의 초반을 보냈다.
3월 말에 새로운 회사에 입사하여 지금까지 회사에서 프로토타입(초기 학습을 위한 기능구현)으로
게시판을 만들면서, 회사의 Spring Java Coding Convention(코딩 스타일과 알고리듬 구현에 대한 생각)
을 조금이나마 접하게 되는 기회였다. ^^;

이번 프로젝트는 스프링3을 기반으로 해서, 모바일웹 서비스를 개발하는 것이다.
그래서 HTML5, jQuery, CSS, 안드로이드, iOS 등에 대한 구현을 경험할 수 있는 좋은 기회가 될 것이라
생각하고 있다. ^^

오늘, 프로젝트를 위한 작업장에 자리를 잡았다.
아직 프로젝트 초기라서 사람들이 모두 참가하지 않았지만, 진행에 필요한 사람들이
모두 모여서 간단하게 인사를 하고(얼굴은 기억하지만, 이름은 기억하지 못하는 짧은 기억력),
프로젝트를 진행하는데 고려사항들에 대한 이야기를 나누었다.

SI 프로젝트에서 아키텍트('AA' 혹은 '아키'라고도 하더군요)가 개입하면서,
서비스가 갖추어야 할 구조(스트럭쳐)와 앱, 구현방법등을 준비해주고 있었다.
제가 본 아키텍트의 가장 큰 특징은...
1. 말을 잘한다.
2. 영어를 습관처럼 쓴다.
3. 일정 수준 이상의 이해능력을 갖추고 있다.
을 가지고 있었다. PM, 개발자와 기획자들 사이에서 프로젝트를 진행하기 위해서는 필요한
것들이기도 하다. ^^; 말은 잘하는데, '전문용어'를 습관적으로 쓰는 모습이 거북하기도 했다.
우리가 본사에서 프로젝트를 준비하면서 프로토타입을 제작한 것을 보고 이해하는 능력은
충분히 갖추고 있었다. 하지만, 생각했던 것보다는 조금 부족한 부분들이 많기도 했다.

나는 '아키텍트'가 되고 싶다. 그리고 주변 사람들에게 이런 나의 바람을 이야기 하면서
나 스스로에게 압박을 가하고 있다.
앞으로 프로젝트를 진행하면서 그 모습을 유심히 보면서, 장점과 단점을 잘 분석해서
성장을 위한 좋은 거름으로 사용하고자 한다.

앞으로 조금씩 그 이야기를 기록해두려고 한다.
1 ··· 8 9 10 11 12 13 14 ··· 20
블로그 이미지

Email : ihoneymon@gmail.com 안녕하세요, 꿀괴물 입니다. ^^ 멋진 비행을 준비 하는 블로그 입니다. 만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!! 달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^

허니몬