주녁, DevNote
article thumbnail

출처

- 원글 : AddyOsmani.com - Becoming a good engineer is about collecting experience.

- 번역 : 좋은 엔지니어가 되는 것은 경험을 쌓는 것 | GeekNews (hada.io)

 

이 글은 원글과 GeekNews의 요약을 보고 개인 의견 메모를 위해 작성되었습니다.

요약

개요

  • 작은 프로젝트라도 각 프로젝트는 자신의 도구 상자에 새로운 기술과 도구를 추가할 수 있는 기회
  • 한 프로젝트에서 배운 기술을 다른 프로젝트에서 배운 도구와 결합하여 문제를 해결할 수 있을 때 더 큰 가치를 창출할 수 있음. 모든 것이 합산됨
  • 처음엔 언어/라이브러리를 배우지만, 경력이 발전하면서 관심범위가 넓어져야 함
  • 기술 측면뿐만 아니라 접근 방식, 방법론 및 패러다임 측면에서도 마찬가지
  • 엔지니어로서 발전하는 데 있어 진정한 가치는 단지 고립된 기술을 쌓는 데 있는 것이 아니라, 이를 각 부분의 합보다 더 큰 능력의 복잡한 그물로 엮는 것

도구 상자

  • 엔지니어링 기술도구 상자로 상상해 보면, 새 알고리듬/언어/프레임워크 등 새로운 것을 배울 때마다 기본적으로 이 상자에 도구가 하나씩 추가되는 것
  • 하지만 도구가 있다는 것과 도구를 효과적으로 사용하는 시기와 방법을 아는 것은 완전히 다른 문제
  • 바로 여기에 경험의 가치가 있음
  • 각 프로젝트는 규모에 관계없이 특정 도구를 사용해야 하는 상황을 이해하는 데 도움이 되는 고유한 과제를 제공함
  • "안락한 영역은 편안하지만 교훈을 주는 경우는 드뭅니다. 적극적으로 스트레칭을 할 수 있는 프로젝트를 찾아보세요. 그러면 도구 상자가 고마워할 겁니다."
  • 하지만 도구 상자는 고정된 개체가 아니라 사용자와 함께 진화함
  • 시간이 지남에 따라 더 많은 도구를 추가할 뿐만 아니라 점점 더 복잡한 문제를 해결하기 위해 새로운 방식으로 도구를 결합하기 시작할 것
  • 한 프로젝트에서 RESTful API를 사용한 경험이 다른 프로젝트에서 타사 서비스를 능숙하게 통합하는 데 도움이 될 수 있음
  • 멀티스레딩에 대한 이해는 데이터가 많은 애플리케이션의 성능을 극적으로 최적화할 수 있음
  • 핵심은 각 프로젝트마다 별도의 도구 상자가 필요하지 않다는 것
  • 하나의 도구 상자로 각 프로젝트의 고유한 요구 사항과 제약 조건의 이점을 활용할 수 있음

기술과 도구의 페어링

  • 훌륭한 엔지니어와 그렇지 않은 엔지니어를 구분하는 것은 한 프로젝트에서 배운 기술을 다른 프로젝트에서 습득한 도구와 결합하는 능력
  • 이러한 교차 수분(Pollination, 꽃받침에 꽃가루를 공급하는 것)은 보다 효율적인 문제 해결을 가능하게 하고 종종 더 훌륭한 솔루션으로 이어짐
  • 도구 상자의 품질은 "도구의 수"가 아니라 "도구가 해결할 수 있는 문제의 풍부함"에 따라 결정됨
  • 실제 사례
    • 재고 수를 정확하게 유지하기 위해 데이터베이스 트랜잭션에 대한 깊은 이해를 바탕으로 이커머스 웹사이트에서 작업했다고 가정
    • 별도의 프로젝트에서 실시간 채팅 애플리케이션을 위한 웹소켓 프로그래밍에 대해 깊이 파고들었음
    • 이제 재고 관리를 위한 실시간 대시보드를 개발하는 임무를 맡게 됨
    • 이처럼 서로 다른 프로젝트에서 배운 기술을 통합하여 강력한 솔루션을 만들 수 있음
    • 데이터베이스 트랜잭션에 대한 깊은 이해를 활용하여 재고 데이터의 안정성과 일관성을 보장하는 동시에 WebSockets를 사용하여 대시보드에 실시간 업데이트를 푸시할 수 있음
    • 이러한 기술을 결합하면 문제를 해결할 수 있을 뿐만 아니라 효율적이고 우아한 방식으로 문제를 해결할 수 있다는 뚜렷한 이점이 있음
  • 안전지대를 넘어서 뻗어나가기 : 자신의 안전지대를 넘어서는 스트레칭이 중요한 점
    • 익숙하고 덜 부담스러운 기존 스킬 세트와 일치하는 프로젝트에 끌리기 쉬움
    • 하지만 다양한 경험을 쌓을수록 도구의 폭이 넓어지고, 이러한 결실을 맺을 수 있는 능력이 향상됨
    • 새로운 것을 배우거나 이전에 해보지 않은 방식으로 생각하도록 만드는 프로젝트를 적극적으로 찾아볼 것
    • 겉으로 보기에는 전혀 관련이 없어 보이는 프로젝트에서도 많은 이점이 있다는 것을 알게 될 것

