SSUL


35살, 비전공(철학과), 국비지원 학원에서 개발 공부, 웹 에이전시 4년 경력이 전부.

누가 봐도 좋은 회사 들어가기 어려워 보이는 이 스펙을 갖고 있는 개발자는 많은 개발자들의 선망의 대상인 우아한 형제들에 어떻게 들어갈 수 있었을까요?

철학과 졸업 후 아마추어 운동선수, 보험회사 텔레마케터, 보습학원 강사 등의 일을 하다가 다소 늦은 나이에 개발을 시작했지만 본인의 환경을 극복하고 개발자로서의 새로운 멋진 인생을 펼쳐나가고 있는 개발자 이종립 님을 모시고 개발 공부는 어떻게 공부했고, 보다 나은 개발자가 되기 위해 본인은 어떤 노력을 기울였는지에 대한 얘기를 들어보는 시간을 마련했습니다.


대학 졸업 후

  • 첫 월급 70만원

  • 운동 -> 학원강사 -> 보험 텔레마케터 -> 학원강사 -> SI
    • 이전에도 알바는 했었지만 여기서부터 이야기하는건 사회의 부조리를 알게 된 직업이기 때문
  • 2007 ~ 2008년엔 경기도 시 대표로 운동선수로 활동

  • 당시엔 운동을 평생해야지 라고 생각함 (나만의 체육관을 차리고 등등?)

  • 여기서 핵심은 운동을 그만두고 깨달은게 있다는것
    • 메달을 딴 친한 동료가 이었는데, 이 친구가 운동을 그만두더니 연락이 끊김
    • 몇 달이 지나 연락을 하니 미용을 배우고 있었음
    • 그 때 마음속에서 이 직업에 대한 희망을 잃었던 것 같음
    • 나는 이 친구보다도 운동을 못하는데 평생 운동을 할 수 있을까?
  • 운동을 그만두고 과외를 시작함.

  • 학원 알바면접 갔다가 알바보다는 강사를 하라고 해서 시작하게 됐는데, 어떻게 이 사람은 날 바로 강사를 시켜주는 거지 라는 의문이 생김
    • 학원 강사를 1년 반 하고 나서 알게된건, 이 학원에서는 강의 실력이 있는 사람이 오건 실력이 없는 사람이 오건 상관 없었음.
    • 직업을 바꿀 수 없는 사람을 데리고 착취에 가까운 행위를 하고 있었던 것
  • 학원을 그만두고 백수가 되었는데 보험 가입하라는 전화가 옴
    • 백수라서 보험비 낼 돈이 없어서 안된다고 하니, 말을 참 재밌게 하니 보험을 파는게 어떠냐는 권유받음
    • 개발자가 되려는 사람이 국비지원 받는 것 처럼 무료로 회사에서 주는 보험교육을 받으러 갔더니 다 나이가 40 ~ 50대 였음
    • 텔레마케터를 하면서 느낀 점은 나는 영업을 할 수 없는 사람이라는 걸 알게 됨
    • 더이상 주면에서 보험을 가입할 사람이 남지 않게 되서 보험ㅇㄹ 그만둘 수 밖에 없었음.
    • 보험이라는게 대부분은 보험사가 된 사람의 주변인들이 모두 보험에 가입될 때 까지 뽑아내는 직업 이라는 걸 알게 됨
  • 다시 학원으로 감
    • 처음에 5명을 가리츠디가 나중에 270명을 가르치게 됨
    • 이 학원에서 자신감을 가지게 되었지만, 처음 월급 그대로 유지 되고 있었음
    • 결정적인 계기는 원장의 가족에게 90도 인사를 하지 않아서 짤리게 됨
    • 다시는 학원을 돌아가지 말아야지 라고 생각함 + 다음 직업은 앉아서 하는 직업을 가져야지 라고 다짐.
    • 매일 일어서서 밤 늦게까지 학생들을 가르치고, 학부모님들과 면담 하는게 너무 힘들었음.
  • 학원을 그만두고 다음 직업을 뭘 해야하나 엄청 고민하게 됨.

  • 그 친구들에게 상담을 하다가 개발자 친구가 개발자 직업을 권유함.

  • 그 말만 믿고 국비지원 학원을 가게 됨
