ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LG U+ 아이들나라 인턴 후기/회고
    회고 2022. 9. 14. 11:00
    728x90

    인턴 시작

    설레는 마음으로 인턴기간에는 어떤 일을 하게 될지 고민하게 되었던 것 같습니다.

     

    입사 전 알고 있었던 사실은 "Kotlin + Spring을 사용한다" 였기 때문에 kotlin의 기본에 대해서만 학습을 미리 진행해 보았습니다.

     

    Kotlin을 한번도 다뤄보지 못했기 때문에 두려움도 있었지만 요새 많이 사용하는 추세라고 느꼈고 배우면 좋을 것 같다고 느껴서 오히려 좋았습니다.

     

    첫날 백엔드2/안드로이드2명으로 팀이 정해지게 되고 간단한 오리엔테이션을 통해 서로를 알아가는 시간들을 가졌습니다.


    스프린트 1

    인턴기간 동안 해야 할 과제가 나왔습니다.

     

    요약하자면 "미디어 서버 구축" 백엔드 인턴분 모두 미디어 서버를 구축해본 경험이 없었고 테스트를 위한 kotest, mockk 등을 학습해야 하는 러닝 커브가 존재했습니다.

     

    미디어 서버를 구축하기 위해서는 클라이언트와 연동할 때 효율적으로 데이터가 잘 전달되어야 한다고 생각했고 기간이 얼마나 걸릴지 모르는 두려움이 있었습니다.

     

    그래서 "스프린트 1에서 구현해야 하는 기능들을 대부분 구현해보자"라는 목표를 세우고 나아갔습니다.

     

    스프린트 1에는 퇴근 후에도 집에서 작업하며 어느 정도 무리를 하며 진행했지만 스프린트 1이 끝났을 때는 목표에 도달하여 만족스러웠습니다.


    스프린트 2

    스프린트 2 시작 전 계획을 세울 때 클라이언트의 진행상황을 고려하면서 팀원분들과 여러 가지 고민들을 가졌습니다.

    "일단 어느 정도 기능은 된 것 같은데 어떤 것을 더 하면 좋을까?"

     

    우리의 성장 가능성을 보여주기 위해서는 어떤 것을 할지 고민을 많이 했던 것 같습니다.

    추가 기능? DDD, 멀티 모듈? CD? AWS Midea Converter?

     

    여러 가지를 고민하고 팀장님과 함께 이야기를 해보았을 때 나아갈 방향성에 대해서 찾을 수 있었습니다.

     

    인턴십은 결국 회사에서 함께 일할 사람을 뽑는 과정이며 프로젝트 과제를 내준 이유도 이 사람이 문제에 대해서 어떤 사고방식으로 접근하는지 그리고 그 속에서 의사소통과 협업은 어떻게 하고 코드 품질을 얼마나 고려하는지가 중요했습니다.

     

    결국 고민한 모든 것들을 포기하고 다음과 같은 부분들에 초점을 맞추었습니다.

    - 현재 기능 개선

    - 장애가 날 수 있는 부분 개선

    - 쿼리 최적화

    - 클린 코드를 위한 리팩터링

     

    스프린트 1에서 이미 어느정도 구현을 해왔기 때문에 금방 끝날것이라 생각했지만 현재 프로젝트에 대해 깊게 고민하고 이해할수록 해야 할 일들이 생겼고 마감1~2일전에 계획했던 일들을 모두 마무리할 수 있었습니다.

     

    스프린트1에서 무리한 만큼 장거리 달리기를 위해 스프린트 2에서는 그래도 어느 정도 여유를 가지고 진행하였습니다.


    협업

    팀의 목표가 가장 중요하기 때문에 팀의 목표를 정하기 위해 서로 끊임없는 토론을 진행한 것 같습니다.

     

    또한 여러 선택지가 주어졌다면 각자 자신이 생각했을 때는 이런 방향이 어떤 이유로 좋은지 설명하고 팀원을 설득하며 같은 목표로 나아가는 과정을 거쳤습니다.


    배운 점 & 느낀 점

    새로운 기술들을 학습하면서 배워간 것

    cache, logging, S3 local stack, @Async 등등 또한 Kotlin + Spring을 다루어보고 kotest와 mockk, Rest Docs를 통한 kotlinDSL 문서화, 코루틴을 통한 동시성 테스트를 진행하여봤습니다.

     

    이런 과정 속에서 어떻게 구현했는지 서로의 의견을 공유하고 이해하였습니다.

     리팩터링을 통해 학습한

    리팩터링을 위해 많은 고민을 하였습니다.

    - 의존성은 어떻게 가져갈지

    - 지금 코드는 테스트하기 쉬운 코드인지

    - 조금이라도 더 의미 있는 네이밍

    - 메서드의 책임은 어느 정도의 크기가 적당한지

     

    리팩터링 과정 속에서 팀원분이 작성한 코드들도 온전히 이해하면서 나의 지식으로 만들어나가는 과정이 되었던 것 같습니다.

     

    느낀 점

    리팩터링 비용은 생각보다 비싸다

    코드의 품질이 나쁘다면 기존의 코드를 변경하기 위해서 시간이 오래 걸린다는 것을 몸소 느끼게 되었습니다.

    따라서 최대한 코드 품질을 높기 유지하려고 노력해야겠다고 생각했으며 객체지향, 클린 코드에 대해서 더 공부하고 싶다고 느꼈습니다.

     

    장애에 대비하기 위해서는 깊게 고민하고 이해하기

    @Transactional의 Exception에 따른 rollback, 최적화 과정에서 발생한 JPA 문제 해결, 동시 사용자 요청에 대한 예외상황 등은 고민할수록 적용할 부분들이 보였기 때문에 문제에 대해 깊게 고민하고 이해하는 습관을 들이는 것이 중요하다고 느끼게 되었습니다.

     

    협업과 페어 프로그래밍

    팀이 나아갈 방향성에 대해 끊임없이 고민하고 토론하는 시간을 가졌습니다.

    이 과정 속에서 서로의 생각을 공유하여 팀의 목표를 위해 함께 움직였기 때문에 성공적으로 프로젝트를 잘 마칠 수 있었던 것 같다고 느꼈습니다.

     

    질문 자주 하기

    질문하기에 앞서 "너무 간단한 것을 물어보는 건 아닐까?", "구글링 하면 나오는 문제가 아닐까?"라는 두려움이 있었습니다. 하지만 실제로 질문을 해서 답변을 받거나 코드 리뷰를 받을 때 얻는 인사이트가 컸기 때문에 궁금한 점들을 조금 더 물어보면 좋았을 것 같다는 아쉬움이 있습니다.

     

    Git, Jira

    Git과 Jira를 이전에도 다루어 보았지만 프로젝트를 진행하면서 가장 많이 배웠습니다.

    하지만 아직 rebase, commit 되돌리기, conflict 해결에 대해서는 미숙하다고 생각하여 더 공부해보고 싶다고 느꼈습니다.


    끝으로

    항상 많은 도움 주신 인턴십 1기분들에게 감사드리며 저의 생각을 확장시켜주신 많은 시니어분들에게도 감사드립니다.

    3주간 짧은 기간이었지만 후회 없이 열심히 지냈으며 많은 것을 배워간 것 같습니다.

     

    또한 아이들 나라 지원에 대해 고민하시는 분들이 계신다면 꼭 추천하고 싶습니다.

    좋은 시니어분들이 많이 계시며 기업문화 또한 수평적이고 자유롭습니다.

    무엇보다 이분들과 함께 일하면 어떤 일이던 할 수 있을 것 같다는 느낌을 받았습니다.

    특히 서비스의 성장에 따라 달라질 순 있겠지만 주니어에게 엔지니어적인 성장으로 "달리는 마차에 바퀴를 갈아 끼면서 점진적으로 개선하기"를 몸소 느낄 수 있을 것 같다고 생각합니다.


      

    결과

    댓글

Designed by Tistory.