수료식 사진

비전공자로 살아남기

비전공자로 개발을 해보고 싶어 자바 스프링 부트캠프를 수료했지만 6개월이라는 짧은 시간동안 배운거로 실무를 하기에는 많이 부족하다 생각해 이력서를 만들며 추가로 사람을 모아 프로젝트를 진행했었다.

하지만 어딘가에 소속되어 진행하는게 아닌 프로젝트는 책임감 부족인지 잦은 팀원들의 탈주로 결국 흐지부지 되는 경우가 대부분 이었다.

그래서 인턴으로 지원해 현업에서 일을 추가로 배울까 하던 참에 내일배움캠프에서 전공자 혹은 비전공자이지만 이미 자바를 수료한 사람들을 대상으로 스프링 심화캠프를 모집한다는 소식을 보게됐다.

왜 선택했지?

기존에 수강했던 부트캠프의 경우 9to9로 하루 12시간 이라는 꽤 부담스러운 시간이었는데, 심화 트랙의 경우 10to4로 하루 6시간 이라는 적당한 시간에 다양한 기술들과 대용량 트래픽을 처리해볼 수 있는 경험을  쌓을 수 있다는 점이 마음에 들었다.

또한 기존에 국비 부트캠프를 수강했어도 추가로 수강할 수 있다는 점도 매우 큰 장점이었다. 국비가 아닌경우 부트캠프도 꽤 많은 비용이 발생하는데 심화 트랙의 경우 이미 모든 크레딧을 소모한 상태에서도 추가로 수강할 수 있었다. (다만 다른 부트캠프를 듣지 않고 심화부터 수강할시 다른 국비 부트캠프는 재수강 할 수 없는걸로 알고 있으니 비전공자인 경우에는 기본 트랙을 먼저 수강하고 심화트랙을 수강하것을 추천한다!)

그리고 가장 중요한 튜터님의 존재... 개발을 하다 막힐때 구글링만으로는 해결이 안되거나 너무 많은 시간을 뺏기는 경우가 있는데 현직자 분들의 조언을 받을 수 있다는건 정말 큰 도움인것같다. 실제로 저번 부트캠프가 끝나고 코드리뷰나 질문을 받아줄 수 있는 멘토링 시스템이 있나 찾아봤는데 사이트가 하나 있지만 달에 120만원이 넘는 금액에 4개월 이상이라는 조건을 보고 쉽게 결제하기 어려웠다.

마지막으로 심화트랙에 맞게 다양한 기술스택 강의가 지급된다는 점이 좋았다. 기존의 국비 부트캠프의 경우 기본만을 가르쳐줘 프로젝트를 진행할때 개인적으로 인강을 구매해 수강하는 경우가 많았었는데, 레디스, 카프카, 도커, 테스트코드 작성법등 스프링에서 자주 쓰이는 기술들에 대한 강의도 추가로 진행돼 많은 도움이 됐다.


실제 후기

실제로 10 to 4 인가?

수강 초기에 3주 정도는 기본 강의를 수강할 수 있는 시간이 주어진다. 대부분의 수강생들이 이때는 10to4 라는 시간에 맞춰 4시가 되면 퇴실하고 쉬는 경우가 많다. 집중해서 강의를 수강한다면 점심시간을 제외한 5시간으로 충분히 강의 진도를 따라갈 수 있는 수준이다.

하지만 수료해본 입장에서 만약 다시 부트캠프를 시작한다면 나는 이때부터 훨씬 많은 시간을 투자할 것 같다. 초반에 진행되는 간단한 과제들과 기본 강의들에 방심하는 순간 2번째 프로젝트부터 진도가 밀리기 쉽다. 특히 비전공자 출신으로 기초가 부족하다면 초반 3주의 노력 여하에 따라 최종 프로젝트의 결과물이 달라질 정도로 많은 차이가 나는것 같다. 

