최근에 Microsoft에서 주최했던, AI 컨포런스에 다녀오고 나서 읽기 시작한 책이다.

마이크로 소프트의 CEO인 "사티아 나델라" 이 사람에 대해서, 지난 몇년 동안 많은 매스미디어에 노출이 되었지만, 그가 누군지에 대해서는 잘 알지 못하였다. 단지 인도 출신의 성공한 개발자라는 생각할 뿐이었다.


책을 보면서, 여러가지 다른 관점에서 그에 대해서 바라보게 되었다.

이전에 내가 알고 있었던 얇팍한 지식으로 알고있던 그는 슈퍼 히어로와 같았다. 어느날 갑자기 나타나서 위기에 빠진 마이크로소프트를 구해내었던 초인으로 알고 있었다. 그러나 그에게 영향을 주었던 사람들과 그가 좋아하던 것을 알게되면서, 미디어에서 볼수 없었던 순전히 인간적인 면모로부터 그를 이해할 수 있었다.


오래전인것 같다. 내가 처음 Programing을 배웠던 그 때에는, "빌게이츠"와 "스티브 잡스"가 가장 유명했던 개발자였다. 물론 Norton Utilities를 만들었던 "피터 노턴"도 인상 깊었지만, 이 두 사람 만큼 만은 아니었다.


그중에서 빌게이츠가 만든 마이크로소프트사는 개인용 컴퓨터 소프트웨어 시장에서 단연 독보적인 회사였고, 서버 영역까지 확장에 확장을 하고 있었다. 네트워크와 인터넷 시대가 도래하면서, 위기가 찾아 오기도 하였지만, 특유의 저력과 집중력으로 위기를 이겨내고, 새로운 비전을 향해 나아가던 도전자의 모습을 가졌었다.  


그런데 어느날 "빌게이츠"가 CEO에서 물러나고, 그와 같이 마이크로 소프트의 창업과 사업 동참하였던, "스티브 발머"가 회사 경영을 맡고나서는 마이크로소프트는 경쟁자들에게 밀려 한단계씩 아래로 추락하던 참이었다. 이때 등장했던 이가 마이크로소프트의 세번째 CEO인 "사티아 나델라" 였다.


사티아 나델라는 인도에서 태어난 개발자 출신의 이민자라는 사실만이 내가 아는 그에 대한 전부였기에, 그가 어떤 사람인지에 대해서 알고 싶은 마음이 컸다.  내가 이터넷을 검색하다 찾아본 "히트 리프레시"는 그의 부모와 그리고 아내와 자녀에 대한 여러가지 사실들을 알려주고 있는데, 이 책은 어떤 의미로는 그의 "리더십"에 대해서 말하기도 하지만, 지금 우리가 필요한 리더십이 무엇인지를 알려주기도 한다.


"빌게이츠"는 서문에

 미래에는 다른 이들에게 능력을 부여하는 사람이 리더가 될 것이다.

라고 말하고 있다.




"사티아 나델라"는 1992년도 마이크로소프트에 입사하였다. 그는 마이크로소프트가 PC혁명을 일으킨 주역이었으며 유일무이한 성공을 거둔 회사였지만, 관료주의와 사내정치로 추락하고 있다고 이야기를 시작한다.


2014년 2월 마이크로소프트사의 CEO가 된 그는 

"세상을 변화시키겠다는 목표로 다시 돌아가기 위해 혁신을 가로 막는 장벽을 제거하겠다"

라고 이야기를 한다. 

이당시의 마이크로소프트사는 이전에 가졌던 "개발회사"의 이미지는 없어지고 IBM과 같은 비즈니스 또는 컨설팅회사 같이 세련된 비즈니스 회사의 이미지가 강한 회사었다. (나의 느낌일지 모르지만...)


그의 리더십은 "공감능력"에서 출발했지만, 처음부터 공감능력을 충분히 갖춘 사람은 아니었다. 그의 입사 면접에서 한가지 질문을 받았는데, "만약 아이가 거리에 누워서 울고 있다면 어떻게 할 겁니까?" 라는 질문이었다.

