12 Rules to Learn to Code
by Dr. Angela Yu
소프트웨어 엔지니어는 임포스터 증후군 환자가 많은 직업군으로 알려져 있다. 임포스터 신드롬은 자신의 기술과 능력을 지나치게 과소평가하고, 스스로를 사기꾼처럼 느끼는 심리적 현상이다.
프로그래머들은 자기비난적이고, 자신을 제외한 모두가 자기보다 프로그래밍을 잘 한다고 끊임없이 생각하는 경향이 있다. 만약 당신이 이런 느낌을 겪은 적이 있다면, 연구들이 70퍼센트의 사람이 임포스터 증후군을 겪는다고 보여주는 것처럼 이 문제는 당신 혼자 겪는 것이 아니다.
나는 최근 Quora 사이트에 누군가가 올린 Q&A 게시글을 본 적이 있다. : "StackOverflow 를 참조해서 사용하다가 적발되면 Google(또는 다른 큰 테크 회사) 에서 해고될까요?"
그는 구글, 아마존, 다른 주요 테크 회사에서 일하는 엔지니어들로부터 많은 양의 답변을 받았다. 소프트웨어 엔지니어로 일하는 누구나 당신에게 레퍼런스를 보지 않는 것이 훨씬 더 눈살을 찌푸리게 할 것이라고 말할 것이다. 실제로 당신에게 Stack Overflow 를 사용하지 않는 구글 프로그래머가 있는지 찾아보라고 하고 싶다. (Stack Overflow 는 프로그래머들을 위한 공유 Q&A 사이트이다.)
수많은 신입 프로그래머들이 레퍼런스를 확인하고 사람들에게 질문함으로써 스스로를 프로그래밍 할 줄 모르는 사기꾼이라고 밝히게 될까봐 두려워한다. 그 누구도 머릿속에 모든 관련 정보를 기억할 수 있는 사람은 없다. 예를 들어, iOS 메소드의 이름은 이렇다.
: - (id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(NSString *)colorSpaceName bitmapFormat:(NSBitmapFormat)bitmapFormat bytesPerRow:(NSInteger)rowBytes bitsPerPixel:(NSInteger)pixelBits;
거의 400 글자이다!
iOS 프로그래밍에는 800개 이상의 클래스들과 9000 개의 메소드들이 있고, 더욱 더 늘어나고 있다. 웹 개발에는 매주 새로운 프레임워크가 나온다. 아무도 당신이 코드를 기억할 수 있다고 기대하지 않는다. 컴퓨터가 우리를 위해 지루한 일들을 수행하도록 하는 게 우리가 프로그래머인 정확한 이유이다. 예를 들어 소리를 녹음하는 코드를 짧은 검색으로 찾아낼 수 있는데, 왜 굳이 기억할 필요가 있겠는가? 대부분의 고용자들이 채용을 할 때 찾는 기술은 생각하는 능력이다. 정보를 얻기 어려운 세상에서는 지식이 가치있다. 1800년대에는 오로지 부유한 사람만이 좋은 책과 좋은 강사를 접할 수 있었다. 지금은 모두가 마우스 탭 한 번으로 그들이 가지고 있던 모든 정보와 더 많은 정보들을 얻을 수 있다. 정보는 가치를 잃어가고 있으며, 생각하는 능력은 매수해야하는 주식과 다름 없다. 그러니 검색하는 것, StackOverflow 에 질문하는 것, 당신의 이슈를 해결하는 데 도움이 되는 자료들을 찾는 것을 두려워하지 말라. 최고의 프로그래머들 또한 그렇게 한다.
당신이 연마해야 할 기술은 좋은 질문을 하고 답변을 이해하는 것이다. 당신이 코드가 어떻게 동작하는지 단서를 찾지 못한다면 StackOverflow 답변에서 코드를 복사해 붙여넣는 것은 도움이 되지 않는다. StackOverflow 는 평판 시스템을 기반으로 동작하기 때문에, 찬성표를 모으고 올바른 답변으로 표시하기 위해 답변에 가능한 한 명확하게 하는 것이 중요하다.
대부분의 경우 막힐 때마다 StackOverflow 에 검색하는 것은 의미가 없다. 첫 번째 옵션은 항상 스스로 알아내려고 노력해야한다는 것이다. 그래서 당신의 프로그램이 기대하는 대로 동작하지 않지만, 마지막 코드 세 줄을 쓰기 전에 잘 동작하고 있었다면, 마지막 3줄 중 앱을 망가뜨린 코드는 무엇인지 찾아보면 된다.
정말 못 찾겠다면 구글링을 하기 시작하면 된다. 질문을 검색하거나, 버그가 났다면 에러 코드나 에러 메세지를 붙여 넣어라. 초보자일수록 당신의 프로그래밍 문제는 매우 흔할 것이며 누군가 당신이 겪은 버그를 해결하기 위한 명확하고 간결한 튜토리얼을 작성하는 데 시간을 들였을 것이다. 숙련된 프로그래머로 성장할수록 당신이 맞닥뜨릴 문제는 점점 더 모호해질 것이다. 그러나 희망적으로, 당신이 다른 열한가지 법칙을 따랐다면 유능한 프로그래머가 될 것이고 스스로 해결책을 찾아내거나 도움을 요청할 곳을 정확히 알게 될 것이다.
당신이 구글링을 해야 하는 또 다른 이유는 StackOverflow 의 검색 알고리즘이 질문과 정답을 인기순이 아니라 최신순으로 정렬하기 때문이다. 당신이 시작하는 동안 맞닥뜨릴 수많은 문제는 몇 년 전 질문되고 답변되었지만 여전히 인기가 많을 것이다.
그래서 지혜롭게 질문하면 커뮤니티로부터 이익을 거둘 것이다. 언젠가 스스로 코드 마스터가 되었다고 느끼게 되면, 같은 커뮤니티에 받은 도움을 되돌려주고 다음 세대의 프로그래머들을 도울 것이다.