도망쳐서 도착한 곳에 낙원은 없다 <br>
방향을 잘 잡으면 : 도망치다 보면 낙원에 접근 할 수 있지 않을까? <br>
레인 메이커 : 낙원이 나올 때 까지 도망친다 (인디언의 기우제 처럼)
  • 개발을 해보고 안되면 그 땐 또 다른걸 해보자. 인생은 기니깐

앉아서 일하고 싶다 : 개발자가 되자

  • 국비학원 갔을때는 31세/철학전공/통장잔고 50만원

  • 내가 학원을 수료하고 과연 좋은 회사를 갈 수 있을까 고민

  • 분명 나를 채용하는 회사는 좋은 회사가 아닐 것이다.
    • 이전 직업들을 떠올려보면..
  • 좋은 회사가 아니더라도 일단 가서 경력을 쌓고 조금 더 좋은 회사로 한 걸음씩 움직이자.
    • 하지만 부족한게 너무 많아 이를 개선하기 위해 노력
  • 돈이 부족하다.
    • 가계부 개발 시작.
    • 지금은 안쓰지만 다음 버전을 여전히 쓰는중
  • 시간이 부족하다.
    • 효율적인 시간 활용 관리.
    • 잠을 제때 잔다(취침 시간을 줄임, 새벽 3시 -> 10시 30분)
    • 밥먹을 때는 동영상 강의를 봄
  • 경험이 부족하다.
    • 어쩔 수 없는 부분
  • 개발 상식이 부족하다.
    • 추천서 탐색
    • 구글 검색을 해보면 추천서가 굉장히 많은데, 이를 다 따라가면 힘듦
      • 모두가 공통적으로 추천하는 추천서 목록을 만들어봄.
  • 무엇을 공부해야 할 지 모른다.
    • 대학 커리큘럼, 전공과목 소개 참고
    • 자료구조, 네트워크, 운영체제 등
    • 처음 보는 단어들이라 도서관에 가서 관련된 책들은 하나씩 계속 빌려서 봄.
    • 공사장을 가면 그 사람들이 쓰는 언어가 있는데, 그 단어를 모르면 거기서 초짜가 되는 경험이 기억이 남 -> 전공자들의 상식/단어를 모르면 무시받겠구나 -> 중요한 일을 못 맡아서 좋은 기회를 못 얻겠다 생각.
    • 각 단어들의 인덱스를 먼저 머리에 넣음 -> 단어가 어디 책에 있는지 정도만 기억해서 퇴근해서 꼭 확인하려고 함
  • 새롭게 기억해야 할 것들이 많다.
    • 일지/레포트 기록

독서를 효율적으로

  • 잡코리아 등에 이력서를 올림
    • 내가 현재 수준에서 어차피 좋은 회사는 못가는걸 아니 연봉이라도 많이 받자는 생각에 면접을 가면 항상 연봉을 몇 백 이상 더 부름
    • 면접을 여러군데 갔지만, 가장 가까우면서 연봉이 가장 많은 곳을 감
  • SI회사에 입사하고 상무님이 많이 챙겨주는 것을 알게됨
    • 회사 지원으로 책을 많이 구입
    • SI 프로젝트가 끝나고 다음 프로젝트 가기전까지는 정말 많은 책을 읽어서 SI 탈출에 큰 힘이 됨
  • 하루 3가지 종류의 책을 조금씩 읽고 요약
    • 집에서 : 각 잡고 읽을만한 것
    • 지하철에서 : 재미있으며 얇은 책
    • 학원/회사에서 짬짬이 : 회사업무에 도움이 될 것 같은 표지이면서 나한테 도움이 되는 책
  • 추천도서 목록을 찾아보고 중복된 책 리스트를 만든다.
    • Code Complete
    • 실용주의 프로그래머
    • TDD
  • 2주에 한 번은 서점에 가서 분위기를 파악한다.
    • 내가 모르는 분야가 있나 (상식이 부족하다는 결핍과 불안감 때문에)
  • 책을 읽을 수 없을 때 -> 동영상 강의를 준비한다.

