17. 개발자의 학습과 성장
어디가 부족한지 어떻게 알아? 🥺
문제를 보고 로직을 설계하는 것이 어렵다면
논리와 설계를 실제로 구현하는 것이 어렵다면
구현 후 성능, 메모리, 설정 등의 문제가 생겼다면
프로그램의 흐름을 파악하고 설계하는 '사고' 능력이 부족
코드로 구현하는 '기술' 능력이 부족
구현이 되었어도 좋지 않은 설계, 코드가 나왔다면 이쪽에 해당
CS에 대한 이해 부족으로 생긴 문제 발생으로 '과학' 능력이 부족
네트워크, 암호화, 유니코드 등을 몰라 논리를 이해하기 힘들었다면 이쪽에 해당
21. 개발자의 학습과 성장
기술과 과학은 그렇다쳐도.. 사고는 어떻게 학습하지? 😭
1. 단계적 추상화에 익숙해지자
논리(Usecase)를 Top-Down으로 설계해볼 것
가장 큰 문제를 작은 문제로 나누기
ex) 사용자는 로그인을 한다.
- 사용자는 브라우저를 통해 서버로 로그인 요청을 보낸다.
- 사용자는 로그인 페이지에서 Login 버튼을 클릭하면
Ajax 요청을 보내고 Spinner를 보여준다.
- Login 버튼에 바인딩된 onClick이 실행되면 axios를 통해
POST /signin 요청을 body에 email, password를 담아
보낸다. 이후 Button의 loading prop을 true로 바꾸고 ...
- 이하 의사 코드 / 구현 레벨
논리를 도식화하는 것도 굉장히 좋은 방법
22. 개발자의 학습과 성장
2. 다양한 관점에서 바라보자
시스템 관점 도메인 관점 데이터 관점 UI 관점 ...
논리 논리 논리 논리 논리
하나의 정리된 논리, 설계
기술과 과학은 그렇다쳐도.. 사고는 어떻게 학습하지? 😭
23. 개발자의 학습과 성장
3. 이러한 논리 사고를 정리하고 기록하자
비슷한 문제를 해결할 때 큰 도움이 된다
기술과 과학은 그렇다쳐도.. 사고는 어떻게 학습하지? 😭
24. 개발자의 학습과 성장
기술 공부는 어떻게 하는게 좋을까? 🙃
1. 시작은 웬만하면 공식 문서를 보는 것이 좋다
가끔 예외도 있지만 만든 사람 혹은 집단이 제일 올바르게 설명한다
도구의 기본적인 개념, 철학과 사용법을 익힌다.
25. 개발자의 학습과 성장
기술 공부는 어떻게 하는게 좋을까? 🙃
2. 심화 내용은 혼자 학습하지 말고 도움을 받는 것이 좋다
책, 아티클을 통해 익히거나 잘하는 사람의 도움을 받자
오픈 소스를 분석하는 것도 좋은 방법
타인의 지식을 빠르게 나의 것으로 만드는 것이 가장 효율적이다
26. 개발자의 학습과 성장
기술 공부는 어떻게 하는게 좋을까? 🙃
3. 기술은 항상 상황에 적합한 케이스가 존재하므로 이를 기억해두자
상황과 적합한 Best case를 기록해두자
27. 개발자의 학습과 성장
마지막으로 과학 공부는 어떻게 하는게 좋을까? 😋
1. 제일 좋은 방법은 열심히 외우는 것
이는 기반 지식이기 때문에 어쩔 수 없는 부분도 있다.
28. 개발자의 학습과 성장
마지막으로 과학 공부는 어떻게 하는게 좋을까? 😋
2. 사용 사례도 같이 알아두면 좋다
기술과 마찬가지로 적절한 상황에 알아야할 지식이 존재한다
29. 개발자의 학습과 성장
그래서 잘하는 개발자란...
종합 능력
사고
기술 과학
업계에 따라 조금씩 우선되는 것이 있을 수는 있지만
이 능력들이 골고루 균형잡힌 사람이 대체로 일을 잘한다.
따라서 하나만 집중하지 말고 골고루 공부할 것!
제일 안좋은 케이스는 하나만 잘해서
내가 잘한다고 착각하는 것
33. 개발자의 학습과 성장
효율적인 패턴 학습은? 😵
1. 패턴을 발견하면 그 즉시 정리해서 기록하자
Usecase (사용 사례, 시스템이 수행하는 일)
설계 패턴, 디자인 패턴
컴포넌트
등에 대해 사용하게되면 상황과 패턴을 기록해서 정리하자
34. 개발자의 학습과 성장
효율적인 패턴 학습은? 😵
2. 안해봤던 것을 해보자
매일 1km를 뛰는 사람은 1km를 잘 뛸 수 있지만
10km를 뛰는 것은 어려워한다.
어렵더라도 안해봤던 경험을 가리지 않고 많이 쌓는 것이 중요
35. 개발자의 학습과 성장
효율적인 패턴 학습은? 😵
3. 공개된 소스를 많이 참고하자
소스를 분석하는 것이 어렵다면 따라치는 것 부터 시작해도 좋다
익숙해지면 내 방식으로 리팩토링(리디자인)하면서 만들어보자
36. 개발자의 학습과 성장
효율적인 패턴 학습은? 😵
4. 실제로 적용해보자
일부러 찾을 필요 없이 개발하다가 생각나면 적용하자
리팩토링을 하며 적용하는 것도 괜찮다
프로젝트에 '야영지 규칙'을 적용하여 기회를 많이 만들어보자
37. 개발자의 학습과 성장
패턴을 이용한 일정 계산 😆
패턴을 안다는 것은 이미 한 번 구현해본 경험이 있다는 뜻
처음에는 일정 계산이 안되는 것이 정상
경험이 쌓이면서 내가 아는 패턴이 많아진다
경험을 했기 때문에 구현에 어느정도 시간이 걸릴지 알 수 있다
복잡하거나 새로운 일이더라도 경험(패턴)을 조합하면 예상 시간이 보인다