이 글은 Medium에 있는 Juraj Malencia의 Unpopular Opinion: It’s harder than ever to be a good software engineer 허락받고 개인적인 학습 목적으로 번역한 내용입니다.
번역에 문제가 있을 경우 알려주시면 감사하겠습니다.
10년 동안 스타트업 환경에서 일하다 보니깐 빠르게 변화하는 혁신, 탐색 그리고 Fail-Fast 문화에 먼저 접할 수 있었습니다. 저는 인턴, 주니어, 시니어 그리고 마지막으로 공학관리하는 기본적인 단계들을 지나왔습니다. 시간이 지나면서 같이 일했던 사람들이 다른 회사로 이직하고, 그 회사에서 존경받는 기여자가 되어 있었습니다. 그분들은 좋은 엔지니어라고 해도 무방하겠죠.
지금까지 만난 동료, 멘티 그리고 나 자신을 돌아보니깐 좋은 엔지니어가 되는 건 더욱 어려운 거 같습니다.
좋은 엔지니어의 정의
그래서 엔지니어가 된다는 게 무엇을 의미하는 걸까? 엔지니어가 된다는 것은:
- 복잡한 문제를 효율적이고 확장이 가능한 설루션으로 바꾸는 책임을 갖고
- 사용자 요구사항 분석, 소프트웨어 아키텍처 디자인, 코드 작성, 테스트 및 디버깅하고
- 최신 트렌드를 따라가며, 새로운 비즈니스 기회를 엿보며 기존 제품의 품질을 향상해야 한다
일단 엔지니어와 프로그래밍은 다른 개념입니다. 때때로, 프로그래밍은 엔지니어의 일의 매우 작은 부분을 차지합니다. 경험이 더 많은 사람일수록 이 부분이 더 두드러지게 됩니다.
그럼 좋은 엔지니어가 된다는 게 무엇을 의미하는 걸까? 여러 인터뷰를 참고하고 멘티들을 도와주면서 알게 된 게, 같은 질문이라도 전문 지식수준에 따라 매우 다른 답변을 줍니다.
어떤 사람은 개발 언어와 프레임워크를 많이 알수록 전문적이다고 생각할 수 있지만. 경험이 많은 엔지니어 같은 경우에는 어떤 언어를 사용하지는 신경을 안 쓰고 대신 코드 품질을 강조합니다. 모든 코딩 원칙을 준수하고 QA를 같이 수행하면서 신속하게 개발을 진행합니다.
경험이 풍부한 엔지니어는 가치 창출에 많은 신경을 쓰게 됩니다. 때때로 우리는 가설을 증명하기 위해 모든 규칙을 무시한 일회용 코드를 빠르게 작성합니다. 때때로 우리는 중요한 코드 몇 줄을 쓰기 위해 며칠이나 사용할 때도 있습니다. 하지만 대부분의 경우에는 아키텍처 결정을 내리고, 중요한 문제를 논의하고 프로세스를 개선하는 등의 작업을 합니다. 왜일까요? 이게 더 많은 가치를 가져올 때가 더 많기 때문입니다.
물론 예외는 있지만, 좋은 엔지니어는 목표 달성에 있어 최대 가치를 창출하기 위해 노력을 효율적으로 집중하는 엔지니어라고 말할 수 있습니다.
커지는 시장과 경쟁
기술시장은 끊임없이 발전하고 있습니다. 우리는 모두 몇 년간 큰 성공을 거두는 사례를 본 적이 있습니다: 왓츠앱부터 시작해서, 우버, 에어비엔비, 틱톡 등등. 예외는 있을 수 있지만, 이런 성공들이 사람들에게 목표를 심어주는 경우가 많습니다. 이런 생각은 엔지니어한테 추가적인 부담을 주게 됩니다. 그들은 내부에서는 자신이 무엇을 잘못하고 있는지 생각하느라 스트레스를 받게 되고, 그리고 외부에서는 사람들이 자신의 회사를 다른 수많은 경쟁자 들와 비교하는 것에 스트레스를 받게 됩니다.
이런 환경에서 성공하려면, 페이스북의 유명한 모토처럼 "빠르게 움직이고 일을 깨뜨려야"합니다. 오늘날은 그 어느 때보다 이 모드가 더 분명해졌습니다. 거의 모든 회사들이 "AI 회사"가 되고 있습니다. 모두가 별다른 이유, 어떤 가치를 가져올지에 대한 계획 없이 쳇 GPT를 도입합니다.
고객들에게 어떻게 더 많은 가치를 제공할 수 있는가라는 코어 원칙으로부터 멀어지고 경쟁자를 이기기 위해 나아가면 우리는 엔지니어들이 실패한 기능을 만들 확률이 높아지게 만듭니다.
세상은 혼잡한 곳이다
나 같은 열정적인 사람이 더 나은 엔지니어가 되려면 무엇을 해야 될까? 코딩 실력을 완벽하게 만들고 더욱 클린 한 코드와 아키텍처 철학을 개선시킨다는 너무나도 당연한 선택 외에도 많은 유혹들이 숨어 있습니다. 타입 스크립트처럼 새로 나온 언어나 모든 걸 변화시키는 최신 프래임워크를 공부하고 블락체인 와 암호화폐의 세상에 뛰어들고 AI 제품들을 실험해 보기 등등 끝없는 방법들이 있습니다.
솔직히 말해서, 이 산업에 너무 오래 있었지만 쳇 GPT, 깃허브 Copilot 그리고 수많은 신 기술이 가져오는 변화에 위협을 느꼈습니다. 점점 내가 많은 일에 대해 모르게 되는 거 같습니다. 나는 지금 가치를 창출하기 위해 올바른 일을 하고 있는가? 나의 최선을 하고 있는가?
시간이 지나고 보니, 우리가 지금 새로운 기술에 과도하고 흥분을 하고 있는 걸 알게 되었습니다. 이 흥분이 지나고 나면 AI 회사들만 남아 장기적인 이익 창출을 할 겁니다. 지난 5년 동안 미국에 있는 AI 회사의 수는 두배로 늘어났으며, 많은 스타트업들이 GPT-3 위에 기능을 추가한 제품을 출시하고 있습니다. 이런 스타트업들이 하고 있는 일보다 더 잘할 수 있는 쳇 GPT나 GPT-4가 나오고 되게 결국 이런 회사들은 다 죽게 될 겁니다. 하지만 이는 트위터나 다른 플랫폼의 새로운 기술에 과도하게 흥분한 대중이 새로운 세계 질서를 선포하는 것을 막지는 못합니다.
기술분야에서 수년동안 일했지만 저도 이 흥분에 빠져버렸습니다, 정말 초보 같은 실수를 했습니다.
프로그래밍 언어와 꾸준히 출시되고 있는 새로운 프래임워크도 이 혼란을 가중시킵니다. Tailwind, Typescript, Haskell 그리고 Rust는 다 훌륭하고 각자만의 뚜렷한 장점이 있지만. 가끔 사람들이 이 새로운 것들을 배워야지만 자신이 남들보다 두드러지게 된다고 생각한다. 그렇지 않을 것이며, 적어도 그렇게 되어서는 안 된다. 이것들은 단순히 알면 좋은 도구일 뿐 경험을 대신할 수는 없다. 그렇기 때문에 우리는 직무 설명에 언어나 프레임워크 요구사항을 넣지 않습니다. 단지 Typescript, 프롬프트 엔지니어링, 마이크로 서비스를 모르기 때문에 재능이 있는 엔지니어를 놓치는 멍청한 짓을 하게 됩니다.
제가 드리고 싶은 말은 새로운 트렌드와 새로운 기술에 과도하게 흥분해서 가치 창출에 초점을 잃을 정도로 사로잡히지 마십시오.
빠른 속도와 높은 기대감
새로운 도전을 추구할 때 부정적인 스트레스를 피하면서 긍정적인 스트레스를 얻을라고 하는 것은 어려울 수 있습니다. 긍정적인 스트레스는 스트레스가 많은 상황을 좋은 결과로 이어지는 기회로 인식하는 반면, 부정적인 스트레스는 신체적, 정신적 건강에 해로운 영향을 미칠 수 있는 스트레스입니다. 빡빡한 스케줄 중에서 꾸준히 결과를 내는 건 긍정적인 스트레스를 줄 수 있지만 잘못된 이유로 기능을 개발하면 후자로 기울게 됩니다.
멘토이자 열심히 일하는 사람으로서 스트레스가 번아웃으로 이어지는 경우를 많이 경험했습니다. 예외 없이, 누구든지 번아웃 상태일 때 일하면 작업량이 줄고, 휴식을 더 자주 취하고, 일을 더 장기간 하려고 합니다. 그리고 우리는 주기적인 팀 업데이트, 1 on 1 및 육성 문화를 통해 항상 위험 신호를 파악하려고 합니다.
이렇게 해도 일이 잘못될 수도 있습니다. 만약 이런 문제가 발생하면 일의 범위를 줄이거나, 도움을 줄 수 있는 사람을 찾거나, 고객과 소통을 하여 출시를 늦추려고 합니다.
내부와 외부 모두 압박이 그 어느 때보다 높아졌습니다. 계속 집중을 유지하고 주변에 장기간 도움을 줄 수 있는 지원팀과 함께 하세요.
어떻게 나아질 수 있을까?
우리는 모두 부족한 엔지니어, 멘토 또는 동료로 느껴지는 우울한 순간을 가지고 있습니다. 일은 결코 완벽하거나 쉬울 수 없으며, 그래서도 안됩니다. 실수와 어려움을 겪지 않고서는 배울 수 없습니다. 하지만 몇 가지 효율을 높일 수 있는 방법을 찾았습니다.
개인일 때, 먼저 진짜 중요한 것에 충실하십시오. 기술을 생겼다 사라지지만, 당신이 세상에 제공한 가치가 중요한 겁니다. 노력과 경험을 속이긴 어렵습니다.
회사일 때, 결정을 내릴 때 왜부터 시작합니다. 이게 가치를 가져다줄 기능을 찾기 가장 좋은 방법입니다. 그리고, 명심해야 될게 직원들도 이 왜 를 알고 있어야 합니다. 내 경험에 의하면, 그들이 더 나은 결정을 할 수 있고 가치 있는 피드백을 줄 수 있고 더 행복하게 만들 수 있습니다.
문화적으로, 직원들을 지원하고 장기적으로 최적화를 위한 프로세스를 만드십시오. 동료 들와 함께 서로를 지지, 배려하고 믿는 문화를 구 축 십 시 오. 그렇게 하면 모두가 서로의 장점을 최대한 활용할 수 있을 겁니다.
'게시글 번역' 카테고리의 다른 글
(번역) 클린 아키텍처 - 비기너 가이드 (0) | 2024.04.26 |
---|---|
(번역) 좋은 코드/나쁜 코드란? 프로그래머가 아닌 사람들을 위한 예시 (0) | 2024.04.12 |