본문 바로가기

개발중

비전공자 웹개발자로서 살아남는 법 정리본(출처:okky)

https://okky.kr/article/372485 원문 링크 입니다. 아래의 내용은 원문과 댓글을 참조해서 개인적으로 편집한 내용입니다.


(중요도순으로 번호)

(1) 네트워크(웹서버포함) 

네트워크는 매우 중요합니다. 신입한테는 운영체제와 컴퓨터 사이언스에 대한 지식보다 중요하다고 전 개인적으로 생각합니다. 

데이터가 어떻게 라우터를 통해 넘어다니고 하는 것까지는 모르더라도, 

웹브라우저(클라이언트)와 웹서버(서버) 사이에서 일어나는 흐름들, http 프로토콜에 따라 데이터가 헤더와 바디에 담겨서 넘나드는 흐름을 정확히 이해하고 있는가 아닌가는, 기초적인 코딩 응용력을 결정짓는 중요한 요소라고 생각합니다. 

보통 여기선 웹 서버 하나 정해놓고 공부를 하는 게 도움이 됩니다.(apache 또는 nginx 등) 

영어가 된다면 해당 사이트의 documents, cookbook 등을 참고하면서 튜토리얼부터 밟는 게 가장 좋다고 봅니다. 

그렇게 웹서버를 처음부터 공부하면서 모르는 단어 나올 때마다 인터넷 뒤지면서 의미 파악해가면서 배우면 천천히 전체적인 웹 인프라의 그림이 그려지게 됩니다. 

핵심은 자신이 직접 그 개념을 활용해봐야 한다는 것입니다

예로 들어 단순히 IP가 뭐고, 도메인이 뭐고 의미를 이해하고 그치는 것이 아니라 웹서버 Apache로 name based virtual host랑 ip based virtual host 돌려보면서 그 차이를 이해해야 비로소 "이해한 것"이라고 전 생각합니다.


> 인프라를 이해하는 기본인 네트워크 가장중요

공부를 하면서 느끼는 것은 책을 보고 따라친 것은 오래 기억에 남지 않는다는 점이었습니다.

게시판 글을 보다보면 책 추천을 바라는 분들이 많은데, 잘 쓴 양서를 읽는 것도 중요하지만, 그 양서를 자신의 것으로 만들려면 "삽질"이라는 필연적인 절차를 거쳐야되지 않나 조심스럽게 생각해봅니다. 

>  3번 참조

>  웹환경, 네트웍 환경에 대한 이해 

참고강의 https://opentutorials.org/course/1688/9483

추천 책   그림으로 공부하는 IT 인프라 구조


(2) 주력 언어 하나는 집중해서 제대로 이해해놓기

자신의 주력 언어의 패러다임과 사용법을 제대로 이해하는 것이 중요합니다. 

예로 들면 자바를 멀티 쓰레드 식으로 짤 수 있는 사람과, node js를 싱글 스레드 식으로 짤 수 있는 사람은 단순히 자바의 문법만 쓸 줄 알고 자바스크립트의 문법만 쓸 줄 아는 사람과는 질적으로 다를 것입니다.

객체지향 언어를 배워놓고 절차지향 식으로 코드를 쓰면 의미가 없는 것처럼, 한 언어를 제대로 이해한다는 건 결국 언어의 철학까지 이해한다는 것을 의미합니다. 그리고 언어를 하나 제대로 이해하게 되면 다른 언어의 흡수도 매우 빨라집니다.


>  개인 취향이 있겠습니다만 해당 유튜브 의견에 동의합니다. 저도 C 공부하면서 많은 걸 배웠기에..

https://www.youtube.com/watch?v=ESU2IkFj9VM 

자기가 사용하는 '언어에 대해서 잘아는 것' 보다는 '언어에 반영된 이론(언어론)을 잘 안다'

