2015년 10월 7일 수요일

[서평] 소프트웨어 품질 관리 패러다임은 어떻게 변하고 있을까?

10년쯤 전에 XP(Extreme Programming)에 관심 가지고 공부를 했을 때, 여러 구성요소 중에서 충격적이고 사고의 변화를 주었던 것이 TDD(Test Driven Programming)이었다. 그중에서도 Unittest에 대한 아이디어가 너무 좋아서 어린 마음에 주변에 많이도 이야기하고 공부했던 기억이 있다.

이제는 Unittest는 일종의 개발의 필수 요소가 되어서 딱히 애자일 개발 방법을 사용하지 않는 환경에서도 쉽게 접할 수 있게 되었다. 그리고, 개발자가 단위 테스트를 넘어 인수 테스트(Acceptance Test) 등을 작성하는 것도 드물지 않은 경우가 되었으니. 10년이면 강산이 변한다는 말처럼 개발 방법에도 많은 변화가 있었다고 볼 수 있을 것이다.


그렇다면 QA(Quality Assurance)라 불리는 품질 관리 분야에서는 어떤 변화들이 있었을까? Unittest 등을 비롯한 개발단에서의 테스트가 도입된 것은 물론이고, 다양한 방법을 통한 테스트 자동화가 지속적으로 보급되어왔으며, 마이크로소프트나 구글 등의 세계적인 수준의 소프트웨어 회사들에서는 품질을 관리하는 영역을 넘어, 모든 구성원들이 품질을 올리는데 도움이 되는 환경과 체계를 만드는 작업을 하고 있다.

더불어 모바일 환경, 웹 서비스 환경의 보편화로 인해 저품질 제품이 출시되지 않도록 하는 게이트 키퍼로서의 품질관리 역할은 사라지고, 전반적인 개발 과정에서 자연스럽게 출시에 필요한 수준의 품질을 확보하기 위한 환경과 체계를 만들어가는 품질관리의 역할이 커지고 있는 상태이다. 요컨대, 제품의 출시를 Go/NoGo 하던 역할이 처음부터 Go할 수 있는 제품개발을 보장할 수 있는 역할로 옮겨가고 있는 것이다.

급격하게 변화하는 현재의 소프트웨어 생태계에서 적시 출시를 통해 최대한 경쟁력을 확보하는 것이 최고의 무기가 되는 상황이다. 때문에 빠른 출시의 방해가 되지 않는 것과 함께 문제가 없는 품질을 확보해야 하는 품질관리의 역할은 전보다 더 복잡하고 어려워지고 있다고 볼 수도 있다. 품질관리 팀에서 코딩을 하지 않는다는 것도 옛말이 되었고, 최근에는 품질을 관리하는 위한 코드를 생산하는 역할도 중요 역할이 되었으니, QA와 개발자의 경계가 불분명한 경우도 드물지 않게 볼 수 있는 상황이다.



[네이버 모바일 테스트 이야기]는 이러한 상황에서 어떤 식으로 변화에 대응을 하는지에 대한 네이버의 답 중 일부를 보여주는 책이다. 

기계도 할 수 있는 부분은 기계에게 넘기고, 사람만이 할 수 있는 부분을 찾아봤다는 추천사의 말처럼. 기존의 전통적인 테스트 이외의 부분들, 특히 모바일이라는 환경에서 문제가 될 수 있는 부분들을 고민해보고 해결하는 모습들을 책에서 볼 수 있다.

개인적으로 모바일 환경이 기존의 데스크톱 등과 다른 가장 큰 부분이 한정된 리소스(배터리, CPU, RAM)와 모바일 네트워크의 특성이라고 생각한다. 책에서 다루고 있는 리소스 측정에 관한 내용이나 부록의 모바일 테스트 팁에 나오는 모바일 네트워크에 관한 내용들이 모바일 환경에서의 테스트가 왜 달라져야 하는지에 대한 답변이 될 수 있을 것 같다.



