안녕하세요,
오늘은 주니어 백엔드 개발자의 첫 1년의 경험을 공유해보고자 합니다.
본격(?) 회고 글은 다른 포스팅으로 작성할 예정이고요,
이번 글에서는 다른 분들께 도움이 될만한 경험을 나누는데 초점을 두고자 합니다.
그런데 막상 생각해보니 어떤 점이 궁금하실지,
어떤 점을 나누면 좋을지 뾰족히 떠오르진 않더라고요.
나름 애써보겠지만 혹시 글에서 다루지 않은 궁금한 점이 있다면
댓글 또는 ztzy1907@gmail.com 으로 문의주시면 최대한 답변드리겠습니다.
그럼 시작해보겠습니다!
1. 현 회사 기술 스택은?
Java, Spring(일부 레거시), SpringBoot, Oracle, Mybatis, SVN 을 사용합니다.
2. 담당했던 업무는?
백엔드 위주로 작업했습니다.
기존 레거시 솔루션 유지보수, API 신규 개발 및 유지보수 등의 업무를 수행했습니다.
그 외에는 자발적으로 사내 개발환경 개선을 위해 몇가지 작업한 내용이 있습니다.
3. 입사 직후 업무 적응 경험?
아예 처음 보거나 듣게 되는 내용들이 정말 많았습니다.
첫 세 달 정도는 정말 정신 없이 보냈습니다.
내가 이런 것도 모른채로 입사한 거구나 싶은 내용이 정말 많았습니다.
(내가 여지껏 이것도 모르고 있었구나 싶은 기분은 사실 요즘도 자주 느낍니다;)
시니어분들께서 많이 배려해주셔서
과도한 일정 스트레스는 없었고, 공부해가며 따라갈 수 있었습니다.
제가 해낼 수 있는 난이도로 점진적으로 업무를 배정하며 배려해주셨던 것 같습니다.
4. 국비 수료 후 입사 전까지 무슨 공부 추천?
작업하셨던 프로젝트에 대해 디버깅과 문서화를 한 번 해보시길 권해드리고 싶어요.
레거시 환경(?)에 공통적으로 나타나는 특징들이 있는 것 같아요.
데이터베이스의 펑션, 프로시저에 비즈니스로직이 모두 담겨있다거나,
메소드나 클래스의 분리 없이 절차지향적으로 하나의 메소드에 모든 코드가 작성되어 있다거나,
수천줄에 달하는 JSP, JS 파일들...
디버깅하기 어려운 로그 구성과 문서 없음 등...
이런 환경에서 작업하려면,
시니어분께 Flow가 어떻게 되는지 대략적으로 가이드를 한 번 받는 게 좋다고 생각해요.
그렇지만 그 이후에는 오롯이 스스로 분석하고 이해해서 작업해야 해요.
다른 지식들은 결국 필요할 때 찾아서 공부하며 해결하면 되지만,
그 과정에서 계속적으로 요구되는 능력이 있는데 저는 그게 디버깅과 분석이라고 생각해요.
유튜브에서 eclipse debugging, chrome debugging 과 같은 키워드로 검색하면,
어떻게 디버깅을 할 수 있는지 쉽게 이해하실 수 있을거에요.
(인텔리제이를 사용할 수 있다면 꼭 사용하시라 권해드리고 싶습니다)
breakpoint 를 어떻게 거는지, variables, expressions 를 어떻게 활용하는지 꼭 익혀두시길 권해드립니다.
그리고 본인이 최종 프로젝트로 작업했던 내용에 대해서 flow chart, class diagram, erd 등을 그리고,
어떤 기능이 어떤 흐름으로 작동하는지 객체나 테이블들이 어떻게 협력하는지 정리해보세요.
그리고 이걸 보기좋게 문서로 작성해서 이 프로젝트를 전혀 모르는 사람에게 한 번 보여줘보세요.
머릿속으로 이해만 하는 것과, 이를 문서화하는 것은 꽤나 큰 간극이 있습니다.
문서화는 더 깊고 더 분명한 이해를 요구하며, 이를 전달하는 능력까지도 요구합니다.
그러나 이를 해내고 나면, 프로세스를 쪼개서 분석하고, 흐름을 정확히 이해하는 데 도움이 됩니다.
그리고 이 과정은 업무하며 계속 겪으실 내용이라 미리 훈련해두시면 도움이 될거라 생각합니다.
5. 1년간 얼마나 성장한 것 같은지?
성장하기 위해 어떤 노력을 했는지?
1) 문서 작성, 지식 전파 훈련
큰 틀에서는 1년간 같은 일을 반복한 것 같아요.
코드를 분석하고 이해하고, 추가하거나 수정하고, 문서를 작성하고, 커뮤니케이션하는 거죠.
1년간 크고 작은 프로젝트에서 이 프로세스를 반복하며 훈련된 경험이 가장 큰 차이일 것 같습니다.
이 과정에서 주안점을 두고 노력한 점은
돌아만 가게 작업하는 게 아니라, 프로세스를 이해하고 작업을 하고자 했습니다.
특정 기능에 대한 수정이나 리팩토링이 필요할 경우,
해당 기능이 시작되는 시점부터 종료되는 시점부터, 어떤 데이터가 어떤 객체에 의해 주고받아지고,
그 과정에서 어떤 유효성 검증이나 CRUD가 일어나는지 글로 작성하며 기록한뒤,
프로젝트 종료 이후에는 이를 문서화에 사용했습니다.
OBS로 오퍼레이션 영상을 캡쳐하기도 하고, Flow Chart를 활용하기도 했습니다.
이렇게 정리한 내용은, 다음 작업자의 프로젝트 파악 및 작업에 큰 도움이 될 거라 생각했습니다.
이렇게 보낸 지난 1년의 경험 자체가 지난 1년 전과 비교할 때 큰 차이점으로 꼽을 수 있을 것 같아요.
2) 분석, 이해, 학습 능력
두번째는 1)번에서 파생되는 내용이에요.
시간이 지날수록 점점 더 난이도가 높은 업무를 배정받게 되고,
문제해결을 위해 몰랐던 개념을 공부해야만 하는 상황이 많아지게 되었어요.
단순 해결이 아니라, 정확한 원인 확인과 적용을 위해서
전혀 알지 못했던 개념에 대해 공부해야 한다면,
사실 이는 꽤나 많은 스트레스를 유발해요.
그렇지만 이렇게 얻게된 지식들은 꼭 이후에
다른 문제 해결에 도움을 주는 방식으로 재사용이 되더라고요
그리고 이 과정이 반복되면서, 조금씩 더 깊이 있는 내용을 학습할 수 있는 역량이 길러지는 것 같아요.
같은 내용을 학습하더라도 1년 전에 비해서는 더 빠른 시간내에 흡수할 수 있게 된 것 같아요.
그리고 1년 전이라면 포기했을 법한 조금 더 깊은 내용에 도전할 수 있는 기반이 길러진 것 같아요.
이 과정에서 주안점을 둔 점은,
해결해야 하는 문제의 근본 원인 탐지 과정을 기록하고,
해결하기 위해 이해해야 했던 핵심 개념을 요약하고,
해결이 됐을 때 이를 공유하는 것이었어요.
제가 새롭게 알게된 내용을 다시 정리하는 효과도 있고,
이를 기록으로 공유하면 다른 분들에게는 더 빠르게 흡수될 거에요.
그리고 나중에 유사한 재발했을때 빠른 대응에 도움이 될 것 같아요.
3) 클린 코드를 보는 눈
이건 사실.. 지난 1년간 저를 가장 많이 고민하게 했던 부분이에요.
일단 처음 입사해서 회사의 컨벤션을 익히고 이를 준수해야 한다는 마음도 있었지만,
동시에 이 코드가 정말 클린 코드가 맞을까,
단순 컨벤션 준수가 아니라 완전히 나의 코드로 흡수해도 괜찮은 걸까 하는 고민이 있었어요.
(아닌 것 같다는 생각이 계속 들어서요 ㅋㅋㅋㅋㅋ;;;)
코드리뷰 문화가 없다 보니, 제가 작성한 코드에 대해서 피드백을 받을 수가 없는 점도 컸어요.
문제는 샘플이 없다는 거였어요.
저는 이 부분에 대해서는 금전적 투자를 아끼지 않았어요.
저에게는 적지 않은 금액이었지만, 코드리뷰를 포함하는 유료 강의를 결제했어요.
돈으로 살 기회라도 있다는 게 다행이라고 생각했어요.
이론적으로만 공부하는 게 아니라,
과제를 부여 받아 내가 작성해보고, 이를 어떻게 개선할 수 있는지 직접 시범을 보는 것은
제게 완전히 새로운 눈을 뜨게 해주었어요.
지금껏 Java로 코딩해왔으면서, 나는 객체지향이 뭔지도 몰랐구나 라는 기분을 느꼈어요.
그리고 이제는 클린 코드, 클린 아키텍쳐를 마구 뿜뿜 할 수 있는 건 아니지만,
적어도 몇가지 기준과 규칙을 가지고 이것이 클린 코드인지 아닌지
볼 수 있는 눈이 약간은 생긴 것 같아요.
이건 1년 전과는 확실히 차이나는 점이라고 생각해요.
4) 내가 채워야할 부분을 보다 명확히 인지
1년 전에는 아는 게 없어서 질문도 없는 그런 상황이었던 것 같아요.
그리고 이제는 어떤 역량이 부족하고 어떻게 채워야할지 밑그림은 그려지는 듯 해요.
이는 여러 IT계 선배님들의 도움을 받아서 성장한 부분이라고 생각해요.
동경하는 여러 회사의기술블로그와 기술세미나 영상들을 보며
저기에선 저런 기술을 사용하는구나, 저런 역량을 필요로 하겠구나 하는 걸 느꼈어요.
현재 재직중인 회사에선 사용되지 않지만,
목표하는 회사에서는 JPA를 사용해서, JPA도 유료강의를 결제했어요.
그리고 사내 개발환경 개선을 위해 자발적으로 몇가지 프로젝트를 JPA로 진행해봤어요.
6. 개발자라는 직업이 나하고 맞는지 어떻게 판단할 수 있을지?
원하는 정보가 있을 때, 스스로 탐색해서 이를 얻어내고 학습하는데 익숙하다면 도움이 됩니다.
영어로 된 글을 읽는데 익숙하시다면 큰 도움이 됩니다.
논리적 사고를 즐기신다면 도움이 될 거라고 생각합니다.
직접 무언가를 만들어서 문제를 해결하고 싶은 욕구가 있다면 긍정적이라고 생각합니다.
실제적으로 체험을 해보고 싶으시다면 아래 링크를 통해
기본적인 학습과 실습을 해보시길 권해드립니다.
https://www.youtube.com/playlist?list=PLq8wAnVUcTFV7wEVu2qcAChtAOYusZwzj
https://www.youtube.com/playlist?list=PLq8wAnVUcTFUfpRAw03NgQVQQwBpfJJZI
국비 과정 처음 시작할때 보통 자바로 시작을하고,
별찍기를 많이들 할 거라고 생각해요. 저도 그랬습니다.
그 과정까지 인터넷에서 바로 경험해보실 수 있습니다.
꼭 제가 예시로 제공한 링크 이외에도 별찍기를 수행하는 데까지 필요한 지식을 제공하는 소스는 많고,
별찍기 문제도 굉장히 다양합니다.
여기까지의 과정을 혼자서 찾아보고 학습하고 해결해가며
재밌고 신기하고 더 해보고 싶다면, 긍정적이라고 생각합니다.
7. 성장은 어떻게?
개인적인 사견임을 전제로 말씀드리니, 꼭 참고만 하세요!!
1) 경력 기술서 주기적으로 작성하기
입사 이후에 정신없이 일을 하다보면,
초반에는 모르는 것 투성이다보니 업무를 하는 것 자체가 성장이 됩니다.
그러나 시간이 지날수록 업무만으로는 성장이 매우 더디게 되는 시점이 옵니다.
이 시점에 대한 자각이 늦을 경우 시간을 낭비하게 될 수도 있으니 주의하세요.
저는 정말 아쉬운게,
업무를 열심히 해서 힘든 느낌과 실제적 나의 성장이 반드시 일치하지 않게 되는,
업무만으로는 성장이 더디게 되는 그 시점에 대한 인식이 늦어서 2~3달 가량을 허비했다는 점입니다.
열심히 하고 있는 줄 알고 긴장을 늦췄던 겁니다.
그런데 이직을 한다고 가정하고 생각을 해보니
경력기술서에 적을만한 내용이 하나도 없는 걸 깨달았습니다.
물론 이것저것 배우고 성장한 게 있지만, 이제부터 진짜 성장을 위해서는
업무가 아니라 따로 별도의 노력을 기울여야하는구나 라는걸 뒤늦게 깨달았습니다.
대단히 꼰대 같은 말을 늘어놓고 있는데 ㅋㅋㅋ;;;
암튼.. 다른 분들께서는 저처럼 시간을 낭비하지 않으시길 바라는 마음에서 적어봤습니다.
이후로도 꼰대스런 말이 계속 튀어나올 겁니다.
결코 제 경험이 정답이라고 주장하진 않으니 ;ㅅ;
저 사람은 저렇게 생각했구나 하고 너그럽게 이해해주세요 ^^;
2) 목표 회사 설정하기
목표 회사를 설정하세요.
그 회사의 기술 블로그와 기술 세미나 영상등을 보면,
어떤 기술적 도전들을 해결하고 있고, 어떤 역량을 갖춘 인재들을 원하겠구나 하는 감이 오게 됩니다.
아마 첫 회사에서 단 번에 내가 가장 가고 싶은 회사로 가는 건 쉽지 않을 겁니다.
그러나 장기적으로 커리어를 그 방향성에 맞추는건 가능합니다.
가령 저의 경우에는, 단번에 제 목표 회사에 가지 못하더라도,
1년 정도를 채운 이후에는 SpringBoot, JPA, MySQL, AWS를 사용하는,
규모가 작더라도 서비스 기업으로 가서 비슷한 기술스택의 운영환경 경험을 해야겠다. 라는 설정을 할 수 있었습니다.
입사해서 일하다 보면 정말 피곤합니다.
퇴근하면 쉬고 싶고 배를 채우고 드러 눕고 게임하고 싶고 유튜브 보고 싶은 거 누구나 똑같다고 생각합니다.
그래서 더더욱 목표 회사를 설정하고, 정말 간절히 그곳에 가고 싶어해야 하고,
구체적인 세부목표가 필요합니다.
어쩌면 위기감도 필요합니다.
이대로 있다간 내 커리어 큰일 난다. 이런 위기감도 동기부여에 큰 도움이 됩니다.
8. 마치며..
어떻게 하면 다른 분들께 도움이 되는 방향으로 1년간의 경험을 나눌 수 있을까 고민하며
썼다 지웠다 반복하며 적어봤습니다만 많이 부족한 글입니다 ^^;
제가 적은 내용과 다른 의견에 대해서도 겸허히 귀를 열고 듣도록 노력할테니
의견 남겨주시면 감사하겠습니다 :)
모쪼록 저의 기록이 다른 분께 참고가 되고 도움이 된다면 기쁠 것 같습니다.
저는 2월부터 새로운 곳에서 성장을 위한 도전을 새롭게 시작하게 됐습니다.
2년 전 국비 시작 전날 밤에도 잠이 안오고 설렘과 두려움이 공존했는데...
요새 비슷한 감정이 듭니다 ^^;
열심히 해보고, 또 경험 나누도록 하겠습니다.
감사합니다.
'Thoughts & Records' 카테고리의 다른 글
우아한테크코스 레벨2에서 배운 것 (0) | 2022.07.08 |
---|---|
우아한테크코스 레벨1에서 배운 것 (6) | 2022.04.23 |
2021 조직 생산성 개선을 위한 제안 (2) | 2021.12.25 |
취업 경험을 공유하다가 치킨을 선물받았습니다. (0) | 2021.04.19 |
초보 직장인 일기 (1) (3) | 2021.03.12 |