> 어떤 언어를 얼마나 수준 높게 사용할 수 있는지는 결국 해당 언어의 패러다임을 얼마나 완벽히 이해하고 있는지, 그리고 부차적으로 해당 언어 개발자들 간에 널리 통용되는 컨벤션이나 설계 방식, 도구 및 라이브러리 등을 얼마나 잘 알고 있는지에 따라 결정된다고 생각합니다.


(3) 운영체제(컴퓨터사이언스 포함, 주로 리눅스 중심으로)

컴퓨터 사이언스와 운영체제, 결국 이 부분을 얼마나 이해하고 있냐에 따라 비전공자가 전공자를 따라갈 수 있는가 아닌가가 판가름 나는 부분인 것 같기도 합니다. 

일하는 환경에 따라 리눅스를 아예 쓰지 않을 수도 있지만, 그럼에도 불구하고 운영체제를 이해하고 있는지 아닌지는 개발자의 역량을 크게 좌우하는 부분인 것 같습니다. 

코드를 치면서 스레드나 프로세스, 동기 비동기 등을 따지고 생각할 줄 아는 사람과, 그렇지 못한 사람은 결국 코드의 질도 다를 수밖에 없다고 생각합니다. 대표적으로 자바스크립트가 싱글스레드인 걸 이해한 사람과 이해하지 못한 사람은 큰 차이가 있겠죠. 

나아가 리눅스 중심 운영체제를 공부하다보면 파일시스템, vim, 각종 명령어 등을 익히면서 점점 마우스를 쓰지 않게 됩니다. 그리고 마우스를 쓰면 오히려 속도가 느려지는 경지가 이르게 되면, 개발자로서의 능률이 더욱 올라갑니다.

 전 컴퓨터 사이언스 책 한 권(공룡책, stalling 책, Flynn책)과 "이것이 리눅스다!" 라는 centos 리눅스 한 권가지고 집에서 틈날 때마다 공부를 했습니다. vmware를 이용해서 충분히 여러분의 집에서도 리눅스 개발 환경을 구축할 수 있습니다. vmware가 짱입니다.


> 컴퓨터 사이언스를 리눅스를 통해서 공부하면 될 것 같습니다. 우분투도 좋고 centos도 좋습니다. 배포판은 둘 중 하나라면 뭐든 상관없을 것 같군요. 리눅스와 같은 매개체가 없이 컴퓨터 사이언스를 바닥부터 공부한다는 것은 진도도 잘 안 나갈뿐더러 어려운 내용이 많아서 머리가 터지기 마련입니다. 뭐 그것도 재밌게 하시는 분들이 있지만 비전공자인 제겐 벽이 꽤 높더군요. 하지만 리눅스라는 좋은 운영체제를 하나 잡고, 파면서 그때그때 모르는 것을 하나하나 찾아보며 공부를 하니까 효율이 좋았습니다. 예로 들면 리눅스를 공부하다보면 프로세스란 것에 대해서도 알게되고, 스케줄링에 대한 것도 알게 되고, 결국 그렇게 자기도 모르는 사이에 컴퓨터 사이언스 지식들을 하나하나 습득하게 됩니다. 

리눅스는 책을 보며 공부해도 되고, 전 입사 후 첫째달에 복습도 할겸, https://www.udemy.com/courses/ 이 사이트에서 리눅스 강의를 구입해서 들었는데 매우 양질의 수업이었었습니다. 강의 제목은 "Learn Linux in 5 Days and Level Up Your Career" 입니다. 영어 자막있습니다.

+리눅스에 대해서 어느 정도 자신이 붙었다 싶으면 Docker에 대한 공부를 적극 권해드립니다. vm ware같은 가상머신으론 누릴 수 없었던 신세계를 맛보게 되실 겁니다. 그리고 개발자로서의 역량&시야도 대폭 좋아지실 거구요. 도커에 대한 자세한 설명은 여기서 하지 않겠습니다.(저도 남에게 도커 가르칠 레벨은 아니라서..)

> 운영체제 공부라면 LPIC시험 추천드립니다. 덤프로 따지 마시고 제대로 공부해서 레벨1만 따도 많은 도움 되실겁니다. 바로 리눅스 자신감 붙을 겁니다. 

