[SF Diving] 1일차 - 개인 project 기획안 완성

Seungho Ha·2020년 8월 14일
1

SF Diving

목록 보기
1/6
post-thumbnail

시작하며...
개인 project 주제 정하기

때는 2016년 여름...
대학교 4학년 1학기 때 여유롭게 수영 수업을 수강했다.
그리고 수영 수업을 가르쳐주셨던 김규호 교수님과 잠영 내기를 했는데(왜 하게 되었는지는 기억이 나지 않는다), 승리의 보상으로 음료수를 얻어 먹으며 친분이 두텁게(?) 쌓이게 되었다(아마 져주신 것이겠지...).
그리고 여차저차해서 여름방학에 가려고 계획했던 30일의 유럽 여행을 취소해야 하는 상황이 벌어졌다.
이 두 가지 사연이 겹쳐, 김규호 교수님께 scuba diving을 배워 자격증(OW)을 취득하게 되었고, 미친듯이 scuba diving tour를 다니기 시작했다.

하지만 minimalism을 추구하고 취미생활이라도 완벽하게 여유로울 때 최고의 장비를 사서 자격증을 upgrade하려는 완벽주의적인 성향도 있다보니...
scuba diving log(scuba diving에 대한 세부 사항을 적는 것, 동료 diver/dive 시간/소모한 산소량 등을 기록)는 나중에 내 장비 있을 때 작성하자... 나중에 AD자격증 따고 작성하자... 그렇게 하루하루 미루다보니... 거의 80회 가까이 dive를 하면서 log를 한 번도 작성하지 않았더니(실은 처음에 OW 자격증 발급받을 때 6번 정도 작성했지만) 습관도 잘못 들고 dive를 추억할만한 기록도 없다보니... 이제는 진짜 log book을 만들어서 log를 기록해야 겠다..!!싶기도 하고, 개인 project를 해야 하기도 하고 겸사겸사 log를 작성할 수 있는 Web page를 만들기로 했다:)

'SF Diving'으로 project 이름을 정한 이유

지금까지는 scuba diving만 했는데, 이번 여름에 제주도 중문에서 surfing도 배웠고, free diving도 배울 예정이라... 기왕 작성할 때 'scuba diving log book + free diving log book'을 선택해서 작성할 수 있으면 좋을 것 같아서 Scuba diving과 Free diving을 합쳐 'SF Diving'으로 project의 이름을 정했다. 그렇다. 세상 단순한 명명이다...
욕심을 부려서 surfing도 합쳐보려고 했는데, 생각해보니 surfing은 log book이라는 게 있나...? 잘 모르겠고, surfing을 배우기는 했지만 즐기기에는 조금 더 숙련되어야 할 것 같아서 다음으로 미루기로 했다:)

'SF Diving' 구상 과정

음...솔직히 처음에는 교과서처럼 논리ERD, 물리ERD, 화면정의서 등등 모두 작성하려고 하였으나... 회사 업무가 생각보다 바빠지기도 했고, 스스로 게을러 지기도 했고(이 원인이 지분이 제일 크겠지), 코로나 때문에 아침 수영을 쉬었더니 체력이 부족해져서 그런지 집에서 집안일을 끝내고 무언가를 더 할 수 있는 기운이 없기도 했고, 회사 업무를 하고 와서 똑같은 일을 더 하려니 업무가 연장되는 것 같아서 차라리 그냥 refresh하고 다음 날 일을 더 열심히 하자는 의미에서 쉬는 것이 더 나을 것 같아서......아, 여름 휴가도 한 몫 했구나...
그렇게 하루가 일주일이 되고, 일주일이 한 달이 되어...하려고 마음 먹었던 모든 것을 뒤로 하고 부랴부랴 project 구상을 시작했다.
그래, 구상을 시작했다기 보다는 머릿속으로 구상하던 것을 끄집어 내어 끄적이기 시작했다.
참고한 site는 없고, 내 자신이 고객이 되어 요구사항을 하나씩 적어나가면서 project의 outline을 잡았다.
그러다보니 나의 편협한 사고방식을 벗어나지 못하는... 정말 말 그대로 나만의, 나를 위한, 나에 의한 project가 되어 버리는 바람에 공유하기 쑥스럽지만, 이거라도 안하면 정말 흐지부지될 것이라는 것을 누구보다도 내가 더 잘 알기에... 인생의 첫 project를 아쉬운 마음으로 시작하게 되었다.

급하게 정해진 'SF Diving'의 기능

내 개인 project에서 구현하려고 하는 기능은 아래와 같다.

  1. 기본적으로 사용자(user)에 대한 CRUD 기능
    1) 회원가입
    2) 회원탈퇴
    3) 회원 정보 수정
    4) 회원 조회...는 admin 계정이 관리하는 것이 아니라 당장은 필요하지 않을 것 같다.

  2. 회원 정보를 세부화한 각각의 항목에 대한 CRUD 기능
    1) 기본 정보 - 추후에 관리가 더 필요한 정보가 있으면 추가

    1] Id
    2] Password
    3] 이름
    4] 전화번호
    5] Role(Scuba diver/Free diver)

    2) 개인 장비

    1] 장비 이름
    2] 장비 제작사
    3] 장비 구매 날짜
    4] 장비 category(Scuba diving equipment/Free diving equipment)
    5] 장비 image

    3) 개인 자격증

    1] 자격증 발급 기관
    2] 자격증 level
    3] 자격증 취득 날짜
    4] 자격증 category(Scuba diving certification/Free diving certification)
  3. 가장 중요한 Dive log 정보에 대한 CRUD 기능
    1) Dive point 이름
    2) Dive 날짜
    3) Dive 시간
    4) 동료 diver 이름
    5) Dive 후기

