요즘 글을 거의 쓰지 못하고 있어서 어떤 주제로 쓸지 고민하던 중에 나의 근황에 대해서 정리하게 되었다.

 

직장을 가지고 지속적으로 글을 쓴다는 것은 정말 힘들고 존경스러운 일이라는 것을 다시 한번 느끼는 계기가 되었다. 

 

 

 

학습 근황

이제 백엔드 공부를 시작한 지 10여 개월 정도가 지났고 학습일지도 차근차근 쌓이고 있다.

회사에 다니면서는 귀찮거나 피곤하다는 이유로 제대로 하지 못한 날도 있었는데, 이러한 유혹을 잘 뿌리치는 것이 학습을 지속함에 있어 중요한 것 같다.

 

 

 

 

회사에 다니면서 간단한 단축 URL 서비스를 만들어보았다.

회사에서 기존 프로젝트를 유지보수하다가 신규 프로젝트로 넘어가게 되었었다.

넘어갈 신규 프로젝트의 기술 스택을 듣고 살짝 경험해보기 위해서 구상하고 진행하였다.

이를 통해 Spring에서 Redis를 사용하여 캐싱하는 것에 기본적인 이해와 Docker와 Compose를 경험할 수 있었고, 평소에 난감했던 JPA의 Transaction 경계 등을 어느 정도 체감할 수 있었다.

 

추가로 TestContainers 라는 라이브러리를 이용하여 실제 개발 환경과 구분되는 통합 테스트를 구성하는 방법을 알 수 있었다.

 

 

 

 

지금도 스터디중..!

카카오톡 오픈 채팅방과 디스코드의 개발자 커뮤니티를 통해 스터디를 구하고 진행할 수 있었다.

나름대로 안면이 있는 개발자분들과 진행하다 보니 스터디가 중간에 공중분해되는 불상사는 없어서 정말 다행인데, 이러한 스터디들도 가능한 선에서 지속하려고 한다.

 

 

 

 

사이드 프로젝트로 시작한 신입 개발자의 학습 자료 정리 저장소

오픈 커뮤니티에서 있다 보면 학습할 키워드나 방향을 혼자 잡지 못해서 물어보는 사람들이 많다. 하지만 이런 사람들의 경우 방향 자체를 알지 못하다 보니 모호하게 혹은 추상적으로 질문하여 대답을 받지 못하는 경우도 흔히 있는데 이러한 상황들을 보며 생각하게 된 프로젝트였다.

현재는 어떠한 내용을 보강할까 고민 중인데 의견이 온다면 최대한 반영할 생각이다!

 

 

 

 

이전에 언급했던 "올해 더 배우고 싶은 것들" 근황은..?

 

Kotlin

기본적인 문법의 차이(Java)와 기본적인 동작 원리 등을 학습하였다. 실제 프로젝트를 진행해보진 못했기 때문에 다음 토이 프로젝트에서 사용해볼 생각이다.

 

 

JPA

스터디와 회사 업무를 통해 기본적인 JPA 사용 방식은 학습할 수 있었던 것 같다. 하지만 객체 지향적인 혹은 DDD를 통한 설계 경험은 없다고 봐야 하며, 기존에 개발해오던 방식인 트랜잭션 스크립트 방식에만 익숙해져 있어 좀 더 나아가는 기회가 필요할 것 같다.

 

 

Network + HTTP

HTTP 완벽 가이드를 학습하진 않았고, 영한 님의 HTTP 강의를 통해 학습했었다. 좀 더 나아가는 내용은 "IT 엔지니어를 위한 네트워크 입문"이라는 서적을 통해 학습해보아야 할 것 같다.

 

 

Database

러닝 SQL을 조금씩 학습하고 있으며, 부족한 관계형 모델에 대한 기반 개념과 SQL 튜닝을 위해 SQL 튜닝 비법이라는 서적도 구매했다. (언제 볼지는 모른다...!)

 

 

React ( 새로운 아이템...! )