그리고 결국 요즘 느끼는 건 웹 어플리케이션에게 운영체제와 네트워크는 일종의 한 몸과 같더군요. 인프라라고 흔히들 부르는데, 운영체제와 네트워크는 마치 배다른 쌍둥이와 같다는 느낌이 많이 듭니다. 예를 들어 어떤 문제 상황이 터졌을 때 네트워크만 잘 알아도 의미가 없고, 운영체제만 잘 알아도 의미가 없더군요. 둘다 잘 알아야 하더군요. 코드레벨의 버그는 유닛테스트로 잡아낼 수 있겠지만, 원인 모를 성능 저하, 또는 정체 모를 에러 로그들의 원인을 찾아가다보면, 결국 네트워크와 운영체제 레벨에서 그 원인을 찾아내는 경우가 적지 않았습니다. 그리고 네트워크나 운영체제 레벨에서 터진 문제는 보통 심각한 트러블로 연결되는 확률이 적지 않습니다. 시스템이 복잡할수록 더더욱 인프라(네트워크, 운영체제)에 대한 지식이 필요해지는 것 같습니다.

> 시대는 컨테이너와 클라우드입니다. 네트워크랑 운영체제의 흐름에 감 잡았다 싶으시면 지체하지마시고 도커하세요. 그리고 AWS나 GCP 또는 Azure하세요. 다만 방금 말했다시피 "네트워크랑 운영체제의 흐름"을 이해하고 나서 하셔야 합니다.  굳이 셋 중하나 고르자면 AWS를 먼저 경험해보시는 게 좋긴 합니다. 능력되시면 저도 아직 삽질하는 곳이긴한데 쿠버네스트하세요.

그리고 최근 들어 느낀건데 Vmware보다 Virtualbox가 더 편한 것 같아요.


(4) 데이터베이스

데이터베이스는 엄청나게 중요한 것이었습니다. 사실 운용하는 서비스에게 "데이터"만큼 중요한 건 없으니까요. 그걸 어떻게 효율적으로 잘 관리하냐는, 말할 필요도 없이 중요하겠죠.

사용법의 얘기를 하자면 기초 사용법인 CRUD을 넘어서, 거기에 더해 index에 대한 이해 + 기본적 사용법까지는 알아야 하지 않나 생각합니다. 욕심을 부려본다면 explain, view 정도려나 싶습니다.

데이터베이스의 운용측면에서 봤을 때 fail over, master-slave. replication까지 알아둔다면 입사하고 한동안은 디비쪽으로 더 공부할 게 없지 않을까 생각합니다. 특히 failover, master-slave, replication은 왜 저런 게 필요하고 어떻게 돌아가는지에 대한 개념만 잘 알아둬도 신입면접에선 큰 어필이 되지 않을까 싶습니다.


> 데이터베이스를 단일 항목으로 이해하려고 하기보다 웹서버부터 시작해서 어플리케이션 서버, 그리고 데이터베이스까지 오는 일련의 흐름을 제대로 이해하는 게 중요합니다. 딥한 레벨까진 아니더라도, 여러분이 브라우저나 특정 기기에서 던진 request가 어떤 프로토콜을 통해서 어떻게 라우팅을 통해서 어떻게 웹서버에 도착하고 그게 또 redirect되서 어쩌고 저쩌고 데이터베이스까지 왔다가 물리적으로 저장된 데이터에서 또는 메모리에 캐싱된 데이터를 뽑아가는 그 일련의 흐름. 그걸 이해하고나서부터 웹이 보이기 시작할 겁니다.


(5) 디자인패턴 

