Experience,  Persnal

“오늘부터 개발자” 책 리뷰

Introduction

우연히 “오늘부터 개발자”라는 책을 얻게 되어서 읽게 됐다. 해당 책은, 최근에 비전공자들이 개발자가 되기 위해 많은 어려움을 겪고 있는 상황에서 책 저자가 자신의 경험을 바탕으로 조언 및 노하우를 공유한다. 물론 책 저자 또한 비전공자 출신으로 나름 자부할만한 개발자가 되어 현업에서 업무를 진행했다.

반대로 난 정석 테크트리를 밟고 개발자가 되었기에 비전공자가 개발자가 되는 career path를 잘 알지 못해서 궁금증을 가졌으며, 혹여나 비전공자가 가지고 있는 잘못된 내용이 있을까 하는 비판적인 마음도 가지면서 읽었다.

개발자의 영역

“개발자” 라는 직업을 누군가가 떠올리면 아래와 같은 이미지를 떠올릴 것이다.

해커, 광기의 랩소디 : 세상을 바꾼 컴퓨터 혁명의 영웅들(복간판)
영화 속 프로그래머 모습

나도 처음엔 이런 nerd한 해커와 같은 느낌의 개발자가 되고 싶었고 생각했었다. 물론 누군가의 눈에는 이렇게 보일수도 있지만 개인적으론 그런 멋진 모습은 보기 어렵고 버그 앞에서 고군분투하는 모습이 대부분의 시간일 거라 생각한다.

책의 저자는 개발자에 대한 이미지를 다음과 같이 표현한다.

개발자는 유용한 서비스를 만드는 사람들

정말 맞는 말이다. 내가 만약 개발자를 한 단어로 정의해보자면 “Solver”라고 하고 싶다. 개발의 모든 시작은 문제 인식이다.

  1. 현재 background 및 상황 분석
  2. 문제점 발견 및 동기 확립
  3. 이와 관련된 연구 및 대안 분석
  4. 해결 방안 제시
  5. 해결 방안을 적용 후 결과 분석

이는 개발자 뿐만 아니라, 사회에서 일하는 대부분의 직업들이 인식하지 못할 뿐이지 이런 일련의 과정을 밟으며 살아가고 있다. 이 책 저자도 또한 이런 내용을 내포하면서 개발자 라는 직업이 다른 직업과 크게 다르지 않으니 겁먹지 말라고 다독이는 느낌으로 말한다.

Web 개발자 / App 개발자

보통 컴퓨터 공학을 나와서 업계에서 일하는 사람들은 “웹 개발자”가 대다수다. 실제로 수요 또한 이 분야가 최근에 떠오르는 분야기도 하기 때문이다. 그래서 개발자를 꿈꾸는 비전공자들 또한 웹 개발자, 앱 개발자를 많이 기대하면서 다양한 루트를 통해 준비해서 개발자가 되고 있다.
그러나 이렇게 쉽고 빠르게 개발자가 되면 왜 컴퓨터 공학, 전자 공학을 4년간 대학에서 배우고 대학원 과정을 밟으면서까지 개발자가 되려고 하는가? 개인적인 생각으로는 웹 개발자, 앱 개발자가 수요가 급증하는 분야임과 동시에 진입장벽이 낮기 때문이라고 생각한다. 실제로 내가 일하는 부서는 웹 개발을 하는 부서가 아니지만 필요에 따라서 간단한 웹 사이트를 구축해서 사용하기도 하는 만큼 다른 분야에 비해서 상대적으론 진입장벽이 낮다고 본다.

그만큼 다른 경쟁자가 쉽게 들어와서 경쟁할 수 있다는 말이 되기 때문이다.

또 다른 이유로는 사람은 본인이 노력한 것에 대한 보상을 받아야 만족감이 들면서 지속적인 노력이 이루어지기 마련인데, hardware쪽은 이런 보상을 받는데 까지 너무나 많은 시간이 들어간다. 반도체 분야를 예로 들면 반도체 특정 IP를 개발한 것에 대해서 본인이 눈으로 확인하기 위해선 최소 1년 이상의 시간이 걸릴 뿐만 아니라, 칩이 나오더라도 직접적으로 눈으로 확인이 어려워 다소 만족감이 상대적으로 낮다. 반면 어플리케이션 수준 개발을 하는 입장에선 본인이 프로그래밍 하는 것에 대해서 실시간으로 어떻게 반영이 되는지 육안으로 보면서 배움의 재미를 늘리기 좋은 특징도 존재한다. 이는 입문자들에게 큰 도움이 될 것이다.

