유의미한 학습
개발자는 끊임없이 학습해야 한다. 비단 개발자뿐만 아니라, 모든 인간은 학습해야 한다. 효율적이고 유의미한 학습을 하기 위해서는 어떤 자세와 마음가짐으로 임해야 할까? 현재 자신의 수준과 학습의 난이도를 예를 들며 알아보자.
현재 자신의 수준이 i
라고 할 때, 한 단계 높은 i+1
난이도의 자극이 주어질 때만 유의미한 학습이 가능하다고 한다. 예를 들면, 컴퓨터 비전공자가 프로그래밍을 처음 배울 때, Hello World
를 출력하는 간단한 파이썬 스크립트를 작성하는 것 대신에, C언어의 포인터 구조를 학습하거나, Java의 복잡한 개발 환경을 구축해야 한다면? 큰 어려움을 겪게 될 것이고, 흥미를 잃어 학습이 비효율적으로 진행될 수 있다는 것이다.
그렇다면, 업무에서 끊임없는 학습 태도를 유지하려면 어떻게 해야 할까? 업무의 난이도와 자신의 실력이 일치하는지 확인을 자주 하면 된다.
업무가 너무 쉽다면? 업무에 비해 자신의 실력이 높다는 뜻이다. 이럴 땐, 업무를 어렵게 만드는 것이 방안이 될 수 있다.
- 새로운 환경
- 도구의 사용을 줄인다
- 새로운 언어, 프레임워크를 사용한다
- 새로운 목표
- throughput을 높인다
- 단, 오버 엔지니어링이 되지 않도록 조심한다
반대로, 업무가 너무 어려워서 진행하기 힘들다면? 너무 진부한 소리 같지만, 자신의 실력을 키워야 한다. 하지만 실력을 키우는 것이 하루아침에 되는 것은 아니다. 오랜 노력과 인고를 거쳐야 비로소 실력이 자란다. 그럼 당장 닥친 업무는 어떻게 처리하란 말일까? 실력이 자랄 때까지 기다릴 수는 없는 노릇이다.
이럴 땐 업무를 쉬운 단계부터 차근차근 시작해보자. 단위 테스트를 짜는 것처럼 기능을 잘게 쪼개어서, 최소 단위의 함수부터 시작하면 어렵지 않게 업무를 마무리할 수 있을 것이다.
정리
- 업무가 너무 쉽다면?
- 업무를 어렵게 만든다
- 새로운 환경
- 도구의 사용을 줄인다
- 새로운 언어, 프레임워크를 사용한다
- 새로운 목표
- throughput을 높인다
- 단, 오버 엔지니어링이 되지 않도록 조심한다
- 업무를 어렵게 만든다
- 업무가 너무 어렵다면?
- 실력을 높인다
- 장기적인 학습 (스터디, 서적, 개인 프로젝트 등)
- 단기적인 해결 (Pair 프로그래밍, 튜토리얼 문서 등)
- 업무를 쉬운 단계부터 차근차근 한다
- 실력을 높인다
참고 자료