나만의 건강/정신건강 Cheat Sheet를 만들자.

  • 전공자가 아니기 때문에 정신이 황폐해질거라 생각함
    • 임금 체불
    • 새벽 퇴근 등
  • 개발자가 되고 마인드가 정말 중요하다고 생각함.
    • 경력도, 실력도 없으니 마인드라도 제대로 갖추자고 생각함.
    • 개발자들이 싫어할만한건 나도 하지말자란 생각에 불법 소프트웨어 절대 사용하지 않고 모두 구매해서 사용함.
    • 이런 마인드 덕에 정말 좋은 습관이 생긴 것 같음.
  • 내가 자고 싶은 시간이 아니라, 몸이 자고 싶은 시간에 잔다.

  • 비누를 아끼지 말고 항상 깨끗하게 씻는다.

  • 가급적 건강식을 먹는다.

  • 일주일에 한 번은 운동/산책 한다.
    • 개발자가 되면 절대 건강해질 수 없다고 비관적으로 생각.
    • 지금은 괜ㅊ낳아도 40대가 되었을 때 암이라도 걸리면 끝장이다.
  • 항상 Plan B를 세운다.
    • 인생이 망했던 경험을 기억함.
    • 운동선수는 계획을 세워서 운동함.
    • 망해도 뭔가 할 수 있게 계획한다.

Code Complete

다른 책과 정기 간행물들을 읽는다. <br>
독서를 많이 하지 않으면 기술적으로 발전하기가 어렵다.<br>
만약 훌륭한 프로그래밍 책을 두 달 마다 읽는다면 (대개 일주일 35페이지 정도) <br>
여러분은 곧 이 산업을 확실히 이해하게 되고 다른 사람과 차별화 될 것이다.
  • 회사 선배들은 프로젝트가 끝나고 게임만 함
    • 이 선배들이 짠 코드를 보고 한심하단 생각이 듦
  • 공부할수록 SI 회사가 작게 느껴지고 자신감이 붙었다.

  • 내 습관이 나를 더 좋은곳으로 데려다 줄 거라는 생각이 들었다.

넘어지면 그냥 일어나지 말고 무언가를 주워라.

새끼손가락 관절염의 나비효과

  • 자바스크립트 핵심 가이드
    • 더글라스 크락포드가 프로그래밍 언어에 대한 장점과 단점을 이야기 하는걸 보고 나도 이 대가의 관점을 공부해보자는 생각에 사게 됨.
    • 너무 집중이 안되서 저자의 서문부터 책의 마지막 까지 구글 독스에 타이핑 -> 책 내용 전체를 거의 외우게 됨
    • 이 책은 정말 정규표현식을 잘 설명하는 책이라 그 때 부터 정규표현식에 자신감을 얻게 됨
    • 하루종일 타이핑 치다보니 양쪽 새끼손가락에 관절염이 오게됨.
    • 너무 아파서 코딩 속도가 안나오니 큰일났다는 생각에 전체를 타이핑 하지 않고 요약만 하자고 생각함
  • 새끼 손가락이 필요 없는 타이핑 방법을 찾게됨 -> Vim을 찾음
    • 틈만 나면 Vim을 쓰고 책을 찾아보고 플러그인을 개발.
  • 올해 7월에 Vim 플러그인__을 개발.
    • 레거시 코드를 보다가 코드를 다 때려부수고 싶다는 생각을 하게 되서 개발 시작.
    • 깃헙 트렌딩, 해커뉴스 등에 하루 동안 최상위권 위치.
    • 그날 하루는 깃헙 트렌딩 전체 2위에 랭크하게 됨.