후술될 특별한(?) 상황 때문에 여유가 생겨서 학습하게 된 주제이다. 평소에 프론트엔드에 대해서 타임리프와 같은 SSR 방식을 제외하고는 정말 무지한 상태였는데 이런 상태를 조금이라도 벗어나기 위해 학습을 시작했다.

 

해보니 꽤나 흥미가 있어서 REST API와 통합하는 과정까지는 쭉 학습해볼 것 같다.

 

현재 러닝 리액트, Fast campus와 니꼴라스(안녕하세요!) 아저씨의 무료 강의를 보고 있다.

 

 

알고리즘, 자료구조

이것도 후술될 특별한 상황 때문에 중요성을 뼈저리게 느끼게 되었다. 학습을 계획하면서 일정 시간 이상을 분배하여야 할 것 같다.

 

 

 

 

가장 큰(?)일..

3월 8일에 합격하여 다니고 있던 곳을 7월 9일에 퇴사하게 되었다. ( 딱 4개월 하고 하루를 더 다녔다.)

 

우선 이전 근황 글에는

1년 차 스타트업이고 연봉이 높은 편은 아니지만 원하던 스킬 셋들을 사용하고, 고 경력의 개발자들이 많은 곳이기에 설계, 기술, 경험들을 기대하고 선택하게 되었다.

라고 작성했던 것 같은데, 이때 생각했던 것들과 괴리감을 느낀 부분들이 있었다.

 

 

스킬 셋은 설계에 영향을 미치지 않는다.

어떠한 기술 스택을 사용하더라도 Application의 구조는 이전의 개발 모델과 같을 수 있다.라는 것을 알 수 있었다.

 

나는 회사에 다니면서 1달 동안 지정받은 인강들을 수강하고 바로 유지보수 중이던 프로젝트에 투입되었는데, 회사를 나오기 전까지 총 2개의 프로젝트를 경험하게 됐으며, 이것들은 각각

  • Mybatis(Wrapper 용도) + Stored Procedure
  • JPA, QueryDSL

이라는 Persistence Framework와 Sub routine 기능을 사용하였다.

 

JPA, QueryDSL를 이용해서 하는 것이 Query Creation과 Dirty Checking을 통한 상태 변경뿐이었고, 전체적인 설계와 사용 방식은 Procedure를 사용하던 플랫폼과 같다는 것에서 내가 알던 것과는 괴리감이 존재했다.

Entity도 결국 Data Holder로써 존재했다.

 

경험 없는 신입의 망상이었던 걸까? 나는 그렇게 생각하지 않고 싶다.

 

 

1년 차 스타트업이었지만 돈을 벌기 위해서는...

사실 위의 문제가 이 항목의 영향을 어느 정도 받았을 수도 있다. 아직 자체 서비스가 없던 회사는 SI, SM 사업을 통해 돈과 레퍼런스를 쌓아가고 있었다.

 

회사의 인력이 모두 개발자였지만 다들 담당하는 것들이 많았기 때문에 일정에 많이 쫓기곤 하였는데, 이게 새로운 변화(설계, 방법론, 프로세스 등의 구상)를 가져올 수 없었던 주요한 요인인 것 같다.

 

회사의 개발 문화적인 부분(스프린트, 스터디와 발표, 지라를 이용한 작업 관리 등)도 좋았었지만, 사원들이 늘어나고 프로젝트가 추가됨에 따라 확장되어야 하는 요소들이 일정 때문에 방치되기도 했다.

 

 

개발자의 편의를 위한 개발

이 항목은 개인적으로 많은 사람의 생각이 갈릴 것 같은 내용이다. 그렇기에 내 사심(?)을 적기보단 두 가지 사례만 보이고 넘어갈 생각이다.

  1. "개발 편의를 위해서 구현된 REST API가 응답하는 DTO와 Entity의 Model이 대부분 혹은 완전히 같았다." 이 말은 즉 매 요청이 Over fetching 되었다는 이야기이며, 변경되는 요구사항에 따라 이러한 값들을 프론트에서 필터링을 했다.
  2. 실제 비즈니스 개발 시에는 필요 없는 Lombok Annotation들을 Test code 나 혹시나 사용할 수 있는(?) 상황을 위해 모두 달아놓고 개발했다.

 

 

