스트리트 코더 (프로그래밍 세계에서 살아남기 위한 개발자 생존 가이드!)

스트리트 코더 (프로그래밍 세계에서 살아남기 위한 개발자 생존 가이드!)

$33.00
Description
마감일 vs 코드 품질, 무엇을 우선시할 것인가?
프로그래밍 세계의 이상과 현실 속에서
살아남기 위해 필요한 ‘길거리 지식’을 배우자!
컴퓨터 과학 이론, 알고리즘, 데이터 구조, 테스트, 코드 최적화, 리팩터링 등 코딩할 때 적용해야 하는 다양한 이론이 있다. 하지만 현실은 마감일에 쫓겨 작업의 우선순위를 정하고, 어떤 규칙을 어겨야 할지를 빠르게 결정을 내려야 하는 상황에 내몰리곤 한다. 이때 우리에게 필요한 것은 무엇이 가장 중요한지 알아차릴 수 있는 ‘길거리 지식’이다. 어떤 규칙을 깨야 하고, 어떻게 깰 수 있는지, 무엇을 우선시해야 하는지를 알고 있어야 한다. 이 책은 추상적인 이론이나 상아탑의 이데올로기처럼 뜬구름 잡는 이야기가 아닌 독학으로 마이크로소프트 엔지니어가 되기까지의 경험을 바탕으로 한 실용적인 팁과 노하우를 담고 있다. 이 책으로 다양한 개발자 생존 법칙을 배우고, 새로운 시각을 접하면서 자신만의 사각지대에서 무엇을 놓치고 있는지, 어떤 보석이 숨어 있는지도 찾아보자.
저자

세다트카파노글루