새끼 손가락 관절염이 거렬 이를 해결하고자 시작한 Vim 사용, 무식하게 공부했지만 나비효과로 여기까지 오게됨.

나의 SI 탈출 계획.

퇴사를 결심하게 된 2가지 SI 프로젝트

  • 첫 번째 프로젝트
    • 8시 까지 출근해서 국민체조를 함
    • 직장상사가 부하직원에게 물건을 던지는 것을 봄
    • 파견을 하면 여기보다 더 심한 곳도 갈수도 있겠다고 생각.
  • 두 번째 프로젝트
    • 정부 기관
    • PM이 프로젝트 투입된지 며칠 되지 않았는데 계약서에 싸인을 일단 하라고 계속 강요.
    • 그 문서 내용은 프로젝트 각 모듈의 완료 여부를 싸인하는 계약서였음.
    • 실제 그 모듈을 개발하기로 한 개발자는 도망을 갔고, 나는 그때 만들지도 않았던 모듈의 완성을 싸인해야 하는 상황이였음.
    • 그때부터 한 일은 PM과 계약서에 싸인할 수 없다고 싸우기만 함.
    • 프로젝트가 끝나고 다시는 파견을 나가고 싶지 않다고 생각
    • 코딩은 안하고 이런 이상한 일이나 하질 않나, 회사를 복귀하고 나서는 코딩 외에 다른일을 해보라고 이야기를 들어 퇴사를 결심.
  • 약점을 보완하기 위한 막연한 준비.
    • 알고리즘 문제 풀이.
    • 오픈소스 라이브러리 개발.
    • 주력 언어 공부
    • 기타 등등
  • 위 내용들은 평생 공부해야하는 것들이니, 특정 회사에 이직하기 위한 공부를 해야하지 않을까 생각.
  • 단기간에 실력을 급격히 올릴 수는 없음.
  • 내 실력을 피룡 이상으로 과장해도 안됨(언젠가는 들통)
  • 내 실력을 객관적으로 봐줄 수 있는곳으로 가는 것이 목표
    • 과대 평가 해주는 곳은 곤란.
    • 과소 평가 하는 곳으로 가면 현재와 다를 바 없음.
  • 회사 리스트를 작성
    • 합격 확률을 예상하여 정렬
    • 합격 확률이 높을 것 같은 회사부터 지원
    • 자꾸 합격하면 기분이 좋음
    • 면접 스킬 향상/ 내게 부족한 것 확인/ 자신감 확인.
    • 나쁜/좋은 회사를 알아보는 안목 이 조금씩 좋아짐
    • 중요 : 한 이력서를 계속 업데이트 하지 않고, 매번 새로운 이력서를 만든다.
    • 합격률이 높은 회사는 합격하고 나서도 가진 않음
  • 우아한 형제들 CTO와 어찌저찌 연락이 닿음

  • 코딩 테스트를 준비할 때 다음과 같이 마음먹음
    • 게임으로 치면 망한 캐릭터
    • 코딩테스트에서 눈에 띄어보자 라고 생각
    • 라스칼라 멤버들이 우아한형제들에 있다는 소문을 들음
    • 1번은 JS, 2번은 스칼라, 3번은 SQL, 4번은 Java로 풀었음(이러면 눈에 띄겠지라는 마음)
    • 문제를 다 풀고 1시간이 남아 이 시간동안에도 뭘 하자 라고 생각
    • TDD 해왔던 것을 떠올리고 각 문제당 테스트케이스를 10개를 작성
    • 누군가는 알아보겠지란 마음에 테스트케이스 코드는 지우지 않고 제출
  • 기술면접에서 TDDdㅔ 대해 정말 많은 이야기를 나눔
    • 좋아하는 주제에 대해 이야기하는 기분이었음.
  • 성공한 사업가를 보면 항상 궁금했던 것이 있어서 물어봄
    • 김봉진 대표 면접에서 “사업을 하다보면 불안할 때가 있을텐데 어떻게 이겨내나”
    • “나는 원래 사업가가 아닌데, 사업을 하고 있고 이만큼 하는 것도 대단하다고 생각”
      • 스스로에게 많은 위안이 되었음.
  • 이직을 하고 정말 많은 것이 바뀐것을 느낌
    • 연봉도 오르고, 주변의 개발자들이 바뀌고 정말 다른 세상에 온 것 같음

