본문 바로가기
책/실용주의 프로그래머

[TIL] 7장 코딩하는 동안

by 정선한 2022. 5. 29.
728x90
반응형
7장 코딩하는 동안

오늘의 TIL 3줄 요약

  • 개발자는 우연에 맡기거나 막연하게 가정해서는 안된다. 증명해내야 한다.
  • 개발일정이나 스스로에게 코드를 합리화 시키면 안된다.
  • 기본원칙과 올바른 규칙을 지켜라.

1. 책에서 기억하고 싶은 내용

코딩은 기계적인 작업이 아니다. 
코딩할 때는 매 순간 결정을 내려야 하는데, 프로그램이 정확하게 생산적으로 작동하면서 천수를 누리도록 하려면 사려 깊은 생각과 판단으로 결정을 내려야 한다.

오직 인간만이 무언가를 직접 보고, 정확한 예측에 필요한 모든 정보를 획득하고, 심지어 순간적으로는 정확한 예측을 한 후에도, 그런데 그것이 아니라고 말할 수 있다.
프로그래머로서 경험이 늘어 갈수록 여러분의 뇌에는 암묵적인 지식이 켜켜이 쌓인다.
잘 되는 방법, 잘 안 되는 방법, 오류 형태별로 가능한 원인 등 일하는 동안 보고 듣고 느끼는 모든 것이 쌓인다.
 1) 일단 본능이 반응하고 있음을 인지.
 2) 왜 이런 느낌이 드는지 알아낼 것.

개발자인 우리들 역시 지뢰밭에서 일한다. 하루에도 수백 개가 넘는 함정이 우리가 빠지기를 기다리고 있다.
우리는 우연에 맡기는 프로그래밍, 곧 행운과 우연한 성공에 의존하는 프로그래밍을 하지 않아야 한다. 대신 '의도적으로 프로그래밍'해야 한다.
왜 코드가 망가졌는지 개발자가 모르는 이유는 애초에 코드가 왜 잘 돌아가는지도 몰랐기 때문이다.
가정하지 말라. 증명하라.

숫자가 외부 요인에 따라 달라진다면 잠시 작업을 멈추고 커다란 수가 들어왔을 경우 수행 시간이나 메모리 소모에 어떤 영향을 미칠지 생각해 보는 것이 좋다.
사용하는 알고리즘의 차수를 추정하라.
성급한 최적화를 조심하라. 언제나 어떤 알고리즘을 개선하느라 여러분의 귀중한 시간을 투자하기 전에 그 알고리즘이 정말로 병목인지 먼저 확인하는 것이 좋다.
책 추천 : 로버트 세지웍 - 알고리즘. 알고리즘 분석 입문

소프트웨어 개발은 건축보다 정원 가꾸기에 더 가깝다. 딱딱하기보다는 유기적인 활동이다.
리팩터링 : 밖으로 드러나는 동작은 그대로 유지한 채 내부 구조를 변경함으로써 이미 존재하는 코드를 재구성하는 체계적 기법.
 1) 이 활동은 체계적이다. 아무렇게나 하는 것이 아니다.
 2) 밖으로 드러나는 동작은 바뀌지 않는다. 기능을 추가하는 작업이 아니다.
위험하지 않은 작은 단계들을 밟는 일상 활동. 정확한 목적을 가지고 정밀하게 접근하는 활동이다.
그래서 코드를 바꾸기 쉽게 유지하는 것이다.
무엇이든 '잘못'되었다는 생각이 들 때가 있을 것이다. 주저하지 말고 변경하라.
언제나 바로 지금이 최적기다. 코드를 리팩터링 할 이유는 아주 많다.

테스트는 버그를 찾기 위한 것이 아니다.
테스트가 코드의 첫 번 째 사용자다.
TDD 발상의 핵심은 TDD를 이행하는 반복 주기가 기껏해야 몇 분 정도로 매우 짧아야 한다는 것이다. 따라서 끊임없이 테스트 작성과 테스트를 통과하게 만들기를 반복하게 된다.

기본 보안 원칙
 1) 공격 표면을 최소화하라.
 2) 최소 권한 원칙
 3) 안전한 기본값
 4) 민감 정보를 암호화하라.
 5) 보안 업데이트를 적용하라.

728x90
반응형