[iOS 사전캠프] 아티클 스터디: 개발자로 거듭나기 … 네 가지 기본 소양을 기억하세요

DoyleHWorks·2024년 10월 15일
0

[요즘 IT] 개발자로 거듭나기 … 네 가지 기본 소양을 기억하세요
2023.03.07. 작성 / 읽기 10분 소요


개발자의 기본 소양

  • 개발자의 기본은 영어, 그 다음이 수학과 물리이다.
  • 그 후 프로그래밍 언어, 자료구조, 알고리즘, 운영체제, 하드웨어를 공부한다.
  • 개발자는 평생 공부한다: 새로운 하드웨어, 새로운 운영 체제, 새로운 프로그래밍 언어를 빠르게 익힐 수 있는 능력이 중요하다.

  • 현업은 기본 위에서 이루어지고, 기본을 알면 아키텍처가 달라진다.
  • 아키텍처는 소프트웨어 품질의 근본이다.
  • 위 표에서 언급된 내용을 공부해야 소프트웨어 기본 지식을 갖췄다고 할 수 있다.
  • 텍스트 기반의 게임을 만들어보면 기본 지식을 점검하고 활용할 수 있어 유용하다.

일잘러가 되기 위한 크리티컬 싱킹

  • 크리티컬 싱킹: 주어진 일의 앞뒤를 생각하는 습관
    • '왜 이 일을 해야 될까?', '이 일을 하다가 말면 어떻게 될까?', '어떤 방식으로 일하는 게 최선일까?'
    • 시키는 대로 하는 사람은 당장 일을 시키기에는 편하지만 1년이 지나도 같은 방식으로밖에 일을 하지 못한다.
    • 크리티컬 싱킹 습관이 든 사람은 감당하는 업무 스케일이 계속 커지게 된다.
  • 소프트웨어를 개발할 때는 왜, 어떻게, 무엇을, 누가, 언제까지 출시해야 하는지를 종합적으로 고려해야 한다.
    • '어떻게'에만 파고들면 좁은 영역에서 해결책을 얻을 수도 있지만, 종합적인 관점에서의 최고 혹은 최선의 해결책을 얻지 못한다.
    • 크리티컬 싱킹은 종합적인 관점에서 해법을 구하는 습관이다.
    • 같은 시간을 투자해도 더 큰 성장을 이끌어낸다.
  • 크리티컬 싱킹 = 주인의식
    • 회사에 대한 주인의식을 가질 필요는 없어도, '나'와 '나의 프로젝트'에 대한 주인의식은 가져야 한다.
    • 개발자를 채용할 때도, 참여한 프로젝트가 아니라 어떤 기여를 했는지 확인한다.
    • 주인의식은 부차적인 것이고, 무엇보다도 나의 성장이 중요하다.

도구를 사랑하지 마라

  • 개발자는, 프로젝트를 성공적으로 개발하는 데 필요한 모든 것을 알아야 한다. 따라서 꾸준히 공부하는 수밖에 없다.

  • 특정 언어나 도구와 사랑에 빠지면 안 된다. 사랑에 빠지면 최적의 언어와 도구를 선택하지 못한다.

  • 현업에 바쁘더라도 6개월 주기로 새로운 기술과 도굴르 확인하고 공부하는 기간을 갖길 권장한다.

  • 개발자의 도구는 역할과 프로젝트마다 달라져야 한다.

  • 어떤 언어가 많이 쓰이는지 스택오버플로 개발자 리서치 결과, TIOBE깃허브에서 발표하는 프로그래밍 언어 순위(흐름) 등을 참고하면 좋다.

    가정을 하나 해봅시다. 신기술을 적용하고 싶은데 상사가 옛 기술을 쓰라고 하면 어떻게 해야 할까요? 크리티컬 싱킹이 습관화된 분이라면 설득의 묘미를 발휘할 겁니다. "포트란으로 짜면 당장은 제가 개발할 수 있지만, 향후 제가 퇴사한 뒤에는 개발자를 구하지 못해 유지 보수가 어려울 겁니다. 한 달만 더 주면 Go 언어로 만들 수 있습니다." 여러분이 관리자라면 어떻게 하겠습니까? 저 같으면 한 달을 더 주겠습니다. 이렇게 상사를 설득하면 본인에게도 이득입니다. 이직 전선에서 포트란 개발 이력은 전혀 도움을 주지 못하는 반면, Go 언어 개발 이력은 도움을 줄 겁니다.

    새로 취업한 회사에서 사장되는 기술로 개발하라고 지시를 내리면 어떻게 해야 할까요? 진지하게 빠른 탈출을 고려하든가, 다른 기술을 관철시켜야 하겠죠? 전자는 본인을 위한, 후자는 본인과 회사 모두를 위한 선택지입니다. 그저 시킨 대로 사장될 기술을 사용한다면 모두에게 불행을 가져다줄 겁니다. 그렇다고 모든 개발에 신규 기술만 고집할 필요는 없습니다. 향후 5년 이상 유지할 서비스라면 최대한 미래를 고려해 선택하고, 1년 미만 혹은 유지 보수 정도의 목적에는 기존 기술을 쓰면 됩니다.

    왜 5년이냐고요? 딱 5년일 필요는 없습니다. 어떤 분야에서 무슨 일을 하고 싶냐에 따라서 기준이 달라집니다. 잠시 IT에서 5년이라는 시간을 생각해 볼까요? 리액트, Vue.js, 파이토치, 쿠버네티스, GCP, 플러터, 코틀린, Go 언어. 5년 전에는 지금처럼 개발자에게 대중적으로 사용되는 기술이 아니었습니다. 아예 그 당시에 없던 기술도 있죠. 하지만 지금은 각 분야에서 내로라하는 대표 주자가 되었습니다. 5년 전과 지금이 다르듯 지금과 5년 후도 다를 겁니다. 제가 지속적인 공부를 반복해 강조하는 이유입니다.

𝜋자형 인재 되기

  • 프론트엔드, 백엔드, 데이터베이스, 머신러닝, 클라우드, 안드로이드/iOS 전반에 대한 지식이 있어야 한다.
- 한 가지를 깊게 파서 잘하는 I자형 인재
- 적어도 하나는 깊게, 나머지는 골고루 잘 아는 T자형 인재
- 하나가 아닌 두 가지에서 전문성이 있는 𝜋자형 인재
  • I자형 인재로 시작해 T자형을 거쳐 𝜋자형 인재로 차근차근 나아가기 (매우 힘듦)

공부는 할 때 해야 한다.

  • 개발 초기 10년의 공부와 중간 10년의 공부는 속도가 다르다.

    "1년 안에 느는 영어가 당신의 모든 영어다."
    미국에서 10년 살고, 20년 살아도 처음 1년 동안 배운 영어가 전부이다. 1년이 지나면 사는 데 지장이 없어지기 때문이다.
    1년이 지나면 언어가 안 통해도 일이 되기에 영어가 늘지 않게 된다.
    그래서 처음 1년, 말이 안 통하는 가장 힘든 첫 1년 동안 집중해 영어를 공부해야 한다.

  • 모르는 게 가장 많은 시기에 최대한 많이 깊게 공부하자.

흔히 말하는 코더, 스크립터, 코드 몽키와 '개발자'를 나누는 게 무엇인지 느끼게 해주는 글이었다. 개발자에게는 끊임 없이 배우는 능력, 기술 전망을 멀리 보는 시야, 종합적인 관점에서 문제를 바라보는 크리티컬 싱킹이 필요하다. ..공부를 정말 많이 해야겠다.

profile
Reciprocity lies in knowing enough

0개의 댓글