디자인패턴이야말로 코더에게 있어서 일종의 손자병법이지 않나 싶습니다. A같은 기능을 만들고 싶을 땐 이렇게 설계하면 되고, B같은 기능을 만들고 싶을 땐 이렇게 코딩하면 되고 그런 직접적 방법론을 제시해주는 가이드라인이랄까. 튜토리얼만 따라하면 별로 와닿지 않고 디자인 패턴의 "사고방식"을 이해하고 그걸 업무에 실제 적용해봄으로써 하나씩 내 것으로 만들어나가게 되는 것 같습니다. 개인 프로젝트를 할 때부터 디자인패턴 등을 적용/신경 쓰면서 만들다보면, 프로그래머로서 코딩실력도 늘고, 검증된 방식에 따라 코딩을 함에 따라 결과물도 좋게 나오는 일석이조를 성과를 낼 수 있다고 봅니다.


(6) 그외 이것저것 막 건드려보기

일단 이것저것 많이 해봐야 시야도 넓어지고 자신의 커리어에 대해서도 더 깊게 고민하게되는 것 같습니다. 자신이 걸어야 할 길도 더 명확해지구요. 

전 지금 주 언어는 java, php지만,  파이썬, C, C#, Ruby 등을 학원 다니면서 짜투리 시간에 배웠었습니다.파이썬은 알고리즘 공부하면서, c는 포인터 개념 이해하려고, c#은 유니티 공부하면서, ruby는 코드카데미란 사이트에서 파이썬이랑 뭐가 다르나 싶어서 해봤습니다. 그리고 azure나 aws에서 일정 기간 동안 무료로 서비스 이용하는 그런 거 있거든요. 괜히 만들어놓은 프로젝트 클라우드에 deploy 해보고 그랬습니다. 그런 것도 면접에서 어필되더군요. 특히 유니티 3d로 튜토리얼 몇 개 따라하면서 게임 만든 것도 it 업계에 대한 관심이란 점에서, 면접 시 어필이 되었었습니다.


> 무언가 관심이 있고 배워보고 싶다면, 튜토리얼 몇개 따라해보거나 책 따라해보는 건 별로 의미없고, 게시판이라도 좋으니 뭔가 만들어보는 방식으로 (소위 토이 프로젝트라고 하죠) 배우는 게 베스트 오브 베스트라고 생각합니다. 그리고 이해 못하는 것이 있다면 물고 늘어지는 자세도 필요하다고 봅니다. 그 과정에서 배우는 것도 참 많더군요

> 막 건드리는 것도 좋지만, 하나를 끝내더라도 제대로 끝내고나서 다른 걸 하는 게 좋습니다. 그리고 하루에 공부시간이 3시간이 있다면 삽질에만 세시간을 쏟기보다, 책과 강의 등을 통한 정석적인 공부에 한시간, 삽질에 두 시간 정도로 "삽질"과 "정석 공부"의 적절한 배분이 성장에 더 큰 도움이 되는 것 같습니다.


(7) 버전 관리 툴 (git)

 여러분이 프리랜서가 아니라면 다른 동료들과 같이 일을하게 될 것이고, 그렇다는 것은 버전관리 툴을 쓸 확률이 매우 높다는 것을 의미합니다. 버전관리 툴이 무엇인지에 대한 설명은 여기서 생략합니다. 우선순위를 따진다면 (1), (2) 번만 못하나, 이것을 할 줄 알면 또 면접에서 적잖게 어필이 되는 것 같았습니다. 저는 리눅스를 공부하면서 git을 터미널로 때리기 시작했습니다. 입사할 때는 stash와 reset, checkout 등 기본적인 명령어는 몇몇 옵션들과 함께 익숙하게 사용할 수 있는 수준이 되었습니다. 이또한 면접에서 어필되었고, 입사 후 특히! 도움된 부분입니다. 

> 버전 관리는 생각보다 더욱 중요한 것이었습니다. 다만 혼자서 이러한 버전관리는 연습하는 데 한계가 있단 점이 아쉽습니다. 하지만 몇 번 협업 중에 삽질을 하다보면 결국 사용하는 git 명령어의 패턴이 정해져있다는 걸 나중에 깨닫게 됩니다. 일단 git 이란 것이 어떻게 돌아가는지 근 크림 remote과 local의 관계와 git의 병합원리, conflict 해결  방법 등을 이해하고,

