어제는 디자이너였던 내가 오늘은 개발자?!

hailey·2022년 10월 5일
0

TIL

목록 보기
9/14
post-thumbnail

디자이너에서 개발자로 커리어 전환하기

나의 스물 다섯은 개발자가 된 인생의 터닝포인트이자 사회 생활의 첫 시작이었다.

1. 뭐하고 먹고 살지?

스물 다섯, 막 학교를 졸업하고 나니 저 생각밖에 안 들었다. 디자인을 좋아하지만 계속 하고 싶다는 확신은 없었다. 서비스 기획 직무가 더 끌렸지만 포트폴리오가 없어서 원하는 기업에 지원하기는 힘들었다. 잡플래닛, 사람인을 쳐다볼수록 고민은 깊어졌다.

하고 싶은 일이 하나도 없었다. 원하는 게 없고 목표도 없으니 취업에 집중하기도 힘들었다. 다른 사람들 따라 자소서도 쓰고, 토익 시험도 보고, 자격증도 준비했지만 여전히 혼란스러웠다. 졸업한 선배들은 어떻게 살고 있을까, 사람들은 도대체 어떻게 취업을 하고 일을 할까. 막연하게 대단하다는 생각만 했다.

2. 개발이라는 새로운 세계

그렇게 막막하던 와중, 친구가 개발을 공부하고 있다는 얘기를 해 줬다. 꼭 관련 전공이 아니어도 새로운 공부를 시작해볼 수 있겠구나! 하는 좋은 자극을 받았다. 예전에 들었던 컴퓨터 교양 수업에서 간단한 과제도 어려워해 ‘아 .. 나는 이 길이 아닌가보다 ^_^’ 하고 넘어갔었지만, 파이썬(Python) 같은 프로그래밍 언어에 대한 호기심이 남아 있어서 더 궁금해졌다.

아무것도_모르는_사람의_패기.jpg

집에 오자마자 개발 교육을 검색해봤다. 정말 아!무!것도 모르는 상태에서 파이썬을 다루는 데이터 분석 교육 커뮤니티를 발견했고 덜컥 지원했다. 지원하고 나서야 5달 동안 매일 서울에서 진행되는 교육인 걸 알았지만, 어쨌든 해 보기로 했다. KTX를 타고 4시간 일찍 와서 면접을 연습한 끝에 정말 운 좋게 합격했다. 뭐라도 해 보고 싶은 마음에 고시원 같은 작은 원룸도 구하고, 캐리어에 노트북 하나만 들고 올라왔다.

그 때의 과감함과 목표 의식 덕분에, 나는 개발이라는 새로운 세계를 알게 되었다. 뭘 배우는지도 몰랐지만 처음으로 SQL이라는 언어를 공부하고, 터미널로 코드를 하나하나 배우는 그 자체가 즐거웠다.

3. 디자이너였던 내가 취업했더니 개발자로?

교육 프로그램의 마지막 과제는 데이터 분석 결과를 웹페이지로 보여주는 것이었다. 문제는 아무도 웹 개발을 해본 적이 없다는 것이었다. 어떻게든 프로젝트를 성공시키고 싶은 마음, 이왕 하는 거 웹 개발도 배워보자는 마음으로 호기롭게 도전했다. 당시 선생님이었던 아샬님을 붙잡고 속성으로 자바스크립트를 배웠다. 3시간 동안 속성으로 배운 자바스크립트로 3일 만에 결과물을 만드는 데 성공했다.

운 좋게도 결과물이 좋은 평가를 받아 취업 제안을 받았다. 최종 과제로 웹 개발을 하며 디자인과 데이터 분석 결과물이 웹 서비스로 배포되고, 사람들이 사용하는 걸 보며 훨씬 큰 재미를 느낀 때였다. 아샬님은 디자이너인 나에게, 혹시 코딩에 관심이 있냐고 물으며 나에게 말했다.

“오늘부터 자바스크립트가 메인이 돼야 해요”

자바스크립트, 리액트 등 개발에 대해 아무것도 모르던 내가 개발을 시작하며 들은 말이었다.

4. Q. 자바스크립트, 리액트를 1도 모르는 데 어떻게 개발을 하죠?

A.울면서 공부한다