그리고 이때부터 취업에 진심인 사람들은 점점 자발적으로 개발하는 시간이 늘어났던 것 같다. 결국 출석을 위해 채워야 하는 시간은 6시간이지만 실제로 취업에 진심이고 포트폴리오로 쓸만한 프로젝트를 만들고 싶다면 적어도 하루 8시간에서 10시간은 투자해야 한다 생각한다.

총 프로젝트는 몇 번?

심화 트랙에서는 기초 강의 수강주가 끝나고 총 3번의 프로젝트가 진행된다. 앞의 2번은 프로젝트의 가이드라인이 정해져 있어 자유로운 주제로 진행하는게 아닌 정해진 주제에 정해진 기술들을 필수로 사용해야 한다. 자유도가 조금 떨어지지만 학습주차에 배운 기술들을 충분히 활용해 볼 수 있고 대신 프로젝트 기간이 2주 정도로 길지 않아 꽤 빠듯하게 진행된다.

하지만 마지막 프로젝트는 총 5주로 자유로운 주제로 진행할 수 있고, 가이드라인 또한 어떤 기술을 사용했으면 좋겠다 정도이기 때문에 원하는 방식으로 진행할 수 있었다. 실질적으로 포트폴리오로 남는 프로젝트라 팀원들도 의욕적으로 설계하고 최대한 다양한 기술들을 사용해 완성도 있게 마무리 하는데 집중 했었다. 5주라는 시간동안 매일 오전 10시부터 새벽까지 남아 개발을 진행했고 개발 상황을 공유해 모르거나 막히는 부분이 있으면 서로 도와가며 해결할 수 있었다.

개발자라는 직업이 협업이 정말 중요하다 생각하는데, 앞서 말했듯이 온라인으로 구한 팀과는 다르게 부트캠프를 통해 매칭된 팀원들과의 협업 경험은 정말 귀중한 시간이었던 것 같다. 

모각코 지원

내일배움캠프에서 모여서 코딩을 할 수 있도록 지원해줘 스터디룸을 대여해 개발을 진행했었는데 평소 캠을 통해서만 보고 대화했던 팀원들과 직접 만나 개발을 진행하는 경험도 바쁜 프로젝트 기간 중 색다른 이벤트 였던것 같다.

(초상권을 보호하기 위해 나만 남기고 자른사진)

수료 이후

부트캠프를 통해 얻을 수 있는 것 중 하나는 같이 개발할 수 있는 믿을 수 있는 동료라고 생각한다. 앞서 말했듯이 온라인으로 구한 팀들의 경우 검증되지 않은 사람들이라 쉽게 그만두고 잠수를 타는등 프로젝트가 엎어질 가능성이 매우 높다.

하지만 부트캠프를 진행하며 수료한 동기들은 모두 개발에 진심이고 그동안의 과정을 함께 해 온 만큼 개발 스타일을 알아가며 자신과 맞는 팀원을 구할 수 있다는 점이 정말 좋은 것 같다.

나같은 경우 마지막 프로젝트를 진행했던 팀원들과 수료 후에도 함께 개발을 진행하고 있는데 덕분에 수료했다고 조금 나태해질 뻔한 나를 계속 굴러갈 수 있도록 해주는 계기가 되어준 팀원들에게 감사한다. 

 

 

ERD 명세서

https://dbdiagram.io/d/24team-66d94f6eeef7e08f0ec0c35f

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

테이블 명세서

https://www.notion.so/teamsparta/d28441325d3b401580d92d864835949a

 

테이블 명세서 | Notion

Hub (허브 테이블)- hub service

teamsparta.notion.site

Hub (허브 테이블)- hub service

필드명 타입 설명

id UUID 허브 ID (PK)
name VARCHAR 허브 이름
zipcode VARCHAR 허브 우편 번호
address VARCHAR 허브 주소
latitude DOUBLE 위도
longitude DOUBLE 경도
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

HubRoute (허브 간 이동 경로 테이블) - hub service

필드명 타입 설명

id UUID 경로 ID (PK)
start_hub_id UUID 출발 허브 ID (FK)
end_hub_id UUID 도착 허브 ID (FK)
estimated_time DOUBLE 예상 소요 시간
route_details TEXT 이동 경로
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

