최대한 기술적인 부분을 기재하려고 노력했습니다. 포트폴리오는 프로그램 구현동영상으로 만들었고..
많은 조언 부탁드립니다.
-----------------------------------------------------------------------
현재 방송통신대학교 1학년 재학 중입니다. 작년에 한국으로 귀국하기 전까지 워홀로 뉴질랜드를 다녀왔으며 훌륭한 경험이었다고 생각합니다. 귀국하자마자 언젠가 흥미를 가지고 있었던 프로그래밍 공부를 시작하게 되었으며 무에서 유를 창조하는 것에 성취감을 느꼈습니다.
프로젝트
-사용언어 :C++
-참여인원 :4명
-역할 :PM
-개발기간 :4개월
FlyingDuckChart는 누구나 손쉽게 NS-Chart를 그려서 문서화 및 관리를 할 수 있는 응용프로그램 이며 MFC 라이브러리를 사용했습니다.
업무능력
제가 생각하는 개발자로서 필요한 능력은 다음과 같습니다.
1. 팀 작업에 중점을 두는 것
2. 팀원들과의 대화를 통해 목표를 정하는 것
3. 생각을 정리 후 문서화 작업을 하는 것
-PM으로서 프로젝트를 진행하며 느낀 점은 팀원들마다 생각하는 기능구현 모델이 다 다른 것입니다. 팀원들과의 대화를 통해 모델을 일치시키고 일치시킨 모델을 정리하여 시나리오 작성->Class Diagram->Sequence Diagram 으로 문서화 시킨 후 Google Drive에 업데이트하며 문서를 관리했습니다.
4. 설계의 간소화를 위해 노력하는 것
5. 상황에 맞는 적절한 디자인 패턴을 적용하는 것
-프로젝트에서 순차도형, 선택도형, 반복도형, 케이스도형의 중복되는 attribute와 Method를 묶어 상속 및 추상클래스로 적용시켰습니다. 선택도형, 반복도형, 케이스도형 같은 경우엔 도형 안에 도형이 들어 가야하는 디자인패턴의 Composit Pattern이 적용되어야만 했던 알고리즘 인데 이 문제에 처음 봉착했을 때 며칠 동안 고민했었고 디자인패턴을 알게 되어 찾아보던 중 Composit Pattern을 찾아 적용시켰습니다. 이 문제를 해결했을 때의 성취감은 잊지 못할 것이며 다른 디자인패턴(State, Visitor, Factor Method)도 찾아 적용시켜 보았습니다.
6. 디버깅 및 검토
-알고리즘을 구현할 때 처음 모델구축->시나리오->NS-Chart->검토 과정을 거치며 논리오류를 방지했으며 검토까지 끝난 후 코딩을 하며 책임감 있게 알고리즘을 구현하려고 노력했습니다.
7. 툴 활용능력
-FlyingDuckChart를 Visual Studio 와 C++로 만들었다고 해서 다른 툴을 활용하지 못한다는 의미는 아닙니다. 예전에 주소록 프로젝트를 만든 적이 있는데 그때 만들어놓은 알고리즘(NS-Chart)를 바탕으로 C로도 만들어보고 C++ 그리고 JAVA로도 만들어 보았습니다. NS-Chart를 보며 각 언어의 문법만 찾아서 코딩을 했었는데 이때 느낀 것이 “언어는 도구에 불과하다”입니다.
8. 라이브러리 및 자료구조에 대한 지식
-배열(Array), 연결리스트(Linked List), 이진트리(Binary Tree)를 템플릿 라이브러리로 제작해보았고 실제 이 프로젝트의 자료구조로 만든 배열을 사용했습니다. 위의 자료구조들을 직접 제작해보며 Sort나 Search를 할 때 함수포인터의 이용, 배열의 경우 각 Sort 알고리즘(Selection, Bubble, Insert, Merge, Quick)의 시간복잡도 비교, 연결리스트와 이진트리의 경우 Node클래스와 이어주는 Nested Class 와 Friend Class의 사용 ,그리고 이진트리의 순환호출(재귀)을 직접 적용해보며 원리를 이해하였습니다.
입사 후 포부
뉴질랜드 귀국 후 프로젝트 완성하기 까지 1년여의 시간동안 성장했다고 자부합니다.
코딩하기 전에 설계를 먼저 했으며 설계하는 과정에서 논리오류를 줄였고 앞으로도 이런 철학을 가지고 계속해서 발전해 나가고 싶습니다. 개발하는 과정에서 겪게 되는 성취감을 즐기고 싶습니다. 감사합니다.