예전에 작성했으나 업로드를 못했어서 올립니다. 🥲
레벨3이 끝났다.
프로젝트였는데 걱정도, 기대도 많이 했는데 무사히 잘 끝난거 같다.
우선, 레벨2 때 KPT 회고나 프로젝트를 위한 마음가짐은 크게 도움이 되지 않았다.
프로젝트를 해보지도 않았을 뿐더러, 팀을 만나기 전 단순히 내 마음가짐 및 Try
때문이라고 생각한다.
이번 회고 내용은 프로젝트를 하며 수행한 경험과 느낀점들에 대해서 작성할 거 같다.
물론, 나도 개발이나 삽질을 되게 좋아하지만 실제로 개발을 한 시간은 전체의 50%도 되지 않은거 같다.
오히려,
우리팀의 그라운드 룰 회의를 1시간 넘기지 말자
가 있었으나
월요일 일과를 시작하려는데 회의가 1시간만에 끝나지 않았는데 뭐 어떻게 그만할 수 있는가.
그래서, 소제목과 같은 의견이 나왔다.
사실, 이게 정답인지는 모르겠는데 나는 해당 접근이 더 효율적이다를 느낀거 같다.
모든걸 다 같이 정하려고 하니 모두가 대화를 참여하는거 자체가 어렵기도 하고 ( 7명만 되도, 회의실 안이 꽤나 시끄러워진다. )
모두의 의견이 똑같을 수가 없다. 이때, 반대 의견이나 다른 의견들을 모두 수용하거나 설득하려고 하면 할 수록 더 시간이 늘어나고, 어려워진다.
특히, 구현을 하기 전까지는 모르거나 알 수 없는 부분들도 미리 지레 예측하거나 겁먹어서 이를 기반으로 얘기할 때도 있었다.
우리, 전문적인 실력이 있고 시니어 개발자들이라면 모르겠는데 아직 파릇파릇 성장해나가는 주니어 개발자들이
내가 알기로 어떻고, 이거는 이래서 안되지 않나?
와 같은 말은 회의에서 의미가 없다.
그래서, 큰 기능 랭킹 기능
, 리뷰어 -> 리뷰이 에 대한 매칭 기능
같이 큰 기능에서 플로우만 얘기하고
같이 작업하는 사람이랑 같이 에러 처리 & 플로우 시 요청 / 응답 등을 논의 했다.
우리는 2주마다 데모데이를 진행했다. 이는, 솔직히 한번도 경험해보지 못한 경험이였다.
예전에 진행했던 졸업작품 프로젝트에서는 방학전 한번, 개학하고 9월에 한번 총 2번 밖에 검사를 하지 않았다.
그래서, 그냥 내가 개발을 하고 싶은대로 했고 뚜렷한 목표 없이 큰 틀을 향해서만 나아갔다.
그러다 보니 일정량의 속도가 나오지 않았었다.
어떤 주는 매일 밤 늦게까지 코드를 작성하기도, 어떤 주는 거의 하루 정도 밖에 개발을 하지 않는 경험이 있었다.
반면에, 우테코 내 프로젝트는 뚜렷한 MVP 를 설정하게 해주고, 팀원들 전체도 정해진 MVP 를 향해 업무를 수행해야 하는 굴러가는 챗바퀴
같았다.
이 부분에서도 좀 스트레스를 받았었다.
내가 개발을 더 하고 싶거나, 기능을 더 추가 하고 싶은데도 데모데이와 데모데이때 요구하는 다른 사항(인프라 구축,로깅,문서화 등) 때문에 멈춰야 했기 떄문이다.
지금 회고를 하며 생각하는 점으로는 이게 당연한 수순이지 않을까 싶다.
회사에서는 오히려 더 절박하게, 많은 사항들을 수행하면서 데모데이처럼 MVP 를 완수해내야 하지 않을까.
좀 더 이 챗 바퀴를 효과적으로 굴러가는 방법을 레벨4에서 생각해봐야 겠다.
프로젝트는 단순히 자바-스프링으로 개발을 하는게 아니라 많은 부분을 우리가 관여하게 만들었다.
기능 기획, 기초 디자인 같은 비개발적인 요소부터 서버 배포&인스턴스,DB 관리 같은 데브옵스(?) 적인 요소들 까지.
그리고, 기능을 나눠서 프론트엔드와 같이 협업을 해서 내가 프론트엔드의 기초적인 요소와 흐름까지도 알았다.
이때, 이 크게 3자기 요소들도 하면서 느낀점으론
다 서버 개발자의 역량을 향상시키는데 도움되 된다는 것이였다.
도메인 지식과 기획에 대한 지식을 모르고, 개발하는 건 의미가 없다.
흥미도 떨어질 뿐더러, 잘못된 방향으로 개발이 될수도 있기 때문이다. ( TDD 를 지키며 작성했는데, 애초에 로직이 잘못되거나 다 엎어야 한다면? )
이 부분은 솔직히 어둡게 생각하면 한 없이 어두워질거 같다. ( 기획을 같이 얘기해도 기획자나 PM 이 변경하거나 엎을수도 있을거니까 )
그럼에도, 기획을 개발자가 참여함에 불가능을 사전에 막거나, 더 나은 방향으로 향할수 있기 때문이다.
기획자가 A.1 을 원했는데 이게 시간 및 서버 부하를 가중시킨다면
A.2 로 개발자가 이끌어내는것도 충분히 타협시키는게 개발자의 역량이지 않을까...?
대기업에 취업한다 하더라도, 내가 완벽하게 서버 배포나 인프라 쪽에서 분리가 될 수 있을까?
그리고, 분리가 되더라도 자바-스프링만 한 개발자는 우물 안의 개구리가 아닐까 생각한다.
MSA 적인 요소가 되면 될수록, 서버 개발자가 해야할 일은 늘어날 거라고 생각한다.
( 작은 프로젝트 단위이므로, 서버 개발자가 충분히 담당할 수 있는 크기가 될 것이므로 )
밑에서도 얘기하겠지만 하나도 모르는 것과 조금은 아는 것은 정말 어마어마하게 큰 차이 일 것이다. ( 물론, 모든 걸 자세히 아는게 베스트 🙂 )
생각해보면, 이미 우리는 데브옵스적인 요소들에 밀집되어 있다.
CI 를 하는 워크플로우, JPA 를 사용할 때 연결하는 DB 주소, CORS 를 열때 허용하는 주소 등등
이런 걸 데브옵스에 모든걸 맡길 수는 없을거다.
3차 데모데이에 요구사항 중 기능 하나를 프론트엔드와 협업
이라는 요구사항이 있었다.
솔라와 브리가 이미 정답은 말해줬지만
프론트엔드와 협업을 하라고 한 이유는
백엔드 개발자라면, 자신이 맡은 기능이 프론트부터 백엔드 까지 어떤 흐름으로 진행된다를 자신있게 말할 수 있어야 한다고 생각해요.
시간과 여건이 된다면 프론트엔드와 기능이 정해진 후 서로의 프로세스가 어떻게 진행 될 지
알게되는건 매우 좋은거 같다.
직접적으로, 어떻게 요청 & 응답을 보내서 패킷 크기와 응답 시간등도 서로 유추할 수 있고
C.S 적인 요소들도 더 알아갈 수 있었다.
프로젝트 중 의견 다툼(?) 까진 아니고, 불만에 대한 얘기를 프로젝트 팀원들에게 꺼냈다. ( 다시 한번, 잘 받아준 팀원들 에게 감사를 🙏🙏 )
자세한 내용은 레벨3 글쓰기에서 작성했다.
( 프로젝트에 대한 열정이 안느껴진다는 내용이였다. )
프로젝트에 대한 열정이나 개발에 대한 열정은 누구도 강요할 수 없는 것이다.
3차 데모데이때 내가 스트레스를 받았는 만큼, 내가 4차 데모데이 때 예비군을 갔을때 스트레스를 받았을 수도 있을 거 같다. ( 애쉬, 뽀로로 땡큐 ☺️ )
열정이 120% 라고 하더라도, 그 열정이 계속 이어질지 모를 뿐더러 열정이 계속 이어지는게 더 재앙일 수 있다.
( 나는 100%라고 생각하는데 누가 열정이 안 느껴진다고 계속 강요하면...? )
열정은 구체적이고 명확하게 눈에 보이는 부분으로 정하고, 이를 할 수 있을지 / 없을지 그 중 어려움이 없는지 합의
를 하는게 좋은거 같다고 느꼈다.
그렇기에, 나는 열정을 조금 더 다른쪽에 투자하기로 했다. ( 물론, 지금은 개발적인 요소이나 비개발적인 요소로도 투자하도록 노력해야지.. )
기능 구현 중 나오는 C.S 적인 요소에 관심을 가지고 있다. ETag
라던가, User-Agent
라던가, Webhook
이라던가.
프로젝트에 완벽하게 벗어나지 않고, 도움이나 지식 전파는 할 수 있되, 남한테 강요할 수 있게 나아간다.
결국 대화를 해야 함을 느꼈다. 불만이든, 만족이든 대화를 하지 않으면 상대방은 인지를 하지 못한다.
추가로, 이런 불편함이나 말하기 어려운 요소들도 꺼낼 수 있는게 좋은 유대관계를 만드는 것도 중요할 것이다.
액션플랜을 좀 더 생각해봐야겠다.
레벨 4때는 어떻게 나아가야 할까
이제 기초적인 구축은 끝났다.
현재는, 단순한 기능 구현과 팀원들과 프로젝트를 하는게 의의였고 핵심이였다면
에 좀더 초점을 맞춰 나갈것이다.
이미, 우리 프로젝트에는 문제점들이 봉착해있다.
똑같은 시간에 같은 신청을 할 때 동시성 문제(물론, 과연 그런 사람들이 있을까? 싶긴 하다.)
외부 API 를 의존하며, 의존하지 않아도 큰 값을 DB에서 불러오고 그를 기반으로, 작업을 해야 한다.( 트랜잭션이 과도하게 길어질 문제 )
프로젝트를 하며, 아쉬웠던 건 남기려고 노력은 했지만 완벽하게 기록으로 남기진 못했던 거 같다.
특히, 바쁠때는 기록을 위한 단순한 스티커 메모라도 작성을 하는 습관을 들여나갈 거 같다.
단순, 기억에 의존하는 것과 스티커 메모들을 기반으로 기록을 시작하는게 꽤나 차이가 큰걸 느꼈다.
이때 나는 원래 옵시디언에 여러 노트를 (특히 미완성된걸) 추가하는걸 싫어해서 안남겼는데
스티커 메모에
2024.08.28 Transactional Outbox Pattern
DB 트랜잭션과 메시지를 묶어서 브로커에게 전달하는 패턴?
이를 통해, 외부 로직과 DB로직간 트랜잭션을 의도적으로 분리할 수 있는거 같다.
까지라도 남기려고 노력해야겠다.
이건, 사실 우테코를 들어오기 전부터 문제였다.
머리속에 있는 지식들을 전문적으로, 상대방이 알아듣기 쉽게 전달하는게 참 어렵다.
우테코 활동을 하며, 페어나 가볍게 대화를 하는건 편하고 자신있게 내 의견을 드러냈는데
테코톡, 데모데이, 다 같이 참여하는 활동 등에서 아직 한없이 부족했다.
( 특히, 4차 데모데이 때는 내가 발표하려 했는데, 기능적으로 미완성이 되어있으니까 너무 불안해짐을 느꼈다. - 무빈씨 미안해 )
이를 해결하기 위해선 스스로도, 외적으로도 노력을 해야 할 거 같다.
기존에는 머리속에서 생각하고, 노트에 기록하는데
내가 생각한걸 그림으로 그리거나 정리하는 실력도 키워야 할 거 같다.
( 해당 부분은 내가 ERD 나 플로우를 자신있게 못그리는 것도 해결하기 위함이다. )
추가로, 너무 정리를 하는식 + 보여주는 느낌을 위해서 내 사담이나 이해하기 위한 부연 설명들을 생략할때가 있는데 이를 더 잘 정돈해서 포함을 시켜야 겠다.
면접 스터디가 될지는 모르겠는데
내가 깨달은 지식이나, 작성한 블로그 내용에 대해서 발표를 할 수 있는 기회를 가지도록 해봐야겠다.
( 레벨1 사람들, 레벨2 사람들, 프로젝트 사람들 등등 )
정말, 이제는 시도해봐야 할 때 인거 같다.
기존의 레벨1,2 처럼 KPT 가 아닌 느낀점들에 대해 남겼는데
개발 학습만을 위해 나아가는 레벨3가 아니라고 생각해서 느낀점, 개선점, 방향성을 위주로 남겼다.
앞으로 레벨4,레벨5까지도 화이팅
지나고나서 보니 기록
과 수치
적으로는 노력했는데 전문적인 말은 아직도 안됐네요 😢