2019 Oct | 개발자 초심

Wecode 코딩 부트캠프에 참여한지 벌써 한달이 지났다. 과제는 도전의 연속이고 매번 적지 않은 시간과 에너지를 필요로 한다. 그렇다 해서 개발 공부에 매진하는 일상이 싫지는 않다. 오히려 너무 만족하며 지내고 있다. 좋은 멘토, 동기 분들과 함께 할 수 있다는 점, 좋은 개발자 커뮤니티가 생긴 점, 좋은 환경에서 시간에 구애받지 않고 원하는 만큼 개발에 매진할 수 있다는 점 등의 일상에서 누리는 여러가지 것들에 매우 감사한 10월이었다.

좋은 개발자란?

기계적으로 코드를 짜고 대충 공부해서 어떻게든 구현만 시키는 개발자가 아닌, 정말 좋은 소프트웨어 엔지니어가 되고 싶다는 생각을 자주 한다. 나를 포함한 부트캠프에 참여하는 대부분 사람들의 목표는 우선 개발자로 취업하는 것이다. 이러한 단기적 목표도 물론 중요하지만, 장기적으로는 좋은 개발자로 성장하는 것이 모든 과정의 목표가 되어야 한다. 이번 글에서는 현재의 수준에서 생각할 수 있는 좋은 개발자에 대한 기준, 그렇게 되기 위해 현재 할 수 있는 것들과 갖춰야 할 태도에 대해 정리해보려고 한다.


지식과 기술의 본질을 소중히 여기는 개발자

요즘 시대에는 모든 것이 급변한다. 이럴수록 가장 쉽기 때문에 맨 먼저 배우지만, 무엇보다 중요한 기초 지식과 기술의 본질을 더욱 소중히 여기는 개발자로 성장하고 싶다. 새로운 것들이 생겨날 때마다 흥분해서 달려들거나 기존의 것들을 무시하고 아무 생각없이 새 것으로 갈아타는 태도가 아닌, (친구의 멋진 표현을 빌리자면) “중후한 태도”로 새로운 것들을 마주하며 꾸준히 학습하는 개발자로 성장하고싶다.

첫 2주는 웹의 본질인 HTML/CSS/JavaScript 기초를 다뤘다. 그리고 3주차에 바로 React와 Saas를 배우기 시작했다. 문제는 React와 Saas가 정확히 무엇인지 모른 상태로 그냥 시작했다는 점이다. 더 큰 문제는 아직 HTML/CSS/JavaScript에 대해 모르는게 (분명히 너무나) 많다는 점이다.

  • React가 뭐지? 왜 생긴거지?
  • npm을 설치해야 된다는데 npm은 뭐지? yarn은 또 뭐지?
  • Library가 정확히 뭐지? Framework는 뭐지?
  • Angular는 뭐지? React와 무슨 차이가 있지?
  • Saas는 뭐지? CSS pre-processor? 그럼 pre-processor는 뭐지?

막상 새로운 내용을 배우기 시작했더니 대충은 알겠지만 말로 담백하게 설명할 수 없는 개념이 많았고(넘쳤고) 기초 내용을 너무 가볍게 대하고 있는건 아닌가 라는 생각이 들었다. 물론 실제로 부딪히고 사용하면서 자연스럽게 깨닫고 배우는 것들이 많이 있다. 하지만 호흡이 빠른 부트캠프의 특성상 매일 다른 세션이 진행되며 과제가 계속해서 주어지기 때문에 개발에 대한 큰 그림 없이 모르는 개념이 쌓여가는 상태로 진행한다는 것이 벅차게 느껴졌다. 다행히 4주차에 포트폴리오를 만들면서 그동안 배운 내용을 적용해보고 블로그에 옮기며 기초 내용을 다시 한 번 정리할 수 있었고, 크고 작은 문제들에 부딪히며 본질의 중요성에 대해 깊이 깨달을 수 있었다. 조금 늦더라도, 조금 덜 배우더라도 누구의 보폭이 아닌 나만의 보폭에 맞게 가고 싶다.

관심사의 확장이 일어나는 개발자

특정 지식과 기술, 분야에 대한 편견이나 편애 없이 관심사의 확장이 일어나는 개발자가 되고 싶다. 좋은 개발자가 되기 위해선 나의 관심사가 내가 속한 분야, 내가 사용하는 기술에만 국한 되어서는 안 된다.

