일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CodeLatte
- 백엔드 코딩
- java
- Android
- 스트림
- 코딩입문
- lamda
- Stream
- 자바
- 백엔드 개발 코딩 강의
- 데이터베이스기초
- C포인터
- 자료구조강의추천
- 코딩독학방법
- CodeCommit
- 람다
- 코드라떼
- java8
- 안드로이드
- 개발자
- 자바자료구조
- 데이터베이스강의
- 백엔드 강의
- 자바8
- 오류제어
- 정규식
- 문돌이
- 스타트업
- thread
- RFC
- Today
- Total
이병록의 개발 블로그
문돌이가 개발자가 되기까지 4탄 본문
3탄과 이어지는 글입니다.
문돌이가 개발자가 되기까지 3탄 요약
컴퓨터 공학을 복수전공으로 4학년 때 도전
문돌이가 복수전공으로 컴퓨터 공학을 하기에 쉽지 않았음
최초 편견도 있었으나 무사히 잘 극복해냄
나름 좋은 결실을 얻어냄
경영학사, 공학사 두 가지 졸업장을 획득
졸업 준비까지
12월에 4학년 2학기를 마치며, 앞으로의 행보에 대해서 고민을 하고 있었다. 공부한 기간도 짧았기도 했고 스스로 부족한 부분들이 너무 많다고 생각해서 지식과 경험과 지혜를 채워 넣기 위해 공부를 좀 더 하기로 마음먹었다. 사업을 위해서 공학이란 것에 접하게 됐으나 하다 보니 재미있던 부분도 있었다. 재미뿐만 아니라 문제를 풀어나가는 방식이 회계를 공부하면서 느꼈던 문제 해결 방식이 개발하고 비슷했던 것도 도움이 많이 되었다. 회계라는 것도 분개들이 모여 원장이 되고 재무제표(재무상태표, 포괄손익계산서, 현금흐름표, 자본변동표) 등이 만들어 지기 때문이다. 컴퓨팅적 사고의 한 부분도 큰 문제들을 작은 문제로 쪼개서 해결하고 합치는 것을 하기 때문에 쉽게 쉽게 이해가 갔다. 그럼에도 불구하고 물리적은 공부량이 부족했기에 CS(Computer Science)를 더 집중하기로 했었다.
공부를 하던 도중 우연찮은 기회
를 얻게 되었다. 컴퓨터 공학 수업을 듣던 시절 알게 된 분이 있었다. 같은 수업을 들었으며 국내에서 열었던 Google Conference에서도 만난 것을 기회로 연락을 가끔씩은 했었다. 그분을 통해서 알게 된 사람들이 있었는데 나와 같은 같은 학교, 같은 경영학부였고 창업을 준비하고 있던 두 사람을 만나게 되었다. 고깃집에서 명함 받고 자기네와 같이 하지 않겠냐고 했던 팀이 있었다. 사실 고민하는데 1~2일도 안 걸리고 바로 답을 줬다. 같이해보자고, 그래서 실제로 개발자의 업무를 졸업하기도 전 방학 때 시작하게 되었다. 그것이 나의 개발자의 직무로써 첫 업무이자 첫 직장이었다.
팀 합류에 대해 고민에 대해서 사실 크게 안 했다. 그분들과 같이 일하기로 하고 합류하게 된 이유는, 단순했다. 내가 다니던 학교에서 창업을 하겠다는 사람을 본 적도 없고 실제로 도전하는 사람은 더 못 봤다. 내가 다녔던 학교가 네임벨류가 좋은 곳은 아니라서 그냥 그런 삶들을 사는 친구들을 많이 봤고, 스스로 한계점을 두는 사람들을 봤기 때문이다. '난 안될 거야, 이 정도면 잘하는 거야' 이런 사람들이 모여있다 보니 사람을 만나는 환경도 그리 좋지는 않았다. 스스로 알을 깨고 나오는 사람이 많지 않았다. 그럼에도 불구하고 그런 환경에서 도전을 하겠다고 하는 것이 마음에 들었다. 그리고 나도 사업에 대해서 생각이 있었고. 나름 좋은 기회라고 생각했다.
일을 시작하자마자, 상황은 좋지 않았다
이 팀은 서비스 시작 이전에 개발을 외주로 맡긴 상태였고 결과물이 안 좋은 상황이었다.
학부생의 눈으로 봤을 때 결과물은 말 그대로 '개판'이었다. 완성품은 아니었으니, 중도 결과물을 요청했고 겨우겨우 받았다. 결과물의 종류는 안드로이드 애플리케이션, PHP로 만든 서버 어플리케이션, 그리고 관리자 사이트 3가지였는데 안드로이드 애플리케이션을 여러 사람이 개발하다 보니 코드의 퀄리티부터 맛탱이가 갔고, 아키텍처도 섞여 있었다. 더 큰 문제는 주석 조차 한국어, 영어, 일본어 3개가 섞여있는 진짜... 지금 생각해도 웃기는 상황이었다. 그리고 기본적인 보안 부분도 생략되어있었다. 아직 미완성이어서 그럴지도 모르겠지만, 고객의 민감한 개인정보를 저장하는 로직에서 암호화 로직은 존재하지 않았고 , 관리자 페이지는 원래 재사용해왔던 디자인을 사용하다 보니 필요 없는 화면과 코드도 포함됐고 서버 애플리케이션도 비슷한 상황이었다. 꽤 비싼 비용을 지불하고 원스톱으로 개발하던 걸로 알고 있었는데 개발기간도 계속 딜레이 되고 최악의 상황이었다. 그래서 이 팀은 내부 개발자를 필요로 했고 해결사가 필요했다. 그래서 개발자를 찾고 있었던 것이었다.
사실 외주만 문제는 아니다. 해당 팀도 개발 기획을 해본 적이 없는 처음이었기 때문에 이런 상황이 발생한 부분도 있다. 나도 문돌이를 20년 넘게 있었으므로 이해가 갔다. Maker와 기획자의 생각의 차이가 날 수밖에 없다. 서비스 전문 기획자도 아닌 사람은 무엇을 구체화하고 원하는지도 잘 모른다. 이런 말도 있지 않은가. '실제로 결과물이 나오기 전 까지는 고객은 무엇을 원하는지도 모른다'. 경험이 적은 상태에서는 결과물도 제대로 나올 수 없다. 외주 개발은 정확히 요구하는 사항 그대로 개발한다. 요구사항에 없는 개발은 하지 않는다. 그러므로 경험이 없으면 무엇을 요구할지도 모르기 때문에 더 좋지 못한 결과물이 나온다.
부사수도 없고 사수도 없다. 고로 혼자서 해결해야 하는 힘
이 중요하다. 사수가 있으면 모르면 물어보면 된다. 없으면 쉽지 않다. 시니어에 가까운 주니어급 또는 시니어는 경험치가 풍부하기 때문에 굳이 사수가 있을 필요도 없다. 그러나 나는 부사수도 없고, 사수도 없었다. 경험치 부분에서 가장 영향이 심한 곳이 Back-End 분야다. 그러나 나는 도움받을 곳이 없었다. 학교 과제도 아니고 실제로 서비스를 해야 하고 유지, 확장해야 하는 상황이기 때문에 부담감은 있었다. 그러나 자신감은 넘쳤다. 이유는 앞서 얘기했듯이 죽을 각오로 하면 된다. 그리고 실제로 하면 되더라.라는 것을 깨달았고, 그리고 외주 개발한 업체보다는 실력면에서 내가 더 낫다 라는 생각이 들었기 때문이다. 또한 잠재능력도 좋았고 혼자서 자기 계발을 꾸준히 할 수 있는 힘을 보유하고 있었기에 두려움은 없었다. (스스로 이런 얘기하니 좀 부끄럽다.)
이전의 것은 묻고 새로 개발합시다
라고 제안을 했다. 중도 결과물을 받고 어떤 상황인지 얘기했다. 차라리 빨리 이전의 결과물을 묻고 새롭게 개발하는 것이 더 빠르다고 제안했다. 사실 쉽지 않은 결정이었다. 팀에서는 몇 백 단위가 아닌 개인적인 돈으로 몇 천만 원 가까이 비용을 투자했었기에 리스크가 컸다. 합류한 지 며칠 되지도 않은 사람이 몇 천만 원 묻고 다시 새로 개발하자고 하니 얼마나 기가 막혔을까.. 그래도 날 믿고 새로 개발하기로 결정했다. 이건 한 참 뒤의 얘기지만 그 믿음으로 4년 이상 그 기업의 CTO로 지내고 있으며, 개발 외적으로 임원으로서 경영에 관여했고 기업을 성장시켰으며 기업의 서비스를 몇 년 간 부양할 아키텍처를 만들고 고도화시켰다는 것은 이후의 이야기이다.
마지막으로
문돌이가 개발자가 되기까지 4탄을 작성하면서 과거를 되짚어봤다. 개발 업무를 하는 개발자를 하기로 마음먹고 정하고 실제로 하기까지 여러 일 들이 많았다. 처음엔 작은 계기였지만 그 결정이 5~6년이 넘는 세월 동안 삶의 방향에 큰 영향을 미쳤다. 새로운 것을 도전하는 것은 여러 감정이 복잡할 수밖에 없다. 두근거림, 복잡함, 두려움, 걱정, 이게 맞는 걸까 등 여러 생각들이 줄다리기를 하며 감정을 좌지우지한다. 이 글을 작성하는 이 시점에도 여러 감정이 교차한다. 첫 결정 후 5~6년이 넘었고 지금 시점에서 좋은 결정이었는지 아닌지는 평가를 할 순 없다. 아직도 잘 모르겠다. 다만 고민했고 실행했고 걸어왔다. 이 부분을 얘기하고 싶었다.
이 글을 읽는 사람은 우연찮게 접하게 됐을 가능성이 높다. 내가 시작할 당시에는 개발자가 이 정도로 핫한 직업은 아니었으나, 창업이라는 트렌드와 스타트업 그리고 알파고가 바둑에서 인간을 넘어서고 AI라는 트렌드가 생긴 이후에 관심 많은 직종이나 직무가 됐다. 그러면서 문돌이가 교차로 컴퓨터 공학 또는 소프트웨어 공학 수업을 듣거나 복수 전공하는 사람이 많아졌다. 실제로 뉴스 기사도 핫하다.
https://biz.chosun.com/site/data/html_dir/2017/03/27/2017032702522.html
트렌드도 좋지만 이 분야는 자신의 성향과 재능이 안 맞으면 할 수 없다. 어느 엔지니어링 분야든 꾸준히 자기 계발을 해야 하는 것은 기본이다. 기술 발전 속도가 상당히 빠르기 때문에, 따라가기 위해 부지런히 연구 및 공부를 해야 한다. 진심 매일 마다 공부해야 한다. 그렇기 때문에 '공무원적 성향'이나 또는 '집에 가면 쉬어야지~' 하는 사람의 성향과는 안 맞는다.매일 마다 집에 가서 연구 공부하는 것을 좋아하며 호기심이 넘치는 사람은 이 분야를 도전해볼 만하다.이 부분이 안 맞으면 금방 도태되고 그것을 지켜보는 스스로도 정신적으로 괴롭다.
도전하기에 앞서 셀프 체크리스트.
- 호기심이 많다.
- 문제를 풀 때까지 끝까지 포기하지 않는다.
- 자기 계발하는 것이 즐겁다.
- 스스로 성장하는 모습을 통해 성취감을 많이 느낀다.
- 작은 것이라도 이뤄본 적이 있다.
- 꾸준함은 기본이고 끈기가 있다.
- 커뮤니케이션 능력이 좋다.
- 센스가 있다.
- 소위 말하는 컴퓨팅적 사고를 잘한다.
- 몇 시간 동안 집중할 수 있는 힘이 있다.
- 독학할 수 있다.
- 기본적인 영어 리딩은 가능하다.
이 중에서 다른 건 몰라도 '독학할 수 있다'는 매우 중요한 능력이다. 이건 필수 능력이다. 독학할 수 있는 힘이 없으면 이 분야는 정말로 안 맞는다. 진심이다.
학원 가야지만 공부하고, 시켜야지 공부가 가능한 사람이 있는데.. 음.. 진짜 안 맞을 것이다. 다른 분야를 생각해보는 것이 낫다.
자신한테 맞는 것을 찾기 위해 여러 분야를 해보는 것은 좋다. 나도 여전히 찾고 있으며 내 생을 걸 만한 일은 무엇일지 고민하고 있다.
실제로 컴퓨터 공학과 학생이 졸업 후 전공으로 직무를 하지 않고 다른 직무를 하는 경우가 많기 때문이다.
번외
번외로 외주를 맡겨서 좋은 결과물이 나오는 것은 하늘에 별따기다. 산업군을 포함해 개발 환경이 결과물을 좋게 만들 수 없는 구조이기 때문이다. 중소 외주업체는 여러 프로젝트를 동일한 기간에 진행하는데 그 이유는 프로젝트를 단기간에 많이 해치워야지 돈을 벌 수 있는 구조 때문에, 여러 프로젝트를 많이 받고 개발할 사람이 부족하면 어디서 끌어와서 쓰고 빠빠이 한다. 즉 결과물에 대한 애정보다 빨리 해치워야 하는 것을 목적으로 한다. 그런 환경은 개발기간에 작동하기'만' 하는 소프트웨어를 만드는 것에 맞추는 것에 급급할 수밖에 없다. 어쩔 수 없는 듯하다.
엔지니어의 실력과 질을 떠나 환경이 그렇게 만든다. 그래서 소프트웨어 엔지니어들은 외주를 벗어나고 싶어 하는 이유 중 하나이다.
그래도 외주를 맡겨야 한다면, 기획을 정말 꼼꼼히 해야 한다. 무엇을 원하는지 정확히 아주 정확히 문서화하고 생각을 정리해서 얘기해야 한다. 그리고 계약서에 넣어야 한다. 그렇지 않으면 원하지 않는 결과물을 받을 수 있다.
긴 글 읽어 주셔서 감사합니다.^^!
추가글!
문돌이가 CTO?
'사설' 카테고리의 다른 글
자바 자료구조 강의 추천! (1) | 2021.08.24 |
---|---|
코딩 독학 하는 좋은 방법 (14) | 2021.05.20 |
문돌이가 개발자가 되기까지 3탄 (0) | 2019.12.24 |
문돌이가 개발자가 되기까지 2탄 (1) | 2019.12.22 |
문돌이가 개발자가 되기까지 1탄 (9) | 2019.12.22 |