해커와 화가

해커와 화가를 읽다.

책을 하나 읽게 되었습니다. 해커와 화가라는 책입니다. 2003년에 집필된 꽤 오래된 책 입니다. 15개의 저자의 에세이를 책으로 만들어 집필한 것으로 알고 있는데, 가장 영향을 많이 받은 챕터는 "02 / 해커와 화가 : 해커는 화가, 소설과 건축가와 같은 예술 창조자다" 와 "05 / 또 하나의 길 : 웹 기반 소프트웨어가 준 두번째 기회" 였습니다.

02 해커와 화가 - 재미있어 보였다.

챕터 2 해커와 화가에서 저자가 말하는 것은 프로그래머도 결국 예술가와 같다는 것이었습니다. 예술가와 과학자는 차이점이 있습니다. 과학자는 무언가 만들기전에 철저하게 과정을 설계하고 준비하고 시작합니다. 반면에 예술가가 어떤 그림을 그릴 때에는 완벽한 무언가를 설계하고 시작하기 보다는 우선 그림 그리기를 시작하고 봅니다. 그리고 마음에 들지 않는 부분은 조금씩 지우고 새로 그리고 이렇게 다듬고 발전시키며 예술을 완성시킵니다.

프로그래머가 완벽한 설계를 하고 그에 따라 프로그래밍을 하는 것이 맞는지, 아니면 예술가처럼 일단 코딩을 시작하고 고쳐가는게 맞는지. 옳다 그르다는 잘 모르겠습니다. 하지만 분명한 건, 후자(예술가처럼)로 코딩을 하면 매우 재밌다고 생각합니다. 내가 생각한대로 짰는데 그대로 동작하면 그대로 재밌고, 그렇게 동작 안하면 왜 동작안하는지 찾고, 이해하고, 디버깅에 성공해서 원하는 동작대로 만들면 성취감이 있습니다.

경우에 따라 다르겠지만 매우 신뢰성 높고, 엄청 많은 사람이 협력해야 하는 프로그램을 작성해야 할 때, 예술가처럼 프로그래밍하면 문제가 있을 순 있어 보입니다. 이런 상황에서는 완벽한 설계를 하고 코딩하는게 좋아 보입니다. 반대로 스타트업이나 빠르게 무언가를 만들어내야하는 상황에서는, 시간이 생명인 스타트업에서 완벽한 설계를 하다가 망해버리고 말 겁니다. 여기선 예술가처럼 프로그래밍 해야겠죠.

책을 읽고 전 예술가적인 프로그래머를 지향하기로 했습니다. 이유는 무엇보다 재미있기 때문입니다. 예술가적인 프로그래머가 되려면 Front-End가 적합하다고 생각합니다. Back-End는 빠른 Develop보다 훨씬 중요한 게 신뢰성입니다. 이 분야에선 완벽한 설계가 더 중요할 것 같습니다. 반면에 Front-End는 내가 개발한 것을 확인하기가 비교적 쉽고 문제가 잘 보입니다. 그래서 예술가처럼 조금씩 다듬어 더 좋은 프로그램을 만들어 내는 방식이 가능합니다.

05 또 하나의 길 - 비전 있어 보였다.

다시 한번 강조하고 싶은데, 이 책은 2003년에 집필되었습니다. 저자는 이 챕터에서 웹 기반 소프트웨어의 비전을 예측했습니다. 웹 기반 소프트웨어는 웹 브라우저를 실행할 수 있는 Device이기만 하면 어디서든 구동 가능하다는 장점이 있습니다. 한번 Develop하면 PC, 스마트폰(Android, IOS)등등 한번에 배포할 수 있습니다. 이런 엄청난 강력함이 있지만 겉으로 보기에는 매우 큰 제약이 있어 보입니다. Desktop App(Excel, Word 등등) 같은 무거워보이는 프로그램은 웹 기반에서 돌린다는 건 예전에는 상상도 못할 일이었습니다.

지금은 구글에서 무려 무료로 스프레드시트나 문서작성도구를 웹 기반으로 작성할 수 있도록 합니다. 이 도구들은 심지어 한 문서에 여러사람이 접속해서 문서를 동시에 수정하는 것도 가능하게 해줍니다. 웹 기반의 프로그램이기 때문에 비교적 쉽게 구현할 수 있었다고 생각합니다.

앞으로 10년 뒤에 세상은 또 어떻게 바뀌어 있을까요. 저는 네이티브로 남아있을 수 밖에 없는 몇 안되는 앱을 제외하고는 모두 웹 기반 앱으로 이주하거나 새로운 웹 앱이 생겨날 것 같습니다. 웹 기반 앱의 가장 큰 단점은 성능인데, 크롬브라우저의 성능이 계속 향상되면 일반 PC만큼 성능을 낼 수 있도록 빠르게 동작할 것이라 예상합니다. 그러면 굳이 네이티브로 만들 필요 없이 웹 기반으로 개발하는 것이 당연하게 될 것 같습니다.

이런 웹 기반 세상에서 가장 필요한 기술은 무엇 일까요? 저는 Front-End 개발이라고 생각합니다. 단순히 사용자의 눈에 보이는 것만 디자인 하는 것을 넘어, 크롬 브라우저 기반으로 예를들어 Excel작업을 할 수 있도록 복잡한 기능들을 구현할 수 있는 실력있는 개발자가 많이 필요해 질 것입니다. 그리고 이런 역할을 할 수 있는 사람은 Front-End 개발자라고 생각합니다. Desktop App 개발자들이 각 타겟 OS와 PC 성능에 맞추어 개발하듯이 웹 기반 앱 개발자들은 구글 크롬 브라우저의 성능을 최대한으로 사용해 빠르게 동작하는 앱을 만들어 내야 합니다. 실력있는 웹 Front-End 개발자는 지금보다도 훨씬 많이 필요할 것입니다.

성공을 위한 가장 강력한 도구

내가 어떤 좋은 아이디어가 있는데 이를 서비스하기 위해 가장 좋은 도구중 하나는 웹 앱 개발하는 능력이라고 생각합니다. 멋진 아이디어가 생각났을 때 빠르게 개발해서 시험해보고, 또 다른 아이디어를 시험해보고 반복한다면 어느 순간 세상을 바꾸는 멋진 앱을 만들어 낼 수 있다고 생각합니다. 가장 중요한 건 우선 서비스가 가능한 무언가를 만들 수 있는 능력이 있어야 한다는 것이고, 그 다음으로는 빠르게 개발할 수 있어야 한다는 게 중요한 것 같습니다. Front-End 기반 웹 앱 개발능력은 이 두 가지를 모두 충족하는 강력한 도구라고 생각합니다. 열심히 공부해서 실력있는 개발자가 되어 세상을 바꾸는 멋진 웹 앱을 개발하고 싶습니다.

'이야기' 카테고리의 다른 글

2020년 8월까지 회고  (0) 2020.08.27

+ Recent posts