reset 

checkout 

branch

log

stash

push 

pull

merge

fetch

commit

diff

add

등과 각 명령어의 대표적 옵션만 제대로 알아도 웬만한 문제는 다 해결할 수 있지 않나 생각해봅니다.

> 깃을 공부할 때 커맨드 베이스로 공부를 하기보단, 결국 이 깃이란 물건이 어떻게 돌아가는지 원리를 제대로 이해하는 게 우선되야 한다고 생각합니다. 리모트 저장소, 로컬 저장소, 그리고 자신의 작업공간, 헤드 브랜치, 작업 브랜치 등등의 움직임 등등을 말이죠. 커맨드 공부는 병행 또는 그 다음입니다. 깃이란 물건의 전체 상을 이해하지 않은 채, 무작정 커맨드 공부부터 들어간다면 언젠가 그게 꼬이는 날이 오게 됩니다.(제가 그랬거든요)

> 깃을 해보면 확실히 좋긴한데 결국 깃을 하면서 겪는 현실적인 문제는 협업을 하면서 튀어나오기 마련이라 이런 건 솔직히 혼자서 연습하기 힘듭니다. 그냥 깃이 어떻게 돌아가는 물건인지 이해하고 그 기초적인 사용법만 익히면 나머지는 실무에 닥쳐서 배워도 충분하지 않나 싶습니다.


(8) 보안

단기 학원 같은 데서 프로젝트할 때는 보안같은 거 신경 안쓰죠. 하지만 회사에선 가장 중요한 부분이 바로 보안입니다. 하지만 신입은 보통 보안에 대해 아무 것도 모릅니다. 하지만 웹에서 자주 발생하는 해킹은 일정한 패턴이 있으므로 몇 가지 방법에 대한 대비만 잘 알아놓더라도, 기술면접 등에서 아주 크게 어필할 수 있습니다.(어필하는 거로는 이제 어필이 가장 잘 되었던 걸로 기억합니다.) 제가 딱 몇 가지 추천해드릴테니 이 부분에 대해서만 잘 알아보고, 방어법까지 공부해두시는 걸 권합니다. 3번까진 필수, 4~6번은 추천 ..ㅎㅎ?

1,XSS

2, CSRF

3, SQL injection

4, Open redirect

5, command injection

6, Directory Traversal


> 자신이 보안 전문가가 되지 않을 거라면, 신입의 입장에선 위에서 1,2,3 번만 제대로 알고 대응할 수 있으면 4,5,6까진 몰라도 된다는 생각이 듭니다. (어디까지나 평균 신입 기준이지 네이버나 카카오급을 노리시는 분들이라면 또 얘기가 다르겠지만요 ㅎㅎ)

> 실제 업무에 있어서 보안은 생명입니다. 제가 위에 적은 기술적인 보안도 중요합니다만.(1,2,3 번이 특히 중요하다는 점엔 변함이 없습니다만) 실제 회사 생활을 함에 있어서는 단순한 문서보안, 사내 감시툴 등 각종 인트라넷에서 사용하는 패스워드 관리 보안, 비품 보안(사내 중요 정보가 담겨 있는 물건들의 반입/유출 등에 대한 보안 등을 일컫습니다.) 등이 더 피부로 와닿는 부분입니다. 고로 위의 기술들은 알면 좋지만 입사하고 배워도 늦지 않다라는 생각은 듭니다만, 좋은 회사 트라이하시려면 익혀두시는 게 좋겠죠. 

 그리고 위에 나열한 해킹 방법과 그에 관련된 방책을 익히는 것도 중요하지만, 결국 사람이 하는 일이다보니 보안을 사람이 체크하다보면 빠뜨린 게 있을 수 있습니다. 그러므로 Appscan이나 Burp와 같은 세큐리티 테스트 툴을 이용해서, 새로 만든 기능 등이 있으면 해당 툴로 싹 세큐리티 감정을 해주는 절차를 거치는 게 좋습니다.

 그리고 보안과 직접적 관련이 있는 사안은 아니지만, 서비스가 커지다보면 결국 "부하" 문제가 현실로 떠오릅니다. 그럼 그때부터 스트레스 테스트, 로드 테스트 등을 진행하게 되는데, 이 경우 서버가 감당할 수 있는 이상의 부하가 몰려올 시 어떻게 되는가 등에 대한 검증을 꼭 거치는 게 좋습니다. 이 역시 간접적으로 보안에 관련되어 있다고 생각합니다.

