#acl +All:read <> use data to make logic simple * make DSL * do not mix logic and data construction == Proverbs == * [[http://www.agile-process.org/proverbs.html|Agile Process Proverbs]] == Philosophy, Viewpoint, Programmer == 책 * [[책/실용주의 프로그래머|Pragmatic Programmer]] * LittleBets * [[책/천 개의 성공을 만든 작은 행동의 힘]] * [[책/AreYourLightsOn]] last 5% automation craft, not science SoftwareArchitecture. [[AOSA]] prefaces. The Eisenhower Matrix Make it work, then make it better. problem space, solution space ... == Philosophy, Viewpoint, Programmer: Advanced == naming itself is a design practice. it makes abstraction. programming is to build a language system of a business domain. programming is to make a language system. make vocabulary. take a look at Peter Norvig's [[https://github.com/norvig/pytudes/blob/main/ipynb/Advent-2020.ipynb|code]] (pattern language, lisp hackers) [[책/Antifragile|Antifragile]]: asymmetry, real option * [[책/TheTimelessWayOfBuilding]] * SICP * 패턴, 위키, 그리고 XP == Programming fundamental == 공통점과 차이점 찾기. 공통점을 공유하고, 차이점을 처리할 수 있는 기법을 습득한다. (OOP 다형성, 고차함수 등) 책 * Refactoring 2/E * Kent Beck, Implementation Patterns * Robert Martin, Agile Software Development == TDD, Baby step, Evolutionary Design == [[TinyExperiment]] - 작은 가설을 빠르게 검증할 수 있는 실험 환경 만들기 Baby Step quickly step back to closest green-bar when you see red bar TDD is a design activity ([[https://www.youtube.com/watch?v=d5Y1B1cmaGQ|DbC]]: Design by Coding) short feedback cycle (loop) bowling kata by robert martin [[https://www.industriallogic.com/blog/whats-this-about-micro-commits/|micro commit]], one at a time isolation use abduction. piecemeal growth, center first (EssenceOfAgile) 책 * Kent Beck, Test Driven Development * Specification by Examples == Testing & Debugging == eliminate/reduce intermediate layers 넘겨짚지 말고, 마술의 동작과 동작 사이를 잘 들여다보기. do not guess far. when you guess, validate it. regression test [[가추법|abduction]] Here and now. recognize what's going on, inspect it, find root cause, and fix it. Don't wandering around searching web pages mindlessly. BDD, ATDD, SBE == Collaboration == If you are a software developer, you should consider extreme programming instead of scrum. It has many technical principles that can improve your work. pair programming: perform outstanding with other juniors [[http://agile.egloos.com/5904102|협업의 미신]] ([[https://www.youtube.com/watch?v=I4xkw_0XqAs|영상]]) pull request anti pattern: [[https://twitter.com/kentbeck/status/1375936309458464769|Kent's twit]]. [[https://jessitron.com/2021/03/27/those-pesky-pull-request-reviews/|Those pesky pull request reviews]]. [[기술문서모집/PR과 코드리뷰|PR과 코드리뷰]]. Yes, but / Yes, and 책 * Kent Beck, [[책/ExtremeProgrammingExplained]] * [[책/피플웨어|Peopleware]] == Learning, Expertise == To learn well from experts (CTA, [[CollaborativeDevelopmentOfExpertise|CDE]]) GaryKlein, AndersEricsson * [[책/ApprenticeshipPatterns]] * 실용주의 사고와 학습 * [[책/1만 시간의 재발견]] [[개발실력 키우기]] == Cognition == ReflectivePractice, ReflectionInAction RecognitionPrimedDecisionModel [[정수/일기/2024-07-29]] == Fundamental Cognitive Competency == * Mindfulness - Sharp mind, Stay focused, deliberately search better way * Reading - fast scan, pattern recognition * SatirInteractionModel * Sense clearly, fast, rich * Interpret wide possibility * Search various and variety options, deliberately * Respond congruently Understand problem space * non-judgmental observation * mental representation -- visualization: pattern, analogy ---- See Also: [[프로그래밍 추천 도서]]