티스토리 뷰

반응형


● PART 1. 나는 어떻게 개발자가 되었나

인스타그램 창업자도 인터넷 비즈니스를 하고 싶은 마음에 프로그래밍을 공부해서 두 번째 사업 모델로 인스타그램을 출시했다. 그의 유튜브 동영상을 보면, 그는 "최고일 필요는 없다(You don't have to be the best)."라는 말을 한다. 서비스를 하기 위해서 최고의 프로그래머가 될 필요는 없다. 하지만 그는 또한 "사고 칠 실력은 갖추어야 한다(You have to be dangerous)."라는 말을 한다.

최대한 많이 배울 수 있는 회사를 선택해서 많이 배우고 도전해도 절대로 늦지 않다. 회사는 단순히 개발 경험뿐만 아니라 어떻게 시장을 찾고, 서비스를 고객에게 알릴 수 있을지를 배울 수 있는 최고의 학교이기도 하다.

정말 원하는 것을 얻고 싶다면, 그 기회가 왔을 때 잡을 수 있도록 준비되어 있어야 한다는 사실이다.

공부하려고 마음만 먹는다면, 세상에는 끝도 없이 많은 교육 자료들이 펼쳐져 있다. 요즘 세상에 어떻게 공부할지 모르겠다고 불평하는 건 사실 어리광이라는 생각도 든다. 최소한 유튜브나 구글에서 배우고 싶은 내용을 한 번은 검색을 해 보면, 정말 양질의 자료가 끝도 없이 펼쳐져 있음을 알 수 있다. 우리가 할 일은 그런 자료들에서 시작해서, 더 양질의 자료로 옮겨 다니며 자신이 진짜 원하는 일을 계속해 나갈 수 있도록 끊임없이 공부하는 일이다.

그리고 특히 개발자는 머릿속에 들어 있는 지식만으로는 아무것도 말할 수 없기 때문에, 내가 가고 싶은 분야에 관련된 개인 프로젝트를 만들고 블로그를 정리하는 등의 노력이 꼭 필요하다.

경력을 전환한다는 것은 자신이 쌓아온 전문성과 단절하는 것이 아니라, 내가 쌓아온 경험을 바탕으로 더 많은 것을 경험할 수 있게 도와주는 경력의 확장이다.

프로그래밍은 가상의 공간에 새로운 세상을 만드는 일이다. 하나의 세상을 만드는 일은 몇 개의 조각을 맟추는 일과는 달라서 철학이 필요하다. 새로운 세상을 그리기 위한 본인만의 철학, 개발 기술과 함께 시장을 보는 눈, 사람을 이해하는 인문학적 마인드, 그리고 회사 실무 경험까지, 이 모두가 합쳐지면 개발은 당신에게 정말 큰 기회를 가져다줄 것이다.

이런 사람에게 개발자가 되기를 권한다
- 기본적인 영어 능력
- 꾸준히 공부하고 스스로 탐구하는 사람
- 독립적이고 문제 해결 능력이 좋은 사람
- 의사소통 능력이 뛰어난 사람

효과적으로 개발자의 시간을 관리하는 방법
1. 일을 잘게 쪼개라
2. 투입되는 시간을 파악하라
3. 계획하고 소통하라
4. 효과적으로 집중하라