실용주의 프로그래머 : 습관에 대하여

영국 잉글랜드의 이튼칼리지를 구경하던 한 관광객이 이렇게 완벽한 잔디밭을 어떻게 만들 수 있는지 정원사에게 물었다. 정원사는 "그건 쉬워요." 라고 대답했다 "매일 아침 이슬을 털어주고, 이틀에 한 번 잔디를 깎아주고, 일주일에 한 번 잔디밭을 골라주면 되지요." <br>

"그게 다에요?" 관광객은 물었다.
<br>
"그게 답니다. " 정원사는 대답했다. "그렇게 500년만 하시면 당신 잔디밭도 이정도로 괜찮아 질 겁니다."

개인적인 기준으로 이직에 성공했다고 생각하는데, 그 원동력은 불안감 이라고 생각한다. 다른 한편으로 도와줬던 것은 습관 이다.

  • 잠을 제 때 자는 습관.
  • 몸을 깨끗하게 씻는 습관.
  • 매번 책을 요약하는 습관.
  • 매일 코딩하는 습관.
    • 좋은 프로그래머란, 일반 통행 도로에서도 양 쪽을 모두 보고 건너는 사람이다.
  • 회사 팀 플레이
    • 다른 사람을 도울 방법을 항상 생각한다.
  • 작은 도구를 만드는 습관.
    • 같은 일을 수작업으로 처리하지 않는다.
  • 기억력을 보완하는 습관.
    • 유사시에 항상 찾을 수 있어야 한다고 생각.
    • 블로그/개인 위키를 작성하고 관리한다.
  • 좋은 음식을 먹고 충분한 휴식을 취한다.
  • 항상 Plan B를 준비한다.
  • 일상 생활에서도 최적화를 고민한다.

마지막으로

우리가 단지 돌을 깎고 있어도 언제나 대성당을 마음속에 그려야 한다.

  • 개인 프로젝트, 오픈소스 활동을 취미로 해야함.
  • 내가 불편한걸 개선하기 위해 개인 시간에 무엇을 만드는 것을 습관화 하는 것이 중요

Q&A

SI 하다보면 습관을 지속할 수 없을때가 많은데 그럴 떄 어떻게 유연하게 대응하는지.

  • 처음에 회사에 들어갔을 때 항상 조건을 걸었음.
    • 누군가 나에게 술을 권하는 사람이 생기면 퇴사하겠다.
    • 회식하면 욕먹더라도 빨리 퇴근했음.
  • 프로젝트 가서는 항상 내 일을 빨리 끝내고 내 공부를 하게됨

  • 유지보수를 할 때도 내가 쓰고 싶은 기술을 가지고 신규 기능을 개발해주기도 하고, 반복적인 일은 자동화 도구를 만들어주기도 함.
    • 거기 있는 사람들을 돕기 위한 도구를 항상 만들어줬기 때문에 주변의 많은 배려를 받을 수 있었음.
  • 주말에도 항상 똑같이 자고 일어났음.
    • 잠을 늦게 자는것에 비해서 일찍 자는것의 장점은 선택 에 있음
    • 일찍 자면 “더잘까?”, “공부할까?” 선택할 수 있어서 좋음.
    • 아침에 공부하는게 큰 도움이 되었음.
  • 프로그래머의 길, 멘토에게 묻다 라는 책을 추천
    • 초보 개발자가 읽으면 정말 좋음.
    • 이런 이런 상황에선 어떻게 하는게 좋을까요? 라고 하면 저자가 이렇게 저렇게 하세요 라고 아주 적절한 답변을 볼 수 있음.
    • 개발자로서 성장할 수 있는 원칙을 볼 수 있음.

