ν‹°μŠ€ν† λ¦¬ λ·°

쒋은 μ½”λ“œλ₯Ό νŒλ‹¨ν•˜λŠ” 건 주관이닀.

이 글을 읽으면 λ‹€μŒκ³Ό 같은 λ‚΄μš©μ— λŒ€ν•΄ μ΅œμ†Œν•œ 생각할 거리λ₯Ό μ–»μ–΄κ°ˆ 수 있기λ₯Ό κΈ°λŒ€ν•œλ‹€.

  • 읽기 μ‰¬μš΄ μ½”λ“œλž€ 무엇이고
  • μ™œ 읽기 μ‰½κ²Œ μž‘μ„±ν•΄μ•Όν•˜κ³ 
  • 그런 μ½”λ“œλŠ” μ–΄λ–»κ²Œ νƒ„μƒν•˜λŠ”μ§€

가독성은 본질적으둜 주관적인 것이며 그것이 μ •ν™•νžˆ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ ν™•μ‹€ν•˜κ²Œ μ •μ˜ν•˜κΈ°λŠ” μ–΄λ ΅λ‹€. κ°€λ…μ„±μ˜ 핡심은 κ°œλ°œμžκ°€ μ½”λ“œμ˜ κΈ°λŠ₯을 λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ 이해할 수 μžˆλ„λ‘ ν•˜λŠ” 것이닀. μ‹€μ œλ‘œ μ΄λ ‡κ²Œ ν•˜λ €λ©΄ λ‹€λ₯Έ μ‚¬λžŒμ˜ κ΄€μ μ—μ„œ λ³΄μ•˜μ„ λ•Œ, μ½”λ“œκ°€ ν˜Όλž€μŠ€λŸ½κ±°λ‚˜ 잘λͺ» 해석될 수 μžˆλŠ”μ§€λ₯Ό μƒμƒν•˜κ³  곡감해야 ν•  λ•Œκ°€ λ§Žλ‹€.

μœ„ λ‚΄μš©μ€ 쒋은 μ½”λ“œ, λ‚˜μœ μ½”λ“œ : ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ½”λ“œ ν’ˆμ§ˆ κ°œμ„ λ²•μ΄λΌλŠ” μ±…μ˜ ν•œ 뢀뢄이닀.

이 μ±…μ—μ„œ λ§ν•˜λŠ” μ½”λ“œ ν’ˆμ§ˆμ˜ 핡심 μš”μ†Œκ°€ μ—¬λŸ¬κ°€μ§€ μžˆλŠ”λ° κ·Έ 쀑 ν•˜λ‚˜λŠ” 가독성이닀.

즉, μ½”λ“œλŠ” 근본적으둜 읽기 μ‰¬μ›Œμ•Όν•œλ‹€λŠ” 말이닀.

읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό νŒλ‹¨ν•˜λŠ” 건 주관이닀.

그런데 μ½”λ“œλŠ” μ½λŠ” μ‚¬λžŒμ˜ 주관에 따라 읽기 μ‰¬μšΈ 수 있고, 읽기 μ–΄λ €μšΈ 수 μžˆλ‹€.

그럼 이제 μ΄μ―€μ—μ„œ 이런 생각이 λ“ λ‹€ 그럼 λˆ„κ°€ 정닡인데?

λ‚΄κ°€ μƒκ°ν•˜κΈ°μ—λŠ” 그건 νŒ€ λ‚΄μ—μ„œ μ μ ˆν•œ νƒ€ν˜‘μ μ„ μ°Ύμ•„κ°€λŠ” 과정이 ν•„μš”ν• λΏ 정닡은 μ—†λ‹€.

그리고 사싀 μš°λ¦¬λŠ” μ• μ΄ˆμ— 읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ„œ ν•΄κ²°ν•˜κ³ μž ν•˜λŠ” λ¬Έμ œλŠ” 무엇인지 생각해볼 ν•„μš”κ°€ μžˆλ‹€.

읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό μ™œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ”κ°€?

읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό μ™œ μž‘μ„±ν•΄μ•Όν• κΉŒ? μ—¬λŸ¬κ°€μ§€ μ΄μœ κ°€ μžˆκ² μ§€λ§Œ λ‚΄κ°€ μƒκ°ν•˜λŠ” 건 이 정도닀.

  • λΉ λ₯Έ λΉ„μ¦ˆλ‹ˆμŠ€ μ„±μž₯을 μœ„ν•΄ μ–Έμ œ λˆ„κ°€ μž‘μ—…ν•˜λ“  λΉ λ₯΄κ²Œ μ˜¨λ³΄λ”©ν•˜κ³  μ‰½κ²Œ μ½”λ“œλ₯Ό μˆ˜μ •ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • μ•ˆμ „ν•œ λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό μœ„ν•΄ ν”„λ‘œκ·Έλž¨μ˜ 버그λ₯Ό μ΅œμ†Œν™”ν•΄μ•Ό ν•œλ‹€.

