728x90
반응형

Part 3 단순성과 소프트웨어 설계

  1. 설계는 프로젝트 초반에 하라

    1. 미래를 고려하지 않으면 코드가 엉망으로 설계되고 너무 복잡해진다.

  2. 미래 예측의 정확성

    1. 미래 예측의 정확성은 시스템이 복잡해질수록, 예측하고자 하는 시점이 멀어질수록 낮아진다.

  3. 단순성과 엄격성

    1. 엄격한 애플리케이션일수록 더 단순하게 작성할 수 있다.

  4. 둘은 너무 많다

  5. 분별있는 소프트웨어 설계

3장에서는 올바른 소프트웨어 설계에 대한 방법을 알려준다.

 

첫째 미래에 무슨 일이 일어날지는 모르겠지만 언제나 안정적으로 동작할 수 있도록 설계한다.

 

둘째 변화를 고려해서 설계한다.

 

셋째 작은 범위에서만 변경하고 항상 단위 테스트를 한다.

 

넷째 규격화하고 작고 간단하게 유지하여 작업을 단순화한다.

Part 4 디버깅

  1. 버그란 무엇인가?

    1. 프로그램이 프로그래머의 의도에 따라 움직이지 않는다

    2. 프로그래머의 의도가 사용자의 평범하고 합리적인 기대를 충족시키지 않는다

    3. 의도한 방식에 따라 정확히 수행하는데도 사용자의 기대에 못미친다면 새로운 기능이 필요하다는 말이다

  2. 버그의 원인

    1. 버그는 복잡성을 줄이지 못할 때 발생한다.

    2. 코드가 단순할수록 버그가 줄어든 것이다

    3. 프로그램의 모든 것이 단순해지도록 늘 노력하라

  3. 재발을 방지하라

    1. 소프트웨어에서 가장 신경 써야 할 부분은 미래다

    2. 문제가 제대로 해결괬는지 확인하는 일반적인 가이드라인: 아무도 그 문제에 다시는 주의를 기울일 필요가 없을 정도가 되어야 한다

  4. 디버깅의 기본 철학

    1. 디버깅은 본인이 아직 담을 모든다고 자각하는 데에서 시작해야 한다

    2. 정상 시스템의 작동 방식 기억하기

    3. 더 많은 데이터를 모을 수 있는 방법 알아내기

    4. 정상 시스템이 어떻게 작동하는지 알아낸다

    5. 문제의 원인을 아직 모른다는 사실을 인정한다

    6. 문제를 일으키는 원인이 무엇인지 알아낼 때까지 데이터를 살펴본다

    7. 증상이 아닌 원인을 고친다

4장에서는 버그가 무엇인지 그 버그를 어떻게 찾을 것인지를 알려준다.

 

디버깅을 할 때 항상 생각해야할 것은 문제의 원인을 모른다는 것을 인정하는 것이다.

 

그래서 원인이 무엇인지 알아낼 때까지 데이터를 살펴보고 원인을 수정해야 한다.

 

다음 문장은 본인이 저런 식으로 했던 적이 많아 공감이 가서 발췌했다.

내가 겪은 프로그래머 **대부분**은 버그가 생기면 자리를 잡고 앉아서 버그에 관해 생각해보거나 원인이 무엇일지 이야기하고 싶어 한다.

- p79

Part 5 엔지니어링 팀에서 일하기

  1. 엔지니어링 생산성을 효과적으로 개선하기

    1. 개발자가 생각하는 문제가 무엇인지 알아내라

    2. 팀의 신뢰를 얻어라

    3. 친절한 태도를 갖추고 인내심을 발휘하라

    4. 자기 눈에만 보이는 문제 말고 사람들이 인지하고 있는 문제를 해결하라

  2. 개발자 생산성 측정하기

    1. 개발자의 생산성을 측정하려면 그 사람이 생산한 제품을 측정하라

  3. 소프트웨어 회사에서 코드 복잡성을 다루는 법

    1. 문제 목록 작성

    2. 팀 회의

    3. 버그 리포트

    4. 우선순위 선정: 제일 많이 괴롭히는 문제부터

    5. 과제: 각 작업자에게 버그 할당

    6. 계획: 언제 고칠지 결정

  4. 리팩토링할 때는 기능에 주목하라

    1. 일단 시간이 지날수록 시스템이 더 나빠지지 않고 더 나아지는 상태로 만드는 걸 첫번째 목표로 삼아라

    2. 리팩토링 한계를 설정하고 그 한계 내에서 제대로 작업하라

    3. 리팩토링 시 해당 코드의 제작 목적에 부합하지 않는 부분을 목적에 부합하게 바꿔라

  5. 친절과 코드

    1. 개발자 말고 코드에 대해 이야기하는 게 중요하다

    2. 친철한 태도로 다른 이와 협력해서 더 나은 소프트웨어를 만들어라

  6. 간략하게 살펴보는 오픈 소스 커뮤니티

    1. 기여자 유지하기

    2. 장벽 없애기: 문서 작성 및 소통 채널 생성

    3. 관심 유도하기

    4. 아주 인기 있는 제품이 되라

    5. 인기 있는 프로그래밍 언어로 만들어라

5장에서는 생산성을 효과적으로 개선하기에서는 팀원들과의 소통이 중요하다는 것을 알려준다.

 

저자가 참여했던 버그질라 프로젝트를 바탕으로 오픈 소스 프로젝트를 기획할 때 어떻게 하는게 좋은지 보여준다.

 

이는 오픈 소스에만 국한되는 게 아니라 회사에서 프로젝트를 수행할 때도 같다고 생각한다.

 

문서나 안내가 없다면 중간에 들어와 일하는 경우 어려움을 겪을 것이다.

 

그리고 잘 안 쓰는 언어로 돼있다면 그 언어를 배우는데 시간을 허비해 업무 생산성이 떨어질 것이다.

 

반응형

+ Recent posts