본문 바로가기

개발이야기

학생들의 막무가내 코드

저의 학교생활은 학생들을 보조로서 가르치며 실습을 도와주는 일을 하고 있으며 그 와중에 여러 가지 답답하고 바뀌길 바라는 점이 무수히 많지만 그 중에 하나를 여기서 말하려고 합니다.
코드 스타일
간혹 학생들의 코드를 보면 마치 매우 엉켜진 정글을 보는 것 같습니다.
클래스는 기본으로 만들어져 있는 클래스를 사용하며, 변수명은 명명법이 하나 없는 생각 없이 변수명을 선언하고 객체지향언어에 객체 따위가 하나 보이지 않는 다는 것이었습니다. 그렇다고 객체지향을 배우진 않는 것도 아닙니다. 
객체지향 관련 수업은 자바나, C# 그리고 방법론 등이 있었습니다. 하지만 학생들은 좋은 학점을 위한 외우기식 일뿐 하나 활용하지 못하며 자기만의 불규칙한 코드 스타일을 지닌 채 4학년을 보내고 곧 사회에 나간다는 것이 참 험담한 실정입니다.
무엇이 잘못되었을까?
저의 사례를 보자면 책들의 예제를 많이 실습해 보고 또 그 책 저자의 코드 스타일을 많이 닮기를 노력하며 지금도 꾸준히 노력하고 있습니다. 하지만 이런 식의 학습법은 초기에 개발 하긴 무척 힘들고 시간이 오랜 걸리게 됩니다. 하지만 힘든 만큼 얻는 것이 당연히 많았으며 조금 더디어도 코드 스타일만큼은 자신이 있을 정도였습니다. 그래서 저는 어려워도 학생들에게 책을 많이 읽으라고 권고 하고 또 예제를 눈으로 읽지 말고 손의 근육으로 접하라고 많이 주문을 하게 됩니다.
객체지향..
객체지향은 많은 예제를 수업에 통해 접하였으며 학생들도 수도 없이 들었을 것입니다.
여러 가지 예 중에 자동차라는 개념적인 클래스가 있고 실질적인 개체를 생성하여 각각의 실제 자동차를 생성하는 예가 있고 사람이라는 최상위 객체가 있고 파생되어 여자와 남자가 있고 각자의 특성대로 파생되어 자기만의 속성과 메소드들을 가진 것 등등 아주 많은 예가 있지만 정작 코드로는 이식을 못한다는 것입니다.
학생들은 코드의 개념이 아직 초기단계여서 이해하긴 힘들 터 하지만 노력만큼이나 하기 나름인 법이죠. 방법은 자기의 손으로 키보드를 두드리며 코딩을 하는 것 또는 멘토의 지적들인 것 같습니다.

사람을 객체지향으로 표현한 예

C언어..
이제는 모든 방법론이나 언어들이 회사의 움직임에 따라 변하고 있습니다. 간혹 왜 언어가 또 나와야 하는지 플랫폼들이 왜 쏟아져 나와야 하는지 의문하는 사람이 있지만 그것은 바로 앞에 말한 것 같이 세상의 움직임을 따라가야 하기 때문입니다.
왜 학생들은 아직까지 C, C++, MFC만 하려 할까요?  세상은 변하는데 아직까지 비주얼스튜디오 6.0을 다루는 이유는 무엇일까요? 계산기쯤이야 구구단쯤이야 도태된 개발도구로서 얼마든지 개발 할 수 있지만 현시대에 흐름에 절대 흡수 할 수가 없습니다. 그래도 필요한 부분이 있거나 좋아서 할 수는 있는 소수가 있겠지만 대부분의 학생들은 개발에 있어 지나쳐야할 과정이라 생각을 합니다.
서비스지향
10여 년전 가트너연구소에서 언급한 서비스지향(SOA)은 시작한지 이미 오래되었고 그들의 80%가 SOA로 움직인다는 예언처럼 잘 맞아 떨어지고 있습니다.
서비스지향은 객체지향과 다르게 데이터와 서비스를 나누게 되며 서비스를 노출하게 됩니다. 객체가 아닌 서비스 단위로 어플리케이션은 만들어지게 된다는 것이죠.
이런 기술들과 방법론들이 마구 쏟아져 나오는데 왜 기계어 쪽을 사모하는지 모르겠습니다.

SOA 다이어그램

해결방안
이제는 뭔가 많이 바뀌어야 합니다. 학교의 커리큘럼이나 외우기식이 아닌 실습적인 것으로 또 장학금을 성적 기준이 아닌 프로젝트 중심으로 움직여야 한다고 생각을 하고 또 넓은 시야를 가질 수 있는 그런 자리를 마련해 주어야 한다고 저는 생각을 합니다.
그리고 무엇보다 학생들이 스스로 할 수 있게 하는 열정 또한 중요합니다. 그 열정은 스스로 생기지 않으며 주위에 사건으로 생기게 되는 것이기에 학과나 멘토는 새로운 것이나 자극 될만한 무언가로 학생들을 어필해야 할 것입니다.