λΉ λ₯Έ λΉ„μ¦ˆλ‹ˆμŠ€ μ„±μž₯을 μœ„ν•΄ μ–Έμ œ λˆ„κ°€ μž‘μ—…ν•˜λ“  λΉ λ₯΄κ²Œ μ˜¨λ³΄λ”©ν•˜κ³  μ‰½κ²Œ μ½”λ“œλ₯Ό μˆ˜μ •ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

μŠ€νƒ€νŠΈμ—…μ—μ„œ μΌν•˜λ©΄ 특히 κ·Έλ ‡κ² μ§€λ§Œ λΉ λ₯Έ λΉ„μ¦ˆλ‹ˆμŠ€ μ„±μž₯을 μœ„ν•΄ μ½”λ“œλŠ” 자주 λ°°ν¬λ˜μ–΄μ•Όν•œλ‹€.
이런 λ§₯λ½μ—μ„œ μ½”λ“œκ°€ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€λ©΄ λˆ„κ΅¬λ“  μ½”λ“œλ₯Ό μ‰½κ²Œ μˆ˜μ •ν•˜κ³  배포할 수 μžˆμ„ 것이닀.

λ°˜λŒ€λ‘œ μ•ˆνƒ€κΉκ²Œλ„ 이런 기술λ ₯이 λ’·λ°›μΉ¨λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄, λ°°ν¬λŠ” λŠ¦μ–΄μ§€κ³  μ‹œμž₯μ—μ„œ λ°€λ €λ‚˜λŠ” 맀우 μŠ¬ν”ˆ 상황이 펼쳐질 μˆ˜λ„ μžˆλ‹€.

λ˜ν•œ 이건 μŠ¬ν”ˆ ν˜„μ‹€μ΄μ§€λ§Œ κΈ°μ—… μž…μž₯μ—μ„œ μ‚¬λžŒμ€ μ–Έμ œλ“  ꡐ체될 수 μžˆλ‹€. κ·Έλž˜μ„œ λˆ„κ°€ μ˜€λ“  λΉ λ₯΄κ²Œ μ˜¨λ³΄λ”©ν•  수 μžˆλŠ” 것도 μ€‘μš”ν•˜λ‹€. 그런 μ˜λ―Έμ—μ„œ μ•Œμ•„λ³΄κΈ° μ‰¬μš΄ 디렉토리 ꡬ쑰 등도 도움이 λœλ‹€.
기업에 λ‚¨λŠ” μ‚¬λžŒμ—κ²Œλ„, μƒˆλ‘œ λ“€μ–΄μ˜€λŠ” μ‚¬λžŒμ—κ²Œλ„ 말이닀.

μ•ˆμ „ν•œ λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό μœ„ν•΄ ν”„λ‘œκ·Έλž¨μ˜ 버그λ₯Ό μ΅œμ†Œν™”ν•΄μ•Ό ν•œλ‹€.

읽기 μ–΄λ €μš΄ μ½”λ“œλŠ” μ΄ν•΄ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” κ±Έ λœ»ν•˜κ³  μ΄λŠ” 곧 버그λ₯Ό μœ λ°œν•˜λŠ” μ½”λ“œλ₯Ό λ°œκ²¬ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“€ 것이닀.

λ‹Ήμ—°ν•˜κ²Œλ„ 돈이 μ˜€κ°€λŠ” ν”„λ‘œκ·Έλž¨μ˜ λ²„κ·ΈλŠ” ν•œ μˆœκ°„μ— λΉ„μ¦ˆλ‹ˆμŠ€μ— 치λͺ…상을 μž…νž 수 있고
κ·Έλž˜μ„œ μ•ˆμ „ν•œ μ½”λ“œμ™€ 이λ₯Ό λ„μ™€μ£ΌλŠ” μ½”λ“œ 리뷰도 μ€‘μš”ν•˜λ‹€.