참고로 모바일 네트워크에 대한 조금 더 자세한 설명이 필요하다면 예전에 내가 쓴 글 중 이동통신 네트워크 소개(http://tasyblue.blogspot.kr/2014/02/blog-post_26.html)라는 글이 있는데 읽어보면 도움이 되지 않을까 싶다. :-) 

2015년 5월 10일 일요일

추천할 만한 자바 관련 실용서 한권을 발견하다: 네이버를 만든 기술, 읽으면서 배운다 - 자바편



"자바 관련해서 어떤 책을 읽으면 좋을까?"

이펙티브 자바

종종 주변에서 듣는 질문인데, 이 질문을 받게되면 자바를 배운지 얼마 안 되는 사람들에게는 조슈아 블록의 "Effective Java"를 추천해주곤 했다. 하지만 현업에서 어느 정도 자바를 사용하고 있는 사람들에게는 딱히 짚어서 추천해줄 만한 책을 고르기 쉽지 않았다.

자바에 관한 책이 없는 것도 아니고 오히려 굉장히 많은 책들이 출판되었는데, 왜 그럴까 싶었는데. 곰곰히 생각을 해보니, 자바 개발 환경과 사용 환경이 워낙 다양해지고 세분화되었기 때문에 출간된 만든 책들이 그 중 일부만을 다루고 있는 경우가 많았기 때문이 아닐까 싶었다. 그리고, 어느 정도 자바를 사용하는 사람들에게는 현업에서 겪게되는 문제들을 이해하고 해결하는데 도움이 되는 책들을 추천해주고 싶었는데 그에 적합한 책을 발견하지 못했기 때문인가도 했다.


네이버를 만든 기술, 읽으면서 배운다 자바편

우연한 기회로 이 책(네이버를 만든 기술, 읽으면서 배운다 - 자바편. 이하 자바편)의 서평을 쓰는 일에 참여하게 되면서 간만에 자바 관련 서적을 읽게 되었는데, 300페이지 좀 안되는 마지막 장을 덮으면서 드는 생각이 자바 관련 추천 서적에 이 책의 이름을 올려두면 괜찮겠다 라는 것이었다. 

물론, 이 자바편 책은 기술서의 분류로 보자면 이론과 실용중에 실용에 굉장히 가깝게 닿아 있는 책이다. 따라서 이 책만 읽어서 책에 나오는 내용들에 대한 근본적인 이해를 얻기는 쉬운일이 아니다. 하지만 그 지점에 현업을 통해 다양한 상황에 대한 경험이 있는 독자들은 좀 더 큰 도움을 얻을 수 있을 것이라 생각된다. 네이버라는 비교적 큰 규모의 시스템에서 발생하는 다양한 문제점들이 자바의 특성들과 어떻게 연결되고 어떻게 해결 될 있는지 저자들의 글을 하나 하나씩 읽다보면 독자들의 경험과 책에서 읽은 내용이 융합되어 지식이나 경험을 향상 시킬 수 있는 기회가 될 수 있을 것 같다.

다만, 기술블로그에 작성된 글을 모아서 펴낸 기본적인 한계 때문인지, 구성이 체계적이지 않은 점은 책의 처음부터 끝까지를 읽고 뭔가를 얻고자 하는 독자들중 일부에게는 허전함으로 남을 수도 있을 것 같다. 마치 풀코스의 정찬을 기대했는데, 몇가지 일품요리들만 나온 격이랄까. 하지만 반대로 긴 시간 들이지 않고 핵심만 얻고자 하는 독자들에게는 장점으로 다가설 수 있는 부분으로 보인다. 특히, 4장 람다에 대한 이야기나 2부에서 쓰레드 덤프, 힙 덤프에 대한 내용, 3부 전체를 할애한 가비지 컬랙션등에 대한 내용은 앞으로 다가올 자바의 핵심, 그리고 여전한 핵심들에 대한 좋은 설명들을 제공하고 있다.

자바는 현재 다양한 곳에서 중심적인 역할을 수행하고 있다. 이는 프로그래머라면 자바를 사용하던 사용하지 않던 느끼고 있을 지점이라 생각한다. 그리고 그 다양한 역할에 따라 다양한 기술들이 만들어지고 사용되고 있는 중이다. 이 책을 통해서 그런 다양한 기술들의 기본이 되는 부분에 대한 지식과 생각들 얻을 수 있을 것으로 기대한다. 그리고 기술서로 드물게 300페이지 이내의 책이라 맘 먹고 읽으면 2~3시간 안에도 읽을 수 있다. 더불어 앞서 말한바와 같이 블로그의 글을 묶어서 펴낸 책이라는 것의 장점인 부분이 있는데, 챕터 하나 하나가 일종의 별개의 글이라 글의 순서에 구애받지 않고 읽고 싶은 글을 먼저 읽어도 전혀 문제가 없다.




요약 : 현업에서 자바를 사용하는 개발자인데, 람다나 GC에 대해서 잘 모르고 있다면 추천.

2015년 3월 30일 월요일

Kobo Aura H2O : 전자책 리더



맘에 들어서 남겨보는 후기.

최근에 Kobo에서 나온 Aura H2O라는 전자책 리더를 구입했습니다. 몇 주간 써보면서 이렇게 좋은걸 진작 쓸 것을.. 하는 생각이 들었네요.

제가 느낀 장점
- 고사양 E-Ink의 장점으로 인해 책(문서) 읽기에는 정말 좋다. (눈 피로 적음, 백라이트 채용으로 밤에 보기에도 좋음, 해상도가 높아서 작은 글씨도 잘 보임)
- Pocket 연동이 되어서 웹에서 글을 스크랩해서 읽기 좋음
- Google Play Books를 지원해서 꽤 많은 한글책을 합법적으로 읽을 수 있음
- 외국에서 구입한 EPub는 그냥 읽어지더라..(안되는 줄 알았는데..)
- Koreader라는 걸 설치하면 PDF도 잘 읽힘(그냥도 되는데 느림)
- 타블렛에 비해 베터리가 엄청 오래감
- 방수!

단점
- 리디북스가 안됨.. (결국 구글 북스로 갈아탐..)

전자책 보려는 분들에게는 강추입니다.

2015년 3월 13일 금요일

동기에게 보내는 편지 : 프로그래밍 실력을 향상 시키는 방법

2010년에 썼던 글인데, 과거글 AS의 관점에서 책을 추가하거나 제외하고, 책의 링크를 알라딘으로 수정했습니다.


작년 말인가요. 회사 동기에게 메일 한 통을 받았습니다.

언제 시간이 완전 한가해져서 남으면..
나에게 초보가 고수가 되는 S/W 관련 서적들을
급 수별로 추천 좀 해주렴..
나도 이제 책 좀 읽고 살아야게따!!ㅋㅋㅋㅋ

대충 위와 같은 내용이었는데요. 시간이 완전 한가해지는 거 기다리다가는 메일도 못 쓸 것 같아서 며칠간에 걸쳐서 답장을 작성했습니다. 제가 그 동안 읽었던 책들을 되돌아 보았는데요. 전산과를 졸업하고 개발을 직업으로 하게 된 제 처지와 같은 분들에게 도움이 된다면 좋겠습니다.

이하 답장의 내용입니다.

Machine Learning for Programming

머신러닝에 대한 세미나인데, 아래 링크에서 동영상으로 슬라이드와 함께 보실 수 있습니다. 


간단히 소개해보면 SPLASH2014라는 컨퍼런스에서 Peter Norvig이란 사람이 발표한 내용인데요.
SPLASH는 ACM 컨퍼런스중에 하나로 Systems, Programming, Languages and Applications: 
Software for Humanity 의 약자입니다. :) 대충 해석해보면 시스템, 프로그래밍, 언어 등에 대한 
컨퍼런스 정도가 되겠네요. 

