저는 소프트웨어개발 분야에 가장 자신 있습니다. 어렸을 때부터 컴퓨터에 관심이 많았던 저는 대학 진학할 때 개발자가 되어야겠다고 생각하며 전공을 선택하였습니다. 메카트로닉스는 하드웨어와 소프트웨어를 같이 배워서 소프트웨어가 하드웨어에 실제로 어떻게 적용되는지 알 수 있는 이점을 가진 학과였습니다.
저는 차근차근 하드웨어부터 시작하여 컴퓨터에 관하여 점점 더 배워나갔습니다. C언어 및 각종 센서와 마이크로프로세서 제어에 관하여 배운 후 이 지식을 사용하여 시계를 만드는 마이크로프로세서제어라는 수업이 있었습니다.
기본적인 기능을 하는 시계를 만드는 프로젝트였는데 저는 기본기능에 만족하지 못하고 추가 기능을 하나 둘 추가하였습니다. 교과 과정의 책 내용으로는 부족하다고 생각하여 도서관에서 마이크로프로세서에 관한 모든 책을 찾아보고 하나씩 적용해가며 스톱워치, 타이머, DOT MATRIX를 사용한 오전, 오후 표시기능 등을 추가하였습니다. 그 결과로 저는 그 과목에서 A+이라는 좋은 성적을 받을 수 있었습니다.
이후에 중국으로 대학을 갈 좋은 기회가 생겨서 유학을 가게 되었습니다. 저는 다른 컴퓨터언어와 정통 소프트웨어를 배우고 싶어서 소프트웨어공학과를 지원하였습니다. 갑자기 다른 언어를 사용해서 처음에는 힘들었지만 타고난 탐구심과 열정으로 금방 새로운 언어를 습득할 수 있었습니다. 특히 MFC를 이용한 게임을 만드는 프로젝트에서 빛을 바랐습니다.
사천성게임과 오목게임 둘 중 한 가지를 선택하여 제작하는 프로젝트였는데 저희 조는 사천성게임을 선택하여 진행하였습니다. 사용자가 게임을 할 수 있는 인터페이스만 만들면 성적을 받을 수 있었습니다. 그러나 저는 MFC의 여러 가지 기능에 더욱 호기심을 가지고 추가 기능을 구현해 나갔습니다.
MFC의 추가 기능을 사용하기 위해 서적을 찾던 중 중국어가 아직 미흡하여 한국 온라인 서점에 중국으로 해외 배송하여 책을 사기도 하였습니다. 끈기를 가지고 2,000쪽이 넘는 책을 읽으며 하나씩 구현한 끝에 게임 난이도 조절, 콤보 기능을 구현하고 FMOD 엔진을 사용하여 효과음 및 배경음을 구현하여 프로젝트 발표 당시 큰 관심을 받아 높은 점수를 받을 수 있었습니다.
소프트웨어공학과에서 저는 C++, JAVA, C#과 여러 가지 웹 언어들을 배우며 각 언어의 장점 및 단점 등을 나름 평가할 수 있게 되고, 자료구조와 알고리즘을 배우며 코드의 효율성에 관하여 알게 되었고 소프트웨어 개발 방법론, 테스팅, 패턴 디자인, SOA 등을 배우며 소프트웨어 전체적인 틀을 알게 되었습니다.
졸업 후에도 저는 소프트웨어개발 관련 공부에 관하여 소홀히 하지 않았습니다. 개발자 커뮤니티에서 JAVA그룹스터디를 구하여 꾸준히 공부해 나갔습니다. 그룹스터디는 주최하시는 분이 현직 개발자인 덕분에 교과 과정에 없는 여러 가지 노하우를 배우고 또한 다른 스터디원들과 자신의 코드를 주제로 토론하고 보완해 주는 시간이었습니다.
조금은 지식에 자신감이 생겨서 코드 스프린트라는 온라인코딩대회에 참여해보았다가 좌절감을 맛보기도 하였습니다. 하지만 저는 실망하지 않고 꿋꿋하게 프로그래밍 공부를 하고 있습니다. 이러한 저의 소프트웨어에 관한 열정과 노력은 그 누구에도 뒤지지 않는다 생각합니다.