> authentication과 authorization 의 차이를 명확히 이해하는 게 좋습니다. 그리고 서버 접근권한 제한, 로그인 비밀번호 암호화 방식 등등. 일상화되어 있는 기초 보안(?) 지식은 알면 좋습니다. 다만 저게 다 보안이라는 카테고리에 들어가는지 아닌지는 저도 잘 모르겠네요. 여기다가 적어놓긴 했는데..


(9) 알고리즘 및 자료구조

프레임워크가 다 만들어주는 mvc 구조에 따라 코딩하는 것은 쉽습니다. 하지만 보다 효율적인 코드를 고민하고 보다 논리적으로 코드를 짜려는 사고력을 기르기 위해서라도 알고리즘 및 자료구조 지식은 필요하다고 봅니다. 신입 기준에서 다익스트라 알고리즘같은 건 당장 몰라도 된다고 봅니다.(나중에 필요할 때 공부하면 될테니까요..) 제가 딱 몇 개 추천드릴테니 이것만 하셔도 신입으로선 충분하다고 봅니다. 제대로 이해하고, 간단한 코드를 구현할 수 있게 되더라도 코드를 보는 시야가 많이 넓어질 것입니다. 코딩 테스트에도 도움이 되구요.

1, 스택

2, 큐

3, 트리

4, 이진검색트리

5, 해쉬검색(체인법, 오픈어드레스법)

6, 퀵 정렬

7, 머지 정렬

8, 기수 정렬

9, 링크드 리스트 (쌍방향까지) 

언어는 c나 파이썬으로 공부하시면 될 것 같고 열혈 자료구조 같은 책이 시중에선 가장 핫한 것으로 알고 있습니다.

> 알고리즘과 자료구조의 지식이 대부분의 신입에겐 입사 후 당장 도움이 되지는 않는 것 같습니다. 아마 성능을 바이트 단위로 튜닝해야 할만큼 트래픽이 많은 서비스의 경우와 같은 케이스나, 다익스트라 알고리즘같이 특정한 목적을 위해 사용할 때가 아니라면 굳이? 라는 생각이 드는 것도 사실입니다. 오히려 이러한 알고리즘보단 빅오계산법이 더 가치가 있다는 생각이 들고요. 신입에게 필요한 알고리즘 자료구조 지식이란 딱 면접보고 코딩 테스트 볼 레벨정도면 되지 않을까라고 조심스레 생각해봅니다. (그래도 1~9번 정도면 프로그래머인 이상 기초지식 느낌으로 알아줘야되지 않나란 생각도 듭니다.)

> 입사 후 무슨 일을 하는가?에 달렸겠습니다만, 최소한 신입~주니어 레벨에선 알고리즘보다 디자인패턴이 더 중요한 것 같습니다. 디자인패턴에 대한 의견은 아래에 별도 적습니다. 개인적 의견입니다만 신입 기준에서 봤을 땐 언터쳐블 레벨의 프로그래머가 아닌 이상, 알고리즘은 약간 코딩테스트, 면접용이란 느낌이 드는 게 솔직한 사실입니다. 

> 위 지식들은 bigO에 대한 지식을 먼저 쌓은 후에 접근하시길 바랍니다. 아직까진 코딩테스트용이란 느낌이 들긴 하지만, 이따금 실무에서 지식이 활용될 때가 있긴 합니다. 다만 정말 흔치 않긴 합니다. (대부분 다 이미 언어별로 라이브러리화가 되어 있어서 직접 구현하는 일은 극히 드뭅니다..) 다만 필요할 때 갖다 쓰려면 "개념"은 이해하고 있어야 할 것입니다. 다만 굳이 "구현"까지 공부할 필요는 주니어 레벨에선 다른 항목들에 비해 크게 의미가 있진 않은 것 같습니다.

