내가 개발자가 되기로 결심하게 된 이유
원래 나는 대학교 졸업을 앞둔 4학년 학기 초까지만 해도 전공을 살린 사회복지사의 길을 생각하고 있었다. 사람 만나는 것을 좋아하고 사회복지사의 길이 내 성향과도 잘 맞았기 때문에 그렇게 생각했던 것 같다. 원래부터 하고 싶은 것이 정말 많았던 사람이기에 대학교 1학년 때부터 4학년이 끝나는 시점까지 정말 바쁘게 산 것 같은데 4학년 때까지만 해도 참여했던 교내/대외활동이 20개정도 된다. 수많은 서포터즈 활동과 아르바이트, 동아리 활동이 나에게는 정말 큰 경험이 되었고, 앞으로 내가 어떤 것을 하고 싶은지 다시한번 깊게 생각해볼 수 있는 계기를 만들어주었다.
스타트업 서포터즈 활동을 하면서 웹사이트 전반적인 것에 관심을 가지게 된 것이 첫번째 이유이다. 각각의 기업에서 운영하고 있는 웹사이트를 보며 웹은 어떻게 돌아가는걸까? 이런 기능이 추가되면 사람들이 조금 더 편하게 이용할 수 있을 것 같은데? 등의 다양한 생각을 하게 되었는데 이러한 생각이 개발이라는 길을 더 궁금하게 만들었던 것이다. 두번째로는 4학년 학기 초쯤 스타트업? 에서 아르바이트를 할 수 있는 기회가 주어졌는데 그 때가 개발자와의 첫 만남이었다. 우리 쪽에서는 어플을 만들기 위한 기획과 준비작업을 하고 있었고 프리랜서 개발자분과 이야기를 하며 어플을 출시하기 위해 발빠르게 달려나갔다. 하지만 여기서 문제는 개발자분이 시간약속을 제대로 지켜준 적이 거의 없다는 것이었다. 평소에 컴퓨터 쪽에 관심이 많았던 나에게는 어디서 문제가 발생했고 어떤 이유 때문에 시간 약속이 제대로 지켜지지 않는 것인지에 대한 의문이 들었다. 그래서 이 때부터 본격적으로 개발자가 하는 일과 협업 방식 등에 대해 알아보기 시작했는데 하나의 문제를 해결해나가는 과정에서 사람들과 끊임없이 커뮤니케이션하며 최종적으로 문제가 해결된 결과물을 완성시키는 것이 내가 4년동안 다양한 활동을 하면서 겪어온 상황과 비슷하게 느껴졌다. 하나의 문제를 해결해나가기 위해 의견을 조율하고 최종적으로 완성된 결과물을 보여주기까지의 협업하는 과정에서 항상 흥미를 느꼈었는데 이 과정 역시 그렇게 느껴졌던 것이다. 개발의 여러 분야 중에서도 눈에 보이는 것들이 동작할 수 있도록 만들어나가는 웹 프론트엔드가 내 성향과 가장 잘 맞다는 생각이 들었고 개발자라는 길은 20대의 나에게 새로운 경험이자 도전이 되었다. 공부를 하면 할수록 개발이라는 세계는 나에게 새로운 경험과 호기심을 가져다 주었는데 이전까지 이용했던 웹사이트들이 어떻게 돌아가는지 알게 되면서 보고 생각할 수 있는 것도 많아졌다.
항해 99 6기를 시작하며 - 왜 항해 99여야 했는가?
개발자의 길을 가야겠다고 결심하게 되면서 비전공자인 내가 개발자가 되기 위해서는 어떤 과정이 필요하고 어떤 것을 공부해야하는지를 꼼꼼하게 알아보기 시작했다. 비전공자였던 내가 선택할 수 있는 길은 총 3가지 정도로 생각해볼 수 있었는데 국비지원과정을 수료하거나 부트캠프를 통해 준비하는 것, 대학을 다시 가는 것이었다. 이 중에서 국비지원과정과 부트캠프 중에서 엄청 고민하게 되었는데 각각의 장단점을 꼼꼼하게 정리하여 비교해보면서 최종적으로 항해99를 선택하게 되었다. 내가 최종 선택을 하기까지 3가지를 중점적으로 비교하며 알아봤는데 가격, 커리큘럼, 협력사 및 취업지원에 관한 것들이었다.
오프라인 과정을 선호했던 나에게 항해99의 게더 운영방식은 오프라인과 다를 것이 없다는 판단을 내리게 해주었고 가격적인 면에서도 이제 막 대학을 졸업한 내가 맞출 수 있는 적절한 가격이라는 생각이 들었다. 타 부트캠프와 비교했을 때 가장 합리적이라는 생각이 들었고 커리큘럼을 비교해봤을 때도 일방적으로 강의를 보게 하는 주입식 교육방식이 아닌 실제 프로젝트와 스스로 공부하는 힘을 길러주는 커리큘럼으로 구성되어있다는 것 자체가 너무 마음에 들었다. 마지막으로 협력사도 하나씩 모두 들어가보면서 어떤 회사들과 연결이 되어있는지까지 꼼꼼하게 보고 결정할 수 있었는데 항해 99 협력사로 등록이 되어있는 곳들은 모두 괜찮은 회사들인 것 같았다. 그래서 고심 끝에 항해 99를 선택하게 되었는데 1주차가 지나고 2주차에 들어온 지금 시점에서도 항해를 선택하길 잘한 것 같다는 생각이 들었다.
항해 99 1주차 미니프로젝트
프로젝트 기간 : 2022.03.07~2022.03.10 (총 4일간)
프로젝트명 : 스파르타 항해 나침반 (H-Compass)
기획배경
99일의 항해기간동안 개인/팀 스케줄 및 개발 공부 내용을 기록하면서 올바른 방향으로 나아가고 있는지를 체킹할 수 있도록 하는 웹사이트를 만들어보고 싶었다.
필수 포함 사항 : Jinja2 템플릿 엔진을 이용한 서버사이드 렌더링, JWT 인증 방식으로 로그인 구현하기
구현한 페이지 및 기능
1. 로그인 / 회원가입 페이지
- 로그인/로그아웃 기능
- JWT 인증방식을 이용한 로그인
- 빈칸 없이 모두 입력했는지
- 로그인 완료시 메인 페이지로 이동
- 로그아웃 버튼 클릭시 로그아웃
- 회원가입 기능
- 아이디 및 비밀번호 입력 조건 판단하기
- 아이디 중복확인
- 비밀번호 확인
- 회원가입 완료시 로그인 페이지로 이동
2. 달력 페이지(메인 페이지)
- 달력 기능
- 날짜 클릭시 해당 날짜의 todo-list 페이지로 이동
- 월간 이동
3. todo-list 페이지(내가 맡은 부분)
- todo-list 기능
- 할일 입력칸 입력시 투두리스트 추가
- 할일 입력칸이 빈칸일 경우 입력하기 버튼 비활성화
- 체크박스 선택시 빨간 취소선으로 완료표시
- 체크박스 해제시 원래 상태로 되돌리기
- X 버튼 클릭시 투두리스트 삭제하기
- 항해 나침반 클릭시 메인페이지로 이동
- 상세일정 보러가기 클릭시 노션 일정페이지로 연결
4. 공부기록 페이지
- 공부기록 페이지 기능
- 입력칸 입력 후 기록하기 버튼 클릭시 오른쪽에 리스트 추가
- 리스트 클릭시 내용 펼치기
- 완료 버튼 클릭시 취소선 추가
- 취소 버튼 클릭시 원래상태로 되돌리기
- 삭제 버튼 클릭시 리스트 삭제
5. 깃허브 레파지토리
What I Learned
- JWT 인증 방식과 Jinja2 템플릿을 이용한 서버사이드 렌더링에 대해서 처음 알게 되었고 이를 미니프로젝트에 적용하면서 로그인 시 회원정보를 어떻게 가져올 수 있는지, 페이지 이동이 어떤식으로 이루어지는지 등을 경험해볼 수 있게 되었다.
- 또한 팀원들과의 소통이 중요하다는 것을 다시한번 깨달았으며 혼자 힘으로 해결해나가는 것보다 팀원들과 함께 공유하며 문제를 해결해나가는 방식이 어떤 면에서는 훨씬 더 효율적이라는 생각이 들었다.
- Jinja2란?
- Python에서 가장 많이 사용하는 template 엔진으로 데이터와 템플릿을 연결시켜주는 기능을 한다.
- JWT 인증 방식
- 유저가 로그인을 할 때 서버로부터 받아오는 토큰값으로 본인 확인을 하는 방식으로 사용자 인증에 필요한 모든 정보가 토큰 자체에 포함되기 때문에 별도의 저장소가 필요 없음
- 쿠키&세션 방식은 비밀번호 등 Ct의 인증정보를 서버 측에 저장하고 관리하기 위해 저장소를 사용하게 되는데 요청이 많아지게 되면 과부하가 올 수 있어 이를 보완한 방식이 JWT 인증 방식
- 쿠키를 전달하지 않아도 되기 때문에 쿠키를 사용해서 발생하는 취약점이 사라짐
- 트래픽에 대한 부담이 낮아짐
- API(Application Programming Inerface)
- 컴퓨터나 컴퓨터 프로그램끼리 연결하는 인터페이스
- 웹 사이트 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 열려있는 일종의 은행창구 역할
항해를 시작하자마자 진행하게된 4일간의 팀프로젝트였는데 하나의 프로젝트를 완성하기 위해 가장 중요한 것은 팀원들과의 소통이라는 것을 느꼈다. 여러 기능이 들어가는 페이지 하나를 구현하더라도 팀원들과 의견을 조율하여 어떤 기능이 어떻게 들어가면 좋을 것 같은지 등을 세세하게 적어나갔고 그 후 팀원들의 피드백을 통해 부족한 부분을 계속해서 수정해나가는 방식으로 진행했다.
내가 맡은 기능을 구현(todo-list)하며 계속 찾아봐도 잘 풀리지 않는 부분을 팀원들과 공유했는데 내가 발견하지 못했던 오류를 팀원들과 함께 찾으면서 문제가 빠르게 해결되는 것을 경험할 수 있었다. 혼자서 안되는 것들을 물어보고 배움으로써 내것으로 만들어나가는 과정 또한 팀원들과의 소통으로 이루어진다는 것을 알았기에 원활한 커뮤니케이션 능력이 바탕이 되어야 나 스스로도 성장할 수 있다는 것을 깨달았다.
아직 기능상으로 구현하고자했던 것을 완벽하게 구현하지는 못했지만 짧은 시간안에 정말 많은 것을 배울 수 있었던 4일간의 팀프로젝트 경험이 많은 도움이 된 것 같다.
아쉬웠던 점
처음에 우리가 생각했던 기능들이 생각보다 어려워 다 넣지 못한 것이 아쉬웠는데 꾸준히 공부하여 내가 성장하게 된다면 그 후에는 구현하지 못했던 기능들도 한번 구현해보고 싶다.
또한 첫번째 팀프로젝트에서는 깃허브를 이용하지 않았는데 다음번 협업 떄는 깃허브를 이용하고 싶다.
4일이라는 팀프로젝트기간동안 오로지 구글링에 의존해서 하나의 서비스를 만드는 과정은 폭풍우가 휘몰아치는 바다와도 같았던 것 같다. 그만큼 어렵고 정신없었는데 단기간에 너무 많은 것이 들어오다보니 이러한 개념들을 다시한번 정리하고 넘어갈 필요가 있을 것 같다. 공부를 하며 꾸준히 정리하고 기록하는 습관을 들여 내가 이루고 싶은 꿈을 꼭 이루고 싶다.