ν”„λ‘œκ·Έλž¨μ˜ 버그λ₯Ό λͺ¨λ‘ ν†΅ν‹€μ–΄μ„œ μ ˆλŒ€μ μœΌλ‘œ λ§‰μ•„μ•Όν•œλ‹€λŠ” 말은 μ•„λ‹ˆλ‹€.
버그가 μ—†λŠ” 100% κ°€μš©μ„±μ„ μ§‘μ°©ν•˜λ‹€λ³΄λ©΄ νŒ€ λ‚΄μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ μ ˆν•˜κ²Œ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ³  μ›ν•˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ λͺ©ν‘œλ₯Ό 이루기가 μ–΄λ €μ›Œμ§ˆ 수 μžˆλ‹€.

그리고 사싀 μ‹€μ œλ‘œ μ„œλ²„μ—μ„œ 버그가 λ°œμƒν•˜λ”λΌλ„ μœ μ €μ—κ²Œ λ°”λ‘œ 큰 영ν–₯이 μ—†λŠ” κ²½μš°λ„ μžˆλ‹€.
심지어 μ•±μ—μ„œ 버그가 λ°œμƒν•˜λ”λΌλ„ κ·Έ μ„œλΉ„μŠ€κ°€ μœ μ € 마음 속에 이미 자리 μž‘μ•˜λ‹€λ©΄ μœ μ €λŠ” λ‹€μ‹œ 앱에 μ°Ύμ•„μ˜¬ 것이닀.

κ·Έλž˜μ„œ 이 버그가 정말 치λͺ…적인지 νŒλ‹¨ν•  수 μžˆλŠ” μ§€ν‘œμ™€ νŒλ‹¨ λŠ₯λ ₯도 μ€‘μš”ν•˜λ‹€.

κ²°κ΅­ λΉ„μ¦ˆλ‹ˆμŠ€ λͺ©μ μ— 맞게 νŒλ‹¨ν•΄μ•Ό ν•œλ‹€

μœ„μ—μ„œ 이야기 ν•΄λ³Έ λ°”λ‘œλŠ” 읽기 쒋은 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λΉ„μ¦ˆλ‹ˆμŠ€μ˜ μ›ν™œν•œ μ„±μž₯ λ•Œλ¬Έμ΄μ—ˆλ‹€.

그럼 ν’€κ³ μž ν•˜λŠ” λ¬Έμ œλŠ” λΉ„μ¦ˆλ‹ˆμŠ€μ΄λ‹ˆκΉŒ 사싀 μœ„ 쑰건을 λ§Œμ‘±ν•œλ‹€λ©΄ 읽기 쒋은 μ½”λ“œκ°€ ν•„μš”μ—†μ„ μˆ˜λ„ μžˆλ‹€. 이건 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μˆ˜λ‹¨ 쀑 ν•˜λ‚˜μ΄λ‹ˆκΉŒ.

λŒ€ν‘œμ μœΌλ‘œ 일주일 뒀에 μ‚¬λΌμ§ˆ μ½”λ“œλ“€μ€ 잘 μ§œλ‘˜ ν•„μš”κ°€ 없을 수 μžˆλ‹€λŠ” 말이닀.

ν•˜μ§€λ§Œ 쒋은 κ°œλ°œμžκ°€ 되고 싢은 개발자라면 λˆ„κ΅¬λ‚˜ 쒋은 μ½”λ“œ(=읽기 μ‰¬μš΄ μ½”λ“œ)λ₯Ό μž‘μ„±ν•˜κ³  μ‹Άμ–΄ν•œλ‹€.

κ·Έλž˜μ„œ 읽기 μ‰¬μš΄ μ½”λ“œλŠ” μ–΄λ–»κ²Œ νƒ„μƒν• κΉŒ?

보톡 μ½”λ“œλ₯Ό 처음 μž‘μ„±ν•  λ•Œλ©΄ μž‘μ„±μž 본인의 μƒκ°μœΌλ‘œ 읽기 쉽닀고 νŒλ‹¨λ˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•  것이닀.

이 κ³Όμ •μ—μ„œ 개개인의 주관이 νŽΌμ³μ§€κ³  이후에 보톡 ν˜‘μ—…μ„ ν•˜κ³  μžˆλ‹€λ©΄ μ½”λ“œ 리뷰 과정을 κ±°μΉœλ‹€.

μ•„λž˜μ˜ 주관듀이 νŽΌμ³μ§€κ³  이런 리뷰듀이 달릴 μˆ˜λ„ μžˆλ‹€.

