2020ë…„ 7ì›” 15ì¼
by aduris
0 comments

ì¢‹ì€ ì½”ë”©ì„ ìœ„í•œ 13 가지 간단한 규칙

나는 15ë…„ ì´ìƒì˜ ê²½ë ¥ì„ ê°€ì§„ 프로그래머ì´ë©° ë§Žì€ ì—¬ëŸ¬ 언어, 패러다임, 프레임워í¬ë¥¼ 사용해봤고 ë§Žì€ ì‚½ì§ˆì„ í•´ë´¤ë‹¤.

그리고 나는 ì¢‹ì€ ì½”ë”©ì„ ìž‘ì„±í•˜ê¸° 위한 ë‚˜ë§Œì˜ ê·œì¹™ë“¤ì„ ì—¬ëŸ¬ë¶„ì—게 ê³µìœ í•˜ê³ ìž í•œë‹¤.

최ì í™” VS ê°€ë…성. 최ì í™”보단 ê°€ë…성

코드는 í•­ìƒ ì½ê¸° 쉽고 개발ìžë“¤ì´ ì´í•´í•  수 ìžˆê²Œë” ìž‘ì„±í•˜ë¼. ì½ê¸° 어려운 코드를 ì½ëŠ”ë° ì†Œëª¨ë˜ëŠ” 시간과 ë¹„ìš©ì€ ìµœì í™”로부터 ì–»ì„ ìˆ˜ 있는 것보다 ë”ìš± í¬ë‹¤. 최ì í™”ê°€ 필요하다면, DI (ì˜ì¡´ì„± 주입)ì„ ì‚¬ìš©í•´ ë…립ì ì¸ 모듈로 만들고, 100%ì˜ í…ŒìŠ¤íŠ¸ 커버리지를 유지하여 최소 1ë…„ê°„ì€ ê±´ë“¤ì§€ ì•Šì•„ë„ ë˜ë„ë¡ ë§Œë“¤ì–´ë¼.

아키í…처 ìš°ì„ 

나는 “우리는 빨리 ê°œë°œì„ í•´ì•¼í•˜ê¸° ë•Œë¬¸ì— ì•„í‚¤í…처를 설계할 ì‹œê°„ì´ ì—†ë‹¤”ë¼ê³  ë§í•˜ëŠ” ì‚¬ëžŒì„ ë§Žì´ ë´ì™”다. 그리고 ê·¸ 중 99%ê°€ ì´ëŸ¬í•œ ìƒê° ë•Œë¬¸ì— í° ë¬¸ì œë¥¼ 겪었다.

아키í…처를 ìƒê°í•˜ì§€ ì•Šê³  코드를 작성하는 ê²ƒì€ ëª©í‘œ 달성ì„위한 계íšì—†ì´ ìžì‹ ì˜ ìš•ë§ì„ 꿈꾸는 것처럼 쓸모가 없다. 코드를 작성하기 ì „ì— ë¨¼ì € 수행 í•  ìž‘ì—…, 사용 방법, 모듈화 방법, 서비스가 서로 어떻게 ë™ìž‘하는지, 구조가 무엇ì¸ì§€, 테스트 ë° ë””ë²„ê¹… 방법, ì—…ë°ì´íŠ¸ ë°©ë²•ë“¤ì„ ë¨¼ì € ìƒê°í•˜ê³  ì´í•´í•´ì•¼í•œë‹¤.

테스트 커버리지

테스트는 ì¢‹ì€ ì¼ì´ì§€ë§Œ í•­ìƒ ë¹„ìš© 효율ì ì¸ê±´ 아니며 프로ì íŠ¸ì— ë”°ë¼ ë‹¤ë¥´ë‹¤.

테스트가 필요한 경우:

  • 최소 í•œ ë‹¬ê°„ì€ ê±´ë“¤ì§€ ì•Šì•„ë„ ë  ëª¨ë“ˆì´ë‚˜ 마ì´í¬ë¡œì„œë¹„스를 개발하는 경우
  • 오픈소스 코드를 작성하는 경우
  • 핵심 코드 ë˜ëŠ” 금전ì ì¸ 부분과 맞닿는 코드를 작성하는 경우
  • 코드를 ì—…ë°ì´íŠ¸ 하는 것과 ë™ì‹œì— 테스트를 ì—…ë°ì´íŠ¸ í•  수 있는 충분한 ë¹„ìš©ì´ ìžˆëŠ” 경우

테스트가 필요하지 않는 경우:

  • ìŠ¤íƒ€íŠ¸ì—…ì¸ ê²½ìš°
  • íŒ€ì´ ìž‘ê³  코드가 빠르게 변하는 경우
  • ì¶œë ¥ê°’ì„ ë³´ê³  간단하게 수ë™ìœ¼ë¡œ 테스트가 가능한 스í¬ë¦½íŠ¸ë¥¼ 작성하는 경우

ë‚˜ìœ í…ŒìŠ¤íŠ¸ 코드와 함께 코드를 짜는 ê²ƒì€ í…ŒìŠ¤íŠ¸ê°€ 없는 코드보다 ë” ìœ„í—˜í•  수 있ìŒì„ 기억하ë¼.

간단하고 단순하게

복잡한 코드를 작성하지 ë§ë¼. 간단하게 작성하면 버그가 줄어들고 디버깅 ì‹œê°„ë„ ì¤„ì–´ë“¤ 수 있다. 코드는 ìˆ˜ë§Žì€ ì¶”ìƒí™” ë° ê¸°íƒ€ ê°ì²´ì§€í–¥ì ì¸ 문제 (특히 Java 개발ìžì™€ ê´€ë ¨ì´ ìžˆìŒ) ì—†ì´ ë”± 필요한 ì¼ë§Œì„ 수행해야하며, ì¶”í›„ì— ê°„ë‹¨í•œ 방법으로 코드를 ì—…ë°ì´íŠ¸í•˜ê¸° 위해 필요한 ê²ƒì˜ 20%를 수행해야한다.

주ì„

주ì„ì€ ë‚˜ìœ ì½”ë“œë¥¼ 보여준다. ì¢‹ì€ ì½”ë“œëŠ” ì£¼ì„ ì—†ì´ë„ ì´í•´í•  수 있어야한다. 그러면 새로운 개발ìžë¥¼ 위해 ì‹œê°„ì„ ì ˆì•½í•˜ê¸° 위해 해야 í•  ì¼ì€ 무엇ì¸ê°€? — ë©”ì„œë“œì˜ ì •ì˜ì™€ ì‚¬ìš©ë²•ì„ ì„¤ëª…í•˜ëŠ” í•œ 줄짜리 간단한 문서를 작성하ë¼. ì´ëŠ” ì´í•´ë¥¼ 위한 ë§Žì€ ì‹œê°„ì„ ì ˆì•½í•´ 줄 것ì´ë©° — ë” ë§Žì€ ì‚¬ëžŒë“¤ì—게 메서드를 ë” ìž˜ 구현할 수 있는 기회를 제공해준다. ë˜í•œ ì´ëŠ” 글로벌 코드 문서화를 위한 ì¢‹ì€ ì‹œìž‘ì ì´ ë  ê²ƒì´ë‹¤.

ê°•í•œ ê²°í•© VS ëŠìŠ¨í•œ ê²°í•©

í•­ìƒ ë§ˆì´í¬ë¡œì„œë¹„스 아키í…처를 사용하ë„ë¡ ë…¸ë ¥í•˜ë¼. 모놀리틱 소프트웨어는 마ì´í¬ë¡œì„œë¹„스 소프트웨어보다 빠르지만, ë‹¨ì¼ ì„œë²„ 환경ì—서만 그렇다. 마ì´í¬ë¡œì„œë¹„스는 ì—¬ëŸ¬ë¶„ì˜ ì†Œí”„íŠ¸ì›¨ì–´ë¥¼ 여러 ì„œë²„ë¡œì˜ ë¶„ì‚°ë¿ë§Œ ì•„ë‹ˆë¼ ê°€ë”ì€ í•˜ë‚˜ì˜ ë¨¸ì‹ ì—ì„œì˜ ë¶„ì‚°ì²˜ë¦¬ (프로세스 ë¶„ì‚°ì„ ì˜ë¯¸í•œë‹¤)ë„ í•  수 있는 ê°€ëŠ¥ì„±ì„ ì œê³µí•´ì¤€ë‹¤.

코드 리뷰

코드 리뷰는 ì¢‹ì„ ìˆ˜ë„ ìžˆê³  ë‚˜ì  ìˆ˜ë„ ìžˆë‹¤.

