돌멩이 하나

좋은 개발자란 무엇인가

미래에서 온 개발자 2022. 10. 20. 13:34
300x250

개발자(프로그래머)에게 요구되는 능력은 여러 가지겠지만 한 줄로 정의한다면 '문제를 정의하고 그 문제를 해결하는 사람'이라고 할 수 있겠다. 모든 개발자가 자사 서비스만 만드는 것은 아니기에 고객의 문제를 해결해야 할 때도 고객의 요구사항을 분석하여 문제를 정의하고 해결해야 할테니 근본적인 정의는 같을 것이다.

문제를 해결하려면 문제를 잘 정의해야 하고, 문제를 잘 정의하기 위해서는 질문을 잘 해야 한다. 그래서 요즘은 '좋은 질문'을 하는 것에 대해 자주 생각하고 있다. 질문을 잘 하려면 내가 무엇을 알고 무엇을 모르는지부터 알아야 한다.


그리하여 오늘은 지난 두 달 간 걸어온 나의 여정을 짧게 정리해보려고 한다. 내가 무엇을 알아야 하는지, 지금 무엇을 모르고 있는지도 몰랐던 8월 초가 오늘 이야기의 시작이다.

여름 동안 진로를 틀어야겠다고 생각했다. 강원도 고성 해파랑길을 이틀 동안 걸으며 마음을 굳혔다. 원래는 데이터 분야에 관심이 있어서 그쪽으로 좀 알아보다가 최종적으로는 웹개발로 정착지를 정했다. 아마도 비전공자로 개발을 공부하는 모든 이들의 첫 스승일 생활코딩의 WEB1 - HTML & Internet을 보며 처음으로 가슴이 두근거리는 경험을 했다. 이런 근사한 경험을 하게 해준 생활코딩 스승님에게 맥락에 맞지 않게 큰절 한 번 올리며, 개발의 ㄱ도 모르는 사람일지라도 스마트폰과 컴퓨터를 일상과 업무에 사용하는 현대인이라면 모두 필독해야 할 컨텐츠가 아닌가 생각한다. (필독이 아니라 필시청이라고 해야 하나🤔)

이 기세를 쭉 이어가면 좋았겠지만 기존에 하고 있던 일(통번역)을 마무리해야 했기에 생활코딩의 WEB1에서 잠시 멈춤을 하고 물려있던 프로젝트들을 허덕허덕 마무리하는데 한 달 반이라는 시간을 소진했다. 이 기간 동안 업무적으로 일이 정말 많았는데, 마음 한 켠에서는 개발 공부 시작을 위한 필독서와 각종 온라인 강의들을 제대로 보지 못하고 있는 데서 오는 부채감이 엄청났다. 내가 다시 통번역 업계로 돌아갈지 말지 모르지만 그 여부와 상관없이 돈을 받고 하는 일들은 제대로 마무리를 해야만 했다.

그러면서 동시에 어떤 부트캠프를 선택해야 할지 서칭을 간간이 했다. 위에도 썼다시피 내가 무엇을 알아야 하는지, 내가 무엇을 모르고 있는지에 대해 아무 것도 알지 못했기에 독학은 선택지가 될 수 없었다. 생활코딩 뿐만 아니라 질좋은 무료 컨텐츠가 널려 있고, 돈을 조금만 지불해도 들을 수 있는 검증된 컨텐츠들이 많았지만 백지 상태의 나는 무엇이 필요한지, 무엇을 따라가야하는지에 대한 지침을 나 혼자 세울 수 없었기에 일단은 시작 단계에서 부트캠프 커리큘럼대로 따라가며 내가 무엇을 알아야 하는지, 무엇을 모르는지를 먼저 알아야 한다고 생각했다.