로켓펀치(https://www.rocketpunch.com) : 국내 스타트업 채용 관련 가장 많은 데이터를 보유하고 있는 플랫폼

유데미(https://www.udemy.com) : 온라인 강의 사이트. 아이폰 앱 개발 강의도 존재.

https://geeksta.net/geeklog/exploring-expressions-emotions-github-commit-messages/


● PART 2. 개발자들만 아는 이야기

개발을 배우기 어려운 이유
1. 개발 기술은 계속 발전하고 있다
2. 한 가지 기술로 모든 것을 개발할 수 없다
3. 이론에만 집중하는 교육용 자료들

개발자들 사이에 많이 인용되는 격언 중의 하나 - "이미 있는 바퀴를 재발명하지 마라"
즉, 기존에 존재하는 코드가 있다면 그 코드를 스스로 다시 짤 생각을 하지 말고, 그 시간에 다른 생산적인 활동을 하라는 의미이다.
따라서 자신이 진행하고 있는 프로젝트에 잘 어울리는 오픈소스를 찾고, 해당 오픈소스를 프로젝트에 맞게 적용, 변경하는 것도 개발자의 중요한 능력 중의 하나이다.
적합한 오픈소스를 찾지 못해서 모든 걸 다 만드느라 시간을 낭비하거나, 혹은 오픈소스를 제대로 평가하지 못해서 엉망진창인 오픈소스를 가져다 사용하는 것 모두 조심해야 하는 일이다.

알고리즘 코딩 면접을 준비할 수 있는 사이트
  - 해커랭크 : https://www.hackerrank.com  -> 온라인 알고리즘 시험을 출제하는 사이트로도 유명
  - 코딜리티 : https://www.codility.com  -> 온라인 알고리즘 시험을 출제하는 사이트로도 유명
  - 리트코드 : https://leetcode.com -> 조금 더 학습에 초점

머신러닝이 기존의 알고리즘으로 해결할 수 없었던 것을 해결한 것처럼, 머신러닝이 해결하기에 비효율적이거나 할 수 없는 분야도 여전히 존재한다. 하지만 위에서 언급한 것처럼 사람의 인건비보다 컴퓨터 자원이 싸지는 시대에 살고 있는 우리는 분명히 알고리즘의 개념이 달라질 것이라고 생각한다.

보통 애자일이라는 단어는 스프린트(Sprint)나 스크럼(Scrum), 칸반(Kanban) 등의 테크닉과 함께 사용되고, 더 효과적으로 사람들이 일하도록 돕는다.

----------------------------------------------------------------------------------------------------------
애자일 소프트웨어 개발 선언문
Manifesto for Agile Software Development

우리는 직접 실천하고 다른 사람들 역시도 그렇게 실천할 수 있도록 도우면서, 더 나은 소프트웨어 개발 방법을 찾는다. 이런 방식을 통해서 우리는 다음과 같은 가치에 도달할 수 있었다.
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

- 프로세스와 도구를 넘어서 서로 소통하기
  Individuals and interactions over processes and tools
- 문서화보다는 실제로 작동하는 소프트웨어를 개발하기
  Working software over comprehensive documentation
- 계약 내용으로 협상을 하기보다는 고객과 협력하기
  Customer collaboration over contract negotiation
- 계획을 따르기보다는 변화를 받아들이기
   Responding to change over following a plan
----------------------------------------------------------------------------------------------------------



● PART 3. 효과적으로 개발 공부하는 방법

사람들이 이런 유료 콘텐츠에 돈을 내는 걸 아까워하는 경향이 있는데, 시간이 중요한지 돈이 중요한지는 잘 생각해 볼 문제다. 혼자서 끙끙거리며 몇 주에 걸쳐 알아내야 하는 것을, 좋은 강의를 구하면 한두 시간이면 될 수 있다.
하지만 항상 명심해야 할 점은 내 시간은 내 돈보다 중요하다는 사실이다.

'좋은 개발자'란 단순히 제품을 빠르게 만드는 개발자가 아니라, 생산성은 갖추되 자기가 만들어 내는 서비스를 높은 수준으로 유지하는 능력이 있는 사람들로 정의하도록 하자.

좋은 개발자의 자질이란?
1. 문제 해결 능력
2. 혼자서 공부할 수 있는 능력
3. 원리에 대한 집착
4. 그 외 ('있으면 좋은' 능력이나 태도)
  4-1) 영어
  4-2) 겸손함
  4-3) 개발을 하는 이유

나는 이런 관점에서 개발자에게 가장 중요한 능력이란 문제 해결 능력이라고 생각한다. 내가 생각하는 문제 해결 능력이란 주어진 업무를 파악하고, 그 문제를 해결 가능한 단위의 세부 작업으로 나누고, 그 작업의 우선순위를 나눠서 해결하는 것을 의미한다.

결국 이 말은 개발자가 '얼마나 성장하기를 원하느냐?'와 직결되어 있다고 할 수 있다. 주도적으로 자신의 전문성을 쌓아 갈 방향을 정하고, 그 방향으로 꾸준히 걸어갈 수 있는 사람을 의미한다.

내가 만들어 내는 결과물에 대해서는 내가 책임을 질 수 있다는 자신감은 본인에게도, 함께 일하는 동료에게도 꼭 필요하다.

코세라 : https://www.coursera.org -> 대학교 강의. 수료하고 소정의 비용을 내면 수료증을 제공

어차피 할 일이라면 즐겁게 하는 것이 좋다. 그리고 일을 즐겁게 만드는 요소는 내가 일을 이끌고 있다는 주도성에서 나온다. 끊임없이 변화하는 소프트웨어 개발의 세계에서 지치지 않으려면, 내가 직접 그 변화를 받아들이는 것이 좋다. 회사에서 누군가 시켜서 시작하는 변화는 그 이유도 찾기 힘들고, 지치기 쉽다.

어떻게 하면 좋은 질문을 할 수 있을까?
1. 개발자의 친구 구글(Google)신
2. 질문할 땐 현재 개발 환경을 함께 공유
3. 문제를 해결하기 위해서 어떤 해결책을 써 봤는지 알려주자
4. 문제가 해결되면 해결책을 정리해서 알리자
5. 좋은 사수란 없다


● PART 4. 다양한 개발자의 삶

 

반응형

'독서' 카테고리의 다른 글

[독서] 완벽한 공부법 - 고영성, 신영준 지음  (0) 2019.11.27
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함