회사에서 일하며 공부하고, 퇴근 후에도 공부했다. 다행히 내 주변엔 좋은 개발자 선배들이 많았다. 꼭 읽어야 하는 개발 관련 책들, 효율적인 공부 방법을 끊임없이 가르쳐줬다. 실력이 너무 늘지 않아 답답했을 때 현실적인 조언도 많이 들었다.

특히 인상 깊었던 조언은 “키보드로 코드 치는 것부터 익숙해지라”는 말이었다. 왼손으로 백틱, 탭 등 간단한 코드를 치는 게 익숙해지면 오롯이 코드에만 집중할 수 있다는 것이었다. 지금까지도 기억나는 감사한 조언이다. 이외에도 개발자가 습관으로 만들어야 할 것과 같이 현직자만 알려줄 수 있는 정보도 받았다.

그렇지만 나에게 가장 큰 도움이 되었던 건 페어 프로그래밍과 테스트 주도 개발 (TDD)를 밑바탕에 깔고 코딩을 배웠던 것이다. 페어 프로그래밍은 빠르게 숙련도를 발전시키는 원동력이 되었고, TDD는 모든 개발의 시작이 되었다.

5. 개발도 짝이 있다

짝 프로그래밍 (페어 프로그래밍)이란?

코드를 작성하는 사람이 ‘드라이버’, 다른 한 사람은 ‘내비게이터’가 되어 코드 리뷰를 하며 프로그램을 작성한다. 두 프로그래머는 수시로 역할을 바꾸며 진행한다.

회사에서 개발자는 3명이었다. 나와 아샬, 그리고 노아. 당시 회사에서 나는 ‘짝 프로그래밍’이라는 프로세스로 개발을 배웠고, 그 과정은 아래와 같았다.

  1. 한 사람당 3분씩 코딩한다.
  2. 다음 사람에게 키보드를 넘긴다.
  3. 한 사람이 작업하는 동안, 다른 두 사람은 태스크를 작성한다.
  4. 이 과정을 50분 반복한 후, 10분 휴식한다.

갈 곳을 잃은 채 키보드에서 방황하는 손

처음에는 아무것도 모르는 신입의 밑천이 보이는 것 같아 부끄러웠고, 스트레스를 많이 받았다.

3분이라는 시간은 다른 사람들이 할 때는 너무 짧고, 내가 할 때는 미스터리하게 길었다. 실시간으로 모든 코드를 확인해야 했기에 힘들 때도 많았다. 하지만 짝 코딩 덕분에 예전보다 훨씬 빠르게, 크게 성장할 수 있었다.

키보드에서 손을 떼는 건 더 나은 작업 방식을 논의할 때만 허락됐다. 조금도 망설여서는 안 되었기에 많은 자극을 받으면서 성장할 수 있었다. 함께 좋은 코드를 토론하면서 혼자 하는 것보다 훨씬 발전된 코드를 만들 수 있었다. 놓칠 수 있는 실수들을 다른 동료들이 잡아주고, 실시간으로 우선순위를 따라 코딩할 수 있는 것도 중요했다. 무엇보다 선배 개발자의 작업 과정을 보고 따라하며 배울 수 있는 것이 좋았다.

백문이 불여일견인 건 코딩도 똑같다. 함께 프로그래밍을 하면서 변수 이름은 어떻게 설정할지, 코딩 스타일은 어떤 게 좋을지, 리팩터링은 어떻게 해야 할지 등, 초보 개발자가 힘들어하는 점들을 직접 경험하고 해결하는 과정이 재미있었다.

단기간에 팀원들과의 커뮤니케이션도 발전했고, 신뢰감도 커졌다. 같이 작업하며 동료들이 어떤 의도로 코드를 작성하는지 바로 이해할 수 있었다. 함께 공동의 문제를 해결한다고 믿었기에, 상대가 힘들어하거나 잘 몰라도 비난하는 게 아니라 서로 노력하는 분위기가 형성되었다.

6. TDD? TDD가 뭐야~? 대단한 방법론이지!

(nct? nct가 뭐야 ~ 패러디)

TDD
Test Driven Development의 약자. 테스트 주도 개발 이라고 한다. 소프트웨어 개발 방법론 중 하나로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복해 원하는 결과물을 만든다.

