안녕하세요 ! 고등학생 개발자인 저에 대한 경험을 공유하고자 포스팅을 해보려고 합니다. 아직 개발자로써 부족한 점이 많기도 하며 포스팅에 대한 경험이 없어서 많이 어색할 수 있다는 점 양해 부탁드립니다 !

저에 대해서

우선 저에 대해서 소개를 드리려고 합니다. 현재 저는 대덕소프트웨어마이스터고등학교에서 3학년으로 재학중인 01년생 오인서입니다. Web Front-End 개발을 공부하고 있습니다.

개발을 접하게 된 계기

저는 중학교때까지만 해도 개발에 도 몰랐던 평범한 고등학생이었는데 지루하게 살빠엔 새로운 것을 도전해보고 싶다라고 생각하고 일반 고등학교보다 다른 도전을 해보자 ! 해서 여러 길을 알아보게 되었습니다.

그 중에서 가장 흥미롭게 다가왔던 소프트웨어를 공부하기 위해서 대덕소프트웨어마이스터고등학교에 진학하게 되었고 소프트웨어 중에서도 무엇을 도전해볼까 하던 중, 선배들의 추천에 웹 프론트엔드에 접하게 되었죠.
흥미로웠고 새로운 경험인데 저에게 딱 잘 맞는다는 느낌을 가지게 되었습니다.

그래서 ! 고1 17년도 3월부터 현재까지 Web Front-End 개발자로써 달리게 되었습니다.

Front End에서 느낀 흥미

처음에 Web Front-End를 접했을 때에는 눈에 보인다는 점이 굉장히 흥미로웠습니다. 처음 눈에 보이는 UI를 구성하고 채워나갈 때 펜만 잡고 종이를 채워나갔던 과거와는 너무나 다른 산뜻함이었습니다.

처음 Front-End를 공부하며 저만의 페이지를 만들어나가면서 눈에 보이는 변화가 일어날 때마다 쾌감을 느끼게 되었으며, 내가 만든 페이지를 이용하는 사용자들과 소통을 할 수 있다는 생각이 저에게 큰 흥미로써 다가와주었습니다.

처음으로 참여한 프로젝트 DSM-DMS

제가 처음으로 참여한 프로젝트이자, 현재까지도 서비스되고 있는 프로젝트는 DSM-DMS입니다. DSM-DMS는 대덕소프트웨어마이스터고 기숙사 관리 시스템의 약자로, 모든 학생이 기숙사 생활을 하는 저희 학교에서 매번 수기로 진행하던 기숙사 관리를 온라인으로 바꿈으로써 학생들과 선생님들의 편의를 위해서 진행되고 있는 프로젝트입니다.

이 프로젝트는 처음으로 참여한 프로젝트이자, 교내에서 모든 학생들과 모든 사감선생님들이 사용하는 서비스입니다. 서비스는 , IOS로 지원이 되고 있고 ServerDesign까지 각 분리된 내부 팀으로 이루어져 있습니다.

PM과 각 팀장, 팀원들로 구분되어 있는 직급 체계와 정기 회의와 지속적인 유지보수와 리팩토링으로 나름대로 구조와 체계가 잡혀있는 프로젝트 팀이라고 자부할 수 있습니다. (사실 제가 첫 구성 멤버는 아니지만요 ㅎㅎ...)

저는 현재 웹팀의 팀장으로 활동 중이고 저희 웹팀은 기본적으로 React를 사용하고 있습니다.

프로젝트 구성

모든 팀원들이 참여하는 전체 회의에서 기능 명세데이터 명세, 그리고 지난 버전의 DSM-DMS에 대한 회고, 그리고 설문을 통한 학생들과 선생님들의 추가 요구사항을 통해서 새로운 버전의 DSM-DMS를 기획하며 문서화합니다.

각 팀 내부의 제안이나 요구를 정리하여 각 팀장들과 PM이 참여하는 팀장 회의에서 팀들 내부에서 필요로 하는 것을 공유하며, 개발 기간에는 각 팀의 진행성과를 공유합니다.

팀 내 회의에서는 Github CommitPull Request를 지속적으로 검토하며 코드 리뷰와 각 팀원들이 프로젝트에 대한 요구를 모읍니다.

프로젝트 진행 과정

가장 우선적으로 진행되는 것이 기획입니다. 당연하다시피 프로젝트를 진행하는 것에 가장 우선적으로 기획을 통해서 프로젝트의 요구사항필요한 기능들을 정리하며 문서화합니다. 교내에서 생활하는 선생님과 학생들이 사용하는 서비스인만큼, 한정된 공간의 사람들이고 그 사람들의 요구사항을 녹여내 기획을 진행하기 위해서 설문조사를 애용하고 있습니다.

기획이 끝남과 동시에 저희는 프로젝트 일정을 설계합니다. 주로 간트 차트를 사용해서 전체 팀들이 해야할 일들을 기간을 정해 설계하며, 각 팀내에서 별개로 팀원별로 해야할 일들을 기간을 정하여 설계합니다.