그럼에도 불구하고 알고리즘과 자료구조를 알긴 알아야겠다 싶은 게 이직 시에 최상위 기업들을 보면 알고리즘과 자료구조 지식을 굉장히 강조하는 곳을 적지 않게 볼 수 있습니다. 초봉이 7000~1억2천씩 하는 기업들을 보다보면, 길게 생각하면 알고리즘 자료구조 구현 능력은 머리에 박아놔야겠다는 생각이 들긴 합니다.


(10) 개발 패러다임 

패러다임이 적절한 용어인지는 모르겠습니다. 아키텍쳐적인 부분과 개발 프로세스에 대한 부분을 통합해서 말하고 싶었는데, 적당히 필터링해서 들어주시길. 한국이 어떤지는 모르겠습니다만 일본에서 소위 글로벌하고 테크문화가 잘 정착된 기업에서는 마이크로서비스 아키텍쳐 / 애자일 개발방법론 / 데브옵스에 의한 CI(또는 CD) / 릴리즈 및 테스트 자동화의 조합이 마치 정석처럼 도입되고 있습니다. 개발에 정답이란 없고 마이크로서비스도 애자일도 다 단점과 리스크가 있는 방식이긴 합니다만. 최소한 젠킨스 등의 CI 툴을 도입을 통한 릴리즈 자동화 그리고 브라우저 테스트 프레임워크 등을 통한 테스트 자동화는, 도입만 제대로되면 일이 정말정말정말 편해지는 장점이 있습니다. 저희도 좌충우돌하며 일부 도입했고 일부 도입 중인데 아직 갈 길은 멉니다만 이 길의 끝에는 분명 프로덕트의 질적 대폭 향상이라는 결과가 기다리고 있을 것임에 굳게 믿어 의심치 않습니다.

키워드를 정리해보자면,

① 마이크로서비스 아키텍쳐

② 애자일 방법론 (ex 스크럼)

③ Devops에 의한 CI or CD

④ 자동화 (릴리즈 or 테스트) 

4번은 일부 3번과 내용이 겹치긴 합니다만, 아무튼..ㅎㅎ

더 멀리 보시는 분이시라면 이런 최신 패러다임에 대한 이해도 크게 도움이 되리라 생각합니다. 프로덕트에 적용을 한다면 그 질적 향상도 분명 기대해볼 수 있고요. 다만 상기했듯이 만능 맥가이버는 아니니 여러분들의 상황을 잘 파악한 후에 시기 적절하게 부분부분부터 도입해가는 게 좋습니다. 한 번에 모든 걸 바꾸려고 하면... 체합니다.



번외. 책추천

실용주의 프로그래머

프로그래머에겐 기술도 기술이지만, 기술만큼 또는 그 이상으로 중요하다고 할 수 있는 게 있더군요. 실제 업무에 있어선 "일머리"라고 흔히들 말하잖아요. 그리고 "도메인지식"이라는 용어도 있죠. 저 두개가 생각보다 훨씬 더 중요하더라구요. 기술만 잘해서 될 게 아니라, 적당한 센스 그리고 커뮤니케이션 능력, 자신이 속한 산업에 대한 깊은 이해도가 종합적으로 작용을 하더군요.

개인적으로 늘 가슴에 품고 사는 말이 몇 가지 있어서 공유를 해보자면 다음과 같습니다.

"모르는 채 사용하지 말라"

"매사에 목적을 명확히 하라"

"문서화 시 가독성에 신경써라"

"읽기보다는 쳐보라"

"판단에는 이유와 기준이 있어라"

"묻는 질문에 먼저 답변하라"

"결론부터 말하라"

"급할수록 돌아가라"