급하게 작성한 'SF Diving'의 화면 정의서

정말 마음 속으로는 개발 산출물 하나하나 정성스럽고 예쁘게 작성하고 싶었으나... 결국 급하게 2시간??만에 완성한 화면 정의서를 올려본다.
너무 창피하면 나중에 수정할 수도 있지만, 창피함과 귀찮음 사이에서 지금까지 귀찮음이 압도적 우세였기 때문에... 큰 전환점이 없다면 평생 수정될 일이 없겠지...싶다.
완성도 낮음/가독성 낮음/이해도 떨어짐...이므로 노약자나 임산부 등 심신이 미약한 사람들은 첨부된 파일을 클릭을 삼가줬으면 하는 마음이다...
하지만 pdf를 첨부하는 방법을 알지 못해서...하나씩 캡쳐해서 올리게 되었다...;ㅁ;
기본적으로 중앙의 검은색 테두리가 전체 화면을 나타낸 것이고, 내부 화면을 구성하면서 선택되는 항목 등은 색으로 구분하였다.

  1. 기본 page 구성
    1) Login page
    2) Signup page
    3) Main page

  2. Main page 세부 구성
    1) MyInfo Main page
    1-1) MyInfoUpdate page
    1-2) MyEquipment page
    1-2_popup) MyEquipment Popup page
    1-3) MyCertification page
    1-3_popup) MyCertification Popup page
    2) DivePoints Main page
    2-1) DivePointsOfScubaDiving page
    2-2_popup) DivePointsOfScubaDiving Popup page_1
    2-2_popup) DivePointsOfScubaDiving Popup page_2
    2-3) DivePointsOfFreeDiving page
    2-3_popup) DivePointsOfFreeDiving Popup page_1
    2-3_popup) DivePointsOfFreeDiving Popup page_2

  3. DB 구성
    1) DB 구성_menu/user
    2) DB 구성_equipments/certifications
    3) DB 구성_divepoints

'SF Diving'을 구현하기 위해 사용하는 프로그램

현재 회사에서 업무는 Vue js(front end)와 Spring(back end)을 이용하여 진행하고 있어서, 거의 Java와 JavaScript를 사용하고 있다. 그리고 DB는 MariaDB를 사용하고 있다.
이 project에서는 back end 개발은 'Python'을, front end 개발은 html/css/javascript를, DB는 mongoDB를 이용할 예정이다.
그리고 이 project의 모든 coding은 스스로 작성한 code만을 사용하여 진행할 것이기 때문에 완성도...는 장담할 수 없고, 심지어 최악의 경우에는 보기 힘든 수준일 수도 있다. 하지만, 이 것은 순수 기계공학도(물론 대학원에서 2년 동안 자율주행 mobile robot을 연구하기는 했지만)였던 내가 software engineer가 되기 위한 첫 걸음이라고 생각하고, 조바심 내지 않고 여유를 가지고 천천히 하나씩 만들어 나갈 것이다.
나의 가늘고 긴 회사 생활을 위한 디딤돌이 되기를 바라기도 하며...

마치며...

대학교에서 4대 역학 공부하고, 3D modeling CAD 자격증(NX10.0)도 취득하고, 동아리에서 쇠 pipe 깎고 자르고 용접하고, 선반이랑 miling machine으로 부품을 만들어서 자작자동차 만들고 대회나가던 내가 처음 자율주행을 연구하는 대학원에 들어갔을 때, 조금 막막했다. 대학교 1학년 때 스쳐지나갔던 기억조차 나지 않은 C++ 수업이 내 인생의 programming의 전부였기 때문에...
그리고 2년 후 Mater of mechanical enginerring 학위로 졸업하고 들어간 회사는... IT기업... 신입사원 교육을 받을 때, Java 수업과 web 개발 수업은 영어로 하던 전공 수업보다 이해하기 어려웠고, 주변 동기들의 도움을 받아야 겨우겨우 그 날의 mission을 해결할 수 있었기에 몇 배로 더 막막해지기 시작했다. (아련......하게 스쳐 지나가는 과거 회상 time......)
그래도 나는 나름 천재형 노력파(라고 믿고 싶다 진짜ㅠ)이기 때문에 지금까지(라고 해봤자 6개월이지만) 어떻게 회사 업무를 큰 문제 없이 잘 해나가고 있지만, 이대로는 부족하다는 것을 깨닫고 시작하게 된 개인 project이다.
나는 가장 낮은 곳에 있는 프린이(programming 입문자)이라고 생각하기 때문에, 내 자신에게 큰 기대 없이, 큰 목표 없이 '다른 사람들이 해오던 것을 하나씩 따라잡아 나가자!'라는 목표만을 가지고 시작하는 project이니, 딱 그 목표만 달성하자는 마음으로 한 걸음씩 걸어 나가려고 한다.
솔직히 독후감상문, 노트 필기를 다시 정리하는 노트...같은 것들은 그냥 시간 낭비라고 생각해왔지만, 그래도 내가 한 것을 뒤돌아보며 회고하는 시간을 가져보고, 반성도 하고 목표에 대한 마음가짐도 다시 다져보고, 발전 방향도 다시 천천히 생각해보는 것도 나쁘지는 않을 것 같다.

profile
Bachelor of Mechanical Engineering -> Master of Mechanical Engineering (Intelligent Systems and Robotics Laboratory) -> IT Developer -> Next...?

0개의 댓글