클린코딩 하는데 구현을 못하는 개발자

아주 공감되고 아주 중요한 내용을 이야기하고 있는 영상이 있어 공유합니다. "더 좋은 코드를 위해 깊게 고민을 하지만 기한 내에 구현을 하지 못하는 개발자"와 "기한 내에 구현은 어떻게든 하는데 코드가 xx 같은 개발자"에 대한 생각을 이야기하고 있는데요. 여러분들은 어떤 개발자가 되고 싶으신가요? 제 개인적인 생각은 좋은 코드를 만들면서 기한 내에 구현을 하는 개발자가 돼야 한다고 생각을 합니다. 이 문장에 반박을 할 수 있겠죠. " 클린 코드를 만들려면 시간이 더 필요한데 기한 내에 구현을 다 할 수 있다고? " 물론 경력이나 경험이 부족하신 분들은 클린 코드 자체에 대해 뭐가 맞는 건지 모를 수도 있고, 책에서 혹은 영상에서 나온 내용을 그대로 실무에 적용하기란 생각보다 쉽지 않습니다. 그럼 여기서 또 질문을 드려보죠. 좋은 코드란 무엇이라 생각하시나요? 제 지인과 이야기 나누던 내용 중에 결론으로 다다른 정의는 "돈 벌어다 주는 코드"였습니다. 이러한 이야기엔 여러 가지 의미가 많이 담겨있죠. 결국 완벽한 코드는 없습니다. 계속 수련(리팩토링) 해야 하고 다양한 사람들과 코드에 대해 이야기를 하면서 좋은 코드를 만들어 가는 습관을 체득해야 하죠. 그런데 대부분 회사에서 일정에 쫓겨 개발을 하곤 하는데 이럴 경우엔 우선 기한 내에 개발을 한 뒤에 (테스트 코드가 탄탄하다는 가정하에) 리팩토링을 하는 거죠. 리팩토링할 시간도 없다? 이건 핑계라고 봅니다. 개발을 '일'이라고 생각하지 않았으면 좋겠어요. 내가 좋아서 선택한 길이니 그만큼 시간을 투자하고 계속 연습하는 거죠. 모든 문제에 대해 사전 같은 "정의"를 내리는 걸 별로 선호하진 않지만 앞서 이야기 나온 "코드의 품질 vs 구현의 완성도"만 가지고 이야기하자면 당연히 구현의 완성도가 더 중요합니다. 아무리 마틴 파울러 할아버지가 감탄할 정도의 코드라도 유저들이 기다리고 있는데 출시를 못하면 의미가 하나도 없죠. 그렇게 일정을 지키는 연습을 하면서 점점 코드의 품질을 올리는 여러 가지 시간을 할애해야 한다고 생합니다. 결국 시간이 필요합니다. 조급해 하지 않으시길. 여러분들은 어떠신가요? https://www.youtube.com/watch?v=cyoUrxDVGXE

클린코딩 하는데 구현을 못하는 개발자

www.youtube.com

클린코딩 하는데 구현을 못하는 개발자

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 7월 26일 오전 3:09

 • 

저장 142조회 39,543