그러나 웹, 앱 개발자가 제공하는 service는 computer 개발 분야 full-stack으로 보면 application, algorithm 정도로 전체 중 일부분에 속한다. 그렇다면 어떤 분야들이 존재하는가?

다양한 개발 분야

사실 우리가 말하는 개발자, 즉 computer 위에서 동작하는 것들을 다루는 분야는 너무나 광범위하다. 내가 개인적으로 생각하는 computer로부터 파생되는 개발 분야를 아래와 같이 정의해본다.

개인적으로 생각하는 Computer 개발 Full-Stack Hierarchy

비전공자들이 자주 듣고 궁금해하는 단어인 front-end (프론트엔드) 개발자, back-end (개발자) 라고 하면 웹 상에서 보여지는 인터페이스, 뒷단에서 front-end와 서버 사이에서 동작하는 logic을 일컷는다. 사실 그 외에 다양한 분야에서 이런 front-end와 back-end 용어를 사용한다.

FieldFront-endBack-end
Web사용자들에게 보여지는 UI, UX 쪽을 나타내는 영역웹 사이트와 서버 측(Server-side)과 데이터베이스를 관리해 주는 영역
CompilerHigh level language부터 IR (Intermediate Representation)까지 영역IR에서 hardware 위에서 동작 할 수 있는 binary code까지
CPU Micro-architectureInstruction code를 불러오는 Fetch stage부터 instruction window로 issue 전까지 영역Instruction window부터 write-back 또는 commit까지
Digital DesignHDL (Hardware Description Language) 중 하나인 verilog를 통해 synthesis를 통해 net-list 변환까지 영역Net-list를 실제 P&R (Placement & Route)를 통해 die상 physical transistor의 mapping까지 영역
각 분야에서 정의하는 front-end / back-end

위에서 언급한 것 외에도 너무나 많은 분야에서 front-end & back-end 라는 용어를 쓰는 것 만큼 많은 개발 분야가 존재한다. 따라서 본인이 굳이 웹 개발만 고집하는게 아니라면 다양한 분야가 있으니 시선을 넓혀보면 좋을 것 같다.

Programming Language

나는 처음 programming language로 C언어를 배웠는데, 목표하는 분야가 hardware가 아니라면 굳이 그럴 필요가 있나 싶다. 굳이 고른다고 하면 활용도가 높은 Java, Python이 입문자에게 더 나을 것 같고 더 나아가 같은 항목으로 나눠서 배우는 것이 좋을 것 같다.

  1. 절차 지향 언어: C, Fortran 등
  2. 객체 지향 언어 (OOP): Java, C++, C#, Python 등

중요한 것은 언어는 개발의 수단일 뿐이지 목적이 아니기 때문에 그때 그때 필요한 부분을 배워가며 사용하면 된다.

블로그 운영

이 책의 저자는 여러가지 노하우를 전수하는데 그 중에서 블로그 운영을 언급했다. 나도 블로그를 운영하면서 너무나 공감했는데, 내가 생각하는 블로그 운영의 장점은 다음과 같다.

  • 시간 단축
  • 문제 이해
  • 흥미 유발

책의 저자와 동일한 부분은 “문제 이해” 부분일 것이다. 블로그에 여러가지 내용을 정리하면서 본인이 공부를 할 수 있으며 단순하게 읽고 넘기는 것보다 더 머리에 남는다. 마치 어릴 때 작성하던 오답노트의 느낌으로 이해하면 좋다.

이런 부분과 함께 내가 정리한 내용을 나중에 다시 찾아 헤매는 시간을 단축시킬 수 있다.

그리고 마지막으로 블로그를 운영하면서 하나 하나 포스팅을 하면서 today가 늘어나는 재미를 보면서 본인이 하는 일에 대한 보상을 무엇보다 빠르게 느끼는 “흥미 유발” 이라는 장점이 큰 것 같다.

Outro

“개발자”라는 단어가 낯선 사람들에게 이 책은 좀 더 익숙한 단어로 만들어 줄 수 있을 것이라 생각하고 누구든 간절하게 노력하면 안되는 것은 없다고 본다. 혹여나 개발자가 정말 되고자 하는 사람이 있다면 끝까지 해보고 후회하는게 본인의 인생에 있어서도 좋을 것 같다.

Reference

  1. https://daeguowl.tistory.com/

Leave a Reply

Your email address will not be published. Required fields are marked *