뉴욕의 프로그래머 (임백준)
15 MAR 2009
현업 SW 개발자가 시간날 때 읽으면 좋은 책
소위 프로그래머라면 한번 재미로 읽을 수 있는 이야기거리인것으로 보인다.
물론 저자의 주장과는 달리 이 책을 소설로 볼 수는 없고, 에세이라고 봐야 할 것 같다. 그리고 여러 장르가 혼합되어 있지만, 사례를 통해서 프로그래머를 교육시키는 책으로 봐야 할 것 같다.
이 책에서는 저자의 경험을 통하여, 개발 프로젝트에서 일어나고 있는 사례를 통하여 꼭 이런 것은 해야 한다고 주장하는 것이 있다. 여러가지가 있겠지만 소프트웨어 개발자를 간에 코드리뷰를 통하여 개발 품질을 향상시켜야 한다는 것과, 유닛테스트를 통하여 문제의 정확한 원인과, 소프트웨어 품질의 완성도를 높혀야 한다는 것이다. 이것은 한국의 개발자에게도 맞는 일일 것이다.
가장 공감가는 것은 잘 모르면 손되지 마라는 것이다. 실제 현업에서는 이브와 같은 사람이 존재하여 문제를 더 크게 만드는 사람이 존재하기도 하고 (반드시 이렇게 되지 않도록 차단하는 문화를 만들어야 하지만) 마이크처럼 자기가 맡은 문제를 책임지 못하고 남에게 넘기는 형태, 조금 실력있다고 무정부주의자처럼 구는 여러 형태가 존재한다. 어쨌던 모르는 것은 손되지 말고 물어서 하고, 철저한 검증이 필요하다.
개인적으로는 소프트웨어 개발이 예술이라고 생각하지는 않고, 철저한 협업이라고 생각하기에 전체가 공감할 수 있는 룰과 그 룰에 잘 적응하는 개인이 필요한 것 아닌가 한다. 이것을 문화라고 부르고 싶다. 이 책은 이런 인간들과의 관계에 대한 사례가 비교적 잘 표현하고 있는 것이 아닌가 한다.
하지만 이책의 아쉬움은 에세이류로 흘러서, 소프트웨어의 전체 부분을 다 그려내지 못하는 부분이 있다. 가령 요구사항에 대한 문제점과 요구 사항 분석등에 대한 부분등이 빠져 있으며, 프로젝트에서 힘든 요소중에 하나인 범위 통제(사양 변경)에 대한 요소들, QA등 다른 부서와의 협력과 갈등 등은 빠져있다. 그리고 좋은 설계가 무엇인가 하는 부분이 부족한 것도 아쉽다. 하지만 현업 소프트웨어 개발자라면 시간날 때 한번 읽어보면 아 이런면도 있구나라고 다시 한번 생각할 수 있는 좋은 책이라고 생각한다.
14 MAR 2016
오늘은 Hot한 주제인 AlphaGo와 인공 지능에 대해서 한번 이야기하겠다. 이미 시간이 많이 지났지만 나름 인공지능(AI) 전공자이고, 특히 신경망 (Neural Network)를 공부하기도 하였다. 하지만 특정 부분에 한정된다고 생각하고 일시적인 유행이라고 생각했다. 하지만 이것이 다시 Deep learning이라는 형태로 다시 나타나는지 모르겠다. AlphaGo의 성과는 대단하여 그 성공을 인정할 수 있겠다. 하지만 신경망이 일부 부분에 한 할 것이라고 생각하고, 인간(생명)을 흉내낸다고 더 좋은 성과를 낼 수 있을 것이라고는 기대하지 않는다. 예로 비행기가 새처럼 날개가 움직여서 나는 것이 아니라, 프로펠러등 별도의 추력을 이용해서 나는 것이 효율적이다.
그리고 터미네이터등의 AI에 대한 과도한 공포감이 늘어나는 것 같다. 이는 마치 인간이 자동차를 개발하고, 혹은 자율주행차를 개발하고 나서 자동차가 지능을 가져 사람을 죽일 수도 있다고 생각하는 것과 같다. 하지만 주의할 점은 인간의 기술이 전쟁무기, 즉 사람을 죽이는 장치에까지 발전할 것이다. 마치 총이 잘못 사용될 수도 있는 예이다. 이때 도덕적이지 못한 엔지니어들이 그 기술을 다르게 사용할 수 있다는 것이다. 특히 소프트웨어는 기능이 방대하므로 숨겨 놓아 사용할 수도 있다. 그래서 과학자와 공학자에게 요구되는 것이 도덕이다. 모든 인간에게 적용되어야 하지만 특히 사람의 목숨을 좌우할 수 있는 사람들에게 더 적용되어야 한다.
너무 길게 적었다. 요약하면 AlphaGo는 대단하지만 응용분야는 한정된다. AI에 두려움을 가지지 말고 그것을 만드는 사람들에게 도덕심과 규제장치를 넣어야한다.