Effective Programming
2018.6.21~25, 정독도서관에서 읽다.
프로그래머로서 다음단계로 어떻게 하면 진화할수 있을 것인가에 대해서 고민하고 있다.
이번 독서로 얻은 것은, 글쓰기, 블로그를 시작해야 겠다고 마음먹은 것이다.
01. 들어가며
누구나 코딩을 할줄 알아야 한다는 말은 누구나 브리태니커 백과사전을 처음부터 끝까지 읽어야 한다는 말과 같다
프로그래밍은 열정에 대한 것이다.
진정한 프로그래머는 코딩을 사랑하는 사람을 대번에 알아본다.
프로그래머의 여덟단계
죽은 프로그래머: 작성한 코드가 끝까지 살아 남음
성공적인 프로그래머: 널리 알려져 있음
유명한 프로그래머: 자신의 분야에서 긍정적인 영향을 미치고 있음
일하는 프로그래머: 성공적인 경력, 쉬운 취업
평균적인..
아마추어
알려지지 않은: 그저 직업일 뿐
나쁜: 능력이 없는 상태에서 프로그래밍 수행
-
위대한 프로그래머는 다른 사람을 설득함으로써 영향력을 확대한다.
명확한 설명, 기술적인 스펙으로 자신의 코드를 잘 이해하게 만들고, 새로운 코드를 작성하는 대신
자신의 코드를 사용할 수 있게 만든다.
글을 쓰는 것은 운동과 같다. 자꾸 써봐야 한다. 블로그를 시작하라.
존스키트: 글을 명확하게 하는 것은 자신의 내면적 사고의 흐름을 명확하게 하는 데 도움을 준다.
02.엉터리 같은 일을 마무리 하는 기술
다니엘핑크 Daniel Pink:
톱날갈기:
저 길로 가라, 총알 처럼
멀티태스킹
03.좋은 프로그래밍의 원리
첫번째 원리: 그것은 언제나 당신의 잘못이다.
-
자신의 코드에 대해 책을 져라. 일단 자신이 작성한 코드에서 시작하고, 결정적인 증거가 나타날때 까지
점점 더 바깥쪽을 향해 나아가야 한다.
코드의 작성은 간결함에 가치를 둬야 한다.
주석 없이 코딩하기: 코드 자체로 이해하기 쉽도록 리팩토링 한다. 주석을 달때는 신중하게.
숙련된 개발자라면 문서보다 소스코드를 읽는 편이 더 빠를때가 많다. 다른 사람이 작성한 코드를 읽는데 익숙해져야 한다.
고무오리 문제 해결법:
04.프로그래머를 제대로 채용하는 법
코딩을 제대로 하지 못하는 사람은 작은 문제조차 해결하지 못한다
피즈버즈 FizzBuzz 질문: 코딩 못하는 사람 걸러내기
채용 방법
포트폴리오 살펴보기: 오픈소스, 블로그, 텀블러..
문화적으로 어울리는 사람 고용하기
전화 인터뷰
오디션 프로젝트: 짧고 분리된 일감 시켜보기
인터뷰
몇년을 경험했는가 라는 질문에 담긴 미신
자신의 전문분야를 20분간 프리젠테이션 하도록 한다
이 사람은 자신의 일에 열정을 가지고 있는가?
소규모 그룹에서 효율적인 의사소통을 할 수 있는가?
자신의 전문 분야에 대해서 잘 알고 있는가?
당신의 팀원들은 이 사람과 즐거운 마음으로 일할 수 있는가?
05.팀이 함께 일하도록 만들기
6부.프로그래머를 위한 효율적인 작업 공간
권리장전
두대의 모니터
빠른 PC
마우스 키보드 선택
편안한 의자
인터넷 연결
조용한 작업 환경
배경조명
7부.사용자를 염두해 두고 설계하기
당신의 소프트웨어와 프로젝트는 결국 작은 디테일의 모음이다.
디테일을 무시한다면, 그 제품은 사용자를 짜증나게 할 것이다.
처음에는 누구나 디테일을 제대로 구현하지 못한다.
사용자 입장에서는 UI가 어플리케이션 자체이다. 우선순위를 둬야 한다.
UI를 우선시 하는 소프트웨어 개발: 종이 프로토타이핑, PPT 프로토타이핑
사용자의 좁은 시야 다루기: 필요한 내용은 바로 코 앞에 둬야 한다.
피츠의 법칙 Fitts’ Law:
버젼 1은 엉망이지만 어쨌든 출시하라: 실제 사용자의 피드백을 받고 빠르게 대응한다.
8부.사용자의 데이터를 보호하라
https 를 사용하라: 하드웨어의 발전으로 더 빨라졌다
사전공격에 대비: 로그인 실패시 지연 시간 추가
인터넷 운전면허: 구글이나 페이스북을 통한 로그인
9부. 코드를 테스트해서 그것이 필요이상으로 엉망이 되지 않게 만들기
고객의 고통을 공유하기: Dogfood
무질서한 원숭이와 함께 일하기: 진짜 실패를 피하는 방법: 지속적으로 작은 실패를 거듭하는 것.
코드리뷰: 그냥 하라: 테스트 만으로는 모든 오류를 잡아낼 수 없다.
무식한 방식의 테스트: 한두개의 테스트 케이스 만으 로는 충분하지 않다.
Unit Test: 디버깅을 위한 출력문에 뭔가를 집어 넣는 대신 테스트를 작성하라.
Unit Test 보다는 베타 테스트가 낫다. 별 상관없는 버그를 잡을 필요는 없다.
사용성 테스트: 복잡할 필요 없음. 사람 많을 필요 없음.
실패를 즉각적으로 가시화 하라
10부. 커뮤니티로 부터 이익 얻기
11장, 12장은 딱히 와닿는 내용이 없어서 생략.
끝
To do: