자유/잡담

스마일學. 좋은 코드란 무엇인가? 짧은 후기

Chipmunks 2024. 7. 12. 22:25
728x90

사내 특강을 외부인인 개발 캠프 수료생도 들을 수 있는 기회가 생겼다.

평일 오후 4시부터 5시까지 줌으로 진행됐다.

 

나도 회사에 재직중이라 들을 수 있을까 싶었다. (아마 같은 이유로 다른 친구들도 망설였겠지)

이어폰 끼고 몰래(?) 들어야하나 싶었지만...

이번 주는 예비군 동미참이었다.

 

예비군인게 다행(?)인가 싶지만...

'정상적'으로 퇴소하면 딱 4시긴 했다.

사격이 젬병이라 작년에도 재사격으로 1시간 늦게 간 전적이 있기에... ㅋㅋㅋ

들을 수 있을까 걱정스러웠다.

 

이 날 놀랍게도

5발 중 3발이 사람 모양 안에 있어

재사격을 면할 수 있었다. ㅋㅋㅋㅋㅋ

마지막 날처럼 사격했으면 재사격이었다.

(마지막이라 그런지 합격시켜줬다.)

 

즐겁게 퇴소하고 예비군 아저씨들로 만석인 버스 안에서

'좋은 코드란 무엇인가?' 특강을 들었다.

중간 중간 군복 입은 모습을 비춰 어그로(?)를 끌기도 했다.

 

 

 

누구나 실수한다.

특강에서 안 좋은 코드를 소개했다.

실제 사례인 코드라 흥미로웠다.

여기서 알게 된 점이 세계적인 개발자도 실수하더라.

 

다른 사람이 이해하기 힘든 코드를 작성해

결국 버그를 만들어낸다.

 

물론 그 중 경험이 적은 사람이 실수했을 테고

일정에 쫓겼거나 '사람'이라 발견하지 못한

사례일 것이다.

 

다만 누구나 실수할 수 있다는 점이 마음에 다가왔다.

그 실수를 탓하기 보단 대처하는 방안이 인상 깊었다.

 

특강처럼 사례, 케이스를 분류하고

교보재처럼 다음에는 실수하지 않도록

정보를 공유한 점이 인상 깊었다.

 

예비군 때 '닥터 최태수' 라는 의학 웹소설을 봤는데,

매일 아침마다 '의국회의' 라는 걸 하더라.

현재 치료하기 까다로운 환자 사례, 즉 이슈를 공유하고

이를 어떻게 해결할 지 논의하는 시간이다.

 

'의국회의'가 IT 회사에선 '데일리 미팅'과 같을 것이다.

데일리 미팅에서 '까다로운 코드'를 공유하고

이를 어떻게 '좋은 코드'로 만들지 이야기 해보면 어떨까, 하고

잠시 생각해봤다.

 

'코드 리뷰'는 배경을 파악하고, 보다 긴 코드를 신경써야 하지만,

'작은 코드 조각' 정도라면 괜찮지 않을까 싶다.

조그맣게 네이밍이 고민된다든지,

한 눈에 봤을 때 알아보기 쉽다든지,

어떤 리팩터링이 들어가면 좋을지,

등등 정도 생각해봤다.

 

역지사지

'좋은 코드'는 결국 역지사지인 것 같다.

내 코드를 읽는 사람이 누구인지,

아무런 정보가 없어도 읽을 수 있는 코드인지,

실시간으로 생각해봐야 하는 것 같다.

 

특강에서 예시로 든 사례가 바로 '국제 단위'다.

다른 나라 사람과 협업할 때, 각자가 생각하는 무게 단위가 달라서

버그가 발생했다고 한다.

 

내 나라에서 당연하게 쓰고 있는 것도

다른 나라와 협업하게 된다면

당연히 고려해야 한다는 점이다.

경험이 풍부한 개발자면 실수할 확률은 적겠지만,

주니어 개발자면 충분히 실수할만한 요소인 것 같다.

 

최근 업무에서도 고민하고 있는 부분이다.

'인수인계'를 최소화하고 누가 와도 바로 작업할 수 있는 코드가 목표다.

급하진 않지만 중요하다.

이를 위해선 코드마다 의존성이 없어야 한다.

히스토리가 없거나 빠르게 파악할 수 있어야 한다.

프로젝트 전역 설정도 병목이라고도 생각할 정도다.

 

예전 회사에서도 글로벌로 확장하는 중에 있었다.

다른 프로젝트였지만, 외주도 외국인에게 맡길 정도였다.

코드나 주석을 외국인도 이해할 수 있게 작성해야 하나 싶었는데... (법인도 따로 세울 정도니..!)

생각만 하고 실행에 옮기지는 않았었다. 😅

 

그 당시엔 특히 '시간'과 관련한 코드가 굉장히 많았다.

'시간'은 나라마다 반드시 달라지는 부분이라

특별히 신경썼어야 했을 것 같다.

 

항상 코드를 작성할 때 생각을 하는 습관을 가지려고 한다.

앞으로 읽을 사람이 누구인지,

프로젝트 표준에 맞는 코드인지,

파악하는 데 '의존성'은 없는 코드인지,

누가 와도 바로 작업할 수 있는 코드인지,

프로젝트 표준이 현재 상황에도 유효한지.

 

물론 더욱 중요한 건

앞서 말한 '공유' 라고 생각한다.

문제를 제기하고 이를 팀에게 전파하는 게

'좋은 코드'를 만들기 위한 필수 요소인 것 같다.

 

마무리

좋은 강의 해주셔서 감사하고,

듣게 해주셔서 감사드립니닷!