어떻게 해야할까? "그는 911을 부를 겁니다"라고 대답을 하였는데, 적절한 대답은 아니었다.

질문자에게 "당신은 공감능력이 부족합니다"라는 이야기를 들어야 했던 그였다.

그 이후에 여러가지 일들 로부터 그에게 부족했던 "공감능력"을 키우면서, 리더로서의 자질도 키울수가 있었다.   


그는 이렇게 책에서 이야기 한다.

"나는 공감 능력이 리더의 가장 중요한 덕목이라고 생각한다. 그것은 자신이 이끄는 구성원들의 자신감을 키우기 때문이다."


책은 마이크로소프트의 혁신에 대해서 이야기한다.

인공지능과 혼합현실 그리고, 클라우드와 양자 컴퓨팅등 새로운 기술들로 인해 인간의 역할이 어떻게 바뀌고, 어떠한 윤리와 도적적인 기준이 필요한지에 대해서 각계각층에서 광범위한 논의가 일어나고 있는 시대에 우리는 살고 있다. (아직 구체적이지 않은 도입을 위한 준비 단계라는 이야기이다.)


그의 아버지는 공무원이었고, 어머니는 산스크리트어 학자였는데,  어려서부터 강압적이던 다른 부모들과는 달리 자유로웠던 유년시절을 보냈었다. 그는 크라켓을 좋아하고, 컴퓨터를 좋아하는 아이였었다. 그는 인도 공과 대학교 입학시험에 낙방하고, 마니팔 공과대학교 전기공학과에 입학하였는데, 전기공학을 계속한다면, 언젠가는 좋아하는 컴퓨터와 소프트웨어를 할 수 있을 것이라는 꿈이 있었다. 

결과적으로 그는 마이크로소프트에서 그의 꿈을 이루게 된다.


내가 바라본 바로는,

마이크로소프트사의 CEO인 그는 여러가지 다른 변화된 모습으로 조직과 개발자들에게 나타났는데, 그중에 가장 커다란 변화는 다음의 2가지를 보면 알수 있듯이, 지난 35년동안 보여주었던 모습과는 완전히 다르다.

관점과 패러다임의 변화는 어떤 한사람이 시작하였는지는 모르지만, 이전과는 전혀 다른 모습으로 새로운 역사를 써 내려가고 있다. 


첫째로 기술 리더로서의 기술 지향적인 개발사의 이미지 변화였다.  윈도우즈 중심에서서 클라우드 퍼스트와 모바일 퍼스트 정책을 펴면서, Azure를 통해 Cloud의 주도권을 찾아가고 있다. 물론 아직은 AWS에 뒤진 2위 업체이지만, 지난 몇년간의 성장과 발전은 정말 눈부시다. 마이크로소프트사는 역대 최대의 성과를 올렸는데, 연간 1000억불의 매출을 올렸다고 지난 7월에 발표했다.


그리고, 두번째는 오픈소스에 대한 무한 사랑이다. 바라보는 이들이 거북할 정도록 애정을 보여주고 있는데, 이전에 리눅스와 오픈소스를 바라보는 관점과는 완전히 달라지면서, 새로운 모습을 보이고 있다. 지난 2015년도에 사티아 나델라는 "마이크로소프트는 리눅스를 사랑한다"라고 발표하기도 했다.

최근에 오픈소스 공유사이트인 Github를 75억달라에 인수하기로 하였는데, Github상의 오픈소스 기여자가 가장많은 회사가 마이크로소프트이다.



 


