어쩌다 개발을 시작했지?
개발과는 별로 관련 없는 공대를 나온 나는 대학교 4학년 때 우연히 Java 프로그래밍 강의를 듣고 큰 흥미를 느꼈다. 최종 과제로 학생 인원 관리? 프로그램을 Java 코드만을 이용해서 만들어봤던 기억이 있다. 학기가 마무리되고 이 과제 프로그램을 객체지향 개념을 적용해서 리팩터링 해보며 백엔드 개발자가 되고 싶다는 생각을 했고, 해당 학기가 마무리되고 본격적으로 공부를 시작했다.
요즘 공대는 기본적으로 프로그래밍을 배워서 위의 기본 과정만 공부해 봤다.
(1학년때 C언어와 C++를 배워보고 5년 만에 Java 프로그래밍을 들었어서 거의 처음 배우는 기분이었다.)
왜 백엔드 개발자?
일단 개발자가 되고 싶긴 했는데 무슨 개발을 하고 싶은가에 대한 고민을 하는 시간이 있었던 것 같다. 프론트엔드, 백엔드 언어를 대충 알아보고, HTML, CSS도 공부해 보고 Java 백엔드도 공부해 봤다. 결과적으론 객체지향 개발에 흥미가 가장 컸고, 백엔드 개발자가 되어야겠다고 생각했고, Java로 프로그래밍에 입문 한 나는 자연스럽게 Java, Spring을 이용하는 백엔드 개발자가 되고자 마음먹었다.
부트캠프 이전
졸업 후 6개월 정도 혼자 공부를 했다. 유명 Java, Spring 강의를 들으며 SpringBoot, JPA, Thymeleaf, HTTP 등을 배웠다. 여기서 대충 웹 백엔드가 어떻게 돌아가는지 배우고, 배웠던 내용으로 작은 게시판 프로그램을 만들었다. 원래는 이 시점에 "백엔드 개발자의 기본은 게시판을 만들 줄 알아야 한다."는 말을 듣고 취업을 준비해 볼까 생각해 봤다. 그러나 현실적으로 이것만으로는 부족했다. 자료구조, 알고리즘 공부를 해서 코딩테스트 준비도 하고, 포트폴리오, 취업준비도 시작해야 했다.
가장 중요한 건 코딩테스트와 포트폴리오, 취업 준비 과정 때문에 부트캠프 입고가를 고민했고, 제로베이스를 선택했다.
제로베이스를 선택한 이유
나에게 가장 중요했던 건 "전면 온라인"이었던 것 같다. 나는 원래 독학이나 방구석에 틀어박혀서 공부하는 게 내 성향에 잘 맞았기 때문에, 의지부족으로 온라인 강의를 못 따라가지는 않을 것 같았다. 그리고 보통 부트캠프를 하면 강남 쪽에 출퇴근을 해야 하는 걸로 알고 있는데, 온라인으로 진행되면 출퇴근시간 2~3시간을 아낄 수 있었다. 또한 스케줄 관리와 학습 분량 관리를 하여 내가 원하는 시간에 학습할 수 있다는 장점도 있었다.
두 번째는 코딩테스트이다. 나는 코딩테스트에 대한 막연한 두려움이 있었는데, 이를 떨쳐내기 위해 부트캠프에 들어가려고 했던 것도 있다. 제로베이스에선 입과 후 한 달간 자료구조, 알고리즘에 몰입하여 학습하고, 이후부터 6개월간 매주 실전과 같이 프로그래머스에서 코딩테스트를 본다. 이로 인해 코딩테스트에 대한 두려움도 사라지고, 실제 코테 실력도 많이 향상되었다고 느낀다.
제로베이스 소개
입과 절차
다른 부트캠프는 처음부터 자기소개서부터 면접, 테스트 등을 진행해서 어느 정도 실력을 가진 사람만을 선발해서 시작한다. 그러나 제로베이스는 선발 절차 없이 바로 학습을 시작할 수 있다. 이 점도 접근성에 있어서 장점 중 하나인 것 같다. 정말 "제로베이스"인 사람도 지원하여 공부를 시작해 볼 수 있다.
등록금은 390만 원이다. 난 선불로 등록금을 내고 시작했다. 그러나, 당장 금전적으로 부담이 된다거나, 개발에 대한 확신이 없는 분은 후불 등록금 제도를 이용할 수 있다. 이 경우 등록금 30만 원을 내고, 추후 취업 후에 후불로 비용을 납부하는 방식이다. 개발자가 되고 싶다는 확신이 없거나, 의지가 부족한 분들은 이 방법을 이용해서 제로베이스 과정의 일부를 경험해 보는 걸로 시작하는 것도 방법일 것 같다.
내 생각에 첫 한 달이 제일 힘들다. 첫 한 달간, 빠른 시간 내에 Java를 배우고 Java 언어로 알고리즘, 자료구조를 배우며 코딩테스트 연습을 집중적으로 진행한다. 이 과정에서 Java에 익숙해지고, 코딩을 하는 것이 익숙해질 수 있다.
반대로, 코딩이 적성에 안 맞는다는 걸 깨달으신 분들은 이 과정에서 그만두시는 것 같았다.
커리큘럼
6개월 과정 동안 아래의 6개의 스텝으로 진행된다.
1. 자료구조/알고리즘, 코딩테스트
자료구조/알고리즘을 중점적으로 학습한다. 이 한 달 동안 강의도 듣고, 백준, 프로그래머스에서 문제도 풀면서 코딩테스트 공부를 집중적으로 진행하도록 유도한다.
또한 초반 2달간은 공부할 것들이 정해져 있었기 때문에 노션으로 아래와 같이 공부 시간과 내용을 기록하면서 공부했다.
(자료구조/알고리즘 집중 공부 기간이 거의 끝나가던 때의 기록인 것 같다.)
이런 깃허브를 만들어서 알고리즘 공부를 기록했고, 수료한 지금 시점에 다시 해당 부분을 복습을 시작했다.
https://github.com/HSRyuuu/LearnAlgorithm
2. 컴퓨터 공학
컴퓨터 공학 강의를 2~3주 정도 진행하며 컴공 문제를 풀게 된다. 이 기간까지는 코딩테스트 공부도 병행했던 것 같다.
참고로 이 컴퓨터 공학 강의 퀄리티가 상당히 좋았던 기억이 있다.
3. Spring 시작
Spring 개념을 배우고, 4개의 작은 실습 프로젝트를 진행하며 재미와 경험을 챙긴다. 이 시점에서 작은 요구사항이 주어진 제대로 된 웹 애플리케이션을 만드는 과제를 했던 것 같다. 요구사항을 바탕으로 프로젝트를 만들어보는 첫 번째 경험이었다. Spring과 JSP를 이용하여 간단하게 만들었다.
아래는 JSP를 이용하여 만들었던 프로젝트를 Spring으로 전환해 보았던 깃허브 링크이다.
https://github.com/HSRyuuu/Seoul_Wifi_Service
4. Spring 심화
Spring Boot와 JPA, MyBatis, Thymeleaf 등을 이용하여 조금 큰 규모의 프로그램을 만드는 강의를 들으며 프로젝트 경험을 쌓는다.
여기선 조금 더 백엔드 개발자답게 REST API 백엔드 서버를 만드는 과제를 부여받았다.
https://github.com/HSRyuuu/StoreReservation
5. 개인 프로젝트
스스로 원하는 주제를 생각해서 기획부터 개발까지 진행하는 프로젝트를 한 달간 진행한다. 이 과정에서 멘토님과 계속 소통하며 피드백을 받으며 진행하고, 특이하게 마침 협업 프로젝트를 진행하듯이 Github를 이용하고 PR도 작성하는 연습을 하도록 유도받았다. 이런 것들이 추후 팀 프로젝트를 진행하는데 큰 도움이 됐던 것 같다.
개인프로젝트 링크
https://github.com/HSRyuuu/FitnessRecord
6. 협업 프로젝트
마지막으로 진행하는 협업 프로젝트이다. 우수 수강생에 한해 제로베이스 프론트엔드 스쿨 수강생 분들과 매칭되어 5명 정도 규모의 협업 프로젝트를 진행한다. 가장 중요한 프로젝트였고, 가장 좋은 경험을 했던 프로젝트이다. Github와 Notion을 이용해서 팀원들과 협업을 진행했고, PR도 상세히 남기고 코드리뷰도 하며 함께 성장하는 경험을 할 수 있었다. 또한, 매주 라이브 멘토링 시간이 있고, 상시로 Slack에서 멘토님들이 도움을 주셨다.
협업 프로젝트 링크
https://github.com/AnonymousZB14
멘토링 시스템
현업에서 일하시는 개발자분들, 수료 후에는 리크루터로 일하시는 분과 개발자 멘토님들이 개발, 취업, 면접 멘토링을 도와주신다.
백엔드 스쿨 멘토링
우선 전 과정에서 상시로 질문에 답해주시고, 도움을 주시는 멘토님이 계신다. 자료구조, 알고리즘부터 개인 프로젝트를 진행하기 전까지는 기술적으로나, 비 기술적인 여러 질문들을 하면 친절하게 답해주셨던 기억이 있다. 첫 달에 자료구조, 알고리즘에 몰입하여 공부하다가 스프링으로 넘어가는 시점에 코딩테스트 실력이 잘 늘지 않는다는 말씀을 드렸을 때, 이제는 분량을 줄이고 스프링에 집중하고 코딩테스트는 몇 개월 후에 다시 시작해도 괜찮다는 조언을 들었었다. 실제로 초반 2달 정도 몰입했던 경험치와 실력 향상 덕분에 이후에 다시 코딩테스트 연습을 시작했을 때 크게 떨어지지 않고, 이전에 비해 새로운 생각을 하며 문제를 풀 수 있게 됐었다.
프로젝트 멘토링
개인 프로젝트 때도 1대 1 멘토님이 계셨는데 처음으로 github PR작성이나 팀 프로젝트 형식으로 개인프로젝트를 진행하기 위한 도움을 많이 주셨고, 추후에 팀 프로젝트를 진행할 때 큰 도움이 되었다. 이 멘토님께서 여러 가지 러프한 질문들에 대해 친절하고 열정적으로 답해주셨고, 항상 PR을 봐주시며 코드리뷰를 진행해 주셨던 기억이 있다. 여기서는 코드 스타일에 대한 추천과 피드백 등을 많이 받아서 코드 질 향상에 도움을 많이 받았던 것 같다.
팀 프로젝트에서는 처음부터 끝까지 기획과 협업, 기술적인 문제들에 대해 멘토링을 받았다. 매주 라이브 멘토링도 1시간씩 진행했고, 팀프로젝트를 진행하며 발생했던 여러 가지 기술적인 문제에 대한 견해와 조언, 피드백을 받았다. 이 과정에서 "질문하는 방법"에 대한 말씀이 가장 기억에 남는다. 처음에 질문을 했을 때 역시 이 부분을 생각하며 문제 상황 파악, 문제 상황 정리, 내가 고민했던 내용을 담아서 질문을 드렸다. 그러나 멘토님께서 질문에 답해주시던 과정에서 기술 면접에서 꼬리 질문을 하듯이 여러 가지 질문을 나에게 역으로 던져주셨고, 그것들에 대부분 답하지 못했다. 마지막에 나온 결론은 내가 쓴 질문 글 내용을 조금 다르게 질문했더라면, 문제상황이 더 명확히 드러나고, 멘토님도 더 쉽게 답해주실 수 있었다는 것이다. 이 팀 프로젝트에서는 협업 과정, 그리고 현업에서 일할 때의 상황과 발생할 수 있는 문제점에 대해 많이 배웠던 것 같다.
취업 멘토링
팀 프로젝트가 끝남과 동시에 취업을 위한 과정이 시작되었다. 계속해서 공부를 붙잡고 있기 위한 취업 스터디를 진행을 한다. 이 과정에서 취업과 면접을 위한 정보를 공유하며 CS 관련 스터디를 진행했다.
그것보다 중요했던 것은 현업에서 일하고 계시는 개발자분부터 Recruiter, HR 전문가 분들이 계셔서 이분들께 취업과 면접에 관련된 자세한 멘토링을 받을 수 있었다는 점이다. 이력서, 자소서, 포트폴리오에 대한 첨삭과 기술면접 나올 수 있는 질문과, 내 포트폴리오와 이력서에서 어떤 질문들이 나올 수 있는지 등에 대한 멘토링과 이 진행된다. 여기서 내 부족한 점과 강점, 보강해야 할 점들을 알 수 있었고, 취업 준비를 하고 있는 현재, 이 멘토링에서 받은 피드백들이 정말 큰 도움이 되었다고 느낀다.
협업 프로젝트 회고
프론트엔드 개발자 2명, 백엔드 개발자 2명 총 5명이 진행하는 팀 프로젝트였고, 성공적으로 마무리되었다.
프론트엔드 개발자분들과 매칭이 되어 FE - BE와 함께하는 협업을 경험할 수 있었다.
백엔드 API를 만드는 것뿐만 아니라, 프론엔드와 연동을 위한 과정에서 발생하는 여러 가지 문제를 해결하는 경험을 할 수 있었고, 업무상의 커뮤니케이션을 체험해 본 느낌이었다.
기획 과정
이전까지는 무작정 개발부터 시작했던 경험이 있었지만,
이번엔 추천해 주신 프로세스에 맞춰 화면 종속적인 설계가 아닌 설계와 기획을 진행해 봤다.
개발 프로세스
총 6주의 기간 중에 1주는 기획, 2~4주 차 MVP 개발, 5주 차 개발 마무리 및 리팩터링, 6주 차 배포 및 발표의 일정을 맞춰서 팀 프로젝트를 진행했다. 각 주차에 해야 하는 일들과 해당 일들에 맞는 조언을 들으며 배우는 점이 정말 많았던 것 같다.
Github와 PR, 코드리뷰
현업에서 개발할 땐 혼자 일하지 않고 다른 개발자분들과 함께 일한다. 개발하고 바로 push 하는 것이 아닌 PR을 올리고, 다른 분들이 코드리뷰를 진행하고, 문제없음을 확인한 뒤 push를 진행했다. 이 과정에서 PR 메시지를 매우 상세하게 적어서 다른 사람이 이해하기 쉽도록 하고, 다른 사람의 코드를 많이 읽어보는 경험을 했다. 프로젝트가 종료될 때쯤에는 Github를 이용한 협업과 코드리뷰에 더 익숙해졌다.
Github : https://github.com/AnonymousZB14
Notion : https://helloworldusports.notion.site/USPORTS-SNS-c10174 ce56 d7451094935 fc9 d4 b4765 f? pvs=4
시연 영상 : https://youtu.be/rfDTSDKkkdg
제로베이스 백엔드 스쿨
https://zero-base.co.kr/category_dev_camp/school_BE
이 글은 소정의 원고료를 받고 홍보 및 회고 목적으로 작성한 글입니다.
'기타 > 끄적끄적...' 카테고리의 다른 글
[끄적끄적] 코딩주짓수와 구글 코딩 가이드 (0) | 2024.12.30 |
---|---|
벡엔드 신입 개발자가 자료구조, 알고리즘 공부를 해야하는 이유 (0) | 2023.07.04 |
앞으로의 백엔드 공부 계획 (백엔드 공부 로드맵) (2) | 2023.06.26 |
어떤 백엔드 개발자가 되고싶은가? (0) | 2023.06.20 |
FrontEnd와 BackEnd의 차이 / 내가 백엔드를 선택한 이유 (0) | 2023.06.12 |