왜 학교에서는 분석과 설계에 대해서 가르쳐 주지 않는가?

[![The locker misery](http://farm1.static.flickr.com/227/513100970_057043f204.jpg)](http://www.flickr.com/photos/33685308@N00/513100970 "The locker misery") The locker misery by [Abdullah AL-Naser](http://www.flickr.com/photos/33685308@N00)[![저작자 표시](http://cfs.tistory.com/static/admin/editor/ccl_black01.png)![비영리](http://cfs.tistory.com/static/admin/editor/ccl_black02.png)![동일조건 변경허락](http://cfs.tistory.com/static/admin/editor/ccl_black03.png)](http://creativecommons.org/licenses/by-nc-sa/2.0/kr/)
프로그램을 배우고 쓰고, 코딩이라는 것을 한지 어언, 4년.C언어 부터 시작해서 C++, 그리고 지금 C#을 쓰면서, (중간에 자바를 배우긴 했지만,) 점점 크게 느끼는 것은, 분석과 설계 그리고 문서의 중요성인거 같다. 학부 4학년때. **두개의 프로젝트**를 했었다.
 
하나는, 졸업 작품주제였던 “PDA-Server를 이용한 얼굴인식 시스템 개발” 이었고, 다른 하나는 CSIR(지능형 로봇 연구회) 에서 형들이랑 같이 했던 “네트워크 기반의 지능형 로봇 플랫폼” 였다. 
두개의 프로젝트는 거의 같은 시점에 시작했지만, 다른 점이라면, 전자는 오직 나 혼자 해야한다는것이고, 후자는 다른 사람과 같이 해야한다는 것이었다. 다 장단점이 있겠지만, 혼자하는 경우에는 어느정도의 분석이나 설계 같은부분을 거치긴 하지만, 다 내마음대로이기 떄문에 상대적으로 그 기간이 짧았던것 같다. 후자의 경우에는, 분석과 설계의 기간은 길었지만, 그 만큼 코딩의 시간도 매우길었던것 같다. 팀원간의 오고가는 의사소통, 배우면서 하는 코딩 등등 많은 문제가 있었던것 같다.
결과적으로, 두 프로젝트 다 개인적으로 실패했었다. 얼굴인식 부분은 설계나 취지는 좋았지만, 기본적인 알고리즘이나 핵심개념(얼굴인식에 관한)의 성능이 약하였던거 같고, 후자는, 개인적으로 설계는 분명했지만, 분석이 잘 되지 못했던것 같다.
교수님이 요구하는 사항은 랩미팅 마다 바뀌었고, 어쩌면 우리가 잘 못알아 들었던것 같았던것 같다. 매일보는 DFD에 질렸었고, 랩미팅 전에는 프로젝트 개발정도를 나타내틑 차트를 올리는 것만 생각했던것 같다.
프로젝트 관리나 혹은 소프트웨어 공학을 전공하고 수업을 듣는다고 해서 프로젝트 상의 위험이나 걸림돌이 없어지는건 아닌것 같다. 언제나 위험은 존재하며, 그것들은 눈에 보이지 않는다. 기한이 내일인데, 팀원이 아프거나 혹은 컴퓨터가 망가지는 일을 우린 미리 알수 없기때문이다.
지금 생각해 보면, 추억이고, 경험이지만, 그때 좀더 누군가가 분석과 설계에 대해서 그리고, 문서화 해 놓는것에 대해서 잘 알려주었다면, 좋았을것 같다. 직관적으로 떠오르는 아이디어나 알고리즘, 해결방법들을 아무렇게나 코딩했던 내 자신이 지금은 너무 부끄럽다. 예외처리 조차 하지 않았고, 어쩌면, 예외가 발생하지 않을거라고 생각했고, 그렇게 테스트 했었다.
학교 다니면서 느낀것은 프로그래밍 분석과 설계에 대한 부분은 누구도 가르쳐 주지 않는다는 것이다.정말 그 누구도 가르쳐 주려고 하지 않는다. 또한 학교다닐때는 그것들 보다는 누가 얼마나 어떤 프로그래밍 언어를 많이 알고 있느냐 하는것에 미쳐있기 때문에 기본기를 소홀히 하는것 같다
얼마전부터 프로젝트를 시작했다. 예전에 했던 프로젝트와는 달리 이것은 다른 사람이 이미 대부분의 시스템을 구현해 놓은 상태이며, 난 그중에 추가되는 일 부분을 구현하는 일을 맡았다. 워낙 시스템이 커서 그런지, 분석을 오래 하게 되는것 같지만, 하나하나 자세히 해야겠다는 마음가짐이 지루함을 짓눌러 버리고 있다. 왜 주석을 거의 달지 않았는지 만나면 꼭 물어보고 싶다. ㅠ 그리고 오늘 1차 설계를 마무리 했다. 제대로 요구사항을 반영했는지 궁금하기까지 하다. 상세한 설계는 아니였고, DFD와 필요한것들, 그리고 어떻게 해야하는지에 대해서 모식도로 그려보았다. 무려 5시간 동안. 그리 크지 않은 부분이라 짧은 시간만에 했지만, 박사님의 요구사항에 맞는지 나중에 가서 검토를 받아야 할것 같다.
요즘 느끼는 것은 그것이다. 제대로된 분석과 설계 그리고 문서화. 이것을 프로그래밍을 막 배우고 있는 입장이라면, 한번쯤 관심을 가져봤으면 좋겠다. 서점에는 정말많은 설계나 혹은 분석에 관한 책이 있으니, 읽어봤으면 좋겠다. 그리고 이게 왜 나한테 필요한지 상기하면서 읽으면 더 좋을것같다. 어떻게 프로그래밍 할것인가 하는 문제는 include에서 시작되지 않으며 그 문제는 어떠한 프로그래밍 언어에도 귀속되지 않는다고 생각한다.