Posted by 행복상자
자바를 이용하여 개발하는 개발자 대부분은 아마도 서버용 Application을 개발할 거다.
자바라는 언어가 현재는 main stream으로 자리를 잡았지만, 윈도우즈 애플리케이션 보다는 서버 환경에 적합한 기술로 알려지고 있다. 하지만, 개발자들은 대부분 자신이 만든 코드가 동작하는 환경에는 알려고도 하지 않을 뿐더러, 어떤식으로 접근해야 하는지 알지 못한다.
예전에는 하드웨어의 성능을 최대한 이용하기 위해서 WAS와 Web Server의 세부적인 부분까지 알고 튠닝을 하는 일이 많았으나, 요즘은 이를 제대로 알려고 하는 사람들을 찾아 보기 힘들다. 물론 기본적으로 설정한 값들을 그대로 사용해도 잘 동작할 만큼 하드웨어의 성능과 넉넉한 메모리 때문에 시스템 동작에 큰 영향을 주지 않는다고 할지도 모르지만, 개발자는 항상 최악의 상황까지도 염두에 두어야 한다.

이 책을 보게된 동기는 제목중에 있는 "코딩 습관"이라는 말 때문이었다. 하지만 전체적으로는 코딩을 위한 내용이라기 보다는 서버의 튜닝과 문제점 해결에 대해 많은 내용을 다루고 있기 때문에, 초보자들에게 좋은 가이드가 될 것 이라 생각된다.
 
이 책의 저자는 SDS에서 실무 경험을 쌓은 엔지니어이다. 책은 가상의 인물을 통해서, 실제와 같은 상황을 예를 들어 개발자가 개발에 관한 기술들을 습득하고, 활용하는 방법에 대해 익혀나가는 것을 독자와 같이 공유토록 이끌어 간다.

개발이라면 코딩이 끝이라고 생각하는 것에서, 시스템 환경 구성과 문제를 어떤 식으로 해결할 지에 대한 가이드가 될 수 있는 책이라고 생각돤다. 이러한 점에서는 제목에 포함되어 있는 코딩 습관이 별로 어울리진 않을지라도, 한번쯤은 읽어 볼만한 책이라 생각된다.

책에서 다루고 있는 내용을 간략하게 소개하면 기본적인 시스템의 메모리 관리와 GC의 종류들과 이를 어떻게 활요할지, 그리고 프로파일링 툴들에 대한 설명들과 Java의 메소드와 API들에 대한 성능및 목적에 맞는 사용법에 대해서
IO에 대한 병목 처리와 로그의 중요성을 설명하고 있다.

그리고 WAS 또는 서버 설정을 위한 기본적인 Thread와 인스턴트 설정에 대한 것과모니터링 API에 대한 JMX에 대한 소개와 사용 방법에 대해서 설명을 한다. 그리고 책의 마지막에는 저자가 실제 있었던 상황들을 이를 해결하기 위해서 사용했던 방법론들을 예를 들어 독자들에게 설명한다. 

결론적으로 이 책은 국내에서 찾아보기 힘든 주제를 다루고 있는 책으로, 초보자들이 전반적인 지식을 얻기에는 도움이 될거라 생각한다. 하지만 제목 대로 좋은 코드를 다루거나 하지는 않기 때문에 코딩 관점에서 책을 보게되면 약간의 실망을 가질것이다. 책에서 다룬고 있는 여러가지 툴들은 개발자와 테스터에게 좋은 툴과 무기로 제공될거라 생각된다. 특히 자바 VM의 GC를 처리하고 이의 동작 방법은 자바의 메모리 관리를 이해하는데 도움이 될것이다.
Posted by 행복상자
작년에 진행하던 프로젝트를 마무리하고 나서 틈틈히 공부하는 책이 있다.
사실 웹 개발을 오래하다 보면, 쉽게 간과하기 쉬운 부분이 Javascript와 CSS와 같은 부분이다. 왜냐하면, 요즘에 나오는 HTML Editor 툴과 개발에 사용하는 IDE의 성능이 상당히 향상되어서 양질의 코드를 생산할 수 있기 때문이다.
그러나 요즘에 사용하는 자바스크립트는 이전의 그것과 전혀 다른 모습을 띄고 있다. 한 마디로 스크립트 언어이기에 배우기 쉽고, 인터넷의 웹에서 비슷한 Sample들을 쉽게 가져 올 수 있기 때문에 별로 배울 가치가 없다라고 생각하면 큰 코 다친다.

