실무 프로그래밍에서 중요한 점


Other/Experience  2019. 6. 3. 22:26

안녕하세요. 명월입니다.


저는 개발 경력이 현역으로 약 10년 차를 넘어 11년 차로 접어들고 있습니다. 여기까지 오니깐 이제 좀 프로그램 개발을 어떻게 해야 하는 지 감이 오는 듯합니다.

저의 경우는 경력 초반에는 C언어나 C++로 임베디드 개발이나 프로그램 애플리케이션을 만드는 개발을 조금 조금 했었는데 현재는 100% 웹 개발만 하고 있습니다.

그래서 웹 개발에 관한 느낌으로 실무 프로그래밍에서 중요하다고 생각하는 걸 정리해 보겠습니다.


사람마다 기준이 틀리고 목표가 다르기 때문에 제 글이 반드시 정답이라고 할 수는 없습니다.

그러나 우리가 프로그램 의뢰나 요건 정의가 왔을 때, 가장 최우선은 기간 내에 물건을 만들어 내고 요구 사항대로 납품이 되는 것이 가장 중요하다고 생각됩니다.

물론 품질이나 앞으로의 관리를 의한 소스 정리, 가독성, 문서화 등도 중요하지 않다고 할 순 없지만 물건이 제대로 납품이 되지 않으면 모든 건 의미가 없다고 생각합니다. 그럼 기간 내에 물건을 제대로 만들기 위한 기술이 필요합니다.


물건을 가장 제대로 만들기 위해서는 요구 사항 그대로 내가 일일히 신경써서 개발하면 분명 제대로 만들어질 것입니다. 그러나 시간이라는 것은 무한정으로 주어지는 게 아니기 때문에 오픈 소스 코드를 쓸 수 밖에 없습니다.

예를 들면 포탈 시스템을 만든다고 하면 가장 중요한 건 시간 스케줄링 기능과 통계 기능이라고 할 수 있는데 이럴 때, 우리가 그래프와 달력 기능을 하나하나 만든다고 하면 시간이 엄청나게 걸릴 수 있습니다.


물론 사양에 따라 크게 달라질 것입니다. 정말 단순한 사양이면 오히려 만드는게 더 빠르고 편할 수 있습니다. 그러나 대부분은 fullcalendar와 highgraph던가 아니면 google 그래프등의 오픈 소스를 사용하지 않을 수 없습니다.

단순한 UI를 떠나서 프로그램을 만든다고 할 때 자바의 경우는 Spring framework를 사용하고 C#의 경우에는 MVC Framework를 사용할 수 있습니다.


제가 이야기하고 싶은 것은 프로그램 실력도 중요하고 알고리즘 이해도나 이런 것도 분명 중요하지만 제 생각은 이런 오픈소스를 얼마나 많이 이해하고 있는 것도 꽤 중요하다고 생각할 수 있습니다.

오히려 실무에서는 오픈소스 사용법과 라이브러리를 수정할 수 있는 능력을 가지고 있다고 하면 그것이 더 도움이 될 것이라고 생각됩니다.


공부할 때는 솔직히 크게 관심을 안 가질 수 있는 부분이기도 하지만 실무에서는 오픈 소스의 이해도에 따라 프로젝트의 질이 달라질 거라 생각됩니다.


그 다음은 업무에서는 의사소통과 문서화의 능력도 꽤 중요하다고 생각됩니다. 업무에서 하는 개발은 혼자서 하는 경우는 없을 것입니다.

어떻게든 나 이외의 매니저가 있을 수 있고 관리자가 있을 수 있습니다. 그리고 고객도 있겠습니다. 내가 한 작업을 어떻게 했다라는 것을 다른 사람에게 전파하는 것이 실무에서는 꽤 중요합니다.

그런 것을 전달하기 위해서는 기본적으로 엑셀이나 파워포인트 등의 워드 프로세서의 프로그램을 이용하는 경우도 있고 CI 툴이던가 Jira나 Redmine 등의 프로젝트 관리 툴를 사용하는 경우도 있습니다.


물론 프로그램을 만들 때는 프로그램을 만드는 것도 중요하지만 이런 툴을 이용하는 것들도 무시할 수 없습니다. 실제로도 프로그램을 엄청 잘 하는 것보다 업무에서 이런 툴을 잘 쓰는 사람들이 더 인정받고 일을 잘하는 것처럼 보입니다.


저도 전공을 졸업했지만 우리가 학교에서는 보통 알고리즘이나 패턴, 프로그램 언어, 공정등을 많이 배웁니다. 학교에서 fullcalendar 오픈 소스라고 따로 공부하진 않을 것입니다. Jira 사용법이라고 따로 공부하지는 않을 것입니다.

그래서 천상 이런 것들은 회사로 입사해서 실무로 와서 배워야 하는데 막상 또 신입으로 가면 배워야 할게 엄청 많습니다.


가능하면 이런 것들도 실무 전에 익히고 있으면 어떨까 하는 생각에 끄적여 봤습니다.