프로젝트 개발은 남의 코드를 읽고, 내 코드를 쓰고, 좋은 코드를 생각하는 과정에 의미가 있다.
프로젝트를 만드는 기준
다음 세 가지에 주의해서 만들어야 한다.
1. 개발 전에 충분히 기획해야 한다.
- 머리속 구상이 아니라, 설계 문서로 끝나야한다. 설계가 어려우면 기존 앱을 참고하면서 구상해보자.
2. 가능한 간단하게 만들자.
- 프로그램은 복잡할 수록 만들기 어렵기 때문에 가능한 간단하게 하자. 프로젝트는 완성하지 않으면 의미가 없다.
- 만약 복잡하다면 간단한 프로그램들로 쪼개서 기획 해보자.
3. 코드 복사, 붙여넣기는 피하자
- 블로그 등에서 발췌한 코드를 짜집기 해서 적절히 가져다 쓰는 것은 OK
- 여러 곳에서 참고하여 만든 프로그램도 OK
- 강의 사이트나 책에서 제공된 코드를 사용한 소스는 NO!! 이건 그냥 베껴쓰기로 실력 향상X, but 따라치기는 처음
감을 잡을때 유용하다.
첫 프로젝트로 괜찮은 주제는 뭐가 있을까 ??
블로그 / 일기 / 메모장 이 세 가지를 추천한다~!
위 예시들은 프로젝트에서 텍스트를 생성하기, 불러오기, 수정하기, 지우는 프로그램이다.
위 네 개의 작업들은 개발에서 가장 많이 사용한다. (그렇기 때문에 첫 프로젝트로 추천함.)
인터넷에 예시와 소스가 많이 있기 때문에 첫 감과 자신감을 익힐 수 있어서 초보가 하기 좋다.
생초보 기준, 한 달 정도 기간을 잡고 만들어보자.
그 다음 단계로는 ....
게시판 / 커뮤니티를 추천한다~!
위 예시들은 여러 명이 쓸 수 있는 블로그 / 일기 / 메모장이다.
첫 번째 주제에서 회원가입 / 로그인 이 추가된 형태, 즉 인증이 포함된 프로그램이기 때문이다.
구현할 양이 많기 때문에 연습도 잘 되고, 난이도도 은근 있다.
인증을 어떻게 처리하느냐에 따른 고민이 난이도가 있는 프로젝트들이다.
초보 기준, 석 달 정도의 기간을 잡고 만들어보자.
마지막 단계로는....
유틸리티성 앱 / 웹을 추천한다~!
지나치게 기술적으로 어렵지 않은 간단한 주제를 고르면 된다.
예를 들자면, 설문조사 / 더치페이 / 알람 / 시계 등이 있다.
컨셉은 독창적이게, 스펙은 작게 줄인 프로그램으로 만드는 것을 목표로 해라. (화면으로 치면 네 페이지 정도 스펙)
간단하고 창의적이다. 그리고 본인이 필요한 것을 만들기 때문에 동기부여도 확실하고 재미있게 할 수 있다. 또한 설계도 연습할 수 있다.
그렇다면 망한 프로젝트를 알아보자(배드 엔딩...)
서버와 클라이언트를 1인 개발로 시도하기...

하다가 때려치우기 십상이다.
둘다 하면 대단한거지만, 서버와 클라이언트를 모두 배우기는 어렵다.
서버와 클라이언트가 동시에 있는 기술은 난이도가 갑자기 엄청 올라가기 때문이다.
개발자가 서버와 클라이언트를 둘다 알고 있어도 한 사람이 서버, 클라이언트를 번갈아 가면서 개발하게 되면 속도가 현저히 줄어든다.
백엔드와 클라이언트는 개발 언어도 다르고, 테크닉도 다르기 때문에다.
팀으로 프로젝트를 진행하기
협업은 절대악이다...(프로젝트를 할 때 기준)
팀 프로젝트는 성공만 하면 현업에서는 더욱 환영받는 프로젝트일 것이다. 왜냐하면 실무에서는 팀 단위로 개발하기 때문이다. 그리고 스케일도 더욱 커질 것이다.
BUT!!! 개인 포트폴리오를 위한 자발적인 프로젝트 모임은 와해되기 쉽다.
팀원들 각자의 사정도 있고 프로젝트를 위한 시간과 의지가 한정되어 있기 때문이다. 돈을 받고 하는 것이 아니다.