사용자와 상호작용하는 웹/앱을 만드는 Frontend는 동시에 서버, DB 등을 다루는 Backend와 밀접하게 연결되어 있다. 사용자와 더 나은 상호작용을 하기 위해선 사람에 대한 이해가 우선이며, 사용하기에도 편리하고 보기에도 좋은 UI를 구현하기 위해선 디자인, 인문학, 사회학 등으로 관심사를 확장 시킬 수 있을 것이다. 이와 동시에 Frontend와 Backend가 어떻게 연결되며 네트워크 상에서 어떠한 방식으로 소통 하는지, 결국엔 소프트웨어가 전체적으로 어떻게 구성되어 있고 나아가 하드웨어 안에서 어떻게 작동 하는지 까지도 관심사를 확장시킬 수 있을 것이다.

생각나는대로 그려본 Frontend 관심사의 확장. 매년 업데이트 되는 개발자 RoadMap을 보면 공부할 게 정말 끝이 없다. 모든 것을 정복 하겠다는 태도보다는 관심사를 확장 시키며 꾸준히 학습하는 태도가 중요하다고 생각한다.

Wecode에서는 3-4주차 부터 Frontend와 Backend 중 무엇을 할 지 각자의 성향(혹은 기타 이유)에 맞게 스스로 정한다. 그 후엔 Frontend와 Backend가 다루는 내용에 따라 따로, 또 같이 세션에 참여할 수 있기 때문에 전체적인 그림을 그려가는 동시에 세부적인 내용들을 하나씩 채워갈 수 있다. 이번주에는 공통 세션으로 HTTP 통신 방식과 API 서버에서 인증과 인가가 어떻게 작동 하는지를 배웠다. 실제로 Backend API에 연결시켜 기존에 만들었던 로그인 페이지에서 로그인 동작이 어떻게 진행되는지 확인할 수 있었는데 서로 다른 서버가 토큰을 생성하고 주고 받으며 소통하는 과정이 신기했다. 다음주부터는 한 팀에 5명씩, 총 네 팀으로 프로젝트가 시작된다. 새로운 프로젝트에 대한 기대감은 물론 Frontend와 Backend가 함께 작업하며 또 다른 관심사의 확장이 일어나기를 기대한다.

소통하는 개발자

개발을 막 시작했을 때 신선하게 다가온 두 가지가 있다. 바로 Stackoverflow와 GitHub이다. Stackoverflow는 개발자들에게 네이버 지식인(사용해본 적은 없고 앞으로도 없을 것 같지만)과 같은 사이트이다. 문제 해결이 도저히 안 되는 경우 들어가서 검색해보면 놀랍게도 필요한 정보가 전부 있다. (그만큼 개발을 배우면서 겪는 삽질의 과정은 모두가 비슷하다는 점이 신기하면서도 위로가 된다.) Github은 오픈 소스의 형태로 서로의 코드를 공유하고 함께 협업할 수 있도록 도와주는 플랫폼이다. 개발자들은 이러한 서비스와 툴을 사용해 끊임없이 소통한다. 누군가의 질문에 대답해주고 함께 고민하는 모습들, 그리고 모두가 겪는 불편함을 극복하기 위해 협업할 수 있는 툴을 개발했다는 사실이 기존에 내가 생각했던 개발자들의 모습과는 다르게 인간미 넘치는 모습으로 다가왔다.

Wecode의 장점 중 하나는 언제든 질문과 대답을 주고받을 수 있는 멘토, 동기들과 함께 있다는 점이다. Stackoverflow에 Wecode 페이지를 따로 운영할 정도로 질문하고 대답하는 것을 중요시하는데, 이렇게 끊임없이 소통하며 모르는 내용은 물론이고 이미 배운 지식도 질문하며 확인하는 태도, 아무리 초보 수준이여도 내가 아는데까지는 누군가의 어려움에 도움을 줄 수 있는 건강한 소통의 방식을 익힐 수 있다.

개발자들끼리 다양한 플랫폼을 통해 말이나 글로, 때로는 코드로 소통하는 것은 특별한 문화이자 굉장한 혜택이라고 생각한다. 개발자가 되기로 결심한 이상 좋은 소통의 문화에 적극적으로 동참할 수 있기를 바란다.

