📍참고
https://nickjanetakis.com/blog/learning-a-new-web-framework-with-question-driven-development
📍요약
✅새로운 프레임워크나 라이브러리를 빠르게 배우려면, 관련 서적을 미리 읽는 것보다 직접 코드를 작성해보는 것이 더 중요하다
📍상세 내용
✅QDD (Question Driven Development) 란?
- learn by doing
새로운 프레임워크나 라이브러리를 배울 때, 책이나 공식 문서를 자세히 훑는 것 대신,
현재 내가 마주한 간단한 직접적인 문제(에러) 에 질문하면서 학습한다.
이로써 작은 문제에 지속적으로 부딪히며 무언가 시도해보게 된다
QDD의 예로, 새로운 언어나 프레임워크를 사용하게 된다면, 최초 2개의 질문은 아래와 같을 것이다
- How do I install XYZ language?
- How do I install XYZ web framework?
공식 문서나 구글링을 통해 해답을 찾으면, 2번째 질문으로 넘어가게 된다
- How do I generate a new project in XYZ?
일부 프레임워크는 CLI 앱을 제공한다. 하지만 그런 경우가 아니라면 또 다른 질문에 직면하게 된다
- How do I organize an XYZ app?
- How do I modify a template in XYZ?
- How do I add a new route in XYZ?
이런 과정 속에서, 원래 질문에 대한 해답을 바로 찾지 못한다면, sub question 몇 개를 만들고 해답을 찾으며 원래 질문을 해결할 때 까지 반복하게 된다.
✅QDD의 장점
이러한 과정이 좋은 점은 지속적으로 뭔가를 시도한다는 것이다. 공부 첫 날부터 모든 언어 기능을 익히려고 하는데 시간을 할애하지 않고, 실제 앱을 진전시켜나가는데 집중하면 큰 동기 부여가 된다
작은 문제일 수록 더 좋다. 너무 복잡하거나 모호한 문제라면 초급 단계에서는 절대로 해결할 수 없기 때문이다.
✅QDD로 기대할 수 있는 것
처음 이러한 학습법을 들으면, 무모하고 시간낭비라고 생각할 수 있다. 언어나 프레임워크의 특정 기능을 알지 못한 상태에서 최적화되지 않은 코드를 작성하고 있기 때문이다.
하지만 이를 통해 배울 수 있는 점이 더 많다. 처음 공부하는 경우, 절대로 불완전한 코드를 알려고 하지 않는다. 그러면, 불완전한 코드와 완전한 코드의 차이에 대한 추론의 경험을 얻을 수 없다.
올바르지 않아보이는 코드를 자주 고치고 수정하는 것에서 점차 새롭게 코드를 잘 작성하는 법을 배우게 된다. 기초적인 프로그래밍 경험을 갖춘 상태라면, 새로운 언어나 프레임워크를 접해도 코드를 어떻게 고치고 개선해야 겠다는 감각이 작동 것이다
✅QDD의 워크 플로우
1. 만들고 싶은 기능을 바탕으로 자신에게 질문하기
2. 해답을 찾기 (구글링, 공식 문서, 깃허브 등등)
3. 찾은 내용을 바탕으로 솔루션 구현하기
4. 에러가 발생하면 2로 되돌아가기 (sub-question)
당연히 개발을 하다보면 크고 작은 에러에 직면하지만, QDD의 경우 즉석에서 문제를 해결하기 때문에 더 많은 에러에 직면하게 된다. 이것은 디버깅을 연습하며 개발자로서 성장할 수 있는 좋은 기회이다.
코드 자체가 아니라 솔루션에 도달하는 프로세스가 중요하기 때문에, 5줄의 함수를 만드는데 3시간을 소비해도 괜찮다.
배운 것을 내 앱에 적용하려고 에너지를 쓰는 것이 더 중요하다 (새로운 언어나 프레임워크의 기능을 알려고 에너지를 쓰는 것보다..)