DeliveryAgent (배송 담당자 테이블) - order service

필드명 타입 설명

id UUID 배송 담당자 ID (PK)
hub_id UUID 소속 허브 ID (FK)
slack_id VARCHAR 슬랙 ID
agent_type VARCHAR 담당자 타입 (허브/업체)
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

Company (업체 테이블)-hub service

필드명 타입 설명

id UUID 업체 ID (PK)
name VARCHAR 업체 이름
type VARCHAR 업체 타입 (생산/수령)
hub_id UUID 관리 허브 ID (FK)
address VARCHAR 업체 주소
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

Product (상품 테이블) - hub service

필드명 타입 설명

id UUID 상품 ID (PK)
name VARCHAR 상품 이름
company_id UUID 업체 ID (FK)
hub_id UUID 관리 허브 ID (FK)
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

Order (주문 테이블) -order service

필드명 타입 설명

id UUID 주문 ID (PK)
product_id UUID 상품 ID (FK)
supplier_id UUID 공급 업체 ID (FK)
receiver_id UUID 수령 업체 ID (FK)
quantity INT 주문 수량
delivery_id UUID 배송 ID (FK)
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

Delivery (배송 테이블) - order service

필드명 타입 설명

id UUID 배송 ID (PK)
order_id UUID 주문 ID (FK)
start_hub_id UUID 출발 허브 ID (FK)
end_hub_id UUID 목적지 허브 ID (FK)
delivery_status VARCHAR 현재 상태 (대기중/배송중 등)
delivery_address VARCHAR 배송지 주소
receiver_name VARCHAR 수령인 이름
receiver_slack_id VARCHAR 수령인 슬랙 ID
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

DeliveryRoute (배송 경로 기록 테이블) - order service

필드명 타입 설명

id UUID 경로 기록 ID (PK)
delivery_id UUID 배송 ID (FK)
sequence INT 경로 순서
start_hub_id UUID 출발 허브 ID (FK)
end_hub_id UUID 도착 허브 ID (FK)
estimated_distance DOUBLE 예상 거리
estimated_time DOUBLE 예상 소요 시간
actual_distance DOUBLE 실제 거리
actual_time DOUBLE 실제 소요 시간
status VARCHAR 현재 상태
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

User (사용자 테이블)- Auth Service

필드명 타입 설명

id Long 사용자 ID (PK)
username VARCHAR 사용자 이름 (로그인에 사용)
password VARCHAR 비밀번호
role VARCHAR 사용자 권한
is_delete BOOLEAN 논리 삭제 여부
created_at TIMESTAMP 생성 일시
updated_at TIMESTAMP 수정 일시

SlackMessage (슬랙 메시지 테이블) - message service

필드명 타입 설명

id UUID 메시지 ID (PK)
sender_id UUID 송신자 ID (FK)
receiver_id UUID 수신자 ID (FK)
message TEXT 메시지 내용
created_at TIMESTAMP 생성 일시

 

API 명세서

https://www.notion.so/teamsparta/0a0039a0930b4ff3bb8c07d140778256?v=2692a170fce646d0bc80a822662a4479&pvs=4

인프라 설계서

https://www.notion.so/teamsparta/6c6fab694136477ab5fa900bc060daed

 

인프라 설계서 | Notion

Built with Notion, the all-in-one connected workspace with publishing capabilities.

teamsparta.notion.site

1. HTML에서 외부 CSS파일 연동

rel = relationship 관계

href = hyper reference 하이퍼 참조

 

<link rel="stylesheet" href="style.css">

 

2. CSS 규칙

h3 {
  color: red;
}

선택자 {
  속성: 속성값; (속성과 속성값을 합쳐 CSS선언)
}

 

3. 선택자

id를 선택자로 쓸때는 #선택자

id는 중복이 안된다.

<div id="sample"></div>
#sample {
  background-color: red;
}

 

 

class를 선택자로 쓸때는 #선택자

class는 중복 선언이 가능하다.

