소프트웨어 개발 교육이 더 맞춤형이 되어야 하는 이유
Source: Dev.to
기본 지식 vs. 역할‑특화 지식
저는 현재 로버트 C. 마틴의 Clean Architecture를 읽고 있는데, 소프트웨어 개발에서 진정으로 기본이 되는 지식은 무엇이고, 어떤 지식이 특정 역할에만 적용되는지 궁금해졌습니다.
제 생각에 답은, 특정 역할에만 해당되는 지식의 양이 방대하다는 것입니다. 물론 최소한의 결합도와 최대한의 응집도와 같은 기본적인 측면은 모두가 알아야 합니다. 하지만 이 기본 수준에서도 보편적으로 합의된 지식은 거의 없습니다. 우리 분야의 많은 지식은 오늘날까지도 활발히 논쟁 중입니다. 어떤 사람은 TDD를 사용하지 않는 것은 무책임하다고 주장하고, 또 다른 사람은 TDD가 비현실적이거나 구현을 시작하기 전에 충분히 설계를 고민하지 않기 때문에 나쁜 설계를 만든다고 주장합니다.
미래 개발자 교육의 과제
- a) 보편적으로 적용 가능한 지식이 제한적 – 대부분의 개념은 작업 환경에 따라 달라집니다.
- b) 풍부하지만 여전히 논쟁 중인 지식 – 많은 실천 방법이 논쟁의 대상이며 시간이 지나면서 변화합니다.
AI를 활용한 개인화 학습
답은 교육을 더 개인화하는 것이며, AI 덕분에 이제 실제로 이를 구현할 좋은 위치에 있습니다. 오늘 저는 로컬 LMStudio 서버와 통신하는 작은 웹 앱을 “바이브‑코딩”했는데, 바이브‑코딩이 전통적인 교육보다 더 목표 지향적인 학습을 가능하게 한다는 것을 깨달았습니다.
예를 들어, JavaScript에서 await 키워드를 사용한 async 함수를 생성했습니다. 저는 async 함수가 무엇인지(물론 추측은 할 수 있었습니다)도, await 키워드가 정확히 무엇을 하는지도 몰랐습니다. 실제 예제에서 그 키워드들을 보니 Mozilla Developer Network에서 바로 찾아볼 수 있었고, 개념을 빠르게 이해할 수 있었습니다.
핵심 역량: 코드 읽기
교육은 이렇게 바뀌어야 합니다. 핵심은 단순히 코드를 읽는 능력이었습니다. 가장 흔히 쓰이는 프로그래밍 언어들의 문법은 충분히 비슷하기 때문에, 한 언어에서 키워드를 인식할 수 있으면 다른 언어에서도 찾아낼 수 있습니다. 함수 선언을 읽고 async가 함수에 적용되는 키워드임을, await가 키워드임을 식별한 덕분에 두 키워드를 찾아볼 수 있었습니다.
물론 일부 컴퓨터 과학 기본 개념도 필요하지만, 기본적인 목표는 학생들에게 코드를 읽는 법을 가르친 뒤 스스로 나가서 AI를 활용해 학습하도록 하는 것입니다. 일정 기간 자율 학습을 마친 뒤, 학생들을 다시 모아 동료와 강사 앞에서 자신의 코드를 발표하고 배운 내용을 시연하도록 합니다.
제안하는 교육 모델
- 스스로 학습 – 개인의 관심에 기반한 맞춤형 학습이 그 어느 때보다 쉬워진 시대.
- 자격을 갖춘 강사의 지도 – 맥락과 피드백을 제공.
- 올바른 방식으로 구현 – “실무에 절대 필요 없는 고급 수학을 알려준다”는 전통적인 강압적 접근을 버리고, 학생들이 실제로 할 일을 할 수 있도록 훈련.