물론 회사의 좋은 점도 많았다.

 

개발자들이 학습하는 것에 열린 사고를 하고 있었다.

  • 여유만 있다면 스터디 주제를 정해 정리하고 발표 일정을 잡은 뒤 회의실을 빌려 주제에 대한 리뷰 등을 진행할 수 있었다.
  • 흥미 혹은 필요 때문에 Sample Project를 만들어서 시연해보는 때도 있었다.

 

 

연차와 직급에 상관없이 맞는 말을 하는 사람의 의견을 수용하는 편이었다.

  • 모델 설계나 요청 흐름에 있어서 제시한 상황 혹은 의견을 바로 프로젝트에 반영시키기도 하였다.

 

 

모난 사람은 없었다. (그럼 내가 문제인가..??)

 

 

막히는 부분이 있다면 다른 개발자와 같이 이야기하며 나아갈 수 있었다.

  • 디버깅 같은 경우 Code with me를 사용하여 같이 살펴보기도 했었다.

이 내용은 이만 줄여야 할 것 같다. 그래도 회사 분들과 나쁘게 끝나진 않았다. (라고 생각한다..)

 

 

 

 

그래서 면접을 봤다.

위와 같은 상황에서 현재 처우까지 생각을 비집고 들어오니 여러 불만을 가지게 되었다. 그래서 6월 중순쯤 3개의 회사에 지원하게 되었는데 직접 언급하는 것은 조심스럽기 때문에 알파벳 순서로 명명하겠다.

 

3곳만 지원한 이유는 회사에 다니면서 이직 준비를 병행하여야 했고, 제한된 자원(시간, 연차..) 때문에 한 번에 여러 곳을 지원하는 것은 어렵다고 생각해서였다. 다 떨어질 때에는 9월이나 10월쯤 다시 지원하려고 했었다.

 

 

코딩 테스트

해당 부분은 거의 준비하지 못했고, 문자열 위주의 문제만 20개 정도 뽑아 풀었던 것 같다. (브3~실3?) 그렇게 효과를 보진 못했다.

 

 

CS

개인적으로 정리하던 면접 질문과 Github의 몇몇 Repository를 참고하여 준비하였다.

  • 운영체제, 네트워크, 간단한 암호학, 자료구조

보았던 것 대비 면접에서 나온 빈도는 30% 정도였던 것 같다.

 

 

언어

Java를 학습했을 때 정리했던 노션 글들을 2번 정도 읽었는데, 열심히 정리한 덕분에(?) 금방 복기할 수 있었다.

보았던 것 대비 면접에서 나온 빈도는 10~15% 정도였던 것 같다.

 

 

프레임워크

Spring Framework는 사실 아예 준비하지 않았다..

포지션 자체는 모두 Java 혹은 Kotlin 기반의 Spring 이였는데 A사 면접에서 나온 3개의 질문 빼고는 물어보지 않았다.

 

 

이력서

작성한 이력서의 프로젝트를 위주로 준비하였었는데, 예상치 못한 질문을 받기도 했다.

면접마다 2~3개 정도의 질문이 나왔다.

 

 

 

A사

여러 분야의 소프트웨어를 개발하고 있는 중견 기업이었다.

 

 

전형 프로세스

서류 → 코딩 테스트 → 전화 면접 → 최종 면접 → 합격 발표

 

 

정리

해당 회사의 경우 추천인을 통해서 전형을 진행하다 보니 서류의 경우 금방 통과가 되었으며, 코딩 테스트를 진행하게 되었지만 나온 문제에 대해 잘못 접근하여 완전히 풀지 못했었다.