AJAX라는 기술이 Web 2.0을 대표하는 기술로 이야기 되어진 이후로, Javascript를 좀도 체계적이고, 라이브러리처럼 쓸수 있는 많은 Javascript Framework들이 만들어 졌다. Yahoo의 YUI, Roby on Rails에서 기본적으로 사용할 수 있는 Prototype, 최근에 마이크로 소프트의 ASP.NET을 위해서 Visual Studio에서 지원하는 JQuery 그리고, ExtJS와 같은 상용 프레임워크까지 셀수 없이 많은 새로운 Javascript Framework가 나타나고 있다.

하지만 자바 스크립트라는 언어의 근간을 이해하지 못하면, 좀더 효율적으로 사용하지 못할 거라고 생각 한다. 그렇기 때문에, 공부의 우선순위가 떨어져서 한번을 공부해야지 했던것이 이제야 살펴 볼수 있는 기회를 갖게 되었다.

책을 읽어가면서 내가 느낀것은, 한마디로, 내가 10여년전에 사용하고 이해하던 자바스크립트와는 전혀 다른 세계였다. OO를 적용한 객체지향적인 속성과 재활용을 위한 여러가지 기능과 속성들을 이해해야만 한다.  너무나도 자유롭고 쉬운 문법을 가지고 있지만, 확장과 변경을 위해서는 언어의 특성을 완전히 이해해야만 한다.

위의 보이는 사진속의 책이 내가 최근에 공부하고 있는 책이다.
책은 각 쳅터의 주제에 맞는 쉬운 예제들을 보여주고 있다. 이를 통해서 기본 원리들을 익힐 수 있도록 구성되어 있다. DOM을 통한 Object를 찾고 접근하고 제어하는 방법과 Dynamic HTML의 속성들을 이용하여 접근할 수 있는 Object들의 사용법도 익히면, 책의 내용을 이해할 수 있는 기본적인 소양을 갖추고 있다고 할 수 있다.

책의 내용을 결코 어렵지 않지만, 이전에 알고 있던 자바스크립트에 대한 선입견을 버리지 않는다면 쉽게 이해하기 어려울 것이다.

나와 같이 개발에 참여하고 있는 개발자는 ExtJS를 이용하는데, 큰 어려움을 가지고 개발 작업을 진행했다. 사실 ExtJS를 구매하고 개발에 이용하는 목적은 개발의 효율성과 리소스를 절약하려는 목적이었는데, 이에 대한 효과는 전무하였다.
나름 대로 분석을 해보면, 주어진 컴포넌트는 API 다큐멘트를 찾아보면 알수 있지만, 이의 변형이나 새로운 형태로 변형을 가할 때는 Javascript와 Prototype 라이브러리에 대한 이해가 적었기 때문이다. 그렇기 때문에 다른 컴포넌트를 이용할 때도 기본기는 항상 중요하다.

약 380페이지의 책중에서 현재 110페이지를 읽고, 코드를 짜보고 있다. 책 속에는 개발시 필요한 디버커 툴을 소개해 주고 있는데, 개인적으로는 Firefox의 plug-in인 Firebug를 좋아하고 자주 사용하고 있다. 이외의 다른 툴들은 책의 내용을 참고하면 된다. 그리고 Junit와 유사한 Javascript Unit 테스트 툴들도 소개하고 있다. 아직은 별로 관심 없는 부분이다.




Posted by 행복상자
드디어, 어제 신청했던 책이 오늘 도착하였다. 사실 회사에서 어제 원서를 빌려서 잠시 읽었는데, 원서는 쉬운 영어로 정확한 표현들, 쉬운 표현들을 사용하여여 읽기에 큰 무리가 없을 것 같다.

요즘 회사에서 내가 하고 있는 프로젝트는 OSGi와 Spring DM을 이용하여 Framework를 만드는 것이다. 하지만, 사람들이 바라보는 것은 Common 모듈을 만든다고만 생각을 한다. 그리고, 지원 할 수 없는 기능은 구현이 불가능하다고 단정하는 사람들도 가끔 보인다.