그 이후 주어진 일정에 따라서 개발과 테스팅을 진행합니다. 각 팀 내에서 각 팀의 기준으로 파트를 각 팀원들에게 배분하여 진행합니다. 개발 진행 중 발생하는 Pull Request는 주기적으로 확인하며 회의에서 다같이 코드리뷰를 하기도 하곤 합니다. 그 과정에서 자체 테스팅을 진행하는데 Testing Tool을 사용하기도 하지만 능숙하게 다루기 어려울 경우 오히려 개발 능률을 떨어뜨릴 수 있다고 판단해서 팀마다 별개로 진행하고 있습니다. 하지만, 기능이 오류는 없는지 혹은 사용 흐름에 문제는 없는지에 대한 알파 테스트필수로 진행하고있습니다.

저희 프로젝트는 한 개발 시즌에 한 주 정도의 크런치 모드를 하고 있습니다. 저희가 의미하는 크런치는 일반적인 크런치 모드와는 조금 차이점이 있는데, 저희의 크런치 기간에는 학교측의 동의를 구해 수업시간에 프로젝트 팀원들이 모두 모여 학교의 모든 일과 시간에 개발을 하는 것을 의미합니다. 야간이나 주간에는 다시 자율적으로 개발을 진행합니다. 이 기간동안에는 각 팀의 상황을 서로 공유하기도 하며 팀 간의 소통을 위주로 프로젝트에 충분히 집중할 수 있는 시간으로 사용하곤 합니다.

그 후 베타 테스트를 진행합니다. 서비스를 사용하는 모든 사용자를 대상으로 진행하며 선택으로 진행됩니다. 대부분의 경우 서비스의 중요도가 떨어지는 시기개학 시즌방학시즌에 주로 진행하곤 합니다. 이를 정상적으로 통과하고 오류가 발생하지 않는다면 정식적으로 오픈하여 사용하며, 베타 테스트 기간 중 오류가 발생할 경우 서비스 내의 버그 신고기능에 신고하게 될 경우 Slack에 공지가 발생하여 빠른 시일내로 수정을 진행합니다.

이 모든 과정을 마치게 될 경우 정식적으로 서비스를 제공하기 시작하며, 버그 및 요구사항을 토대로 지속적인 유지보수를 진행합니다.

프로젝트 진행 중 느낀점

나름대로 체계가 잡혀있고 정해진 구조가 있는 프로젝트로써, 교내에서 실제로 지원을 받으며 꽤나 큰 입지를 가진 프로젝트라서 그런지 더욱 책임감을 느끼게 되었고 그만큼 성장을 할 수 있었던 계기였습니다. 선배들과 시작하여 매년 새로운 후배들과 함께하는 프로젝트로써 서로의 지식을 공유하기도 하고, 서로의 코드를 보면서 생각하지 못했던 로직이나 알고리즘을 발견할 수 있었고 그럴때마다 자극이 되는 기분이었습니다.

실제로 사용자가 존재하는 프로젝트이기도 하며 요구사항이 수시로 발생하고 그것에 대응하기 위해서 고민하게되고 팀원들과 주기적인 회의도 하며 팀원들과 함께 다같이 더 좋은 서비스를 만들어 나아가기 위해서 항상 노력한 프로젝트여서 2년전부터 현재까지 진행하고 있는 프로젝트는 저의 성장에 큰 도움을 준 프로젝트입니다. 물론 항상 즐겁지만은 않기도 했지만 새로운 경험과 흥미를 불러와주고 프로젝트를 진행하면서 보았던 사용자들이 서비스를 사용하고 있는 모습을 보면 뿌듯함도 느끼게 되는 계기였습니다.

처음으로 프로젝트 내에서 팀 단위로 분할하여 진행했던 만큼, 소통이라는 것에 대해서 더 큰 중요성을 느꼈습니다. 여러가지 의견을 모으는 데에 있어 차이점이 있을 수도 있고 관점이 다른 부분이 있다는 것을 느끼며 조율하는 것과, 참신한 아이디어들을 공유할때면 소통이 높은 수준의 프로젝트로 만들 수 있다는 것, 그리고 각 팀간의 특정 기능에 대해서 이해를 다르게 할 경우 생기는 번거로움을 사전에 방지할 수 있다는 점 또한 느끼게 되면서 잦은 소통이 좋은 품질의 서비스와 팀원들간의 화합을 만들어 낸다는 것을 깨달았습니다.

끊임없는 도전

현재에는 Block Chain을 공부하는 다른 친구와 새로운 프로젝트를 기획하려고 준비 중이며, 기회가 된다면 Back-End에도 도전해보고 싶습니다.

React뿐만 아니라 Vue에도 관심을 가지고 있고 RxJS, Clean Architecture, Functional Programming 등 여러가지에 도전해보려고 노력 중이며 더 높은 개발 실력과 수준으로 더 많은 사람들에게 웹으로써 다가가고 싶습니다.


마무리하며

별거 아닌 고등학생 개발자지만 저의 경험을 정리하고 공유해보고 싶다는 생각을 하여서 포스팅을 결심하게 되었습니다.

필력이 썩 좋지 못하고 그렇다고 개발에 대해서 많은 경험을 담아내지는 못했지만, 긴 글 읽어주셔서 감사합니다.