세다트카파노글루
튀르키예에스키세히르출신이며독학으로소프트웨어개발자가되었다.이후워싱턴주시애틀에있는마이크로소프트에서윈도핵심운영체제부서의엔지니어로근무했다.그의소프트웨어개발경력은30년에달한다.
그는구유고슬라비아에서튀르키예로이주한보스니아출신부모사이에서다섯자녀중막내로태어났다.‘시큼한사전’이라는뜻의세계에서가장인기있는터키어소셜플랫폼인엑시쇠즐뤽(https://eksisozluk.com)을설립했다.1990년대에는코드로생성한그래픽이나음악프레젠테이션을만들기위한국제디지털예술커뮤니티인튀르키예의데모씬에서활동했으며,트위터(@esesci)또는프로그래밍블로그(https://ssg.dev)에서만날수있다.

목차

1장거리로
1.1길거리에서중요한것
1.2누가스트리트코더인가?
1.3훌륭한스트리트코더
__1.3.1질문하기
__1.3.2결과중심적
__1.3.3높은처리량
__1.3.4복잡성과모호성수용
1.4최근소프트웨어개발의문제점
__1.4.1너무많은기술
__1.4.2패러다임의패러글라이딩
__1.4.3기술의블랙박스
__1.4.4오버헤드과소평가
__1.4.5내일이아니다
__1.4.6시시해보이는일도도움이될수있다
1.5이책에서다루지않는것
1.6주제
1.7요약

2장실용적인이론
2.1알고리즘특강
__2.1.1빅오를더잘이해하면좋다
2.2내부데이터구조
__2.2.1문자열
__2.2.2배열
__2.2.3리스트
__2.2.4연결리스트
__2.2.5큐
__2.2.6딕셔너리
__2.2.7해시집합
__2.2.8스택
__2.2.9호출스택
2.3타입에대한과대포장은무엇인가?
__2.3.1타입에강해지기
__2.3.2유효성증명
__2.3.3무조건프레임워크를사용하지말고똑똑하게활용하라
__2.3.4오타이상의타입
__2.3.5nullable이아니라non-nullable이라했어야한다
__2.3.6무료성능향상
__2.3.7참조타입대값타입
2.4요약
3장유용한안티패턴
3.1깨지않았다면깨버려라
__3.1.1코드경직성에맞서라
__3.1.2빠르게옮기고깨버리자
__3.1.3경계를존중하라
__3.1.4공통적인기능을분리하라
__3.1.5예제웹페이지
__3.1.6빚을지지마라
3.2처음부터다시작성하라
__3.2.1지우고다시써라
3.3코드가멈추지않았어도개선하자
__3.3.1미래를향한경주
__3.3.2코드를깔끔하게만드는것은작성하는것만큼중요하다
3.4스스로반복하라
__3.4.1재사용대복사
3.5지금새로운것을시도하라
3.6상속을사용하지마라
3.7클래스를사용하지마라
__3.7.1열거형은맛있다!
__3.7.2구조체는아주좋다!
3.8불량코드를작성하라
__3.8.1If/Else를사용하지마라
__3.8.2goto를사용하라
3.9코드주석을작성하지마라
__3.9.1이름을잘선택하라
__3.9.2함수를활용하라
3.10요약

4장맛있는테스트
4.1테스트의유형
__4.1.1수동테스트
__4.1.2자동테스트
__4.1.3위험을감수하라:프로덕션환경에서의테스트
__4.1.4적합한테스트방법선택하기
4.2걱정을멈추고테스트를사랑하는법
4.3TDD와같이약어로된용어를사용하지마라
4.4자신의이득을위해테스트를작성하라
4.5테스트대상결정하기
__4.5.1경계를존중하라
__4.5.2코드커버리지
4.6테스트를작성하지마라
__4.6.1테스트를작성하지마라
__4.6.2모든테스트를작성하려고하지마라
4.7컴파일러가코드를테스트하도록하라
__4.7.1널검사를제거하라
__4.7.2범위점검을제거하라
__4.7.3유효값을확인하는로직에서중복을제거하라
4.8테스트이름정하기
4.9요약

5장보람있는리팩터링
5.1우리는왜리팩터링을하는가?
5.2아키텍처변경
__5.2.1구성요소를식별하라
__5.2.2작업량과위험도를추정하라
__5.2.3평판
__5.2.4더쉽게리팩터링되도록리팩터링하라
__5.2.5마지막코스
5.3신뢰할만한리팩터링
5.4리팩터링을하지않는경우
5.5요약

6장조사를통한보안
6.1해커를넘어서
6.2위협모델링
__6.2.1주머니에들어갈만큼작은위협모델
6.3웹앱을안전하게작성하라
__6.3.1보안을염두에두고설계하라
__6.3.2은둔보안방식의유용성
__6.3.3자신만의보안을구현하지마라
__6.3.4SQL삽입공격
__6.3.5XSS
__6.3.6크로스사이트요청위조(CSRF,XSRF)
6.4첫번째플러드그리기
__6.4.1캡차를사용하지마라
__6.4.2캡차의대체방안
__6.4.3캐시를구현하지마라
6.5암호저장하기
__6.5.1소스코드에암호를유지하는것
6.6요약

7장자기주장이뚜렷한최적화
7.1올바른문제를해결하라
__7.1.1단순한벤치마킹
__7.1.2성능대응답성
7.2완만함의분석
7.3최고부터시작하라
__7.3.1중첩루프
__7.3.2문자열지향프로그래밍
__7.3.32b||!2b평가하기
7.4병목현상깨뜨리기
__7.4.1데이터를패킹하지마라
__7.4.2근접성을활용하라
__7.4.3종속작업을세분화하라
__7.4.4예측할수있도록하라
__7.4.5SIMD
7.51초와0초의I/O(입출력)
__7.5.1I/O속도향상
__7.5.2I/O를논-블로킹(non-blocking)으로만들라
__7.5.3오래된방법
__7.5.4최신비동기/대기
__7.5.5비동기I/O의잠재적문제
7.6다른모든것이실패할경우,캐시를이용하라
7.7요약

8장기분좋은확장성
8.1잠금을사용하지마라
__8.1.1이중점검된잠금
8.2불일치를수용하라
__8.2.1무서운NOLOCK
8.3데이터베이스연결을캐시하지마라
__8.3.1ORM의형태로
8.4스레드를사용하지마라
__8.4.1비동기코드의주의사항
__8.4.2비동기를이용한멀티스레딩
8.5모놀리스를존중하라
8.6요약

9장버그와의동거
9.1버그를수정하지마라
9.2오류에대한두려움
__9.2.1예외에대한진실
__9.2.2예외를잡아내지마라
__9.2.3예외복원성
__9.2.4트랜잭션이없는복원력
__9.2.5예외와오류
9.3디버깅하지마라
__9.3.1printf()디버깅
__9.3.2덤프다이빙
__9.3.3고무오리디버깅
9.4요약

출판사 서평

규칙을깨더라도살아남아야한다!
현실속에살고있는수많은개발자를위한생존법칙과노하우!

살아남기위해중요한것은무엇인가?
컴퓨터과학이론,알고리즘,데이터구조,테스트,코드최적화,리팩터링등코딩할때적용해야하는다양한이론이있다.하지만현실은마감일에쫓겨작업의우선순위를정하고,어떤규칙을어겨야할지를빠르게결정을내려야하는상황에내몰리곤한다.코드품질과마감일사이에서우리는어떤것을우선시해야할까?
노련한개발자라면이미알고있겠지만,우리에게필요한것은무엇이가장중요한지알아차릴수있는‘길거리지식’이다.어떤규칙을깨야하고,어떻게깰수있는지,어떤것을우선시하고,어떤것을뒤로미뤄야하는지를알고있어야한다.

저자가몸소겪으면서깨달은생존법칙과노하우담았다!
이책은독학으로공부하여마이크로소프트의엔지니어가된저자의경험을바탕으로한다.추상적인이론이나상아탑의이데올로기처럼뜬구름잡는이야기가아닌실용적인데이터구조나알고리즘의적용법,점진적인리팩터링으로효율적인코드를만드는법,보안을염두에두고개발하는법,프로젝트를위한확장성등개인적인실무경험에뿌리를둔현실적인조언을한다.또한,익히알던모범사례보다더도움이되는일부안티패턴소개,최적화할때발생하는트레이드오프이해하기,무조건버그를수정하지않기등생각지도못한새로운시각을보여준다.이를바탕으로자신만의사각지대에서무엇을놓치고있는지,어떤보석이숨어있는지를찾을수있고,진정한‘스트리트코더’가될수있을것이다.