.png)
입사 후 처음 진행한 프로젝트의 대한 내용이다 !
아직 진행 중인 프로젝트로 지금까지의 결과와 배운점을 정리한 글이다.
우리 회사는 2,3,4,5 층에 사무실이 있고 2층과 B1층에 회의실이 있다.
회의실을 사용하려면 회의 명과 회의 시간, 회의 주최자 이름을 프린트해서 회의실 문 앞에 붙여둬야했다.
내가 회의실을 예약하고 싶으면 문 앞에 붙어있는 내용들을 확인하고 비어있는 시간에 종이를 붙여 예약해야했고 사무실에서 확인할 방법이 없었다.
IT 기업인데 매우 아날로그적이고 불편한 방법이었다..
대표님이 타사에 미팅을 가셨다가 태블릿을 이용해 회의실를 관리하는 프로그램을 보셨는데, 우리 회사에도 도입하고 싶다고 하셨다.
실제 견적을 받아봤으나 필요 없는 기능도 너무 많고, 구축형에 견적이 너무 비싸서 간단한 웹사이트로 직접 개발하기로했다.
우리팀은 생초보 주니어 3명으로 구성된 팀이다. 프로젝트를 어떻게 실행하야할지 매우 막막했는데, 본부장님이 직접 한스텝씩 알려주시면서 이끌어주셨다.
나도 개발직으로 근무하는건 처음이고 학원에서 프로젝트를 진행해 봤기 때문에 본부장님의 가르침이 많은 도움이 됐다.
본부장님 감사합니다 !
우리의 클라이언트는 회사이자, 본부장님이었다.
본부장님은 우리에게 어떻게 페이지를 구성할 것인지 러프하게 준비해 발표하라고 하셨다.
팀원들과 세 개의 섹션으로 나눠 준비했고, 나는 메인화면과 예약하기 페이지를 담당했다.
간단한 발표 후 본부장님께서 원하는 기능을 추가로 말씀해주셨고 해당 기능을 추가하여 개발하기로 했다.
이 과정에서 개발자의 입장이 아닌, 고객의 입장에서 내 프로젝트(프로그램)를 설명하는 방법을 배웠다.
본부장님은 이미 오랫동안 개발을 하셨고 우리 회사의 CDO이시지만 이 날은 개발을 하나도 모르는 고객처럼 미팅에 임해주셨고, 미팅 후 많은 피드백을 주셨다.
개발자의 시선에서 PPT를 진행해서는 안되며 직관적이고 쉽게 진행해야 한다는게 핵심이었다.
본부장님과 미팅 후 피드백 주신 내용의 연장선이다.
우리의 PPT 내용에 개발자의 시선과 유저의 시선이 섞여있었고, 두 가지 시선은 프로젝트 초반과 PPT에서는 반드시 구분되어야 한다는 것이다.
유저의 시선 = 실 세계 / 개발자의 시선 = 논리적 세계로 나누어 프로젝트를 준비해야한다고 하셨고 아래 영상을 보여주셨다 !
샌드위치를 만드는 법 a.k.a 샌드위치 코딩 영상
자녀들에게 샌드위치 만드는 순서를 써오라고하고 그대로 샌드위치를 만드는 영상인데, 본부장님의 말씀이 한번에 이해되는 영상이었다.
위 영상을 참조해 실 세계에서 어떻게 홈페이지를 구성할 것인지 정말 세세하게 적어나갔다.
컴퓨터를 켜서 인터넷 브라우저를 작동시키는 부분까지...ㅎ
회의를 예약하는데 10단계면 충분했는데 영상을 참고한 후에는 30단계가 훌쩍 넘어갔다.
실 세계의 시나리오를 구성할 때는 쉽게 생각하되 세세하게 정리해야한다.
주석 없이 이해할 수 있을 정도로 정리하는게 좋다.
잘 정리된 실 세계의 시나리오가 있어야 논리화하여 논리적 세계를 구성할 수 있기 때문이다.
시나리오별로 나눠서 실 세계를 구성했다. 예를 들면
#1 로그인하기
#2 로그인 후 메인화면에서 예약하기 화면으로 이동하기
#3 회의실 예약하기
등 시나리오를 나눠서 구성했고, 논리적 세계도 동일하게 구성했다.
이 과정에서 많은 피드백을 받았고 시간도 많이 사용했다.
실 세계를 바탕으로 논리적 세계를 구성할 차례이다.
실 세계의 각 단계에서 어떤 인스턴스, 함수, 데이터가 필요한지 정리하는 것이었다.
각 단계마다 인스턴스, 함수, 데이터를 정리하다보면 겹치는 부분이 있고 단계끼리 연결되어 상호작용 하는 부분도 있었다.
그런 부분들을 잘 정리해 코딩하며 발생할 수 있는 문제점이나 에러를 사전에 줄여나가는 것이었다.
물론 프로젝트를 진행하며 기능이 추가되고 수정하면서 내가 구성한대로 모든게 이루어지지는 않았지만 코딩할 때 큰 도움이 되었고, 내가 논리적 세계를 더 잘 구성했으면 좋았을 것 같다는 생각도 했다.
논리적 세계를 구성하면서 용어 정리도 병행했다.
내가 사용한 용어의 의미와 팀원들이 이해한 의미가 다를 수 있기 때문에 정리가 필요했기 때문이다.
단어라는게 업계, 포지션, 직책마다 전달하는 의미가 다를 수 있어 정리하여 사용하는게 중요하다.
사전에 정리해두고 데이터를 쌓아가면 협업을 할 때 큰 도움이 된다.
미리 논리적 세계를 구성해둬서 어떤 데이터가 필요한지 쉽게 정리가 되었다.
정리된 데이터를 기반으로 테이블과 칼럼, 뷰를 정리했고 DB를 생성했다.
다섯가지 단계로 프로젝트를 준비하는 과정을 정리해봤다.
실제로 한 단계마다 2~3일 씩 시간이 소요되었고 기존에 학원에서 프로젝트를 준비할 때보다 꼼꼼하게 준비했다.
학원에서 프로젝트와 가장 다른점은 실제 고객이 있었고 고객의 니즈를 정확하게 파악하고 구현해야 한다는 점이었다.
본부장님이 지속적으로 피드백을 주셨고 잘못된 부분들을 수정해주셨다.
사실 이 사이에 어떤 언어와 프레임워크, 네트워크 및 보안, DB로 개발할 것인지 고려되어야 하는 부분이 더 있었다.
우리는 이미 구현되어있는 사내 어드민 위에 개발을 하는거라 이 과정을 스킵했지만 이 부분도 매우 중요한 부분이라고 하셨다.
다음 과정부터는 안쓰는 서버를 이용해 이 부분도 추가해서 진행해보자고 하셨고, 벌써 기대가 된다 !