왜 이런 글을 쓰기 시작했나 요약하면
- 블로그에 글쓰는게 익숙해지기 위해서
- 새로 배우는게 많은 만큼, 지나간 일들이 흐릿해져가고 있어서
- 이렇게 생각하고 개발하는 사람이 있다. 라는 공유?
이렇게 세가지이다.
일단 첫번째 이유에 대해서는, 맨날 기술블로그를 써야지 하면서도 쓰지 않는데 왜 그런가 생각해보니 내가 정확한 지식을 아는 것도 아니고, 뭔가 다른 사람들 처럼 대단한 것을 적어야겠다는 강박관념에 시달려서 쓰기를 주저했던 것이 한 부분이었다. 사실 가볍게 개발이야기를 해도 괜찮고, 어차피 내 블로그인 만큼 아무말 대잔치를 해도 되는 것인데 벌써부터 구독자가 몇백명이 된 인플루언서가 된 것처럼 빈 블로그에 퀄리티부터 따지기 시작했던 것이다. 그러다보니 시작조차 두려웠던 것이 컸고 그렇게 기술블로그 써야지....
만 수개월이 지나왔던 것이다.
일단 육하원칙도 제대로 지키지 않고, 두서도 없을 뿐더러 정리가 안된 글이더라도 일단 쓰고 보자!의 시작으로 내 이야기라면 뭔가 잘 이어나갈 것 같았다.
두 번째 이유는, 그냥 말 그대로인데 지나간 이력들이 슬슬 기억이 나지 않는 것이다. 어제 짠 코드도 새로운데 몇개월전 일이 새록새록 날리가. 기록하는 습관을 어렸을 때부터 들이지 않고 자기만 믿었던 나는 이렇게 나 자신한테 배신을 맞아버렸다. 늘 소잃고 외양간 고치는 것처럼 일단 한 번 정리를 하고 가야겠단 생각이 들었다.
그리고 마지막 이유에 대해서는, 나는 누군가에게 무엇을 배울때 A가 B다. 라는 답을 내려주는 사람보다도, 그 사람이 어떻게 생각해서 해당 문제를 풀었는지 로직을 알려주는 사람을 더 선호한다. 그런 부분에서 영감을 많이 받기도 하고 말이다. 그렇다보니, 내가 어떻게 생각해서, 왜 이런 공부를 하게되었는지
누군가 공유해줬으면 했는데.... 없으니, 없는 내 허접한 경험이라도 공유하고 착한 존잘님이 보시고 안타까워서 자신의 공부경험을 공유해주셨으면 하는 바램이 커서 작성하기로 했다. (어디가 이사람아 그 길 아니야...! 해주는 분들 너무 좋습니다...)
내 이력은 좀 특이하다.
사실 특이하다고 하기엔 평범할 수도 있는데, 특이하다고 한 이유는 여러 운이 겹쳐야 가능한 상황인지라. 미리 밑밥을 깔아두었다.
여하간, 그렇기 때문에 지금 내 연차를 따지는 것도 조금 애매하다. 언제를 기준으로 하느냐에 따라 2년차가 되고 3년차가 되기 때문이다. 일단 HTML책을 처음 핀건 2017년 11월 이다
나는 처음 대학입학한 것은 컴퓨터 관련 학부였지만, 공학인증 등으로 1~2학년은 전공을 안들었고, 이후 다른 과로 전과를 한 애매한 비전공자다.
그러다가 사정상 엄청난 공백기를 남기고, 해외취업을 하려고 준비를 하던 도중 첫회사에 입사를 했다. 입사당시 나의 직군은 연구원이었지만, 하는 일은 마케팅, 기획, 경영지원 등 개발 빼고 다했다
회사 아이템이 재미있어 보이기도 했고, 작은 회사를 선호하는 이유는 여러가지 일을 다해볼 수있는 이점이 있어서여서 딱히 직군을 넘나드는 일을 하는데는 불만이 없었다.(지금은 아닙니다... 개발은 이거저거 하는거 좋아하는데, 개발 직군 외의 일은 안하고 싶어요....)
근데, 내가 입사한지 얼마 안되서, 개발자 두분이 나가버리셨고, 개발자분들 중에 나와 입사 동기(?)셨던 개발팀장님만 남았다. 프로덕트는 작은 회사치고 많았고, 대표님께서 열정이 많으셔서 이것저것 다해보고 싶으셨던지라, 개발할 것도 유지보수 할 것도 많았다. 그렇다보니, 대표님은 나에게 개발을 해보지 않겠냐 권유하셨고, 그게 내가 처음 HTML/CSS 책을 피게된 이유였다.
개발을 하고싶긴 했었다. 공백기 동안 왜 그럼 국비지원도 안해봤냐 했을수도 있지만, 그걸 다닐 환경조차 되지 않았다. 그래서 어린날의 잘못된 선택으로 전과를 한 스스로를 탓하며 접어놓은 꿈을 다시 꾸게 해주셔서 감사했다. 그렇게 회사에서 짬짬이 혼자 굴러다니는 책보고 공부하다가, 2018년 초부터 IONIC으로 개발을 시작했다. 팀장님께서는 이때 Typescript와 Angular에 심취해 있으셨고, 때문에 자연스럽게 Typescript와 Angular/IONIC으로 첫 개발을 시작했다.
이 사이에 팀장님이 알아봐주시고, 회사에서 지원해줘서 Angular4관련 국비지원 학원을 토요일 전일로 4회 가서 배우고, 한달 Java를 퇴근후 배웠다.(물론 이후 Java를 쓴일은 없다...)
이 때 사실 무언가를 배웠다고 하기는 애매하다.
하지만 정리하자면,
- Angular4
- Typescript
- IONIC
그당시에는 내가 뭔가를 배우고, 개발했다고 생각했을지는 몰라도, Angular에서 쓰는 ngrx가 뭔지, 비동기통신은 무엇인지, service파일에서는 무엇을 하는지, observable은 뭔지 아는게 아무것도 없이 그냥 Framework만 썼기 때문이다.
Typescript에 대한것도 마찬가지다 interface를 왜 썼는지, typescript가 Javascript의 superset인 것과, type지정이 되는 것만 알지 그 외에 뭐가 더 나은지 아는게 아무것도 없었다. 왜 그랬을까?
- 언어 선택에 있어서 다른 사람들이 세팅한 것 그대로 썼기 때문에, 스스로가 이런것에 대한 고민이 전혀 없었다.
- 동작만하면 다라고 생각하고, 이게 왜 어떻게 동작하는지 생각도 안했다.
정확히 말하자면, 나는 데이터를 view에 보여주는 작업만 했지, data작업은 거의 안했다고 봐도 무방했다. 물론 이 작업도 매우 중요한 작업이지만, HTML/CSS도 책만 그대로 따라쳤지, semantic tag에 대한 이해는 하나도 하지 못했으며, CSS도 개발자 도구켜서 CSS조작해서 고치는게 전부였다.
정리를 하자면, 이때의 나는 아무 생각도 하지 않고, 그냥 뭔가 만들기만 했을 뿐이었다.
그래도 협업을 하는 방향이나, 개발에 1자 무식한 나를 잘 리딩해주시면서, 개발이 재미있다는걸 알려주시려고 하셨던 팀장님이 아직도 너무 감사하다. 그때하셨던 말들이 그 당시에는 이해가 가지 않았지만, 이제 좀 연차가 차고나서야 이해가 가는 것도 많았다.
이것저것 하는걸 좋아했다고 했지만,
슬슬 커리어에 대해서 고민을 해야겠다고 생각한 나는 개발자
커리어를 쌓기엔 여기서는 너무 애매한 위치라는 것을 깨달았다. 이 당시 개발 업무가 내가 전체 담당하는 업무 중 20~30%만 차지했기 때문이었는데, 이래선 이도저도 안될거란 위기감이 스스로 왔던 것 같다.
그래서, 이직을 준비하기 시작했고 되도 안되는 이력서를 난사하기 시작했다.
사실 독학으로 무언가를 개발하고 서비스를 했다라는 경험이 신선했는지 좋게 봐주신 곳이 몇군데 있었고, 나는 면접에 가서 장렬하게 전사하고 왔다.
이유는 단순했다 위의 회고의 내용처럼 개발할때 뭘 생각하고 만든게 아니었고 저기에 녹인 내용들이 전부 면접때 들은 내용이었기 때문이다. 나는 정치하시는 분들처럼 일관된 모른다
로 일관하고, 어느 취업 블로그에서처럼 신입아닌 신입의 패기로 밀어 붙이기 위해 하지만 열심히 배우겠다
라고 말했지만, 세상은 녹록하지 않았다. 회사에서 물론 많은 공부를 하고 가르치지만 학교는 아니다. 그당시 내가 크게 착각한 부분이 이것이었다. 그리고 또 깨달은 것은 아는게 아무것도 없다는 것.
위기감이 배가 되서, 손톱만 뜯으면서 면접을 보러다니던 중. 감사하게도 나의 패기를 좋게 봐주신 두 번째 회사 프론트엔트 개발 리더 덕분에 2019년 2월 프론트엔드 개발자로 정식으로 개발자의 커리어를 시작 할 수 있게 되었다.
서두에 내가 적어둔 말이 있다.나는 누군가에게 무엇을 배울때 A가 B다. 라는 답을 내려주는 사람보다도, 그 사람이 어떻게 생각해서 해당 문제를 풀었는지 로직을 알려주는 사람을 더 선호한다. 그런 부분에서 영감을 많이 받기도 하고 말이다.
그리고 해당한 영감
을 가장 많이 줬던 팀이었다.
일단 간단히 정리하자면,
- semantic하게 html을 작성하는 것에 대한 고민
- css를 작성할 때 고려해야하는 것.
- html tag를 작성할때 해당 tag의 속성
- email template 작성할 때 고려해야 하는 것, test는 얼만큼 해야하는지.
- React
- Git, Git branch 전략
- 다양한 팀들과 협업하는 방법
- 코드 리뷰
- Mac 사용법
- 생각을 하면서 개발하는 방법
- 일정 산정 방법
지금 생각나는 것만해도 이정도인데, 아마 더 있었을 것이다.
거의 대부분의 것들은 내 사수분들이 알려주신 것들이고, 이때 배운 것으로 지금 회사에서 혼자서도 막히지 않고 잘 써먹고 있다. 지금 적어보니 거의 개발 1도 모르는 아이에게 천천히 알려주신 느낌인데 적으면서도 눈물이 난다.
처음 입사했을 때, git과 현재 우리 프로젝트들을 쭉 훑어주시고, 어떻게 일을 하는지 Jira는 어떻게 사용하는지, 이때 당시 Mac을 처음 사용했는데 Mac 세팅도 다 해주셨었다.
정말 작은 회사에서 일하다 온 나는 그 모든게 신기방기 동방신기 했는데, 사실 이 팀을 만난게 내 인생 몇 안되는 운중 하나라고 생각한다.(계속 팀자랑 쪽으로 빠지게 되는데...)
그도 그럴것이 사수가 이렇게 하나부터 열까지 봐주는데도 흔치 않을 뿐더러, 과제도 내주고 봐주고 별거아닌 과제인데도 팀이 전부 모여서 코드리뷰를 해주는데가 과연 흔할까.
그리고 이때 처음 알았는데 HTML/CSS/Javascript에 대해서 내가 아는게 하나도 없다는거였다. 혼자 공부해서 책에 있는 내용도 제대로 못봐서 그런지, 최신 문법도 몰랐었다. 그래도 인내심 가지고 알려주신것도...너무 감사하다. 심지어 이전엔 Angular만 썼는데, 여기는 React를 써서 React도 알못인데, 랜딩을 정말 잘 시켜주셨었다.
여하간 정말 둥기둥기 해주시는 환경에서 잘 적응해서 React도 배우고, 여튼 요즘 말하는 개발 스팩의 대다수를 배웠다. 기술 블로그 같은 것도 공유를 많이 해주셔서 이때부터 기술 블로그를 읽는 습관을 들이기 시작했고, 처음으로 코딩테스트라는 존재도 알아서 팀원들과 같이 공부하기 시작했다.(에이콘 출판사의 Learning JavaScript Data Structures and Algorithms로 같이 공부했는데... 사실 아직도 이 책 다 못읽었다 또르르..)
코드리뷰도 하다보니까, 내가 개발을 할 때 어떤 생각을 하고 개발을 하는지 다시 돌이켜보게되고, 배우는 점도 많았다. 특히 리더가 한 번 코드리뷰 해주시고 내 코드를 develop해준 경험이 아직까지도 충격적이었다. 내가 저정도 할려면 얼만큼 해야할까라는 벽. 옆에서 처음보는 코드인데도 로직을 바로 파악하고 더 간결하게 리팩토링하는 그 생각의 흐름들이, 그 시간은 짧지만 임팩트는 상당했다.
행복하면 끝은 늘 빨리온다고, 어찌되었건 이직을 해야하는 상황이 왔다.
나는 또 늘 그랬던 것처럼 이력서를 난사하기 시작했고, 좋게 봐주시는 곳이 다행히 있었어서 면접을 보러 다녔다.
그러다가 회사이름이 맘에 듦 + CTO분의 "성장시켜드릴 자신이있습니다"에 꽂혀서 현재 회사에 오게되었다.
현재 회사이자, 상당히 만족하면서 다니고 있다.(감사합니다 충성충성)
현재 지금 회사에서 배운 것들을 정리하자면,
- 커뮤니케이션을 더 잘 하는 방법에 대한 고민
- 내가 모른다는 것을 나는 안다.
- Backend, Google Cloud Platform, Docker 등
- 일정 관리를 어떻게 해야하나.
- Computer Science에 대한 필요성.
1번에 대해서, 내 스스로를 되돌아보는 계기가 되었던 점이다. 나는 내가 예측한 A, B, C...등등의 안이 깨지면 상당히 멘붕을 하는 습성이 있다는 것. 커뮤니케이션 할때도 바둑에 수를 두는 것처럼 그렇게 분기를 많이 태우는 편인데 예상치 못한 event가 터지면 혼자 무너지는 것이다. 동료와 대화를 하고 현재 더 나은 방법을 늘 고민하지만 어려운 것 같다. 왜 개발자의 필수 역량으로 여러 회사에서 커뮤니케이션 스킬을 요구하는가. 내 의견을 잘 이야기하고, 상대와 의견이 다를 경우 타협점을 잘 찾아야할 일이 상당히 많이 일어난다. 내가 마주하는 사람도 다양하고 말이다. 그리고, 내가 어려움이 있을 때 빨리 동료에게 공유해서 함께 해쳐나가는 방법을 찾는 것. 이것도 커뮤니케이션의 일부였다.
2번과 4번은 같이 맞물리는 내용인데, 늘 나는 일정산정을 하면 내가 생각했던것과 다른 일이 터지면서 일정이 미뤄지는 일이 많다. 그럼 자존감도 떨어지고, 아무도 눈치주지 않는데 나혼자 작아지게 된다. 사실 일정이 미뤄지는건 회사 일정도 회사 일정이지만, 내 자존감이 뚝 떨어지는데에 가장 한몫을 하는 것 같다.
방법은 일정을 가능한 여유롭게 잡는 것이고, 중간에 끼는 일이 있으면 현제 맡은 일이 미뤄진다는 말을 해야한다. 겹치면 우선순위를 나눠서 팀원들에게 공유를 하고 진행한다.
그리고 내가 잘 모른다는 것을 인정을 해야 나도 스트레스를 덜 받는다. 그래야 더 꼼꼼해지고 자만하지 않게 되고, 놓치는게 없는지 더 신경쓰게 되며, 다른 사람들에게 물어보는걸 주저하지 않게 된다.
늘 겸손하자고 되뇌이면서 하루하루를 보내는 중이다.
5번 같은 경우, 첫 회사 팀장님께서 조언해주신 것이 문득 생각나는 생각인데, 사실 개발자 커뮤니티에서도 뜨거운 논란중 하나이다. Computer Science를 배우는게 필수인가?에 대해서.
첫 회사에서 개발에 대해 입문하는 내가 네트워크나 OS를 배워야하는지 물어볼때 팀장님께서는 그럴필요 없다. 지금 잘하고 있다. 며 나를 다독이셨는데 그게 다 때가 있어서 그런 말씀을 하셨구나를 깨닿는 요즘이다.
사실 개인적으로(나도 그랬던 지라) 비전공자가 개발자를 할때 많이 고민하는 부분이기도 한데, 초반엔 몰라도 사실 개발은 어떻게 뚱땅뚱땅하게 되긴 한다.(조직마다 다르지만....)
하지만 시간이 지나고, 맡는 일의 규모가 조금 크거나 대규모 데이터를 다루게 되기 시작하면 그순간 스스로가 필요해서 공부하게 되는 순간이 온다. 그 순간 내가 쓰는 프레임워크나 엔진 등이 어떻게 굴러가는지 궁금하기 시작하고, 싱글스레드니 멀티스레드니 하는 이야기가 나오기 시작하며 전공자들이 배운 내용을 공부해야할 순간이 언젠가는 온다.
때문에, 초반부터 모른다고 초초해 할 필요는 없는 것 같다. 필요한 순간은 오고, 원래 인간은 필요할 때 공부하는게 가장 효율이 좋기 때문에, 전공자가 아니어도 잘 해낼 수 있을 것이다.
대강 내 이야기만 했지, 뭘 공부했는지 정리는 하나도 안 된 것 같다.
시간이 지나면 좀 두서있게 잘 쓰겠지... 싶고... 나중에 더 수정을 해야할 것 같다.
일단 중요한건
늘 궁금증을 가지고 공부하고, 개발을 해야하며, 겸손해야한다.
인 것같다.
그리고 어쨌든 내 업으로 삼은 만큼 긴 레이스를 시작했다고 생각하면 너무 조급해할 필요도 없고 눈앞에 있는 것을 차근차근히 해나가는게 중요한 것같다.