TDD 개발주기
Red: 실패하는 테스트 코드를 작성한다.
Green: 테스트 코드를 통과시킨다
Yellow: 코드를 리팩토링한다.

개발을 처음 배울 때부터 TDD 방식으로 공부한 것도 나에게 큰 도움이 되었다. 회사 홈페이지를 만드는 첫 프로젝트도 테스트 코드부터 먼저 만들고, 그 다음에 컴포넌트를 만들었다. 처음에는 정말 너무 어려웠다. 나는 제대로 된 코드도 못 치는데, 그 와중에 테스트 과정까지 고려해서 좋은 코드를 설계한다는 개념이 와닿지 않았다. 혼자서 개발을 공부했다면 TDD를 제대로 하는 건 고사하고 개념 자체를 몰랐을 것이다.

하지만 나에게는 좋은 동료들이 있었다. 아샬, 노아, 홀맨과 작업하며 테스트 코드를 짜는 과정에 익숙해졌다. 처음에는 몰라서 그냥 외워서 했다. 공부를 하면 할수록 ‘아! 이래서 이렇게 테스트를 하는 구나!’ 하는 깨달음을 얻을 수 있었다. 프로젝트 규모가 커지고 기간이 길어질수록 TDD의 장점은 명확해졌다. 작업의 핵심을 테스트하고 수정하며 불필요한 코드를 최소화했고, 코드 의도도 명확하게 보여줄 수 있었다.

7. 가시밭길이지만 꽃길입니다

꽃길이긴 합니다... 근데 이제 가시를 곁들인,

코드를 한 번도 작성해본 적 없던 디자이너가 개발자로 일하기까지, 정말 많은 우여곡절이 있었다. 특히 나는 공부를 한 후 입사한 게 아니라, 입사하자마자 개발을 해야 했기 때문에 더 힘들었다. 매일 쏟아지는 작업을 붙잡고 끙끙대느라 너무 힘들었는데, 자꾸만 노아가 “헤일리는 처음부터 제대로 배우네요, 부럽다. 꽃길만 걷네요" 라고 해서 이해가 안 됐다. (이렇게 힘든... 꽃길이 있나요?)

그렇지만 개발 숙련도가 올라가고, 담당하는 작업의 규모가 커지면서 확실히 알게 되었다. 내가 빠르게 업무에 적응하고 개발자가 될 수 있었던 이유는 처음부터 제대로 배웠기 때문이었다는 것을. 시작이 탄탄했던 덕분에 어떤 걸 어떻게 공부해야 할지는 크게 고민하지 않았다. 오히려 무엇을 어떻게 효율적으로 학습할지에 대한 조언을 따라가는 게 더 힘들 정도였다. 짝 프로그래밍, TDD처럼 좋은 습관을 처음부터 익히고, 실력 좋은 동료들과 현업에서 피드백을 주고받으며 빠르고 효율적으로 발전할 수 있었다.

좋은 시작이 얼마나 중요한지는 시간이 지나며 알게 되었다. 일례로 나는 TDD로 개발을 시작하는 게 당연하다고 생각했다. 나에게는 테스트 코드부터 만드는 게 코딩의 기본이었기 때문이다. 하지만 이직을 준비하면서 그런 방식이 흔하지 않다는 것을, 테스트 코드 역량이 우대조건이라는 걸 알게 되었다. 면접 과제를 제출했을 때 가장 많이 들었던 피드백도 “TDD를 잘 사용하시네요?”였다. 면접을 맡은 분이 나에게 TDD 방법을 물어봤던 경험, TDD를 능숙하게 사용해서 가산점을 부여했다는 피드백도 기억에 남는다.

이처럼 처음에는 힘들었지만, 제대로 배운 후 돌이켜보니 꽃길도 맞았다는 생각이 든다. 스물 다섯, 개발자로 취업을 하게 된 건 내 인생의 큰 터닝 포인트다. 지금 생각해보면 첫 선택을 잘 했다고 느낀다. 쉽진 않았지만 이 모든 걸 처음부터 혼자 공부했다면 시간이 몇 배로 걸렸을 것 같다. 개발 공부를 어떻게 시작할지 고민된다면, 어려워도 제대로 배울 수 있는 길을 선택하는 게 가장 빠른 길이라고 생각한다.

0개의 댓글