이때 "마이너스로 깔고 들어가는 것 같아서 통과하면 면접 경험이라도 쌓아야지…." 했었다.

 

다행히 기회를 주셨는지 다음 전형을 진행할 수 있었다.

 

 

전화 면접의 경우 35분 정도 진행되었으며, 기술 위주로 질문을 받게 되었다.

 

자바 GC 위주 질문, SOLID 원칙, Proxy, AOP, 자료구조, HTTP 관련, 데이터베이스, JWT, AWS, CI/CD 질문 등이 나왔었다. 3개의 질문을 제외하고는 다 어느 정도 대답을 할 수 있었고, 좋게 보셨는지 통과할 수 있었다.

 

 

최종 면접의 경우 화상으로 1시간 정도 진행되었으며, 이것 또한 기술 위주로 질문을 받게 되었다.

 

코딩 테스트에서 나왔던 문제에 대한 이야기, 이력서에 있던 Docker, Redis나 RabbitMQ 등을 어떻게 알게 되었고 어떤 학습 방법을 취했는지, 어떤 개발 방식을 선호하는지, 자료구조, 스프링, JPA, JWT, 네트워크, 젠킨스 등을 질문받았으며, 상황을 주고 어떻게 데이터를 처리할 것인지도 물어보았다. 그 시간 동안 최대한 내 생각을 말하기 위해 노력했다.

 

그리고 약 10일 뒤 기대하지 못했던 최종 합격 통보를 받을 수 있었다. 이번 달 26일에 입사할 예정이고 그전까지 개인 공부를 하며 쉬고 있다.

 

 

 

B사

차량과 관련해서 사업을 벌이고 있는 기업이었다.

 

 

전형 프로세스

서류 → 전화 면접 → 기술 면접 → 최종 면접 → 합격 발표

 

 

정리

해당 회사도(?) 추천인을 통해서 전형을 진행하게 되어 서류는 면제되었으며, 지원한 지 1주일이 안 되어서 바로 전화 면접을 진행하게 되었다.

 

 

전화 면접의 경우 13분 정도 진행되었으며, 2개의 질문을 받을 수 있었다. 하나는 CS 질문이었고, 하나는 경험에 대한 질

문이었던 것으로 기억한다.

 

경험을 물어보는 질문에 대해서 생각해본 적이 없었기에 다른 상황으로 대체하여 대답하였고 해당 면접을 통과하여 기술 면접을 진행하게 되었다.

 

 

기술 면접은 대면 면접으로 진행하였으며, 이력서 위주 질문, 자바 JVM, GC 관련 질문, OS, 대용량 처리 관련 질문, JPA와 쿼리 매퍼에 대한 질문 등을 받았고 상황을 제시받아 특정 데이터를 처리하는 방법들을 제시하는 질문을 받았다. (마지막의 경우 정말 생소한 경험이었고 정말 많이 떨었던 것 같다.)

 

면접을 보고 나오면서 아쉬운 것들이 정말 많았었는데, 그 감이 정확했던 것인지 탈락하게 되었다.. 

 

이 회사의 면접을 보면서 자료구조, 알고리즘 지식의 중요성을 다시 한번 되뇔 수 있었다.

 

 

 

C사

부동산과 관련된 스타트업이었으며, 특별한 점은 로켓 펀치에서 공고 지원 제안이 와서 이력서를 넣게 되었다.

 

 

전형 프로세스

서류 → 기술 면접 → 합격 발표

 

 

정리

로켓 펀치를 잘 들여다보지 않다 보니 제안을 늦게 확인하여 5일 후에 이력서 지원을 했었는데 TO가 1명뿐이었는지 그 사이에 개발자를 채용하였었고, 해당 내용을 안내받고 탈락하게 되었다.

 

 

 

요즘 인생을 정말 알차게 보내고 있는 것 같은데.. 번아웃을 좀 조심해야 할 것 같다. (약간 낌세가 오고 있다...)

+ Recent posts