부트캠프에 대한 정보도 지척에 넘쳐났지만 선택 기준을 세우는 것조차 쉽지 않았다. 그래서 당시 나의 기준은 통번역 일을 마무리할 수 있는 8월 중순 이후에 제일 먼저 시작하는 부트캠프일 것이었다. 그 중 하나가 코드스테이츠였는데 1) 같이 통번역을 하던 동료 한 명이 코드스테이츠를 수료해서 현재 2년차 개발자로 일하고 있는데 코드스테이츠를 추천했고 2) 지인이 수강할 당시에는 유료였던 과정이 현재 100% 국비 지원으로 바뀌어 있었다. 국비 과정으로 바뀌면서부터 응시자가 폭발적으로 늘었는지 경쟁률이 엄청났고 선발 과정도 만만치 않았다. 일단 국비지원 과정에 필요한 국민내일배움카드 발급을 받는 것부터 프리랜서에게 쉽지 않은 일이었다. 행정 일을 처리할 때마다 대한민국을 얼마나 욕하게 되는지 모른다-_- 코드스테이츠의 자체 테스트로는 논리력 사고력 검증이라고 볼 수 있는 간단한 아이큐 테스트 문제 같은 것이 있었고, 여기에는 코딩 문제도 한두 문제 포함이 되어 있었다. 위에 말했듯이 당시 나는 이미 하고 있던 번역 일을 하느라 생활코딩 WEB1 이후로 한 발자국도 나가지 못한 상태였고 시간에 쫓겨 그 상태 그대로 8월 초 코드스테이츠 테스트에 응시할 수 밖에 없었다.

아래는 그당시 나왔던 문제 중 하나다.

// 다음은 특정한 행동을 반복할 수 있게 만들어 놓은 반복문 코드입니다.
// 반복문이 종료되었을 때 result의 값은 무엇일까요?

let result = 100;
for (let i = 2; i < 10; i += 1) {
	result -= i;
}


지금 보면 정말 기본적인 문법만 알면 모를 수가 없는 문제이고, 심지어 문법을 모르더라도 브라우저에서 콘솔 창을 열 줄 알기만 해도 저 코드 그대로 찍어보면 됐을텐데 그때는 아무것도 몰랐기에 정답은 무엇일까요? 라는 질문에 해맑게 모르겠음을 찍어냈다😇

위의 코드 세 줄을 궁금해할 일반 독자(?)를 위해 간단하게 설명하자면:
1. result 라는 변수(데이터, 여기서는 어떤 값을 저장해주는 것)를 만들어주고 result의 값을 100이라고 설정한다.
2. i 라는 또다른 변수를 만들어주고 이 i의 처음 값은 2이며, for loop (반복문)를 도는 동안 i의 값은 1씩 커진다 (i += 1).
3. for loop가 한 번씩 수행될 때마다 result = result - i (result -= i 를 풀어서 쓴 것)를 계산하며, 이를 반복해서 수행한다.
4. 언제까지 반복? i < 10 이라는 조건을 더이상 만족하지 않을 때까지.

정리하자면 i는 2부터 시작해서 for loop를 반복 수행하는 동안 2, 3, 4, 5, ... 등으로 1씩 커지며 i < 10 이라는 조건에서 벗어나는 시점, 즉 i가 10이 될 때부터 더이상 for loop를 수행하지 않는다.

i 값 for loop 에서 수행하는 result - i 얻게 되는 result 값
2 100 - 2 98
3 98 - 3 95
4 95 - 4 91
5 91 -5 86
6 86 - 6 80
7 80 - 7 73
8 73 - 8 65
9 65 - 9 56
10 i < 10 조건을 만족하지 못하기 때문에 더이상 수행되지 않음  


따라서 반복문이 종료되었을 때 result 의 값은 56이다.
간단하게 설명한다고 해놓고 아주 길게 설명했다😇 하지만 자바스크립트고 for문이고 모르는 독자(aka ㅇㅇㄹ씨ㅋㅋㅋㅋ)를 상정했을 때 이 이상 간단하게 설명할 수가 없었다.

이야기를 한바탕 길게 돌아왔는데 여튼 8월 초의 나는 저 문제를 보고 구글에 무엇을 검색해야 하는지(자바스크립트라는 것도 몰랐기에 구글에 let result, for let 등을 써봤지만 이상한 것만 나왔다 ㅋㅋㅋㅋㅋㅋ)도 몰랐다. 그리하여 코드스테이츠 합격 여부 결과 발표는 당연히도 광탈...! 대기 번호조차 나오지 않았다. 코드스테이츠 한 기수를 더 기다리며 자습을 한다고 해도 붙을지 말지 모르는 일이었고, 무엇보다 당장 시작하는게 좋다고 판단했기에 그다음 선택지로 9월 초에 개강하는 제로베이스에 들어갔다.

생각보다 포스팅이 길어진 관계로 오늘은 여기까지 하고, 그 이후의 여정에 대해서는 다음 포스팅에서 이어집니다...!
to be continued...