민첩성과 적응력 유지

  • 기술은 항상 발전하고 있으며, 오늘 익힌 도구가 내일은 그다지 유용하지 않을 수도 있음
  • 하지만 그렇다고 해서 도구가 쓸모없어지는 것은 아님. 오히려 변화에 적응하고 혁신하는 능력을 키울 수 있음
  • 예를 들어, 클라우드 네이티브 아키텍처가 등장했다고 해서 기존의 관계형 데이터베이스에 대한 지식이 무의미해지지는 않았음
  • SQL과 데이터베이스 설계의 기본을 이해하면 최신 데이터 스토리지 솔루션으로 작업하는 능력을 크게 향상시킬 수 있음

가치 있는 경험을 쌓기 위한 실용적인 팁

  • 도구를 마스터하는 것은 언제 어떻게 사용해야 하는지 알아가는 여정에 대한 하나의 이정표
  • 경험을 쌓기 위한 다양한 옵션이 있음
    • 다양한 프로젝트를 큐레이션 하기: 다양한 규모, 다양한 기술, 다양한 문제 영역의 다양한 프로젝트에서 작업해 볼 것. 각 프로젝트마다 도구 상자에 고유한 무언가를 추가할 수 있음
    • 반영하고 문서화하기: 프로젝트를 완료한 후에는 배운 내용을 되돌아보는 시간을 가질 것. 더 좋은 방법은 문서화하는 것. '배운 교훈'이 담긴 비공개 저장소나 공개 블로그 게시물을 통해 이해를 공고히 하고 지식을 공유할 수 있음
    • 커뮤니티에 참여하기: 오픈소스 기여 또는 개발자를 위한 맞춤형 소셜 플랫폼을 통해 커뮤니티에 참여하면 다른 방법으로는 접할 수 없는 문제를 접할 수 있음
    • 멘토와 멘토링 받기: 배운 것을 통합하는 가장 효과적인 방법 중 하나는 다른 사람에게 가르치는 것. 마찬가지로, 자신이 잘 모르는 분야를 전문으로 하는 엔지니어에게 조언을 구하거나 배우는 것을 주저하지 말 것
    • 배움을 멈추지 말기: 온라인 강좌, 웨비나, 주말에 새로운 언어를 익히는 등 지속적인 학습은 끊임없이 진화하는 커리어를 위한 윤활유

결론

  • 기술 교차 수분(Pollination)은 단순한 우연이 아니라 엔지니어링의 우아함
  • 최고의 솔루션은 종종 예상치 못한 기술의 조합에서 나옴
  • 따라서 다음에 새로운 문제와 씨름하게 될 때, 경험의 도구 상자를 자세히 살펴볼 것
  • 새로운 도구를 마스터하는 것이 아니라 수년간 쌓아온 도구를 현명하게 사용하는 데서 해결책을 찾을 수 있을 것
  • 문제 해결에 대한 이러한 다층적이고 미묘한 접근 방식이야말로 진정으로 커리어를 발전시키고 엔지니어로서 여러분을 차별화하는 요소임

 


개인 의견

한창 대학교 공모전 동아리를 할 때, 존경하던 동아리 회장 형의 말이 떠오르는 글이다.

"모든 경험이 한 점으로 통합되는 경험을 하게 될거야"

 

그 동안 추상적으로 생각해왔던 개념이 명확해지는 아티클이라고 생각한다.

항상 새로운 기술을 배우는 것을 좋아했지만, 깊이 있게 배우지 못했다고 생각했었다.

그래서 내가 배우려고 했던 노력이 다른 도메인, 다른 분야에서는 쓸모없어지는 것일까? 생각한 적도 있었다.

 

그러나, 어느 순간 나도 모르게 배웠던 것을 통해, 새로운 것을 더 빨리 습득했던 것 같다.

  • 더 빠르게 이해하고, 
  • 재활용하고
  • 응용했다.

이 아티클에서 제시한 것처럼, 내가 지금까지 해왔던 학습들은 기술 교차 수분을 위한 스트레칭이라고 생각하기로 했다.

나는 유연한 사고, 유연한 기술을 가진 인재이기 때문이다.

profile

주녁, DevNote

@junwork

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!