특정 기술에 메이지 말자. 각자 맞는 환경이 있다.
소프트웨어를 잘 만드는 것에 관심이 없다면 이 일을 하는 이유가 없다.
비판적 사고, 현실주의자
당신이 조직을 바꿀 수 있다.
자신의 무지와 실수를 인정하라
비난하거나 변명하지 마라.
대안을 제시해라.
잠깐 내면의 소리를 들어라. 멍청하게 들리나?
뭐라 말할지 빤히 보이는데 굳이 확인하지 마라
깨진 창문을 내버려 두지 마라.
조악한 설계, 형편없는 경영상의 결정이 깨진 창문이다.
깨진 창문을 두세 개 고르고 동료들과 문제해결을 해봐라
개구리가 되지 말라. 주변을 살펴라. 방안의 전등은 몇 개인가?
사용자에게는 오늘의 소프트웨어는 내일의 완벽한 소프트웨어보다 낫다.
지식에 대한 투자가 최고의 이윤을 낸다
주기적으로 투자해라. 기술 서적을 한 달에 한 권 읽어라. 기술서적이 아닌 것도 읽어라.
요즘 흐름을 놓치지 마라
답을 못하면 계속해서 답을 찾아라. 중단하지 마라.
비판적 사고, 근본적인 질문
경청하라. 좋은 코드는 바꾸기 쉽다.
초기에는 의식적으로 노력하라.
내가 방금 한 일이 전체 시스템을 바꾸기 어렵게 했나?
프로그래머는 항상 유지보수 모드다.
모든 지식은 시스템 내에서 단 한 번만 애매하지 않고 권위 있게 표현되어야 한다.
반복하지 마라. 자기모순에 빠지지 마라.
모든 코드의 중복이 지식의 중복은 아니다.
다른 것을 검증하지만 우연히 같을 뿐이다.
개발자 간의 중복을 막으려면 의사소통을 잘하고 유대가 깊은 팀이 되어야 한다.
다른 사람의 코드를 읽어라. 기웃거리는 것이 아니라 배우는 것이다.
자신이 작성한 코드를 비판적으로 봐라
당신이 가진 생각이 딱 하나라면 그것이 가장 위험하다.
중요한 결정은 쉽게 되돌릴 수 없다.
결정은 바뀐다.
우리가 할 수 있는 것은 바꾸기 쉽게 만드는 것이다.
유행을 좇지 말라
의문이 들거나 위험해 보이는 부분을 우선순위에 둬라.
언어의 한계가 곧 자기 세계의 한계이다.
어떤 면에서 모든 답은 추정치이다.
우리의 답이 어디에 사용되는지 되물어라.
추청치가 틀렸더라도 도망치치 말라
누군가 추청 해달라고 한다면? 나중에 연락드릴게요.
흐린 먹물이 훌륭한 기억보다 낫다.
에리 한 각자 도구가 한 가지 일만 잘하도록 만들자
gui는 대단하지만 셀을 사용하면 자동화를 만날 수 있다.
우리가 아는 유일한 방법은 반복이다.
과거를 기억하지 못하면 과거를 반복할 뿐이다.
예상치 못한 일이 일어날 때 우리가 무엇을 해야 하는지 생각해 보자.
디버깅은 문제풀이일 뿐이다.
남을 비판하기보단 문제를 해결하라.
가장 속이기 쉬운 것은 자신이다.
버그를 보고 '그건 불가능해'라고 생각하지 말라. 그건 가능하다.
버그를 보고한 사람을 인터뷰할 필요가 있다.
오류 메시지를 읽어라.
고무오리에게 설명하자.
가정하지 말라. 증명하라.
완벽한 소프트웨어는 없다. 자기 자신도 믿지 마라.
이상하다 싶으면 프로그램을 죽여라. 이상한데 작동하는 프로그램보다 낫다.
그것이 진짜로 일어날 리 없다면 단정문으로 증명하라.
테스트는 모든 버그를 잡지 않는다.
작은 단계씩 step by step
볼 수 있는 미래까지 대비하라. 그 뒤에는 블랙스완이 있을 수 있다.
유연함을 유지하는 법은 코드를 적게 작성하는 것이다.
우리가 무엇을 골라내려 하지만 그것은 우주와 결합되어 있다.
묻지 말고 말하라
모든 것은 바뀐다.
함수형 호출과 디미터의 법칙 위반은 다르다. 전자는 매개변수의 형태를 맞추기만 하면 되고 디미테 법칙 위반은 데이터가 서로를 알아야 한다.
싱글톤도 전역 데이터이다.
감시자 패턴도 결합도가 높다. 참조를 넘겨야 한다.
그래봤자 메지시 전달 시스템이다.
자신이 하고 있는 것을 하나의 과정으로 설명하지 못하면 자신이 뭘 하고 있는지 모르는 것이다.
간단하게 생각하자 프로그램은 인풋과 아웃풋으로 정의된다.
객체에 모든 것을 숨기는 것이 나은가 함수형 프로그래밍이 나은가.
상속을 피하라.
지나치게 하지 마라
대부분 반복적인 일이지만 정신을 늘 기민하게 유지하면 재앙을 막을 수 있다.
안 좋은 느낌이 든다면 왜 그런지 찾아봐라
해야 하지만 무섭고 두려운 일이 있는가? 2시간 동안 버린다고 생각하고 해 봐라
잘 작동하는데 괜히 건들려서 일을 만들 필요가 있는가? 그래야 한다.
경험이 더 적은 프로그래머에게 코드를 상세히 설명할 수 있는가?
왜 동작하는지 모른다면 왜 실패하는지 모른다.
계획을 세우고 코드를 진행하라.
코드는 정적이지 않다 발전해야 한다.
리팩토링을 비유할 때는 종양에 비유하라
일정에 리팩토링을 넣어라
코드의 사용자처럼 행하라
코드가 계약을 지키는지 테스트하라
하위컴포넌트부터 테스트하면 쉽게 할 수 있다.
코드는 규칙적이며 일관되어야 한다
테스트를 견고하고 깨끗이 다뤄라
지나칠 정도로 의심하라
단순하고 작은 코드가 낫다
이름은 아주 중요하다
팀 내의 규칙을 지켜라
자신이 뭘 원하는지 정확히 아는 사람이 없다
우리가 하는 일은 사람들이 자신이 원하는 바를 깨닫도록 돕는 것이다.
우리의 일은 간단해 보이는 무언가를 받으면 특이한 경우에 대해 캐물어서 화나게 하는 것이다.
신입 개발자일수록 문제를 받으면 바로 해결하려 한다.
좋은 개발자는 형상 능력을 키울 수 있다.
정책은 메타 데이터이다. 시스템이 다양한 정책을 처리할 수 있도록 일반적으로 구현하라
왜 이 문제를 풀려하는가?
행운은 준비된 자에게 찾아온다
함께 일하고 질문하라
누가 가장 똑똑하지 가르는 게 아니다. 우리 모두 각자 뛰어난 부분이 있다.
최고의 방법은 소프트웨어 없이 가능한 것이다.
사용자를 기쁘게 하라.
품질은 팀의 문제다.
시간이 나면은 영원히 하지 않겠다는 거다.
신기술은 신중히
프로젝트에 이름을 지어줘라
팀원이 자신의 방식대로 빛나게 하라
유행이 아니라 맞는 것을 찾아라
요구사항을 바꾸면 프로젝트가 목표에 가까워 지나? 그렇게 해라
나라면 이것을 쓸까?