ì—¬ëŸ¬ë¶„ì˜ íŒ€ì— ì½”ë“œì˜ 95%를 ì´í•´í•˜ê³  있고 시간 낭비 ì—†ì´ ëª¨ë“  ì—…ë°ì´íŠ¸ ì‚¬í•­ì„ ëª¨ë‹ˆí„°ë§ í•  수 있는 개발ìžê°€ 있는 경우ì—만 코드 리뷰를 ë„입하ë„ë¡ í•˜ë¼. ì´ ì™¸ì˜ ê²½ìš°ì—는 단지 시간 낭비가 ë  ìˆ˜ 있으며 모ë‘ê°€ ì´ë¥¼ 싫어하게 ë  ê²ƒì´ë‹¤. ì´ ë¶€ë¶„ì€ ë§Žì€ ì§ˆë¬¸ì„ ê°€ì ¸ì˜¤ê¸° ë•Œë¬¸ì— ì´ë¥¼ 좀 ë” ê¹Šê²Œ 살펴보ìž.

ë§Žì€ ì‚¬ëžŒë“¤ì€ ì½”ë“œ 리뷰가 새로운 사람ì´ë‚˜ ì½”ë“œì˜ ë‹¤ë¥¸ ë¶€ë¶„ì„ ìž‘ì—…í•˜ëŠ” 팀ì›ì„ 가르치는 ì¢‹ì€ ë°©ë²•ì´ë¼ê³  ìƒê°í•œë‹¤. 그러나 코드 ë¦¬ë·°ì˜ ì£¼ìš” 목표는 코드 í’ˆì§ˆì„ ìœ ì§€í•˜ëŠ” 것ì´ì§€ 가르치는게 아니다. ì—¬ëŸ¬ë¶„ì˜ íŒ€ì´ ì›ìžë¡œ ë˜ëŠ” 우주 로켓 엔진 ëƒ‰ê° ì‹œìŠ¤í…œì„ ì œì–´í•˜ëŠ” 코드를 작성했다고 가정해보ìž. 그리고 ì—¬ëŸ¬ë¶„ì€ ì•„ì£¼ 어려운 ë¡œì§ì—ì„œ í° ì‹¤ìˆ˜ë¥¼ 저질렀고, ì´ë¥¼ 새로운 사람ì—게 코드 리뷰를 위해 제공했다고 í•´ë³´ìž. ì´ ê²½ìš° ì—¬ëŸ¬ë¶„ì€ ì‚¬ê³  ìœ„í—˜ì— ëŒ€í•´ 어떻게 ìƒê°í•˜ëŠ”ê°€? — ë‚´ ëŒ€ë‹µì€ 70% ì´ìƒì´ë‹¤.

ì¢‹ì€ íŒ€ì€ ê°ìžê°€ ìžì‹ ì˜ ì—­í• ì„ ê°€ì§€ê³  있으며 ì¼ì˜ í•œ ë¶€ë¶„ì— ëŒ€í•´ 완전한 ì±…ìž„ê°ì„ ê°–ê³  있는 팀ì´ë‹¤. 만약 누가 ì½”ë“œì˜ ë‹¤ë¥¸ ë¶€ë¶„ì„ ì´í•´í•˜ê³  싶으면 해당 ë¶€ë¶„ì„ ë‹´ë‹¹í•˜ê³  있는 사람ì—게 찾아가 ì§ˆë¬¸ì„ í•˜ë©´ëœë‹¤. 모든걸 아는건 불가능하며 전체보다는 ì½”ë“œì˜ ìž‘ì€ ë¶€ë¶„ì„ (하지만 ì ì–´ë„ 30%는) 완전히 ì´í•´í•˜ëŠ”ê²ƒì´ ë” ë‚«ë‹¤.

리팩토ë§ì€ ìž‘ë™í•˜ì§€ 않는다

나는 ì¼í•˜ëŠ” ë™ì•ˆ â€œë‚˜ì¤‘ì— ë¦¬íŒ©í† ë§ í• ê±°ë‹ˆê¹Œ 걱정하지마뼔ë¼ëŠ” ë§ì„ ë§Žì´ ë“¤ì—ˆë‹¤. 그리고 ë‚˜ì¤‘ì— ì´ëŠ” í° ê¸°ìˆ ì  ë¶€ì±„ë¡œ ëŒì•„오거나 모든 코드를 다 삭제한 후 처ìŒë¶€í„° 다시 작성하게 ë˜ì—ˆë‹¤.

ë”°ë¼ì„œ 처ìŒë¶€í„° 여러번 소프트웨어 다시 개발할 수 있는 ìžê¸ˆì´ 있는게 아니ë¼ë©´ 부채를 만들지 ë§ë¼.

피곤하거나 ì»¨ë””ì…˜ì´ ì¢‹ì§€ ì•Šì„ë•Œ 코딩하지 ë§ë¼

개발ìžë“¤ì´ 피곤할 ë• í‰ì†Œë³´ë‹¤ 2-5ë°° ë” ë§Žì€ ë²„ê·¸ì™€ 실수를 만들어낸다. ë”°ë¼ì„œ ê³¼ì—…ì€ ë§¤ìš° 나ì˜ë‹¤. 그렇기 ë•Œë¬¸ì— í•˜ë£¨ì˜ ì—…ë¬´ì‹œê°„ì„ ì•½ 6시간으로 고려하는 국가가 ì ì  ë” ë§Žì•„ì§€ê³  있으며, ì¼ë¶€ êµ­ê°€ì—서는 ì´ë¯¸ 실천하고있다. ì •ì‹ ì ì¸ ì¼ì€ 육체ì ì¸ ì¼ì„ 다루는 것과 같지 않다.

모든걸 í•œêº¼ë²ˆì— ìž‘ì„±í•˜ìž ë§ë¼ – 반복ì ìœ¼ë¡œ 개발하ë¼

코드를 작성하기 ì „ì— ìš°ì„  ì—¬ëŸ¬ë¶„ì˜ ê³ ê°ê³¼ í´ë¼ì´ì–¸íŠ¸ê°€ ì •ë§ë¡œ 필요로 하는걸 분ì„하고 예측하고, ì§§ì€ ê¸°ê°„ë™ì•ˆ 개발할 수 있는 MVF(Most Valuable Features)를 추려내ë¼. 품질 ì—…ë°ì´íŠ¸ë¥¼ ë°°í¬í•˜ê¸° 위해 ì´ëŸ¬í•œ ë°˜ë³µì„ ì‚¬ìš©í•˜ë„ë¡ í•˜ê³  무리한 요구사항과 품질 í¬ìƒì— 시간과 ìžì›ì„ 낭비하지ë§ë¼.

ìžë™í™” VS 수ë™

ìžë™í™”는 장기ì ìœ¼ë¡œ 100% 성공ì´ë‹¤. ë”°ë¼ì„œ 지금 당장 무언가를 ìžë™í™” í•  수 ìžˆëŠ”ê²ƒì´ ìžˆë‹¤ë©´ 바로 하ë„ë¡ í•˜ë¼. “5 분 ë°–ì— ê±¸ë¦¬ì§€ 않는ë°, 왜 ìžë™í™” 해야해?“ë¼ê³  ìƒê°í•  ìˆ˜ë„ ìžˆë‹¤. 하지만 í•œ 번 계산해보ìž. 예를 들어 5ëª…ì˜ ê°œë°œìžë¡œ ì´ë£¨ì–´ì§„ íŒ€ì˜ ì¼ìƒì ì¸ ìž‘ì—…ì„ ë“¤ì–´ë³´ìž. 5분 * 5명 * 21ì¼ * 12개월 = 6,300분 = 105시간 = 13.125 ì¼ ~ 5,250$. ì§ì›ì´ 40,000ëª…ì¼ ê²½ìš°ì—” ë¹„ìš©ì´ ì–¼ë§ˆë‚˜ 커질까?

나가서 취미를 ê°–ìž

ì¼ì˜ 차별화는 ì •ì‹  ëŠ¥ë ¥ì„ í–¥ìƒì‹œí‚¤ë©° 새롭고 ì‹ ì„ í•œ ì•„ì´ë””어를 제공한다. ë”°ë¼ì„œ ìž ì‹œ 쉬고 ì‹ ì„ í•œ 공기를 마시거나 친구들과 ì´ì•¼ê¸°ë¥¼ 하거나 기타를 ì—°ì£¼í•˜ëŠ”ë“±ì˜ ì·¨ë¯¸ë¥¼ 가져ë¼.

여유 ì‹œê°„ì— ìƒˆë¡œìš´ê±¸ 배워ë¼

í•™ìŠµì„ ì¤‘ë‹¨í•˜ë©´ 퇴화하기 시작한다.

ì¢‹ì€ ì½”ë“œ ìž‘ì„±ì— ëŒ€í•œ ì•„ì´ë””어와 ê´€í–‰ì— ëŒ€í•œ ì˜ê²¬ì„ 공유해준다면 매우 ê°ì‚¬í•˜ê² ë‹¤

 

 

13 Simple Rules for Good Coding (from my 15 years of experience)를 번역한 글입니다.

Proudly powered by WordPress | Theme: Yoko by Elmastudio

Top