만약 팀 단위로 프로젝트를 하게 된다면
클라이언트와 서버 담당자를 분리하자. 그리고 디자이너와 기획자를 분리하자.
모든 작업의 기한을 전달하고 대면으로 자주 만나서 회의를 하자.
프로젝트 개발의 난이도를 올리는 주범들
회원가입 / 로그인
위치기반
소셜 로그인
푸시 알림
웹, 앱 동시 개발
이미지를 서버에 업로드
동영상 재생
실시간 채팅
.....
위 주제들은 하나 구현에 한 달 이상의 기간이 걸리는 주제들이다. 초보가 다루기엔 아주 어렵고 난해한 주제들이다.
.....
프로젝트 개발 요령
1. 목표 정하기! OKR이라고도 한다.
- 프로젝트를 만들어서 어떤 역할을 할지 정하는 것
- 프로그램의 사용 목적과 개발 후의 결과를 적는 것
ex ) 목표 : 개발자들이 사용하는 블로그 개발
- 핵심 결과 : 1. 글을 쓰고, 읽고, 지우고, 수정할 수 있음 2. 글 속에 코드를 삽입할 수 있음
2. 구상하기! 설계도를 짜고 건축에 들어가는 것과 같다
- 구상은 글로 쓰고 개발로 들어간다. 구상을 해놓고 개발에 들어가면 속도가 빠르다. 그러니 내용이 자세할 수록 좋다.
3. 화면 그리기!
- 쓴 글을 바탕으로 목업을 만들면 개발하는데 도움이 된다. 그대로만 개발하면 되기 때문.
- 목업 툴의 도움을 받으면 된다.
스케치, 어도비 XD, 피그마, 윔지컬, 카카오 오븐, 파워포인트
복잡함 <----------------------난이도---------------------> 단순함
4. 기능 정하기!
- 기능들의 우선 순위를 정하고 필수 기능만 개발하자. 필수로 해야하는 것과 하면 좋은 것을 구분하자.
ex ) (필수) 글을 쓰고, 읽고, 지우고, 수정할 수 있어야한다.
(선택) 글 속에 코드를 삽입할 수 있어야 한다.
5. 작업의 분량을 어림하기!
- 위에서 정한 기능을 구현하는데 걸리는 기한을 어림해보자.
6. 스프린트 계획하기
- 전체 개발 기간을 2주씩 쪼개어서 관리하는 것이다. 태스크를 만들어서 진행 예정인 작업, 끝난 작업으로 관리하자.
위 과정들이 다 끝나면 개발에 들어가는 것이다.
프로젝트에 대한 팁이다.
처음부터 완벽한 코드를 짜려고 하지말자. 간단한 코드로 먼저 구현을 하고 정리가 필요해질 때 수정을 하도록 하자.
개발을 진행하면서 백로그 / 리팩터링을 하도록 하자.
백로그란? 기록하되 치우지 않고 미루는 죄책감이라고 정의한다. 우리의 프로젝트에서 백로그란 본질과는 거리가 먼 작업을 말한다.
예를 들어 치명적이지 않은 버그 / 가성비 떨어지는 추가 기능 / 본인 욕심들이 본질과 거리가 멀어 작업을 나중으로 미루는 것을 말한다.
리팩터링이란? 코드를 깔끔하게 정리하는 작업이다.
코드는 언제 망가질까?
1. 개발 능력이 미숙할 때
2. 촉박해진 배포 일정
3. 예상치 못한 변수
4. 야근의 연속
망가진 코드를 '레거시' 라고 한다. 리팩터링은 레거시를 청산하는 작업이다.
즉 리팩터링은 추가 기능 구현이 쉽도록 코드를 가독성이 좋게끔 정리하는 과정이다.
리팩터링 원칙을 한 번 살펴보자.
- 리팩터링과 기능 추가는 동시에 수행하지 않도록 주의하자.
기능을 추가할 때는 기존의 코드를 건들여서는 안되고 단지 새로운 기능만 추가해야한다. 본인이 기능추가를 하는지 리팩터링을 하는지는 기억하고 있자. - 처음에는 그냥 코딩하고, 두 번 반복해도 넘어가자. 그리고 세 번 반복하면 리팩터링을 하자.
이게 무슨 소리일까? 지저분한 코드를 발견해도 굳이 수정을 하지 않아도 될 때는 그냥 넘어간다. 자주 수정 되어야하는 코드만 고치고 그렇지 않다면 그냥 쓰도록 하자.
배포하지 않은 프로젝트는 가치가 없다.
위에서 개발한 프로젝트를 앱이나 웹으로 배포를 해보자.
중단되었더라도 갈무리해서 배포를 해보자.

배포를 하면 일단 남들에게 써보라고 할 수 있다. 그렇게 되면 프로젝트의 주목도가 높아진다.
또한 프로젝트를 계속해서 운영하다보면 애정이 생긴다.
포장하기
배포가 끝났다면 이제 만든 프로그램을 포장해보자.
우리가 프로젝트를 만든 이유가 무엇인가 다시 돌아가보자.
우리는 구직을 위해 포트폴리오를 채워야하고, 포트폴리오를 채울 프로젝트를 개발한 것이다.
그렇다면 구직을 위해 프로젝트를 만든 것인데, 모든 구직자의 프로젝트 코드를 다 검토할 시간이 없다.
짠 프로젝트를 본인이 적절히 포장해야한다.

포장은 긴 시간 동안 개발한 프로젝트를 핵심만 추려서 요약하는 것이므로 한 번에 되지 않는 것이 일반적이다.
다른 사람의 피드백을 받아 계속해서 정리해서 고치자.
구직을 위한 이력서에 포장을 하는 요령을 한 번 살펴보자
이력서는 공간이 짧으므로 자세한 설명이 담겨있는 깃허브의 링크를 넘기는 것으로 하자.
그리고 깃허브에는 구현 기능, 설치 링크, 풀 코드 ,기술 스택들을 적어보자.
깃허브에 포장하는 요령을 살펴보자.
깃허브에는 README 파일을 이용하여 프로젝트에 대한 설명을 적어볼 수 있다.
프로그램의 실행 화면, 프로그램의 빌드 방법, 아키텍처, 그 아키텍처를 사용한 이유 등을 적어보자.
분량 부분에서 이력서 보다는 더 자유롭다.

네네 이제 프로젝트 만드는 방법은 알겠어요!!
그럼 재혁이가 프로젝트를 만들려면 어떻게 해야할까요??
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

어떡하긴요 군대부터 전역해야죠ㅋㅋㅋ~

아아아악!!!!!