'허니몬의 IT 이야기'에 해당되는 글 397건

허니몬의 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 이야기/IT 트랜드

어머니께 드릴 글루코사민을 구매하려고 ebay를 처음으로 사용해봤다.
영어에 취약한 '나'지만 손쉽게 사용할 수 있었다.
 
VISA 등의 국제거래가 되는 신용카드만 있으면 얼마든지 결제가 가능하고, 굳이 ActiveX 설치나 공인인증서 따위의 거추장스런 보안시스템을 설치할 필요도 없었다.

그림에서 보듯
1. 검색하고
2. 마음에 드는 물건을 찾으면 경매에 참여하거나 구매하고
3. 결제는 paypal을 통해서 결제를 하면 된다.

결제정보는 신용카드에 나온 카드번호, 유효년월, 뒷면에 3자리 만으로 충분했다.
※ 어차피 카드 도난당하지 않은 상태에서, 누군가가 이 정보를 알아서 결제를 한다면, 휴대전화로 알림오는 거 확인하고 취소할 수 있으니 크게 걱정하지도 않는다. 

돈을 쓰게 하고 싶으면, 쉽게 지갑을 열수 있도록 해야한다.


지갑에 몇중의 자물쇠를 채워두면, 열려고 하던 지갑도 그냥 닫고 마니까...
 
허니몬의 IT 이야기/IT 트랜드

깔끔해진 구글 검색화면. 검색결과가 깔끔하게 분류되어 있는 모습이 참 마음에 듭니다. 

 호오? 네이버에서 유일하게(구글조차도 구글+를 검색 안해주는데) 구글+ 사이트 바로가기 검색을 해주는군요.
[##_http://ihoney.pe.kr/script/powerEditor/pages/1C%7Ccfile8.uf@1317A2504E0C856621A018.png%7Cwidth="800"||width="800" height="625" alt="" filename="" filemime=""|네이버에서 구글+ 검색 결과 _##]호오? 그동안 없던 [구글에서 검색하기] 라는 항목이 생겼네요? 

다음에서 구글+ 검색 결과

그래서 '네이버'로 검색해봤습니다. [네이버에서 검색하기] 항목이 존재하는군요.


구글 플러스(Google+)는 지메일(혹은 기존에 주소록을 가져왔던 메일서비스 주소록)의 주소록을 바탕으로 주변사람들을 서클단위로 묶어서 대화를 즐기며 여러가지를 공유할 수 있는 서비스(요즘은 이런걸 SNS라고 하죠? SNS를 우리말로 표현하면 뭐라고 해야할지 관계소통시스템?)인것 같습니다. 주소록 네임카드를 자신이 분류하는 서클에 드래그 해서 넣어주는 간단한 시스템이기도 합니다. 그리고 이렇게 서클에 분류를 한 정보가 바로바로 알림으로 표시가 됩니다. 이건 페이스북의 느낌이 나더군요. 여러가지 서비스들에서 느꼈던 냄새들이 섞여있는 냄새입니다. 과연 구글+는 자신만의 독보적인 영역을 차지할 수 있을까요?
 


당신을 '어느 서클'에 넣어줄까요?

아... ㅡ_-);; 안드로이드폰 사용자는... 안드로이드폰 주소록까지 긁어서...?
이건 좀 무서운데? 

이미지 업로드는... 동시에 3개씩 멀티업로드가 되는군요. ㅡ0-)> 
허니몬의 IT 이야기/리눅스 이야기, 우분투
git을 이용하여 커널을 받기 위해서 먼저 필요한 것은 curl (http://en.wikipedia.org/wiki/CURL)이다.
$ sudo apt-get install git-core gnupg curl
우분투에서는 위 명령어만으로 의존성이 있는 라이브러리들까지 이용해서 설치된다.
$ curl http://android.git.kernel.org/repo > ~/repo 
$ chmod a+x ~/repo 
$ sudo cp repo /usr/bin
curl을 이용해서 repo 실행파일을 받아온다. 받은 repo를 실행가능 상태로 바꾼다음, /etc/environment 에서 실행가능한 경로에 설정된 /usr/bin 에다가 넣어서 필요할 때마다 실행할 수 있도록 만들었다.
$ mkdir git/mydroid
$ cd git/mydroid
안드로이드커널을 받을 디렉토리를 만든다.
$ repo init -u git://android.git.kernel.org/platform/manifest.git 
그러면 git/mydroid 아래에 .repo라는 디렉토리가 생긴 것을 확인할 수 있을 것이다.

사실... 아직 git의 사용방법을 잘 모른다. 관심을 가지고 조금씩 정보를 모을 에정이다.
1 ··· 23 24 25 26 27 28 29 ··· 80
블로그 이미지

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

허니몬