사실 보이지 않는 것은, 사람들은 느끼지도 믿으려하지 않는다. 그래서 가끔은 닥쳐야 일을 하기도 한다. 어떠 어떠한 프레임워크가 좋다라고 하지만, 실제로 사용하지 않으면, 그 두꺼운 레퍼런스는 그 효용성이 떨어질거다. 이는 개발자에게는 무용지물이라는 생각을 들게 만들지도 모른다.

오늘 도착한 책의 역자 서문을 읽다보니 이러한 글이 있어서, 잠시 내가 하고 있는 일과 프로젝트를 되돌아 보았다.

코코아 프레임워크 전체를 책에서 하나 하나 설명한다면 그 책은 단순히 프레임워크 레퍼런스가 되고 말것입니다.

단순하지만, 저자가 책을 쓴 목적이 명확히 들어나 있다. 그리고 책은 예제와 많은 그림들이 들어 있다. 원서에는 믿고 따라오라는 저자의 강력한 메시지가 있었는데, 기억은 나지 않는다. 암튼 새로 오늘 받은 책이 마음에 든다.

같이 공부하는 다른 사람들과 조만간 Workshop도 한번 계획해 보아야 겠다.
Posted by 행복상자
우연치 않게 맥 프로그래밍을 시작해야 할 것 같다. 물론 여지것 여러 환경을 접하고 새로운 언어와 기술을 익히는 것이 여지것 해 왔던 일이기도 하지만, 한 편으로는 많을 시간을 들였던 것들을 제대로 사용하지 못하고 버리기도 해왔던 경험도 많기 때문이다.

회사에 친하게 지내던 지인들이 있다. 지난중 금요일 점심을 같이 하고, 차를 마시는중 갑자기 누군가(구라파 닷컴 운영자)가 iPhone용 어플을 개발하고 싶다는 것이었는데, 분위기가 갑자기 찬성으로 돌아서면서, 모임명이 가칭 "제로사체"가 될것 같다.

다들 바로 일터로 돌아가서 인터넷으로 책을 구매해서 영수증을 캡쳐해서 보내주었다. 다들

너무나 발빠른 사람들이다.  사실 아래 "Cocoa  Programming for MAC OS X"라는 책은 국에서 번역된 책인데, 나른 잘 되어 있다는 평을 받고 있는것 같다. 다는 이책을 추천해 주고 있으니 말이다.


내가 오늘 이책을 구매하면 이번주 화여일나 도착할 것 같다. 사실 그동안 아무러 계기가 없어서 맥쪽 프로그래밍은 전혀 생각해보지도 않았다. 아니 전혀 다른 분야라는 생각을 가지고 있었기에 눈을 두려고도 생각하지 않았다. 지금하고 있는 서버 사이드의 기술을 하루 하루 발전하고 있기에 다른 쪽으로 외도 하고픈 생각이 전혀없었지만, 집에서 사용하고 있는 맥북의 새로운 용도를 발견해서 정말 기쁘다.

그리고 더블어 몇개의 개발 관련 사이트를 찾았다.

- 코코아랩: http://www.cocoalab.com/
  이 사이트는 코코아 관련 자료들이 있는데, 이중 XCode에 대한 자료는 한번 봄 직하다. 여러 나라 말로 작성되어 있는데, 아쉽게도 한글로 되어 있는 것을 없다. 다음을 참조하면 다운 받아 볼수 있다. (http://www.cocoalab.com/BecomeAnXcoder.pdf)

- 맥포지: http://www.macforge.net/
   여기는 맥 관련 개발 소스코드들이 올라와 있을 것 같다.(아직 직접 돌아보지 않아서, 정확히는 모르지만, 쉽게 유추가 가능하다.) 오늘 맥쪽에서 개발자와의 NDA를 폐지한다는 기사를 잡시 보았다. 앞으로 맥 관련 소스코드들을 쉽게 접할 수 있을 것 같다.






Posted by 행복상자