궁금해서 홈페이지에 들어가봤더니, 소프트웨어의 다양한 분야들에 대해서 다루고 있는 것을 확인할 수 있었는데요.
그리고 흥미롭게도 객체지향개발 관련 컨퍼런스로 유명한 OOPSLA도 이 컨퍼런스와 함께 열리고 있는걸 발견했습니다.


발표자인 피터 노빅은 아마도 대부분 아시겠지만, 대학에서 인공지능 연구했고(이 분야의 탑중 한명이죠),
현재는 구글에서 관련 분야를 이끄는 걸로 알려져 있습니다. 탑레벨의 해커 중에는 드물게도 글도 자주 쓰고, 
발표도 많이 하시는 분이라 그런지 이번 발표 또한 영어를 잘하지 못해도 이해하는데 큰 어려움이 없는 
수준으로 잘 설명하고 있습니다.


발표는 질문을 먼저 던지고 그에 대한 자답을 하는 방식으로 진행되는데요.
아래와 같은 질문들을 던지게 되는데, 답은 강의를 통해 직접 확인해보시면 좋을 것 같습니다. :)


  • Can we learn functions from examples?
  • Can we learn parts of programs from examples?
  • Can we learn entire programs from examples?
  • Can we learn complex nontraditional programs from examples?
  • Can we learn to optimize programs?
  • Can we learn to efficiently execute declarative programs?
  • Can we learn an interpreter?
  • Can we learn a user's language?
  • Can we learn tutoring feedback from examples?


상단 링크에 있는 동영상의 강의는 30분 정도인데, 머신러닝에 대한 교양을 쌓을 수 있는 좋은 강의라 생각되니,
여유 있을 때 한번 보시면 좋을 것 같습니다.

Man of Month를 마치며

벌써 2020년 1월 14일이다. 19년의 마지막 달에 Man of Month라는 팀의 제도를 시작한다고 했었는데, 12월이 지나고 그 다음 달도 거의 절반이 흐른 것이다. MoM을 시작하면서 하겠다고 계획했던 것들도 실제 한 것들과 비교해보니...