(μ‹€μ œλ‘œ λ‚΄κ°€ 남긴 λ¦¬λ·°κ±°λ‚˜ λ°›μ•„λ³Έ 리뷰λ₯Ό μ˜ˆμ‹œλ‘œ κ°€μ Έμ™”λ‹€.)

  • 1. 이 λ³€μˆ˜λͺ…은 이 μ»¨ν…μŠ€νŠΈ μ•ˆμ— μžˆμœΌλ‹ˆ μ’€ 더 쀄여도 λ˜κ² λ‹€.
    • 리뷰어) μ»¨ν…μŠ€νŠΈλ₯Ό μœ μ§€ν•˜λ©΄μ„œ λ³€μˆ˜λͺ…을 바라보기 μ–΄λ €μ›Œμš”. λ³€μˆ˜λͺ…을 μ’€ 더 μžμ„Έν•˜κ²Œ 적으면 μ–΄λ•Œμš”?
  • 2. request dtoμ—μ„œ 뽑은 데이터λ₯Ό μ’€ 더 μœ„μͺ½μ— 미리 선언해두면 μ–΄λ–€ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ”μ§€ 보기 쉽지 μ•Šμ„κΉŒ?
    • 리뷰어) μœ„μͺ½μ— 미리 λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄λ‘λŠ” κ²ƒμ˜ νš¨κ³Όκ°€ 잘 κ³΅κ°λ˜μ§€ μ•Šμ•„μš”. μ•„λž˜μ—μ„œ λ°”λ‘œ μ‚¬μš©ν•΄λ„ 큰 λ¬Έμ œλŠ” 없을 것 같은데, XXλ‹˜μ΄ μ–΄λ–€ 문제λ₯Ό λŠλΌμ…¨λŠ”μ§€ 말해주싀 수 μžˆμ„κΉŒμš”?
  • 3. 클린 μ•„ν‚€ν…μ²˜, DDDμ—μ„œ μ΄λ ‡κ²Œ ν•˜λΌκ³  ν–ˆμœΌλ‹ˆκΉŒ λ‚˜λ„ κ·Έλ ‡κ²Œ 해야지.
    • 리뷰어) λ‹€λ₯Έ λ¦¬ν¬μ—μ„œλŠ” 이런 방식을 μ‚¬μš©ν•˜κ³  μžˆμ§€ μ•Šμ€λ°, νŒ€μ›λΆ„λ“€μ΄ ν˜Όλž€μŠ€λŸ¬μšΈ 수 μžˆμ„ 것 κ°™μ•„μš”. 클린 μ•„ν‚€ν…μ²˜, DDD λ³΄λ‹€λŠ” λ‹€λ₯Έ 리포와 μΌκ΄€λœ ν˜•νƒœλ₯Ό μœ μ§€ν•˜λŠ” 게 μ–΄λ–¨κΉŒμš”?
  • 4. Javaμ—μ„œλŠ” μ΄λ ‡κ²Œ κ°œλ°œν–ˆμœΌλ‹ˆκΉŒ golangμ—μ„œλ„ μ΄λ ‡κ²Œ ν•˜λ©΄ 쒋은 μ½”λ“œλ“€μ΄ λ‚˜μ˜¬ κ±°μ•Ό.
    • 리뷰어) 음.. 이건 golangμŠ€λŸ½μ§€ μ•Šμ€ 것 κ°™μ•„μš”.

μœ„ λ‚΄μš©μ„ λ³΄λ©΄μ„œ λŠκΌˆμ„ 수 μžˆμ§€λ§Œ, λ…Όμ˜κ°€ κΈΈμ–΄μ‘Œμ„ λ•Œ 리뷰 κ³Όμ •μ—μ„œ μ‹œκ°„μ΄ 였래 걸릴 μˆ˜λ„ μžˆλ‹€.
그리고 μ–΄μ©Œλ©΄ λκΉŒμ§€ νŒŒκ³ λ“€μ–΄μ„œ align을 μ™„λ²½ν•˜κ²Œ λ§žμΆ”κ³  싢을 μˆ˜λ„ μžˆλ‹€.

ν•˜μ§€λ§Œ λΉ„μ¦ˆλ‹ˆμŠ€κ°€ μ˜¬ν•΄ μ•ˆμ— 망할지 λͺ¨λ₯΄κ³  λ‹€κΈ‰ν•œ 상황이라면 그런 μƒν™©μ—μ„œλ„ κ·Έλ ‡κ²Œ ν•˜κ² λŠ”κ°€?

쑰직 상황에 맞게 ν˜„μ‹€μ μœΌλ‘œ κ³ λ―Όν•˜κ³  κ³΅κ°ν•˜λŠ” κ°œλ°œμžκ°€ λ˜μ–΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒ?

읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό 결과물둜 λ‚΄λ†“λŠ” 건 κ²°κ΅­ νŒ€ λ‚΄μ—μ„œ μ μ ˆν•œ νƒ€ν˜‘μ μ„ μ°ΎλŠ” 과정이닀.

κ·Έλž˜μ„œ ν˜„μž¬ 쑰직의 상황을 μΆ©λΆ„νžˆ μΈμ§€ν•˜κ³  크게 λ¬Έμ œλ˜μ§€ μ•ŠλŠ” μ μ •μ„ μ—μ„œ λ©ˆμΆ”λŠ” 것도 μ€‘μš”ν•˜λ‹€.

κ²°κ΅­ κ°œλ°œμžλŠ” λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό 잘 μ΄ν•΄ν•˜κ³  λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό μœ„ν•œ κ°œλ°œμ„ ν•΄μ•Όν•œλ‹€.

ν•˜μ§€λ§Œ μ’…μ’… 개인 μš•κ΅¬λ₯Ό μ±„μš°λ €λŠ” κ°œλ°œμžλ“€λ„ μžˆλ‹€. λ¬Όλ‘  κ·Έλ“€μ˜ μš•κ΅¬λ₯Ό μ‘΄μ€‘ν•œλ‹€. λ‚˜λ„ 그런 μš•κ΅¬κ°€ 있고 μ΅œλŒ€ν•œ μ ˆμ œν•˜λŠ” 편이고, 개발자라면 λˆ„κ΅¬λ‚˜ 쒋은 μ½”λ“œ, ν˜Ήμ€ λ‚΄κ°€ μƒκ°ν•˜κΈ°μ— 멋진 μ½”λ“œ 그리고 λ‚΄κ°€ μ“°κ³  싢은 κΈ°μˆ λ“€μ΄ μ‘΄μž¬ν•œλ‹€.

κ·Έλ ‡μ§€λ§Œ 적어도 쑰직에 μ†Œμ†λ˜μ—ˆλ‹€λ©΄, νŒ€μœΌλ‘œ μΌν•œλ‹€λ©΄ μ’€ 더 ν˜„μ‹€μ μœΌλ‘œ κ³ λ―Όν•˜κ³  λ‹€λ₯Έ κ°œλ°œμžλ“€μ˜ 상황을 κ³΅κ°ν•˜λ©° ν•¨κ»˜ align을 λ§žμΆ°κ°€λŠ” μ‹œκ°„ μ •λ„λŠ” ν•„μš”ν•˜μ§€ μ•Šμ„κΉŒ?

그렇기에 사내 μ»¨λ²€μ…˜μ΄ 생기고 μžμ—°μŠ€λŸ½κ²Œ κ·Έ μ»¨λ²€μ…˜μ„ μ§€ν‚€λŠ” κ°œλ°œμžλ“€μ„ μ„ ν˜Έν•˜κΈ°λ„ ν•˜λŠ” 것 κ°™λ‹€.

Action item

μ‹€ν–‰ν•΄λ³Όλ§Œν•œ action item을 μ μ–΄λ³΄μž

  • 쒋은 μ½”λ“œμ— λŒ€ν•œ 생각을 νŒ€μ›μ—κ²Œ μ§ˆλ¬Έν•˜κΈ°
    (투λͺ…ν•˜κ³  λͺ…ν™•ν•œ λ§₯락 κ³΅μœ μ™€ κ³΅κ°λŒ€ ν˜•μ„± ν•„μˆ˜)
    • μ €λŠ” 가끔 이런 μ½”λ“œλ“€λ‘œ 머리가 μ•„ν”Œ λ•Œκ°€ μžˆμ–΄μš”. xxλ‹˜μ€ 그런 κ²½ν—˜μ΄ μžˆμœΌμ‹ κ°€μš”? 쒋은 μ½”λ“œλŠ” 뭐라고 μƒκ°ν•˜μ‹œλ‚˜μš”?
  • 쒋은 μ½”λ“œλΌκ³  μƒκ°λ˜λŠ” μ½”λ“œλ₯Ό λ°œκ²¬ν•˜λ©΄ 기둝해두고
    μ™œ κ·Έλ ‡κ²Œ μƒκ°ν–ˆλŠ”μ§€λ„ κΈ°λ‘ν•˜κΈ°
    • λ‚˜μ€‘μ— λˆ„κ΅°κ°€λ₯Ό μ„€λ“ν•˜κΈ°μ— 쒋은 μžλ£Œκ°€ 될 수 있음
λ°˜μ‘ν˜•