그렇지??
나 아직... 잠에서 안 깬거지??
.
.
.
.
사랑하지 않으니까..... 잡지 않는다고....
.
.
.
다.. 핑계 같다.... ... 그래.. 핑계......
.
.
마지막 까지.. 아프게 해서.. 미안해.... 미안해..... 미안하다....
처음 시작했던 일과는 달리...(처음에는 웹프로그래머였죠..)
지금은 BPM 을 하고 있습니다.... 참.. 답답하네요...
뭐랄까... 현제 내가 원하지 않는 일을 하는 부분에 대한 내 기분과...
지금의 만족할 수 없는 연봉....
거기에.... 회사에 있는 개발자라고는 딸랑 저 한 명...
그리니.. 회사에서 그 동안 해온 온갖 잡다한 프로젝트(물론 잡다하지는 않겠지만..)
모두 유지보수를 하고... (실제 참여했던 프로젝트라면.. 알기라도 하죠;; ㅜㅜ )
프로그램을 하니까.. 어느정도 상식적으로 가진 지식으로..
고객 서버나 메일 서버,DNS에 문제가 생기면.. 해결해주어야하고.. (물론 저희 회사 서버도 관리합니다. ㅡㅡ )
매일 새벽 2시~3시 퇴근.. 아침 8시 출근;;
ㅎㅎ 삶이 삶 같지도 않고...
벌써 만 5년차가 다 되어가는데... 정말... 뭘 배운건지.. 뭘 하는건지.. 회의가 많이 드네요..
여자 친구는 제가 과중한 업무에 시달림에도.. 이해해주지 못하고..
후... 너무 힘드네요..
ㅎㅎ 웃음 뿐이 안나오네요.....
집 안에서도.. 어머니와 아버지가 주시는 스트레스.. 에휴.....
사면초과라는게 이럴때 딱 맞는 말인거 같습니다.....
이러지도 못하고.. 저러지도 못하고.. 스트레스에 눌려 죽겠네요...
몇 일전.. 너무 몸이 안좋아서 병원에 갔습니다.... 물론 회사는 제껴버렸죠 ㅡ_ ㅡ;;
병원에서 과중한 업무와 스트레스로 인해 면역력 저하 ㅡ_ ㅡ;;;
오호 통제라.. 건장한 28살 청년이 면역력 저하라니;;
결국에 입병에... 몸살에... 그냥 쓰러져서 전화기도 꺼놓고.. 병원에서 링겔 맞았습니다..
원래.. 29살에는 고민이 많다고 하더군요...
저보다 더 힘들게 일하시는 분들도 계시겠지만.....
정말.. 쉬고 싶네요... 요즘엔....
그냥 지나가는 넋두리였습니다.... 너무 답답해서... ^^
조금만.. 제 자신을 돌아볼 틈이 있었습니다. 좋겠습니다.......
(점심시간인데.. 소주가 땡기네요 ㅎㅎㅎㅎ)
| 발췌 : http://www.zdnet.co.kr/news/enterprise/ ··· 2C00.htm SW 개발자의 길, 아니다 싶으면 포기하라! 김효정 기자 ( ZDNet Korea ) 2007/11/20 |
|
20일 오전에 MS가 주관하는 ‘2007 데브데이’ 행사에 참석했다. IT업계에 종사하는 사람이라면, 아마도 한번쯤은 MS의 독점성과 라이선스 정책 등에 대해 불만을 품어봤을 만하다. 그럼에도 불구하고 SW 개발자들의, MS에 대한, 관심은 어느 행사보다 뜨거움을 느낄 수 있었다. 기자는 오전 행사 중 한국MS의 최고기술임원인 김명호 박사(혹은 이사, 왠지 모르지만 박사라는 호칭이 더 어울린다)의 기조연설만 듣고 나서 김박사와의 짧은 인터뷰를 진행할 수 있었다. 그는 기조연설과 인터뷰를 통해 ‘한국에서 SW 개발자가 가야 할 길’에 대해 <희망차고도 암울한> 사회적 딜레마를 이야기해 주었다. 아래의 글은 김명호 박사를 통해 들을 이야기를 바탕으로 작성해 보았다. [明, SW 개발자여 전문인으로 거듭나자!] ZDNet Korea의 컬럼니스트 중 한명인 류한석 소장은 얼마 전 자신의 컬럼에 ‘한국에서 SW 개발자가 성공하지 못하는 세가지 이유’를 통해 어려운 사회적 현실을 이야기 했다. 그러한 이유가 아니더라도, SW 개발자로 성공한다는 것 자체는 다른 어떠한 직업과 견주어도 결코 쉬운 것만은 아닐 것이다. 한국 자바 개발자의 1세대라 할 수 있는 김명호 박사 역시 개발자 출신으로 성공의 길을 걷고 있다고 할 수 있지만 “이 길이 아니다 싶으면 차라리 다른 일을 하라”는 말을 서슴지 않고 내던지고 있다. 요즘 시대에 개발자는 한국이라는 좁은 시장에서가 아니라 전세계적으로 통할 수 있는 전문성을 가져야 하는데, 이를 달성하는 것은 결코 쉬운 일이 아니기 때문이다. SW 개발자로 성공하려면, 단기간 학원 교육을 통해, 누구나 습득할 수 있는 주류 기술 몇 가지만 배워서는 안 된다. 코딩, 테스트, 디버깅, 이식, 성능, 설계, 스타일 등 다양한 소양을 갖춘 전문인이 진정한 개발자라고 할 수 있다. 단순히 코딩만을 할 줄 안다고 해서 전문인으로써의 ‘정신과 혼’을 담지 않고 있다면 ‘하급 노동자’에 지나지 않는다는 것이다. 개발자와 아키텍트는 다르다 한국의 개발자들은 마치 개발자가 아키텍트로 가는 중간 단계로, 한번쯤 거쳐야 할 과정쯤으로 여기는 경향이 있다. 그러나 아키텍트와 개발자는 엄연히 다른 직업이다. 아키텍트가 되기 위해 개발자 경험이 있는 것은 좋지만, 막연하게 개발자를 거쳐 아키텍트가 된다고 생각하는 것은 옳지 않다는 것이 김박사의 설명이다. 그는 “아키텍트가 될 자질을 갖추는 것은 개인의 소양에 따라 다르다. 이를 건설에 비유하자면, 개발자는 건설현장에서 일하는 인부고 아키텍트는 건축설계사라고 볼 수 있다. 미적, 공학적인 요소를 갖추었을 때 건축설계사가 되는 것처럼, 현장 인부가 자신의 경력을 통해서만 될 수는 없는 것이다”라며 “대신 그들은 미장이나 도색 전문가 혹은 작업반장이 될 수 있다. 즉, 해달 분야의 전문가로 훌륭히 성공할 수 있는 것이다”라고 말했다. 그렇다고 벽돌을 나르는 수준의 초급 개발자가 10년 후 작업반장 수준의 상급 개발자가 되는 것은 아니다. 먹고 살기 위해서 개발을 한다면 행복해 질 수 없을 테고, 당연히 훌륭한 개발자가 될 수도 없다. 때문에 개발자들이 당면한 과제는 어떻게 하면 훌륭한 개발자가 될 수 있냐는 올바른 방법론이 필요하다. 이에 대해 김명호 박사는 몇 가지 지침을 가르쳐 준다. 훌륭한 개발자가 되려면? 1) 기본에 충실해야 한다. 여기서 말하는 기본과 초급은 분명 다르다. 개발자라면 알고 있어야 할 프로그래밍의 기본 구조나 알고리즘 등의 기본에 충실하지 못하다면, 10년이 지나도 불행하기는 마찬가지일 것이다. 만약 개발자인 당신이 먹고 살기에 급급해서 수박 겉핥기로 몇몇 기술만 습득했다면 지금이라도 당장 시작하는 것이 중요하다. ‘언젠가는 적용해야 할 핵심기술’을 습득하는 것이 중요하다. 2) 지식의 포트폴리오를 유지하라. 재테크에서의 교훈에 따라 ‘달걀을 한 바구니에 담지 마라’는 것을 생각하자. 즉, 개발자는 어느 한 분야에 올인하지 말고 ‘남들도 다 아는’ 주류 기술과 ‘남들은 모르는’ 전문 기술로 분산 투자해야 한다는 것이다. 3) 분야 전문가나 해박한 지식을 갖춰라. 앞서 언급한 대로 건설현장에서 미장이나 도색 전문가, 작업반장이 될 수 있는 분야별 전문가가 된다면 어디서든 존중 받을 수 있다. 그러나 여기서 중요한 것은 과도한 욕심을 부려서는 안 된다는 것이다. 분야의 전문가인 동시에 해박한 지식을 갖추고 있다면 그야말로 ‘천재’라고 할 수 있지만, 이 둘 중 한가지만 갖춰도 충분하다는 것이다. 모든 분야에 대해 피상적인 지식만을 갖추고 있다거나, 사장된 기술에 매달린다거나, 자아도취에 빠져 자신만의 방법이 옳다고 여기는 오류를 범할 수 있기 때문이다. 4) 학습을 두려워 마라. 이것이 김박사가 가장 강조하는 부분으로, 충분한 기본지식을 갖추고 있다면 새로운 지식을 습득하는 것에 두려움이 없으며 새로운 기술을 습득하고 끊임없이 발전해 나가는 것이야 말로 행복한 개발자가 되는 최우선 요소다. 만약 새로운 기술을 습득하는데 더디다고 느낀다면 그것은 기본이 부족하기 때문이며, 지금이라도 기본을 습득해 나간다면 신기술 습득에 대한 두려움은 사라진다. 이러한 개발자를 위한 성공 방법론이 제시됐음에도 불구하고, 개발자가 선택할 수 있는 최악의 길은 ‘다른 길을 찾아가는 것’이다. 개발자가 뭐 그리 대단한 것인가? SW 개발자가 아니더라도 얼마든지 다른 분야에서 전문인이 될 수는 있는 것이다. 자신이 택했지만 SW 개발자로의 미래가 안 보인다고 생각된다면, 과감히 다른 길을 선택하라. 개발자야 말로 ‘파레토의 80대 20의 법칙’이 가장 확실하게 적용되는 분야다. 20%의 능력 있는 개발자만이 훌륭하게 80%의 개발을 수행할 수 있다. [暗, 과연 한국에서 SW 개발자가 성공할 수 있나?> 김명호 박사는 SW산업에서 이러한 파레토의 법칙이 중요하다고 말한다. 뛰어난 소수의 전문인력이 SW산업을 발전시킬 수 있고, 이러한 인재를 정책적인 지원 하에 키워내야 한다는 것이다. 그러나 현실은 그다지 밝지 않아 보인다. 정부의 정책이라는 것이 ‘노동정책’에 가깝기 때문이다. 즉, 대학과 같은 전문교육기관에 의한 전문가를 양성한다기 보다 실업자를 줄이기 위해 하급 개발자를 배출해 내는데 급급하고 있다는 지적이다. 막상 현재 대학의 교육 현실은 어떠한가? 학부제를 도입한 이후, 학생들은 어려운 과목은 제외하고 쉽거나 학점을 잘 받을 수 있는 과목을 수강할 수 있게 된 상태다. 숙명여대 전산관련 학과의 한 교수는 “요즘 학생들은 알고리즘과 같이 기본을 다질 수 있는 과목은 어렵다고 회피한다. 그저 취업을 위한 학점 챙기기나 가벼운 프로그래밍 기술에 몰린다”고 안타까워한다. 이럴 바에는, 오히려 비전공자가 낫다는 의견도 있다. 기본에 충실하지 않은 전공자들보다 학원에서 5~6개월 집중적으로 배우고, 취직해서 급여를 받는 이들이 더욱 충실도가 높고 급여도 적게 든다는 것에 SI업체들이 매력을 느낄 수도 있다는 것이다. 실패 거듭하는 ‘SW 정책’ 실제 이렇게 부실한(기본에 충실하지 못하다는 의미로, 이들이 모두 부실하다는 것은 아니다) 개발자들을 고용한 SI업체를 통해 프로젝트가 실패한 경우, 그 책임소재의 표적은 SI가 아닌 HW로 돌리는 경향이 있기도 하다. 어떻게 보면 이것이 ‘SW 분리발주 정책’을 창출한 계기 중 하나이며, 개발자의 ‘표준공임단가’를 책정하게 된 이유가 될 것이다. 특히 개발자에 대해 표준공임단가를 두어 금전적 보상에 제한을 두어서는 안 된다. 이는 능력 있는 전문가가 되고자 하는 이들의 의지를 꺾을 수 있기 때문이다. 핀란드의 한 대학에서 내놓은 조사자료에 의하면 ‘SW 개발생산성에 있어 훌륭한 개발자 1명의 개발생산성이 하급 개발자에 비해 20배 가량 높다’는 결과가 있다. 이는 급여 측면에서 볼 때에도 그 이상의 가치가 있는 것이다. 현재 정부의 실업정책에 가까운 SW 정책은 이러한 측면에서 많이 부족하다는 지적이다. 즉, 표준공임단가에 묶여 있기 때문에 국내에서는 아무리 뛰어나다고 해도 인정받지 못하는 토양이 굳어져 가고 있으며, 이는 마찬가지로 기업 내부에서도 개발자에게 인색할 수 밖에 없다. 또한 전문인을 양성하기 위해 수년의 기간이 필요하지만, 단기간 성과를 내야만 하는 국내의 프로젝트 특성도 개발자를 힘들게 하는 악순환에 한 몫 거들고 있다. 소수의 전문인 중심 체계 필요 김명호 박사는 “정책적으로 획기적인 변화가 있어야 한다. 노동집약적 산업이 아닌 지식집약적 산업으로 바꾸기 위한 정책이 필요하다. 물론 교육도 마찬가지다. 전산 관련 대학 정원을 줄여서 의욕이 있는 전문가를 양성해 내고 이들을 대상으로 SW정책을 만들어 가야 할 것이다”라고 말했다. 그는 또 “16만 명에 달하는 국내 개발자들 모두에게는 미안한 말이지만, 누구나 다 성공할 수는 없다. 끊임없이 노력할 수 있고 자기를 발전시킬 수 있는 소수 개발자들만이 성공할 수 있으며, SW 정책도 이들에게 마음 놓고 일할 수 있는 환경을 만들어 주는 산업으로 만들어야 정부차원의 ‘미래의 먹거리’ 산업으로 성장할 수 있을 것이다”라고 주장했다. @ |
The Spring series, Part 1: Spring 프레임웍 소개Spring AOP와 IOC 컨테이너 |
난이도 : 초급 Naveen Balani, Technical Architect, Webify Solutions 2005 년 6 월 21 일 Spring 기술을 사용하여 강력한 J2EE 애플리케이션을 구현한다. Naveen Balani가 Spring 시리즈를 통해서 Spring 프레임웍을 소개한다. 아울러 Spring의 aspect 지향 프로그래밍(AOP)과 Inversion of Control(IOC) 컨테이너도 소개한다. Spring은 오픈 소스 프레임웍으로서 기업 애플리케이션 개발의 복잡성 문제를 다루기 위해 만들어졌다. Spring 프레임웍의 가장 큰 장점 중 하나는 레이어 아키텍쳐라는 점이다. J2EE 애플리케이션 개발에 일관된 프레임웍을 제공함과 동시에 원하는 컴포넌트만 선택적으로 사용할 수 있다는 이점이 있다. 이 글에서는 Spring 프레임웍을 소개하고자 한다. 먼저 기반 모듈의 관점에서 프레임웍의 기능을 설명하고, 가장 관심을 끄는 두 가지 모듈인 Spring aspect 지향 프로그래밍(AOP)과 Inversion of Control(IOC) 컨테이너를 설명하겠다. 전형적인 애플리케이션에서 IOC 컨테이너가 어떻게 작동하는지도 예제를 통해 설명한다. 예제 애플리케이션을 위해 다운로드 섹션에서 Spring 프레임웍과 Apache Ant를 다운로드 하라. Spring 프레임웍은 일곱 개의 명확한 모듈로 구성된 레이어 아키텍쳐이다. Spring 모듈은 코어 컨테이너의 상단에 구현된다. 여기에서 빈(bean)의 구현, 설정, 관리 방법이 정의된다. (그림 1) 그림 1. Spring 프레임웍의 모듈 Spring 프레임웍을 구성하는 각 모듈(또는 컴포넌트)은 독립적이거나, 다른 모듈들과 함께 구현된다. 각 컴포넌트의 기능은 다음과 같다.
Spring 프레임웍 기능은 J2EE 서버에 사용될 수 있으며, 대부분 다른 환경에서도 받아들여진다. Spring의 초점은 특정 J2EE 서비스로 묶이지 않은 재사용 가능한 비즈니스 및 데이터-액세스 객체들을 허용하는 것이다. 이 같은 객체들은 J2EE 환경(웹 또는 EJB), 스탠드얼론 애플리케이션, 테스트 환경을 통해 재사용 될 수 있다.
제어 역행(Inversion of Control) 패턴의 기본 개념은 객체를 구현하지 않고 구현되는 방법을 기술하는 것이다. 컴포넌트와 서비스들을 코드에 직접 연결하지는 않지만, 설정 파일에서 어떤 컴포넌트가 어떤 서비스를 요구하는지를 기술한다. 컨테이너(이 경우, Spring 프레임웍, IOC 컨테이너)는 이 모든 것을 연결한다. 전형적인 IOC 시나리오에서, 컨테이너는 모든 객체들을 만들고 필요한 속성들을 설정하여, 이들을 한데 연결하고 메소드가 언제 호출될 것인지를 결정한다. IOC의 이 세 가지 구현 패턴을 아래 테이블에 정리했다.
Spring 프레임웍은 IOC 컨테이너 구현에 Type 2와 Type 3 구현을 사용한다. Aspect-oriented programming(AOP)은 프로그래머들이 크로스커팅 문제를 모듈화 할 때, 사용하는 프로그래밍 기술이거나 로깅과 트랜잭션 관리 같은 전형적인 책임들을 분할하는 작동이다. AOP의 핵심 생성자는 aspect이다. 이것은 다중 클래스에 영향을 미치는 작동들을 재사용 가능한 모듈로 캡슐화 한다. AOP와 IOC는 기업 애플리케이션 환경의 복잡한 문제에 모듈식의 접근 방식을 취한다는 점에서 상호 보완적인 기술이라고 할 수 있다. 전형적인 객체 지향 개발 방식에서는 메소드와 자바 클래스에 로거(logger) 문장을 배치하여 로깅 기능을 구현한다. AOP 방식에서는 로깅 서비스를 모듈화 하고, 이를 로깅을 필요로 하는 컴포넌트에 적용한다. 장점은 자바 클래스가 로깅 서비스의 존재를 인식할 필요가 없고, 관련 코드에만 집중한다는 점이다. 결과적으로 Spring AOP를 사용하여 작성된 애플리케이션 코드는 약결합이다. AOP 기능은 트랜잭션 관리, 로깅, 기타 다양한 기능들을 위해 Spring 컨텍스트로 통합된다.
Spring 디자인의 핵심은
빈 팩토리 개념은 IOC 컨테이너로서의 Spring의 토대이다. IOC는 그 책임을 이 프레임웍으로 이동시키고, 애플리케이션 코드로부터 멀어진다. 다음 예제에서 보여주겠지만, Spring 프레임웍은 JavaBean 속성과 설정 데이터를 사용하여 어떤 종속 관계들이 설정되었는지를 분석한다.
Listing 1. XmlBeanFactory
XML 파일에서 정의된 빈들은 느리게 로딩된다. 다시 말해서, 빈이 요청되기 전 까지는 인스턴스화 되지 않는다. Listing 2. getBean()
빈의 정의는 POJO(클래스 이름과 JavaBean 초기화 속성에 의해 정의된다.) 또는
제어 역행(inversion of control)을 이해할 수 있는 가장 쉬운 방법은 작동법을 이해하는 것이다. Spring IOC 컨테이너를 통해 애플리케이션 종속 관계들을 투입하는 방법을 설명하면서 이 글을 마치도록 하겠다. 온라인 신용 카드 계정을 개설하는 사용 케이스 예제를 설명하겠다. 신용 카드 계정을 개설하기 위해 사용자는 다음 서비스들과 인터랙팅 해야 한다.
이 서비스는 이미 존재하고 이들을 약결합 방식으로 통합한다고 가정한다. 아래 리스팅은 이 세 가지 서비스에 대한 애플리케이션 인터페이스이다. Listing 3. CreditRatingInterface
Listing 3의 신용 등급 인터페이스는 신용 내역 정보를 제공한다. 사용자 정보를 포함하고 있는 Listing 4. CreditLinkingInterface
신용 연결 인터페이스는 신용 내역 정보를 은행 정보와 연결하고 신용 카드 정보를 기입한다. 신용 연결 인터페이스는 Listing 5. EmailInterface
이 모든 인터페이스를 갖춘 후에 할 일은 이들을 약결합 방식으로 통합하는 것이다. Listing 6에서 신용 카드 계정의 사용 케이스 구현을 볼 수 있다. 모든 세터 메소드들은 Spring 설정 빈들을 통해 구현된다. 모든 종속 관계들(세 가지 인터페이스)은 이러한 빈들을 사용하여 Spring 프레임웍에 의해 투입될 수 있다.
예제 애플리케이션을 실행하려면 Spring 프레임웍과 모든 종속 관계 파일들을 다운로드 해야 한다. 그런 다음, 이 프레임웍을 c:\에서 압축을 풀면 C:\spring-framework-1.2-rc2 폴더가 만들어진다. Apache Ant도 다운로드 해야 한다. 소스 코드를 c:\ 에 압축을 풀면 SpringProject 폴더가 만들어진다. 이 Spring 라이브러리를 복사한다. C:\spring-framework-1.2-rc2\dist에서 spring.jar와 C:\spring-framework-1.2-rc2\lib\jakarta-commons의 commons-logging.jar를 SpringProject\lib 폴더에 복사한다. 그 다음에는 필요한 구현 종속 관계를 설정한다. 명령어 프롬프트를 열고 디렉토리를 SpringProject로 변경하고, 다음 명령어( 이것은 Listing 8. Spring 설정 파일 로딩
지금까지 Spring 프레임웍의 기초를 설명했다. Spring 아키텍쳐를 구성하고 있는 일곱 개의 모듈을 설명하고, 이중 두 가지 Spring AOP와 IOC 컨테이너를 집중적으로 설명했다. 실행 예제를 통해서 IOC 패턴이 분산 시스템들을 약결합 방식으로 통합하는 방법도 설명했다. 이 예제에서 종속 관계 또는 서비스들을 신용 카드 계정 애플리케이션에 투입하는 것이 얼마나 간단한지도 직접 경험했다. 다음 글을 기대하기 바란다. Spring AOP 모델이 엔터프라이즈 애플리케이션에 영속성 지원을 어떻게 수행하는지를 설명하고 Spring MVC 모듈과 관련 플러그인들도 설명하겠다.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
댓글을 달아 주세요
하루. 이틀.. 삼일...
점점.... 익숙해질 내 모습이 싫다..................
그리워서.. 더 아프다.... 제길.........
제길.....
너는 차가운 위치를 만들었다! 너의 위치를 방문한 즐기는!
좋은 위치! 너를 감사하십시요.
너는 우수한 위치가 있는다!
너는 아주 좋은 보는 위치가 있는다!
위치에 중대한 일은 그것을 좋아했다!
중대하고 유용한 위치!
나의 너의 친구는 위치의 현재 팬이 되었다!
나는 합의한다 너에 이다. 그것은 이렇게 이다.
걸출한 뉴스!! 종류 블로그!
너는 아주 보는 좋은 위치가 있는다!
너의 방문한 위치를 즐기는!
우수한 디자인!!
나는 합의한다 너에 이다. 그것은 이렇게 이다.
우수한 위치! 많은 감사.
걸출한 블로그!
유용한 정보. 좋은 디자인.
관심을 끌. 너가 좋을 동일할 지점을.
나의 너의 친구는 위치의 현재 팬이 되었다!