코딩테스트를 하다가 도저히 안풀릴 때는 어떻게 하는게 좋을지.

  • 사람마다 공부 방식이 달라서 정답은 없다.
  • 개인적으로는 답지를 빨리 보는 편.
  • 그리고 왜 이렇게 풀었는지를 깨달으려고 함.
  • 소설가가 다른 소설가의 소설을 참고하듯이 개발자도 다른 사람의 코드를 많이 보는것이 좋다.
  • 불안하다면 빨리 보고 왜 그랬는지 고민하는게 좋다고 생각.

한 언어를 어느정도 하게 되면 다른 언어를 공부하고 싶은데, 한 언어를 꼭 끝까지 파야 하는 것인지 & 책만 단순히 보는게 실제로 도움이 되는지.

  • 언어를 마스터 하는게 일단 가능한 것인가?
  • 다른 언어를 하고 싶다면 그냥 바로 시작하는게 나을 수 있다.
  • 단, 언어의 시그니쳐같은 내용은 이해하는게 좋다.
  • 언어의 패러다임들을 이해하면, 같은 패러다임의 언어들은 이해하기가 쉽기 때문에 패러다임을 이해하는게 더 필요하지 않을까 생각.
  • 실용주의 프로그래머에서는 1년에 1개의 새로운 언어를 공부하라 라는 과제가 주어진다.

  • 샘플 코드가 있는 책은 왠만하면 다 타이핑 할 것.
  • 그럴 필요가 없는 책이라 생각되어도 무조건 해볼 것.
  • 꼭 코딩 책만 읽을 필요는 없다.
    • 경력관리, 커뮤니케이션
    • 피플웨어, 클린코드 등.

국비지원 과정상 하루하루 따라가기가 힘든데, 좋은 개발자가 되고 싶다고 다짐하게 된 계기가 무엇인지 & 다양한 직업이 프로그래밍에 어떤 도움이 되었는지.

  • 처음부터 좋은 개발자가 되고 싶다고 생각.

  • 나는 삼류 개발자가 되고 싶지 않다고 생각함.
    • 학원 다닐때부터 구글 가야지 라고 생각.
    • 얘기는 못했음(남들이 욕할까봐..)
    • 목표를 구글을 잡으면 구글은 못가더라도 그 근처까지는 가지 않을까 생각.
  • 남들에게 얕보이고 싶은 생각이 없었음.

  • 나보다 잘하는 사람을 보면 질투가 나서 참을수가 없었음
    • 항상 국비지원 과정에서 1등하다가, 다른 사람이 1등하는걸 보니 너무 질투가 났음.
  • 개발만을 위한 개발을 하는게 아니라면 모든 경험이 개발에 도움이 됨.

다른 분야의 개발자로 옮기려고 할 때 프로젝트를 어떻게 시작했는지.

  • 집에서 하느냐, 회사에서 하느냐에 따라 차이가 남.

  • 회사에서 프로젝트를 할 때는
    • 많이 물어보고 타인의 문서를 착실하게 봄.
    • 어떤 개념이 있는데 그냥 모르겠다고 하는 거랑 잘 기억이 안나는데 어떤 개념인지 다시 물어보는 것은 큰 차이가 있음
  • 집에서 할 때는
    • 오픈소스 코드를 많이 참고함.
    • 개인적으로 실수라고 생각하는 것은, 1년차 때 개발자 커뮤니티 대화에 참여하지 않았음.
    • 다시 그 때로 돌아간다면 다른 개발자들과 정말 많은 대화를 하려고 노력할 것.

참고 및 출처

https://blog.fupfin.com/?p=150