기록하는 개발자

꾸준히 기록하고 글을 통해 현재의 과정에 조금 더 나은 의미를 부여하고 다양한 사람들과 소통하는 개발자가 되고 싶다. 개발자들에게 회고하는 문화가 있다. 처음 개발을 시작하게 된 이야기부터 학습의 과정, 문제 해결 과정, 프로젝트 진행 이야기 등을 주제로 현업에 있는 개발자들의 이야기와 생각을 접할 수 있는 좋은 글이 많이 있다. 개인적으로는 이런 종류의 글을 찾아보며 개발자 분들의 이야기를 많이 접하려고 한다. 현재의 과정을 먼저 겪은 사람들의 이야기를 보면서 개발자로서 지녀야 할 태도와 앞으로의 방향성에 대해 깨닫기도 하고, 무엇을 어떻게 배워야 하는지에 대한 실제적인 이야기를 토대로 다음의 계획을 세우기도 한다. 덕분에 좀 더 나은 고민으로 답답할 수 있는 배움의 과정을 조금은 즐겁게 채워갈 수 있는 듯하다.

Wecode에서도 TIL(Today I Learned)과 같이 현재 배우는 내용들을 매일 블로그에 정리할 것을 강조한다. 개발자가 왜 글을 써야할까? 왜 갈수록 개발자에게 글쓰기 능력을 요구하는걸까? 단지 배운 내용을 잘 정리하기 위해서일까? 여기에 들어오기 전부터 글은 썼지만 솔직하게는 비전공자이기 때문에 블로그도 없으면 정말 내세울 게 없겠다는 마음으로 시작했다. 하지만 꾸준히 기록하며 그 안에 내용을 하나씩 채우다 보니 이제는 개발자가 글을 써야 하는 이유에 대해 조금은 알 것 같다.

내가 하는 일을 다른 사람들이 이해하고, 그것에 관심을 기울여줄 때 비로소 내가 작성한 코드가 쓰임새를 찾을 수 있기 때문에.
다른 개발자의 이야기를 접하고 용기를 내서 개발을 시작할 수 있었듯이 나의 이야기 또한 누군가에게는 작은 도움이 될 수도 있기 때문에.

앞으로의 기록이 어떤 내용으로 채워질지, 일상의 크고 작은 이야기들이 글을 통해 얼마나 의미있게 만들어질 수 있을지 기대가 많이 된다. 꾸준히 읽고 꾸준히 기록하자.


Do What You Love

“Do What You Love”

Wework에서 자주 볼 수 있는 문구이다. 어쩌면 요즘이야말로 가장 하고 싶은 일에 온전히 집중할 수 있는 행복한 시간이라는 생각이 든다. 하루는 길지만 너무 빠르게 지나간다. 그래서 매일의 일상을 이루는 요소들이 더욱 소중하게 느껴진다. 아침에 타는 버스, 도착해서 마시는 커피, 동기들과 나누는 대화, 집에 돌아가는 시간 등등..

빠르더라도 조급 하지는 말자. 더욱더 지식과 기술의 본질을 소중히 여기는, 관심사를 끊임없이 확장하는, 꾸준히 소통하고 기록하는 개발자로 성장하자. 당장의 결과가 눈에 보이지 않고 알아봐주는 사람이 없더라도 꾸준히 하면 분명 그냥 개발자가 아닌 정말 괜찮은 소프트웨어 엔지니어로 성장할 수 있을 것이다. 어제보다 더 나은 실력을 갖추는, 실력보다 더 나은 태도를 갖추는 긴 과정이 되기를 기대하며 10월을 마무리한다.

“2019 Oct | 개발자 초심”의 3개의 생각

  1. 괜찮은 소프트웨어 엔지니어!!!
    생각하고 노력한만큼 가능하다고 믿는다
    지금의 정리한내들을 잘 지키면 모두가 존경하는 프로그래머가 되있을거다~
    사랑한다 우리 장남~♥
    우리가족은 든든한 우리 준식이를 믿고 기도한단다~
    몸아프지않게 늘 조심하구~
    사랑해 아들~♥

  2. 준식님, 멋있으십니다. 꼭 성공 하시길 바랍니다.
    저도 훌륭한 개발자가 되어 찾아 뵙겠습니다!

댓글 남기기