이 글은 Medium에 있는 Todd Gillies의 The 4 Insults That Made Me Stronger (as a Developer)를 허락받고 개인적인 학습 목적으로 번역한 내용입니다.
번역에 문제가 있을 경우 알려주시면 감사하겠습니다.
그저 미리 만들어진 구성 요소를 쌓는 사람일 뿐
2020년까지, 나는 이런 개발자였다:
1. 백엔드 전체를 Python 2.8과 Flask로 작성하고, 사용 사례와 관계없이 Google Cloud Platform에 배포했다.
2. Google Cloud Datastore에 모든 데이터베이스 요구 사항을 의존했다.
3. 나는 ES5(2009년의 JS)에만 익숙했기 때문에 JavaScript의 let이나 const 변수 선언을 한 번도 사용해 본 적이 없었고
4. 프런트 엔드에서 UI를 업데이트하고 싶으면 AJAX나 document.getElementById를 사용했으며, 그것이 유일한 방법이라고 생각했다.
나는 이런 방식으로 행복하게 일을 처리하면서 Upwork에서 '개발자'로 서비스를 제공했고, 프로젝트당 $0.06부터 시작해 (그 프로젝트는 몇 시간밖에 안 걸렸고, Google 번역 API를 사용해 대량으로 번역을 하려는 사람을 위해 맞춤형 Windows 데스크톱 앱을 만드는 일이었다) 시간당 $12.5를 받았다 - 구글 시트를 데이터베이스로 사용하고 Power BI를 프런트엔드로 사용하던 회사를 현대적인 방식으로 (수천 줄의 ES5 바닐라 JS 사용한 '현대적인' 2009년 방식) 전환하는 작업이었다.
그래서 나는 개발자였지만 사실은 그렇지 않았다 - 마치 '고층 아파트 건설' 업종에 종사한다고 말하지만, 실제는 미리 조립된 주택을 하나씩 쌓아 올려 큰 더미를 만드는 사람과 같았다. 나는 시스템을 개발하고 클라우드에 배포했지만, 내 실력은 한정적이었고, 내 해결책들은 모두 틀에 박혀 있고 반복적이었다.
그 후 (1년 동안 여러 차례에 걸쳐) 나는 스타트업의 CEO부터 처음 만난 사람에 이르기까지 다양한 사람들로부터 개발자로서 기초적인 기술과 지식이 부족하다는 지적을 받았다. 처음에는 그들의 말들이 나를 모욕하고 화나게 만들었지만, 장기적으로 보면 그 말들이 나를 개인적으로 성장하고 성공하게 만드는 원동력이 되었다. 나는 사실 내가 받은 모욕들과 비하 발언에 대해 매우 감사하게 생각하고 있어서, 여기서 그것들을 정리해 보고 싶다. 또한, 그들이 왜 지금 생각해 보면 웃기고, 그것들이 끝내 나에게 어떤 긍정적인 영향을 끼쳤는지에 대해서도 함께 이야기해보고 싶다.
#1: "나는 너를... 개발자로서 보고 있지 않아. 우린 여기에 이미 이 일을 경험해 본 적이 있고, 제대로 할 수 있는 사람을 데려와야겠어"
만약 나의 현재 성공을 타워로 볼 수 있다면, 이 말은 그것을 지탱하는 기초이자 설계도를 현실로 만든 건설 회사와 같다. 나는 지금까지 한 번도 내가 생각하는 나라는 '개발자'라는 이미지가 다른 사람들이 생각하는 모습과 맞지 않다는 말을 이렇게 직접적으로 들어본 적이 없다. 다른 어떤 모욕보다도 이 말은 내가 2020년대 초반을 지내며 '진짜' 개발자가 되기 위해 배우고, 그런 사람으로 인식되기 위해 나아가게 만드는 원동력이 되었다.
아이러니한 점: 당시 이 말이 나온 상황에서 받은 태스크는 컴퓨터 비전을 활용해 이미지 인식과 번호 매기기였고, 우리가 받은 입력은 해상도와 조명이 모두 열악한 큰. jpeg 이미지들 뿐이었다. 이미지들은 3가지 RGB만 있고 드론을 이용해 높은 곳에서 찍었다. 내가 컴퓨터 비전에 대해 알고 있는 바를 기준으로 본다면 '이 일을 해본 사람'이나 '잘 아는 사람'을 대려와도 나는 그 작업은 불가능했다고 확실할 수 있다. 이 일을 제대로 하려면 최소한 비가시광선 스펙트럼의 방사선 정보나 고해상도 이미지가 필요했을 것이다.
효과: 이 말은 나를 무엇을 하게 만들었는지 정확히 짚을 수는 없다. 대신 2020년 이후 내가 개발자로서 성장하는 데 있어 모든 성장을 이끌어낸 원동력이었다. 감사합니다, 마리화나 산업과 불미스러운 관계가 있는 스타트업 CEO님!
#2: "기술 지식 부족"
이게 내가 JavaScript 직무에서 탈락했다고 받은 이메일에 있는 "이유" 항목였다. 왜 그들은 내가 기술 지식이 부족했다고 생각했을까? 인터뷰에서 그들은 나한테 최신 JavaScript 키워드와 개념에 대해 물었고 나는 그것들을 제대로 설명하지 못했다 (그때까지는 나는 대부분 ES5 JavaScript로 프로그래밍을 했기 때문이다. ES5는 2009년에 출시되었다) 그리고 실시간 프로그래밍 태스크 때 나는 for루프를 사용해 배열을 반복했는데 'for' 루프에 대한 대안을 제시하라는 질문을 받았지만 나는 그것을 할 수 없었다.
아이러니한 점: 이 인터뷰가 실패하고 얼마뒤, 나는 TekSystem(글로벌 IT 채용 회사)에 등록했고, 1시간 동안 JavaScript 평가 테스트를 보라는 요청을 받았다. 결과적으로 나는 '기술 지식 부족'에도 불구하고 상위 7%에 속했다. 인터뷰에서 나는 코딩 개념을 말로 설명하는 데는 서툴지만, 실제 코딩은 꽤 잘하는 것 같다.
효과: 이 경험은 내가 Free Code Camp의 JavaScript 코스를 완료하게 만들었고, 그 과정은 마치 시간 여행을 통해 2009년에서 현재의 멋진 JavaScript 세상으로 나온 것만 같았다. 그리고 내가 짠 'for' 루프가 얼마나 좋지 않게 받아 알게 되면서 함수형 프로그래밍에 빠지게 되었다, 그 결과 나는 개발자로서 많이 성장했다. 특히 다른 사람들이 작성한 코드를 읽고 이해하는 능력에서 많이 발전했다.
#3: 비웃는 웃음 (하하하)
이 경험은 내가 느꼈던 것 모든 경험 중 가장 기분이 나쁘고 화가 났다. 배경 이야기는 이 인터뷰가 즉흥적인 Skype 인터뷰이었데, 나는 일본 시골의 어두운 호텔 로비에서 WiFi 라우터에 최대한 가까이 맨발로 서서 밤 11시에 참여했다. 그 사람은 (나의 다른 시간대에 있는) 구직 설명서에 의하면 '프런트 엔드 개발 (html와 JS) 그리고 Python과 Flask에 대한 지식이 있는 사람을 찾고 있다고 했다. 그 당시 나는 Python과 Flask를 많이 사용했고 수만 줄의 JS 스크립트와 html를 짠 경험이 있었다. 나는 이 일자리에 완벽하게 적합한 사람이라고 생각해 인터뷰 기회를 얻기 위해 밤 11시까지 깨어 있었다.
그 사람이 처음으로 물었던 질문은 "그럼, SQL에서 inner join과 outer join의 차이는 무엇인가요?"였다. 프런트 엔드/JavaScript/Python을 준비하고 있었던 나는 즉시 대답할 수 없어서 SQL 테이블에 대한 엉뚱한 말들을 하기 시작했다 (손으로 SQL 테이블을 만들어 마치 두 개의 스마트폰을 들고 있는 것처럼 그것들을 합치고 떼어내는 동작을 하며). 그때 갑자기 그 사람이 내 말을 끊고는 "하하하 죄송하지만, 데이터에 대해 더 잘 아는 사람이 필요할 것 같아요."라고 말했다. 10초 후, 통화는 종료됐다 (어색한 '시간을 내어주셔서 감사합니다' 같은 맨트로 마무리된 후).
아이러니한 점: "하하하 죄송하지만, 내가 생각할 때 사람들의 밤의 시간을 낭비하지 않도록 구직 설명서를 더 제대로 알고 있는 사람이 필요할 것 같아." 이게 내가 그 사람한테 말하고 싶은 얘기였다. 물론 프런트 엔드 직무로 면접을 보는데 SQL 질문에 답하지 못한다고 그 사람을 떨어뜨리는 것은 정말로 말도 안 되는 일이다.
효과: 이 경험은 내가 SQL에 흥미를 생기게 만들었다, 특히 inner join과 outer join의 차이에 관심을 가지고 만들었다. 나는 PostgreSQL을 적극적으로 배우게 되었고, Google Cloud Platform에 몇 대의 데이터 베이스를 배포했다. 아 그리고 이제 나의 실제 직함은 '데이터 사이언티스트'라서, 데이터에 대해 그렇게 무지했던 것은 아니었던 것 같다.
#4: "우리는 당신이 즉시 일을 시작하기 어려울 것이라고 생각합니다."
이 말은 어떻게 보면 모욕은 아니기 때문에 포함시키는 것에 망설였다. 또한, 일정 부분 진실도 있는 말이라는 것에 인정을 한다. 이 말은 대형 물류 창고 및 로봇 공학 스타트업에서 나왔다 (두 번째 기술 면접 이후에). 그들은 내가 제출한 코딩 과제에서 내 코드의 품질과 방법론을 칭찬했지만, 2주 후에 이 " 즉시 일을 시작하기 어려울 것이라고 생각합니다."가 있는 이메일이 왔다.
아이러니한 점: 이 스타트업에 채용되었다면 '가벼운 산책'처럼 가볍게 시작하는 것도 괜찮을 것 같다. 왜냐면 그들의 웹사이트를 보면 아직도 '시작하고 채용' 단계에 있는 것 같았다 (이 글을 쓰는 시점에서 약 6개월 후)
효과: 이 말을 다시 생각해니 사실이라는 것을 깨달았다. 특히 수십 명, 수백 명의 개발자들이 참여하는 빠르게 진행되는 프로젝트라면 나는 즉시 일을 시작하는 것이 어려웠을 것이다. 결국 이 말은 내가 개발자로 신뢰를 얻으려면 대규모 팀에서, 대규모 프로젝트에서 일한 경험이 필요하다는 것을 깨달았다.
연금술은 진짜다: 분노를 동기로 바꾸기
되돌아보면 나는 2020년보다 훨씬 나은 개발자가 되었다. 나는 드디어 Google Cloud Platform을 사용하는 것을 벗어났고 (지금은 AWS Amplify와 전과 같은 종류의 건강하지 못한 관계에 빠졌지만), 현대적인 JavaScript를 작성하는 방식을 배웠고 AJAX와 document.getElementById로 UI를 업데이트하는 것은 마치 전서구와 로봇 청소기를 사용해 레고 집을 짓는 것과 같다는 것을 깨달았다 (그냥 React 쓰면 되잖아). 내가 성취한 모든 성장은 위에 언급한 말들 덕분이고, 그들이 불러일으킨 분노와 동기 덕분이다.
분명한 건 개발자로서의 능력에 대한 부정적인 말들은 당신을 직업적인 실패자로 느끼게 할 수 있습니다. 만약 그런 말들의 대상이 되었다면, 마음속에서 분노를 찾아보세요, 분노는 꽤 쉽게 동기로 바꿀 수 있습니다. 그 동기를 활용해 전문적인 성장에 사용하세요. 그럼 경국, 당신의 가장 큰 비판자들이 의도치 않게 당신을 위로 끌어올려주는 인력거 기사가 될 수 있음을 알게 될 것입니다.
'게시글 번역' 카테고리의 다른 글
(번역) 비인기 의견: 좋은 엔지니어가 되는건 그 어느때보다 어렵다 (1) | 2024.05.09 |
---|---|
(번역) 클린 아키텍처 - 비기너 가이드 (0) | 2024.04.26 |
(번역) 좋은 코드/나쁜 코드란? 프로그래머가 아닌 사람들을 위한 예시 (0) | 2024.04.12 |
이 글은 Medium에 있는 Todd Gillies의 The 4 Insults That Made Me Stronger (as a Developer)를 허락받고 개인적인 학습 목적으로 번역한 내용입니다.
번역에 문제가 있을 경우 알려주시면 감사하겠습니다.
그저 미리 만들어진 구성 요소를 쌓는 사람일 뿐
2020년까지, 나는 이런 개발자였다:
1. 백엔드 전체를 Python 2.8과 Flask로 작성하고, 사용 사례와 관계없이 Google Cloud Platform에 배포했다.
2. Google Cloud Datastore에 모든 데이터베이스 요구 사항을 의존했다.
3. 나는 ES5(2009년의 JS)에만 익숙했기 때문에 JavaScript의 let이나 const 변수 선언을 한 번도 사용해 본 적이 없었고
4. 프런트 엔드에서 UI를 업데이트하고 싶으면 AJAX나 document.getElementById를 사용했으며, 그것이 유일한 방법이라고 생각했다.
나는 이런 방식으로 행복하게 일을 처리하면서 Upwork에서 '개발자'로 서비스를 제공했고, 프로젝트당 $0.06부터 시작해 (그 프로젝트는 몇 시간밖에 안 걸렸고, Google 번역 API를 사용해 대량으로 번역을 하려는 사람을 위해 맞춤형 Windows 데스크톱 앱을 만드는 일이었다) 시간당 $12.5를 받았다 - 구글 시트를 데이터베이스로 사용하고 Power BI를 프런트엔드로 사용하던 회사를 현대적인 방식으로 (수천 줄의 ES5 바닐라 JS 사용한 '현대적인' 2009년 방식) 전환하는 작업이었다.
그래서 나는 개발자였지만 사실은 그렇지 않았다 - 마치 '고층 아파트 건설' 업종에 종사한다고 말하지만, 실제는 미리 조립된 주택을 하나씩 쌓아 올려 큰 더미를 만드는 사람과 같았다. 나는 시스템을 개발하고 클라우드에 배포했지만, 내 실력은 한정적이었고, 내 해결책들은 모두 틀에 박혀 있고 반복적이었다.
그 후 (1년 동안 여러 차례에 걸쳐) 나는 스타트업의 CEO부터 처음 만난 사람에 이르기까지 다양한 사람들로부터 개발자로서 기초적인 기술과 지식이 부족하다는 지적을 받았다. 처음에는 그들의 말들이 나를 모욕하고 화나게 만들었지만, 장기적으로 보면 그 말들이 나를 개인적으로 성장하고 성공하게 만드는 원동력이 되었다. 나는 사실 내가 받은 모욕들과 비하 발언에 대해 매우 감사하게 생각하고 있어서, 여기서 그것들을 정리해 보고 싶다. 또한, 그들이 왜 지금 생각해 보면 웃기고, 그것들이 끝내 나에게 어떤 긍정적인 영향을 끼쳤는지에 대해서도 함께 이야기해보고 싶다.
#1: "나는 너를... 개발자로서 보고 있지 않아. 우린 여기에 이미 이 일을 경험해 본 적이 있고, 제대로 할 수 있는 사람을 데려와야겠어"
만약 나의 현재 성공을 타워로 볼 수 있다면, 이 말은 그것을 지탱하는 기초이자 설계도를 현실로 만든 건설 회사와 같다. 나는 지금까지 한 번도 내가 생각하는 나라는 '개발자'라는 이미지가 다른 사람들이 생각하는 모습과 맞지 않다는 말을 이렇게 직접적으로 들어본 적이 없다. 다른 어떤 모욕보다도 이 말은 내가 2020년대 초반을 지내며 '진짜' 개발자가 되기 위해 배우고, 그런 사람으로 인식되기 위해 나아가게 만드는 원동력이 되었다.
아이러니한 점: 당시 이 말이 나온 상황에서 받은 태스크는 컴퓨터 비전을 활용해 이미지 인식과 번호 매기기였고, 우리가 받은 입력은 해상도와 조명이 모두 열악한 큰. jpeg 이미지들 뿐이었다. 이미지들은 3가지 RGB만 있고 드론을 이용해 높은 곳에서 찍었다. 내가 컴퓨터 비전에 대해 알고 있는 바를 기준으로 본다면 '이 일을 해본 사람'이나 '잘 아는 사람'을 대려와도 나는 그 작업은 불가능했다고 확실할 수 있다. 이 일을 제대로 하려면 최소한 비가시광선 스펙트럼의 방사선 정보나 고해상도 이미지가 필요했을 것이다.
효과: 이 말은 나를 무엇을 하게 만들었는지 정확히 짚을 수는 없다. 대신 2020년 이후 내가 개발자로서 성장하는 데 있어 모든 성장을 이끌어낸 원동력이었다. 감사합니다, 마리화나 산업과 불미스러운 관계가 있는 스타트업 CEO님!
#2: "기술 지식 부족"
이게 내가 JavaScript 직무에서 탈락했다고 받은 이메일에 있는 "이유" 항목였다. 왜 그들은 내가 기술 지식이 부족했다고 생각했을까? 인터뷰에서 그들은 나한테 최신 JavaScript 키워드와 개념에 대해 물었고 나는 그것들을 제대로 설명하지 못했다 (그때까지는 나는 대부분 ES5 JavaScript로 프로그래밍을 했기 때문이다. ES5는 2009년에 출시되었다) 그리고 실시간 프로그래밍 태스크 때 나는 for루프를 사용해 배열을 반복했는데 'for' 루프에 대한 대안을 제시하라는 질문을 받았지만 나는 그것을 할 수 없었다.
아이러니한 점: 이 인터뷰가 실패하고 얼마뒤, 나는 TekSystem(글로벌 IT 채용 회사)에 등록했고, 1시간 동안 JavaScript 평가 테스트를 보라는 요청을 받았다. 결과적으로 나는 '기술 지식 부족'에도 불구하고 상위 7%에 속했다. 인터뷰에서 나는 코딩 개념을 말로 설명하는 데는 서툴지만, 실제 코딩은 꽤 잘하는 것 같다.
효과: 이 경험은 내가 Free Code Camp의 JavaScript 코스를 완료하게 만들었고, 그 과정은 마치 시간 여행을 통해 2009년에서 현재의 멋진 JavaScript 세상으로 나온 것만 같았다. 그리고 내가 짠 'for' 루프가 얼마나 좋지 않게 받아 알게 되면서 함수형 프로그래밍에 빠지게 되었다, 그 결과 나는 개발자로서 많이 성장했다. 특히 다른 사람들이 작성한 코드를 읽고 이해하는 능력에서 많이 발전했다.
#3: 비웃는 웃음 (하하하)
이 경험은 내가 느꼈던 것 모든 경험 중 가장 기분이 나쁘고 화가 났다. 배경 이야기는 이 인터뷰가 즉흥적인 Skype 인터뷰이었데, 나는 일본 시골의 어두운 호텔 로비에서 WiFi 라우터에 최대한 가까이 맨발로 서서 밤 11시에 참여했다. 그 사람은 (나의 다른 시간대에 있는) 구직 설명서에 의하면 '프런트 엔드 개발 (html와 JS) 그리고 Python과 Flask에 대한 지식이 있는 사람을 찾고 있다고 했다. 그 당시 나는 Python과 Flask를 많이 사용했고 수만 줄의 JS 스크립트와 html를 짠 경험이 있었다. 나는 이 일자리에 완벽하게 적합한 사람이라고 생각해 인터뷰 기회를 얻기 위해 밤 11시까지 깨어 있었다.
그 사람이 처음으로 물었던 질문은 "그럼, SQL에서 inner join과 outer join의 차이는 무엇인가요?"였다. 프런트 엔드/JavaScript/Python을 준비하고 있었던 나는 즉시 대답할 수 없어서 SQL 테이블에 대한 엉뚱한 말들을 하기 시작했다 (손으로 SQL 테이블을 만들어 마치 두 개의 스마트폰을 들고 있는 것처럼 그것들을 합치고 떼어내는 동작을 하며). 그때 갑자기 그 사람이 내 말을 끊고는 "하하하 죄송하지만, 데이터에 대해 더 잘 아는 사람이 필요할 것 같아요."라고 말했다. 10초 후, 통화는 종료됐다 (어색한 '시간을 내어주셔서 감사합니다' 같은 맨트로 마무리된 후).
아이러니한 점: "하하하 죄송하지만, 내가 생각할 때 사람들의 밤의 시간을 낭비하지 않도록 구직 설명서를 더 제대로 알고 있는 사람이 필요할 것 같아." 이게 내가 그 사람한테 말하고 싶은 얘기였다. 물론 프런트 엔드 직무로 면접을 보는데 SQL 질문에 답하지 못한다고 그 사람을 떨어뜨리는 것은 정말로 말도 안 되는 일이다.
효과: 이 경험은 내가 SQL에 흥미를 생기게 만들었다, 특히 inner join과 outer join의 차이에 관심을 가지고 만들었다. 나는 PostgreSQL을 적극적으로 배우게 되었고, Google Cloud Platform에 몇 대의 데이터 베이스를 배포했다. 아 그리고 이제 나의 실제 직함은 '데이터 사이언티스트'라서, 데이터에 대해 그렇게 무지했던 것은 아니었던 것 같다.
#4: "우리는 당신이 즉시 일을 시작하기 어려울 것이라고 생각합니다."
이 말은 어떻게 보면 모욕은 아니기 때문에 포함시키는 것에 망설였다. 또한, 일정 부분 진실도 있는 말이라는 것에 인정을 한다. 이 말은 대형 물류 창고 및 로봇 공학 스타트업에서 나왔다 (두 번째 기술 면접 이후에). 그들은 내가 제출한 코딩 과제에서 내 코드의 품질과 방법론을 칭찬했지만, 2주 후에 이 " 즉시 일을 시작하기 어려울 것이라고 생각합니다."가 있는 이메일이 왔다.
아이러니한 점: 이 스타트업에 채용되었다면 '가벼운 산책'처럼 가볍게 시작하는 것도 괜찮을 것 같다. 왜냐면 그들의 웹사이트를 보면 아직도 '시작하고 채용' 단계에 있는 것 같았다 (이 글을 쓰는 시점에서 약 6개월 후)
효과: 이 말을 다시 생각해니 사실이라는 것을 깨달았다. 특히 수십 명, 수백 명의 개발자들이 참여하는 빠르게 진행되는 프로젝트라면 나는 즉시 일을 시작하는 것이 어려웠을 것이다. 결국 이 말은 내가 개발자로 신뢰를 얻으려면 대규모 팀에서, 대규모 프로젝트에서 일한 경험이 필요하다는 것을 깨달았다.
연금술은 진짜다: 분노를 동기로 바꾸기
되돌아보면 나는 2020년보다 훨씬 나은 개발자가 되었다. 나는 드디어 Google Cloud Platform을 사용하는 것을 벗어났고 (지금은 AWS Amplify와 전과 같은 종류의 건강하지 못한 관계에 빠졌지만), 현대적인 JavaScript를 작성하는 방식을 배웠고 AJAX와 document.getElementById로 UI를 업데이트하는 것은 마치 전서구와 로봇 청소기를 사용해 레고 집을 짓는 것과 같다는 것을 깨달았다 (그냥 React 쓰면 되잖아). 내가 성취한 모든 성장은 위에 언급한 말들 덕분이고, 그들이 불러일으킨 분노와 동기 덕분이다.
분명한 건 개발자로서의 능력에 대한 부정적인 말들은 당신을 직업적인 실패자로 느끼게 할 수 있습니다. 만약 그런 말들의 대상이 되었다면, 마음속에서 분노를 찾아보세요, 분노는 꽤 쉽게 동기로 바꿀 수 있습니다. 그 동기를 활용해 전문적인 성장에 사용하세요. 그럼 경국, 당신의 가장 큰 비판자들이 의도치 않게 당신을 위로 끌어올려주는 인력거 기사가 될 수 있음을 알게 될 것입니다.
'게시글 번역' 카테고리의 다른 글
(번역) 비인기 의견: 좋은 엔지니어가 되는건 그 어느때보다 어렵다 (1) | 2024.05.09 |
---|---|
(번역) 클린 아키텍처 - 비기너 가이드 (0) | 2024.04.26 |
(번역) 좋은 코드/나쁜 코드란? 프로그래머가 아닌 사람들을 위한 예시 (0) | 2024.04.12 |