댓글 6

  • 어제 본 영상인데 커리어리에서도 이렇게 마주하니 반갑네요 ㅎㅎ 첫 문단에 써주신 의견처럼 “좋은 코드를 만들면서 기한 내에 구현을 하는 개발자” 는 당연하다고 생각해요. 그리고 다른 말로 표현하자면 “그냥 잘하자” 정도로 해석 될거 같네요:) 이 부분은 저도 공감하지만, 개인적으로 해당 영상은 취지와 예시가 조금은 잘못되었다는 생각도 해요. 이건 더 이상 학교가 아니고 우선은 비즈니스니까 마감을 지키는 게 선행조건임이 분명하고 이후 코드의 품질을 따지는 것이라 구현이 먼저라는 것이 결국 영상의 취지로 비춰지는데, 백퍼센트 동의하지만 예시가 이상한 것 같다는 건 저 상황은 일종의 “면접” 상황이라는 것이죠..! 면접자의 관점에서는 다 하는 것 보다는 하나라도 더 최선을 다해서 해보겠다는 마인드를 가진 사람이 많을 거라고 생각해요. 논술 시험과 비교해볼 수 있을 것 같은데 10문제가 있다면 구현과정에 따라 각 문제 별 점수가 차등 지급될 겁니다. 이 때 시험을 보는 자는 선택을 해야하는데 (물론 그냥 다 잘해서 백점이 최곱니다) 5문제를 풀더라도 완벽하게 하겠다는 사람과 과정은 엉망이어도 아무튼 답은 내서 10문제 다 찍먹했다로 갈릴거에요. 때문에 양쪽 다 본인 수준에서 최선을 다한 결과라고 보는데 어느쪽 결과가 더 낫다 라고 말하는 건 의미없어 보여요. 호돌님이 영상에서 말하신 것처럼 “면접관” 입장에서 둘 다 뽑거나 둘 다 떨구겠다는 이 말이 가장 상황에 적절하게 들리네요 ㅋㅋㅋ 굳이 뽑아야한다면 영상에서는 구현이라도 다 한사람을 뽑겠다고 하는데 저는 반대입니다. 태관님이 마지막에 쓰신 것처럼 완벽한 것은 없죠. 일이라고 생각하지 않는다는 건 말 그대로 개발이라는 걸 좋아한다는 말인데 좋아했으면 더 나은 방법을 끊임없이 고민했기에 후자와 같은 결과가 나오지 않았을까? 싶어요. 오히려 주먹구구식으로 구현만 끝낸 사람은 잘하기 위한 고민은 없이 일단 풀고 제출해야지 라는 가벼운 마음이지 않았을지. 때문에 저는 둘 중 골라야한다면 그래도 개발을 좋아하는 것처럼 느껴지는 사람을 고르고 싶네요 :)

    @장준영 오우, 정성스런 댓글 감사합니다 ㅎㅎ 저도 준영님처럼 개발을 좋아하는 것처럼 느껴지는 사람을 고르고 싶긴 한데요 ㅎ 말씀하셨던 "면접"이란 상황에선 boolean의 true/false처럼 합/불을 따지다 보니 극단적으로 결정할수밖에 없지 않을까 생각이 들긴 했어요. 가령 면접에서 떨어진 사람이 합격한 사람보다 개발을 못한다거나 좋지 못한 개발자라고 치부하기엔 너무 제한적이긴 하죠 ㅎ 그래서 이 영상은 많은 것을 이야기 하고 있다고 생각이 들었습니다. 그저 정답을 찾는다기 보다 무엇이 더 중요하고 어떤걸 생각하며 개발자로 살아가야 하는지를 너무 진하지 않게 간접적으로 희미하게 알려준다는 생각도 들었구요. 회사의 업무 스타일이 너무 다양하기에 어쩌면 일정과 구현이 중요하지 않게 느낄수도 있지만 생각보다 중요한 영역이다보니 클린코딩보다 더 중요하다고 여기는 경우도 꽤 많구요. 요건 경험의 영역이니 중립의 위치에서 상황에 따라 선택하면 될것 같습니다 ㅎㅎ

  • 지금 작성한 클린코드도 하루가 지나면 레거시가 됩니다. 중요한건 기한내에 버그없는 코드를 작성하는게 아닐까 싶습니다. 개발자로써의 철학도 중요하지만, 그럼에도 회사에서 돈을 받고 일하는 직원이기에 비즈니스적인 관점으로 데드라인은 지켜야 한다고 봅니다.

  • 삭제된 사용자

    2023년 07월 30일

    많은것을 이야기 하게 되는 주제인건 확실하네요! ㅎㅎ 평소 테스트코드 사용의 중요성도 결국 이런 상황에서 마감을 지키면서 품질도 어느 정도 지키기 위한, 유지보수와 리팩터링의 안정성을 위한 것이라는 걸 생각하게 되네요! 당연히 처음엔 어렵죠! 본인과 팀이 체화하기까지는 오랜시간 공을 들여야 겠지요

  • 더 좋은 코드를 위해 고민은 하되 기한 내에 구현해야 되는 현실이 99.99프로기 때문에 적정선에서 trade off가 필요하고 언제든 리팩토링을 통한 개선이 가능하도록 Flexible 하면서 Loose Coupling 한 구조로 개발하는 습관이 필요하다 봅니다.(말로는 쉽게). 가장 어려운 부분이지만....때론 누구나 이해 가능하고 간단하게 짜는 게 더 좋은 approach일수도 있죠. Simple is the best.

  • 제가 생각하는 클린코딩은 최종적으로 코드에 소모하는 시간을 줄여주기 위해서 사용한다고 생각하는 데 클린 코딩 때문에 기한 내에 구현을 못한다는 건 생각 지도 못 했네요... 클린 코딩을 못한다는 개발자는 코드에 대해서 고민을 해본 적이 없는 것 같고..... 클린 코딩 때문에 데드라인을 못 맞춘 것도 결국 그 시간에는 내가 이때까지 옳다고 생각했다는 코드로 작성 해 나아가야 하는 시간인데 그 시간에 클린 코딩에 대해 고민을 하고 있었던 것이니 이것도 연습량 부족이라.. 둘 중에 우열을 가리기 어렵네요 아무튼 좋은 말씀 감사합니다 물론 아직 경력이 없는 학생으로서 열심히 작성해 나아갔습니다 헿