<div class="sample2"></div>
<a class="sample2"></a>
.sample2 {
  color: red;
}

선택자 목록

.sample1,
.sample2 {
	color: red;
}

여러 선택자를 동시에 갖고 있는 요소를 선택하는 경우

<p id="sample-id" class="sample-class"></p>

<a class="sample-class1 sample-class2"></a>
p#sample-id.sample-class {
	background-color: red;
}

.sample-class1.sample-class2 {
	background-color: red;
}

부모태그 안의 자식태그 선택 (자식 결합자)

<div class="parents">
    <div clss="children">
    </div>
</div>
.parents > .children {
	background-color: red;
}

자손결합자

.ancestor .decendant {
	background-color: red;
}

1. Git 사용자 설정하기 (user.name 과 user.email 등록)

git config --global user.name "본인의닉네임"
git config --global user.email "본인의@이메일.com"

등록후 git config --list 명령어를 통해 등록된 닉네임과 이메일을 확인할 수 있다.

git config --list

2. git init 을 통해 해당 폴더를 초기화 한다.

(*초기화 = 버전 관리가 가능한 상태로 만들어 준다.)

cd desktop/본인의폴더이름
git init

 

git init

 

제대로 적용되었다면 .git 이라는 폴더가 해당 폴더안에 생기는데 숨김폴더이기 때문에

해당 폴더에 들어가 보기 -> 숨김 항목을 체크해주면 생성된걸 확인할 수 있다.

 

 

3. git add . 

명령어를 통해 현재 디렉토리에서 변경된 모든 파일을 스테이징 영역에 추가한다.

git add .

윈도우 에서 해당 명령어 입력시 경고문이 뜰 수 있는데 이에대한 얘기는 다음에 따로 다루도록 하겠다.

4. git commit -m "first commit" 명령어를 통해 변경 사항을 로컬 저장소에 커밋

git commit -m "first commit"

5. git branch -M main 명령어를 통해 기본 브랜치를 main으로 설정한다.

git branch -M main

6. git remote add origin <깃허브에있는 SSH 주소 복사후 붙여넣기>

명령어를 통해 로컬 저장소와 해당 주소의 원격 저장소를 연결한다.

get remote add origin <해당 레포지토리 SSH 주소>

7. git push -u origin main

git push -u origin main

명령어를 통해 지정된 원격 저장소의 브랜치로 변경사항을 푸쉬한다.

 

8. 깃허브에 들어가 해당 레포지토리를 확인해 보면 내가 푸쉬한 파일이 업로드 되어 있는것을 확인할 수 있다.

1. SSH Key 있는지 확인하기

Git bash 를 실행 후 cd ~/.ssh 를 입력해 .ssh 폴더로 이동한다.

cd ~/.ssh

ls 를 입력해 기존에 만든 ssh key가 있는지 확인한다.

ls

2. 리스트에 id_ 파일이 보이지 않는다면 ssh-keygen -t rsa -b 4096 을 입력해 키를 생성한다. (폴더 설정은 따로 하지 않고 엔터를 눌러 .ssh 폴더에 자동으로 생성되도록 한다.)

ssh-keygen -t rsa -b 4096

3. Enter passphrase (empty for no passphrase) 라는 문구가 나오면 비밀번호를 입력한다.

Enter same passphrase again : 은 비밀번호 확인이니 비밀번호를 위에 입력한 비밀번호를 한 번 더 입력한다.

4. 생성이 완료되면 아래와 같은 문구가 나오고 폴더에서도 확인할 수 있다.

5. cat id_rsa.pub 명령어를 통해 생성된 키를 확인할 수 있다.

cat id_rsa.pub

공개키

6. github 사이트에 들어가 본인 프로필을 눌러 Settings 로 들어간다.

7. 왼쪽 메뉴중 Access -> SSH and GPG keys로 들어가 New SSH key를 클릭한다.

8.Title을 자신이 알아볼 수 있게 작성한 후 Key에 id_rsa.pub 전문을 복사해 붙여넣고 Add SSH key 를 클릭한다.

+ Recent posts