어떤 개발자가 되고 싶니?

책 어떤 개발자가 되고 싶니? 저자 박동기

  • 책과 커피

마음에 와 닿은 문장

당신은 소중합니다. 아직은 당신이라는 원석이 흙 속에 묻혀 있지만, 이 시간이 지나면 보석이 되어 빛날 것입니다. 우리는 동굴로 들어가는 게 아니라 터널을 지나고 있습니다. 터널에는 반드시 끝이 있습니다. 당신은 이 세상 누구보다도 소중합니다.

책을 선택하게 된 계기

도서관의 취업 진로 관련 된 분야에서 이 책을 발견하게 되었다. 25년 차의 개발자이신데, 글도 워낙 잘 쓰시고 자주 걸으시는 숲과 나무에 빗대어 개발자에 대한 진로와 정보를 제공해 주셔서 즐겁게 몰입이 가능했고, 대략 2시간 만에 한 권을 다 읽게 되었다.

새로 알게 된 정보

  • C# : 생산성이 좋고, 사용자 인터페이스 작업 시 표현력이 훌륭하고 자바와 비슷하여 금방 익힐 수 있다. 막강한 언어라 앞으로도 계속 성장할 것이다.
  • 스위프트 : 아이폰 앱은 스위프트로 개발, 안전을 우선으로 하는 프로그래밍 패턴을 지향하며, 파이선 언어를 사용. 쉽고 재미있게 프로그래밍 할 수 있도록 옵셔널, 제네릭, 프로토콜, 튜플, 익스텐션 등 새로운 기능을 많이 도입했다.
  • 파이선 : 쉽고 간결한 문법이 강점이며 제품을 빠르게 개발한다. 컴파일 하지 않는 인터프리터 언어로 빅데이터를 분석하기 위한 다양하고 강력한 라이브러리를 제공한다. 텐서플로 등 인공지능을 위한 라이브러리도 파이선에서 제공되므로 유용하다.
  • 모바일 개발자
    • 네이티브 언어로 안드로이드와 iOS 모두 호환 가능한 개발자는 하이브리드 개발자이다.
    • 모바일 앱 개발 분야는 진입 장벽이 낮으면서 성장 가능성이 큰 분야이다.
    • 단기간에 배울 수도 있고 혼자 마켓에 출시해 배포할 수 있으므로 배워 두면 좋은 기술이 된다.

 

  • 개발 학습법
    • 큰 그림을 그려 소프트웨어의 범위를 정한다
      • 개발 언어와 어느 기능까지 구현할지 정하기
    • 소프트웨어의 성공을 상상한다.
      • 예시) AWS에 올라오는 실시간 데이터들을 C#을 이용한 프로그램을 통한 프로그램을 정의하여 AWS의 서버 구성 방법을 완벽히 익히고 C#의 사용자 인터페이스 구성과 데이터베이스 기능을 익힌다. 스토어에 앱을 올리거나 전 세계에 배포해서 그 앱이 수익으로 연결된다.
    • 프로그래밍 언어라는 씨앗 뿌리기
      • 문법, 함수, API 등 기능 익히기
      • 책 : 필요한 부분만 발췌, 첫 페이지부터 마지막 페이지까지 완독했다고 해서 프로그래밍을 잘하게 되는 건 아니다. -> 동영상을 보면서 공부할 것을 추천한다. 영어 실력이 있다면 코세라와 같은 유료 강의를 듣는 게 좋다. 학습을 언제까지, 어떤 순서로 완료할지 계획을 세운다. 
    • 대충 사용할 수준까지 익힌다.
      • 완벽히 마스터 할 필요 없이 언어를 어느 정도 사용할 수 있게 되면 바로 개발을 시작한다. 프로젝트를 시작해보면 차차 익히게 된다.
    • 고급 기술을 익히고 남에게 가르친다.
      • 완성된 소스를 깃허브에 올리고 타인의 평가와 피드백을 받아야 더 크게 성장한다.
      • 이 모든 과정을 기록해 두어야 내 것이 된다.

 

  • 코딩을 잘 한다 : 품질과 타이밍이라는 두 마리 토끼를 잡는 것이다.
  • 코딩을 잘 하려면?
    • 일을 빨리 처리할 방법을 찾아야 한다
      • 주위에 도움을 구하거나 이야기를 나눈다
    • 생산성이 높은 사람이 되어야 한다.
      • 오전 시간이 최적의 시간 : 최적의 아침 컨디션을 만든다.
      • 오전에 ‘정말 하기 싫지만 중요한 그것’ 을 하면 된다. 

 

  • 개발자도 뿌리를 내리는 시기가 필요하다.
    • 눈에 띄는 성과는 없지만, 도약을 위해 내실을 다지는 시기이다 : 고독의 시간 -> 4년
    • 코딩 실력은 천천히 오른다.
  • 우리는 애초에 문제가 생기지 않도록 조용히 시스템을 만드는 사람들에게 더 많은 영감을 받아야 한다.
    • 문제는 해결이 아닌 예방이다.
    • 체크리스트를 만들어 점검하며 문제가 발생하지 않도록 하는 것이다.
  • 개발 생산성의 핵심은 집중력이다. 
    • 집중한 후 가속도를 붙인다.
    • 목표한 궤도에 한 번 떠오르면 계속 밀어붙여 흐름을 유지해야 한다.
  • 회사라는 이익 집단은 프로그래밍만 잘하는 사람보다 프로그래밍 통해 사용자를 만족시키고, 이에 따라오는 매출을 창출할 수 있는 사람을 원한다. 코딩 기술 외에 이해관계자들과의 협업, 리더십, 비즈니스 인사이트, 사용자 경험에 대한 다양한 능력을 요구한다.

 

  • 기술을 블로그에 정리하라
    • 대형 포털 사이트에서 운영하는 플랫폼으로 선택
    • 잠들기 30분 전에 한 개씩만 꾸준히 올려도 성공
    • 남겨 둔 기록은 내 경력과 실력을 증명해 주어 창업의 씨앗이 된다.
    • 공유 문화가 확산되면 우리나라가 소프트웨어 강국이 된다.
      • 특화한 블로그를 만든다.
      • 나의 식견이 녹아든 내 글을 써야 한다.
      • 글쓰기 목표를 세운다.

 

  • 스터디 가이드라인
    • 스터디 기간을 정한다. 3개월 정도가 적당하다.
    • 한 달간은 학교나 회사를 공개하지 않고 기술적인 내용만 의견을 나눈다.
    • 스터디 인원은 5~9명 정도로 제한한다.
    • 구체적인 목표를 세우고 규칙은 간단하게 정한다.
      • 규칙은 깃허브에 소스를 공유하고, 일정 내에 규칙을 풀게 한다.
    • 독서 모임도 꾸준히 하라.

 

  • 그림처럼 편안한 소프트웨어를 만드는 방법?
    • 사용자 인터페이스가 한눈에 파악될 만큼 직관적이어야 한다.
      • 시니어들이 친근하게 다가갈 수 있는 소프트웨어
    • 더 사용하고 싶은 마음이 드는 소프트웨어
      • 오직 내가 만들고 싶은 프로그램을 만드는데 이렇게 만든 프로그램은 연구용이나 테스트용에서 끝나는 게 대부분이다.
      • 철학과 감성을 담아 사용자에게 감동을 주어야 한다.
    • 단순해야 한다. Simple is the best
      • 디자이너와 더 단순하게 만들기
    • 가치를 융합해 개발하고 인간에게 편안한 디자인이어야 한다.
      • 구상한 바를 요청할 정도의 디자인 감각은 있어야 한다.
  • 따뜻한 소프트웨어를 만드는 개발자는 다음과 같은 조건은?
    • 사용한 개발 언어와 알고리즘에 자신이 있어야 한다.
      • 기술적 한계에 봉착했다면 돌파하려는 태도를 갖춰야 한다.
        • 최신 프로그래밍 기술을 익혀 개발 시간을 단축한다.
    • 무조건 사용자를 먼저 생각해야 한다.
      • 현장의 소리를 들어라.
        • 사람들에게 가볍게 물어본다.
    • 인간을 직접적으로 연구하는 사람들의 요구 사항을 반영한다.
      • 인문학자, 예술가, 심리학자들이 이에 해당하는데 이들과 협업으로 융합하는 소프트웨어가 탄생된다.

 

  • 코드 및 디자인 등에서 단순성을 추구하고, 설계 원칙을 따를 때 소프트웨어의 성공 확률을 99.9%이다. 엔지니어는 욕심이 많아 모든 기능을 다 넣고 싶어 하지만 복잡한 프로그램은 사용자의 머리를 아프게 하고 결국 더 멀리하게 된다.
  • 개발자는 노숙자가 아닙니다. 개발자는 외적으로 깔끔하고 안색이 좋고, 육체가 건강해야 좋은 개발자가 될 수 있습니다. 제가 본 최고의 개발자는 업무도 잘하고, 개발도 잘하고, 말하는 능력도 좋고, 외모도 깔끔한 개발자였습니다.

 

  • 출시한 소프트웨어에서 버그가 발견된다면 그건 죄를 지은 것입니다.
    • 좋은 개발자라면 절대 문제를 만들지 않겠다는 마음으로 개발에 임해야 합니다. 그런 마음으로 코딩해야 비로소 좋은 소프트웨어를 만들 수 있습니다.
    • 단위 테스트나 코드 점검을 하며 매번 문제가 없는지 살펴야 합니다. 수정한 부분과 주변 기능까지 모두 검증해야 안전합니다.
  • 함께 성장하기 위해서는 품격이 없는 인간과는 건강한 틈새를 둬야 합니다. 그래야 조직과 개인이 무너지지 않습니다. 건강한 틈새가 없으면 스트레스에 시달려 피페해집니다.
  • 스포트웨어 개발자는 더욱 지식을 공유해야 합니다.
    • 지식을 공유할 때는 습득한 지식을 완전히 내 것으로 만들어 다듬은 뒤에 나누시길 바랍니다.
    • 다듬는 다는 것은 나의 언어로, 쉽게 만드는 과정이며 이렇게 해야 지식이 왜곡 없이, 온전히 전달되어 확장할 수 있습니다.
  • 문서를 만들어 빈번한 질문에 대한 답변을 정리해 그림까지 넣어 쉽게 만드세요.
    • 소속 부서에게 메일을 보내면 문의가 오지 않고 시간을 뺏기지도 않습니다.
  • 조용히 코딩하며 자기 세계를 구축해서 완성해 나가는 개발자가 많은 회사의 장래는 밝습니다. 독서실처럼 조용한 공간이 생산성을 확보하는데 유리합니다.
  • 스트레스를 푸는 자기만의 루틴이 있어야 하며 마음을 비우는 훈련을 해야합니다. 생각을 훈련해야 합니다. 인간은 생각에 지배 당하므로 생각이 곧 마음입니다. 생각이 곧 그 사람입니다.

읽고 느낀점이나 생각

단순히 기계처럼 코딩하는 것이 아닌, 조용히 코딩하며 나의 세계를 구축해가는 융합하는 개발자가 되고 싶다. 4년의 고독의 시간을 거쳐야 한다고 써 있는데 그 곳은 동굴이 아닌 터널 이라는 말이 와 닿았다. 문과생의 공부처럼 이론을 처음부터 끝까지 보는 것이 중요한 것이 아니고, 동영상을 통해 기술과 문법을 빠르게 익히고 프로젝트를 진행하면서 학습해야 할 필요성을 느꼈다. 그리고 아침에 하기 싫은 것을 해서 몰입해야겠다. IT와 감성 혹은 철학이 반대편의 단어같지만 공존해야 한다는 것이 아름답다.

그래서 적용은?

  1. 블로그를 단순화 전문화 시킨다.
  2. 아침에 코딩이나 정보처리기사와 같은 CS 공부를 하자. -> 기한 내 체계적으로 빠르게 학습 후, 프로젝트 시작할 것!

 

 

Leave a Comment