책 어떤 개발자가 되고 싶니? 저자 박동기
마음에 와 닿은 문장
당신은 소중합니다. 아직은 당신이라는 원석이 흙 속에 묻혀 있지만, 이 시간이 지나면 보석이 되어 빛날 것입니다. 우리는 동굴로 들어가는 게 아니라 터널을 지나고 있습니다. 터널에는 반드시 끝이 있습니다. 당신은 이 세상 누구보다도 소중합니다.
책을 선택하게 된 계기
도서관의 취업 진로 관련 된 분야에서 이 책을 발견하게 되었다. 25년 차의 개발자이신데, 글도 워낙 잘 쓰시고 자주 걸으시는 숲과 나무에 빗대어 개발자에 대한 진로와 정보를 제공해 주셔서 즐겁게 몰입이 가능했고, 대략 2시간 만에 한 권을 다 읽게 되었다.
새로 알게 된 정보
- C# : 생산성이 좋고, 사용자 인터페이스 작업 시 표현력이 훌륭하고 자바와 비슷하여 금방 익힐 수 있다. 막강한 언어라 앞으로도 계속 성장할 것이다.
- 스위프트 : 아이폰 앱은 스위프트로 개발, 안전을 우선으로 하는 프로그래밍 패턴을 지향하며, 파이선 언어를 사용. 쉽고 재미있게 프로그래밍 할 수 있도록 옵셔널, 제네릭, 프로토콜, 튜플, 익스텐션 등 새로운 기능을 많이 도입했다.
- 파이선 : 쉽고 간결한 문법이 강점이며 제품을 빠르게 개발한다. 컴파일 하지 않는 인터프리터 언어로 빅데이터를 분석하기 위한 다양하고 강력한 라이브러리를 제공한다. 텐서플로 등 인공지능을 위한 라이브러리도 파이선에서 제공되므로 유용하다.
- 모바일 개발자
- 네이티브 언어로 안드로이드와 iOS 모두 호환 가능한 개발자는 하이브리드 개발자이다.
- 모바일 앱 개발 분야는 진입 장벽이 낮으면서 성장 가능성이 큰 분야이다.
- 단기간에 배울 수도 있고 혼자 마켓에 출시해 배포할 수 있으므로 배워 두면 좋은 기술이 된다.
- 개발 학습법
- 큰 그림을 그려 소프트웨어의 범위를 정한다
- 개발 언어와 어느 기능까지 구현할지 정하기
- 소프트웨어의 성공을 상상한다.
- 예시) AWS에 올라오는 실시간 데이터들을 C#을 이용한 프로그램을 통한 프로그램을 정의하여 AWS의 서버 구성 방법을 완벽히 익히고 C#의 사용자 인터페이스 구성과 데이터베이스 기능을 익힌다. 스토어에 앱을 올리거나 전 세계에 배포해서 그 앱이 수익으로 연결된다.
- 프로그래밍 언어라는 씨앗 뿌리기
- 문법, 함수, API 등 기능 익히기
- 책 : 필요한 부분만 발췌, 첫 페이지부터 마지막 페이지까지 완독했다고 해서 프로그래밍을 잘하게 되는 건 아니다. -> 동영상을 보면서 공부할 것을 추천한다. 영어 실력이 있다면 코세라와 같은 유료 강의를 듣는 게 좋다. 학습을 언제까지, 어떤 순서로 완료할지 계획을 세운다.
- 대충 사용할 수준까지 익힌다.
- 완벽히 마스터 할 필요 없이 언어를 어느 정도 사용할 수 있게 되면 바로 개발을 시작한다. 프로젝트를 시작해보면 차차 익히게 된다.
- 고급 기술을 익히고 남에게 가르친다.
- 완성된 소스를 깃허브에 올리고 타인의 평가와 피드백을 받아야 더 크게 성장한다.
- 이 모든 과정을 기록해 두어야 내 것이 된다.
- 큰 그림을 그려 소프트웨어의 범위를 정한다
- 코딩을 잘 한다 : 품질과 타이밍이라는 두 마리 토끼를 잡는 것이다.
- 코딩을 잘 하려면?
- 일을 빨리 처리할 방법을 찾아야 한다
- 주위에 도움을 구하거나 이야기를 나눈다
- 생산성이 높은 사람이 되어야 한다.
- 오전 시간이 최적의 시간 : 최적의 아침 컨디션을 만든다.
- 오전에 ‘정말 하기 싫지만 중요한 그것’ 을 하면 된다.
- 일을 빨리 처리할 방법을 찾아야 한다
- 개발자도 뿌리를 내리는 시기가 필요하다.
- 눈에 띄는 성과는 없지만, 도약을 위해 내실을 다지는 시기이다 : 고독의 시간 -> 4년
- 코딩 실력은 천천히 오른다.
- 우리는 애초에 문제가 생기지 않도록 조용히 시스템을 만드는 사람들에게 더 많은 영감을 받아야 한다.
- 문제는 해결이 아닌 예방이다.
- 체크리스트를 만들어 점검하며 문제가 발생하지 않도록 하는 것이다.
- 개발 생산성의 핵심은 집중력이다.
- 집중한 후 가속도를 붙인다.
- 목표한 궤도에 한 번 떠오르면 계속 밀어붙여 흐름을 유지해야 한다.
- 회사라는 이익 집단은 프로그래밍만 잘하는 사람보다 프로그래밍 통해 사용자를 만족시키고, 이에 따라오는 매출을 창출할 수 있는 사람을 원한다. 코딩 기술 외에 이해관계자들과의 협업, 리더십, 비즈니스 인사이트, 사용자 경험에 대한 다양한 능력을 요구한다.
- 기술을 블로그에 정리하라
- 대형 포털 사이트에서 운영하는 플랫폼으로 선택
- 잠들기 30분 전에 한 개씩만 꾸준히 올려도 성공
- 남겨 둔 기록은 내 경력과 실력을 증명해 주어 창업의 씨앗이 된다.
- 공유 문화가 확산되면 우리나라가 소프트웨어 강국이 된다.
- 특화한 블로그를 만든다.
- 나의 식견이 녹아든 내 글을 써야 한다.
- 글쓰기 목표를 세운다.
- 스터디 가이드라인
- 스터디 기간을 정한다. 3개월 정도가 적당하다.
- 한 달간은 학교나 회사를 공개하지 않고 기술적인 내용만 의견을 나눈다.
- 스터디 인원은 5~9명 정도로 제한한다.
- 구체적인 목표를 세우고 규칙은 간단하게 정한다.
- 규칙은 깃허브에 소스를 공유하고, 일정 내에 규칙을 풀게 한다.
- 독서 모임도 꾸준히 하라.
- 그림처럼 편안한 소프트웨어를 만드는 방법?
- 사용자 인터페이스가 한눈에 파악될 만큼 직관적이어야 한다.
- 시니어들이 친근하게 다가갈 수 있는 소프트웨어
- 더 사용하고 싶은 마음이 드는 소프트웨어
- 오직 내가 만들고 싶은 프로그램을 만드는데 이렇게 만든 프로그램은 연구용이나 테스트용에서 끝나는 게 대부분이다.
- 철학과 감성을 담아 사용자에게 감동을 주어야 한다.
- 단순해야 한다. Simple is the best
- 디자이너와 더 단순하게 만들기
- 가치를 융합해 개발하고 인간에게 편안한 디자인이어야 한다.
- 구상한 바를 요청할 정도의 디자인 감각은 있어야 한다.
- 사용자 인터페이스가 한눈에 파악될 만큼 직관적이어야 한다.
- 따뜻한 소프트웨어를 만드는 개발자는 다음과 같은 조건은?
- 사용한 개발 언어와 알고리즘에 자신이 있어야 한다.
- 기술적 한계에 봉착했다면 돌파하려는 태도를 갖춰야 한다.
- 최신 프로그래밍 기술을 익혀 개발 시간을 단축한다.
- 기술적 한계에 봉착했다면 돌파하려는 태도를 갖춰야 한다.
- 무조건 사용자를 먼저 생각해야 한다.
- 현장의 소리를 들어라.
- 사람들에게 가볍게 물어본다.
- 현장의 소리를 들어라.
- 인간을 직접적으로 연구하는 사람들의 요구 사항을 반영한다.
- 인문학자, 예술가, 심리학자들이 이에 해당하는데 이들과 협업으로 융합하는 소프트웨어가 탄생된다.
- 사용한 개발 언어와 알고리즘에 자신이 있어야 한다.
- 코드 및 디자인 등에서 단순성을 추구하고, 설계 원칙을 따를 때 소프트웨어의 성공 확률을 99.9%이다. 엔지니어는 욕심이 많아 모든 기능을 다 넣고 싶어 하지만 복잡한 프로그램은 사용자의 머리를 아프게 하고 결국 더 멀리하게 된다.
- 개발자는 노숙자가 아닙니다. 개발자는 외적으로 깔끔하고 안색이 좋고, 육체가 건강해야 좋은 개발자가 될 수 있습니다. 제가 본 최고의 개발자는 업무도 잘하고, 개발도 잘하고, 말하는 능력도 좋고, 외모도 깔끔한 개발자였습니다.
- 출시한 소프트웨어에서 버그가 발견된다면 그건 죄를 지은 것입니다.
- 좋은 개발자라면 절대 문제를 만들지 않겠다는 마음으로 개발에 임해야 합니다. 그런 마음으로 코딩해야 비로소 좋은 소프트웨어를 만들 수 있습니다.
- 단위 테스트나 코드 점검을 하며 매번 문제가 없는지 살펴야 합니다. 수정한 부분과 주변 기능까지 모두 검증해야 안전합니다.
- 함께 성장하기 위해서는 품격이 없는 인간과는 건강한 틈새를 둬야 합니다. 그래야 조직과 개인이 무너지지 않습니다. 건강한 틈새가 없으면 스트레스에 시달려 피페해집니다.
- 스포트웨어 개발자는 더욱 지식을 공유해야 합니다.
- 지식을 공유할 때는 습득한 지식을 완전히 내 것으로 만들어 다듬은 뒤에 나누시길 바랍니다.
- 다듬는 다는 것은 나의 언어로, 쉽게 만드는 과정이며 이렇게 해야 지식이 왜곡 없이, 온전히 전달되어 확장할 수 있습니다.
- 문서를 만들어 빈번한 질문에 대한 답변을 정리해 그림까지 넣어 쉽게 만드세요.
- 소속 부서에게 메일을 보내면 문의가 오지 않고 시간을 뺏기지도 않습니다.
- 조용히 코딩하며 자기 세계를 구축해서 완성해 나가는 개발자가 많은 회사의 장래는 밝습니다. 독서실처럼 조용한 공간이 생산성을 확보하는데 유리합니다.
- 스트레스를 푸는 자기만의 루틴이 있어야 하며 마음을 비우는 훈련을 해야합니다. 생각을 훈련해야 합니다. 인간은 생각에 지배 당하므로 생각이 곧 마음입니다. 생각이 곧 그 사람입니다.
읽고 느낀점이나 생각
단순히 기계처럼 코딩하는 것이 아닌, 조용히 코딩하며 나의 세계를 구축해가는 융합하는 개발자가 되고 싶다. 4년의 고독의 시간을 거쳐야 한다고 써 있는데 그 곳은 동굴이 아닌 터널 이라는 말이 와 닿았다. 문과생의 공부처럼 이론을 처음부터 끝까지 보는 것이 중요한 것이 아니고, 동영상을 통해 기술과 문법을 빠르게 익히고 프로젝트를 진행하면서 학습해야 할 필요성을 느꼈다. 그리고 아침에 하기 싫은 것을 해서 몰입해야겠다. IT와 감성 혹은 철학이 반대편의 단어같지만 공존해야 한다는 것이 아름답다.
그래서 적용은?
- 블로그를 단순화 전문화 시킨다.
- 아침에 코딩이나 정보처리기사와 같은 CS 공부를 하자. -> 기한 내 체계적으로 빠르게 학습 후, 프로젝트 시작할 것!