"좋은 프로그래머"가 되는 길.
1. 언어의 문법 및 특성을 충분히 이해한다.
2. 알고리즘과 자료구조를 이해한다.
3. 의사소통의 기본이 되는 UML을 이해한다.
4. 디자인패턴과 프레임웍을 이해한다.
5. 프로그래밍은 단순한 기술적 기교가 아니다. 천재적인 프로그래머들의 사상과 해법, 철학적 배경을 이해한다.
(원문게시일 : 2006.01.01)
프로그래머는 해당 분야의 관련 시스템 구축의 직접적인 역할을 수행하는 인력으로 군대로 말하자면 보병에 해당한다.
현재 시스템 구축 관련한 여러가지 새로운 아키텍쳐, 방법론, 툴 등이 도입되고 있고, 그 추구하는 바가 자동화이기 때문에 프로그래머의 역할은 점점 줄어들어 궁극적으로 없어질 것처럼 보이지만 구축 시스템의 품질을 좌우하는 것은 최종적으로 프로그래머의 손에 달려 있다.
숙련된 프로그래머에 의해 원하는 수준의 프로그램, 시스템이 완성되고 제 할 일을 수행할 수 있는 것이다.
숙련된 프로그래머가 되기 위해서...
숙련된 프로그래머란 주어진 환경 요건에 최적의 결과를 기대할 수 있는 시스템/프로그램을 잘 작성하는 프로그래머를 일컫는다.
이는 해당 프로그래머가 가진 소질, 역량과도 연관이 있으나 일반적으로 어떤 교육을 받았고, 기본적인 또는 보완적인 지식을 가지고 있는지, 그리고 어떤 경험을 했는가에 따라 많은 차이가 있다.
"좋은 프로그래머"가 되는 길.
1) 언어의 문법 및 특성에 대하여 충분히 이해한다.
2) 알고리즘과 자료구조
알고리즘은 앞선 많은 천제적인 수학자들이 문제를 해결하는 방안에 대하여 체계적으로, 수학적으로 정리를 한 것으로 이를 이해하고 활용할 수 있어야 원하는 프로그램을 쉽고 잘 작성할 수 있다.
프로그램이란 컴퓨터가 주어진 자료(or 데이터)를 처리하는 과정을 작성하고 관련 데이터를 조작, 처리하는 것으로 자료구조는 이러한 데이터를 조작하는데 필요한 데이터의 구조체이다.
3) 의사소통
좋은 프로그래머가 되기 위해서 프로그램만 잘 하면 되는가? 그건 아니다.
프로그래머는 구축대상의 시스템 설계를 컴퓨터 환경에 구현하는 사람으로 건축의 관점에서 보면 설계도면의 내용을 실제적으로 자르고, 쌓고, 붙이고 해서 구체적으로 만드는 사람이다.
설계도면에 해당하는 공통의 표기법 - 현재 가장 보편적으로 적용되고 있는 표기법은 UML(Unified Modeling Language)로 설계자가 작성한 UML을 제대로 이해하고 이를 구현하면서 발생하는 수정 사항에 대하여 해당 설계서를 UML을 사용하여 수정하여 설계자와 의사교환을 하는 기술이 필요하다.
4) 디자인패턴과 프레임웍
디자인패턴은 반복적으로 발생하는 문제에 대하여 이를 해결하는 방안에 대한 해법을 제시하는 것으로 나름대로의 검증된 방법으로 사용할 수 있다.
그러므로 디자인패턴을 개념, 종류, 문제 발생 환경(or 요인) 및 문제를 이해하고 이를 해결하는 방안에 대하여 익힌다면 실전에서 이와 유사한 문제에 부딪혔을 때 관련 디자인 패턴 및 이의 응용으로 헤쳐나갈 수 있다.
이런 측면에서 디자인패턴은 고급 프로그래머(및 설계자)로서 반드시 숙지하고 있어야 하는 부분이다.
현재까지 작성된 디자인패턴은 그 종류만 하더라도 수백가지가 있을 정도로 넘쳐 나는 실정이다.
이런 상황에서 어떤 패턴이 실질적으로 도움이 되는지를 알고 다른 부분은 그때 그때의 상황에 맞게 찾아서 적용하는 것이 바람직하다.
디자인패턴을 시작하는 이는 “Design Patterns: Elements of Reusable Object-Oriented Software”를 시작으로 디자인패턴의 입문을 시작하여 Java/J2EE 환경에서 프로그램을 작성할 때 유용한 여러 디자인패턴을 모아놓은 “Core J2EE Patterns: Best Practice and Design Strategies”까지 전체적으로 훑어볼 필요가 있다.
5) 그 외...
프로그래밍은 단순한 기술적인 기교가 아니라 다분히 철학적인 요소가 많다.
그러므로 프로그래머로의 혜안을 가지기 위해서는 프로그램에 직접적인 부분. 예를 들어 언어, How to... 등에만 집중하지 말고 주변 즉, 천재적인 프로그래머들의 사상, 해법 등을 기술한 여러 책들을 볼 기회를 가지기 권한다.
이런 것들은 지금 당장은 큰 도움이 안될 수도 있지만 시간이 지나면서 알게 모르게 프로그래머로의 역할에서 큰 비중을 차지할 것으로 본다.
황성훈 (한국썬마이크로시스템즈 이사)