쉽다는 말
다른 사람의 노력을 후려치는 표현 중 ‘그거 쉽잖아요’ 라고 말하는 것보다 더 나쁜 표현이 있을까 싶다. 자신이 지금 하고 있는 일은 어렵고 존중받아야 마땅한 일이지만, 당신이 하고 있는 일은 쉽고 존중받지 못할 일이라고 말하는 것이나 무엇이 다른가 싶다.
나는 HTML, CSS를 오랫동안 공부했으니 쉽다는 말을 자주 듣게된다. HTML, CSS가 입문용 언어로 좋다느니, 누구나 쉽게 접할 수 있다느니 등의 이야기다. 그렇게 시작해서 접근한 많은 개발자들이 HTML, CSS로 쉽게 해결할 수 있는 문제를 JS로 해결하는 경우도 빈번하게 본다.
결국 무엇이 쉽다라고 말하는 이면에는 그 분야에 대해서 명확히 이해하지 못한 데서 시작하는 게 아닐까란 생각이 든다. 어떤 분야던 쉬운 분야는 없다, 단지 스타트라인이 다를 뿐이다.
개발의 어려움
개발의 어려움이란 어디서 오는가에 대한 질문에 섣불리 대답할 수 없다. 예를 들어 누군가에게 ‘실무에서는 이렇게 하나요?’ 라는 질문을 받아도, 거기에 답할 수 있는 건 내가 경험해 본 아주 적은 영역에 대한 답변에 불과하다.
다만 교육과 현장의 가장 큰 차이점은 ‘이 서비스를 사용하는 유저’를 대하는 태도에 달려있다. 교육에서 만들어진 서비스는 실제로 런칭되지 않는 경우가 많고, 런칭되더라도 수익을 목적으로 만들어지지 않는 경우가 많다.
그러니 서버 비용을 무료 호스팅에서 태워가면서, Best practice 라는 명목 하에 가장 정형화된 아키텍쳐가 나오기 시작한다. 그렇지만 현장에서의 개발은 서버비용을 어떻게 하면 조금이라도 줄일 수 있을 지, 여러 유저를 대상으로 할 때 어떤 사용성이 가장 적절할 지, SSR로 하는 게 좋을 지 SPA로 하는 게 좋을 지 등을 지속해서 고민하는 것이다.
프런트엔드 개발자라고 하여 프런트엔드만 알아서는 안되며, 백엔드 개발자라고 하여 백엔드만 알아서는 안된다. 우리가 개발하는 모든 애플리케이션은 인프라 위에서 동작하고, 비즈니스 로직과 프레젠테이션 로직을 분리하고, 어떻게 해야 로딩 시간을 1초라도 줄일 수 있는가에 대한 지속적인 고민인 것이다.
거기에 디바이스, 네트워크, OS, 브라우저 버전, 국가, 지역, 심지어는 사용 패턴까지 고려해야하는 것이 개발이다. 그러니 개발자에게 개발이란 코드를 작성하는 데에서 시작하지만 코드를 작성하는 데에서 끝나지 않는다.
개발에는 정답이 있을 수 있지만, 개발해나가는 과정에는 정답이 마땅히 없다. 그러니 우리가 개발이 어렵다고 말하는 이면에는 언제나 각종 다양한 이슈들이 산개해있다는 것이다.
깊이
예로부터 어떤 애플리케이션을 만들 때 가장 쉽게 만드는 애플리케이션으로 Todo App을 이야기한다. 하지만 Todo App을 샘플로 만들어도 실제로 동작하여 판매하는 수준까지 만드는 Todo App은 전혀 다른 카테고리라는 걸 모두 알고있을 것이다.
그러니 어떤 영역이던 ‘그럴싸하게 보이는’ 수준까지 도달하는 데에는 그렇게 긴 시간이 걸리지 않을 수도 있다. 가정에 오븐이 있다면 누구나 홈 베이킹을 시작해볼 수 있고, 쿠키 정도는 구워볼 수도 있겠지만, 더 맛있는 빵과 쿠키를 만들기 위해서는 굉장한 노력이 필요하다.
그러니 개발에서도 그런 노력이 필요하다. 이 부분에 대해서 다른 이들에게 강요할 수 없다는 걸 알지만, 더 뛰어난 개발자가 되려면 특정 분야에 대해서 깊이 있게 학습해야 할 필요가 있다.
예를 들어 프런트엔드 개발자라면 DOM에 대해 더 깊이 이해하거나, 브라우저의 동작 방식에 대해서 더 깊이 이해한다던가, Project Fugu 같은 프로젝트를 생각해보면 OS의 기본 동작에 대해서도 이해해야 할 필요도 있는 것이다.
애플리케이션을 개발할 때에는 개발 패러다임도 이해할 수 있어야 하며, 어떤 설계가 옳은 설계인 지, 성능을 높이기 위해 필요한 작업은 무엇인 지, 하위 호환성은 어떻게 지원해야하는 지, 제품의 안정성을 어떻게 보장할 것인 지 등, 우리 앞에 놓여져 있는 문제는 산더미같이 많다.
작성자는 예를 들어 Linux를 예전에 공부했는 데, 그렇다고 내가 Linux 애플리케이션을 개발하려고 Linux를 공부한 것은 아니었다. 대신 OS가 어떻게 돌아가는 지에 대해 조금은 알게 되었고, 최신 브라우저는 OS 설계와 비슷한 면이 많기 때문에 브라우저의 동작 방식을 이해하는 데에 크게 도움을 주었다.
마무리
이 글은 오늘 인터넷에서 ‘Flutter는 쉽잖아요?’ 라는 글을 보고서 말할 수 없는 분노가 와서 작성한 글이다. 보통 내가 작성하는 글은 그 날의 키워드나 분노감이 작성하는 경우가 있는 데, 이 경우에는 쉽다라는 표현이었다.
어떻게 보면 쉽다는 표현은 다른 사람의 노력을 짓밟는 행위이기도 하다. 많은 사람들이 함께 산다는 걸 이해하고, 다른 사람의 노력을 짓밟는 행위를 하지 않았으면 하여 이 글을 작성하였다.
우리에게 쉬운 일이란 존재하지 않는다.