Share E-Book
Scan to open this page

Scan with your phone to open this page

AuthorPete Goodliffe

If you’re passionate about programming and want to get better at it, you’ve come to the right source. Code Craft author Pete Goodliffe presents a collection of useful techniques and approaches to the art and craft of programming that will help boost your career and your well-being. Goodliffe presents sound advice that he’s learned in 15 years of professional programming. The book’s standalone chapters span the range of a software developer’s life—dealing with code, learning the trade, and improving performance—with no language or industry bias. Whether you’re a seasoned developer, a neophyte professional, or a hobbyist, you’ll find valuable tips in five independent categories: Code-level techniques for crafting lines of code, testing, debugging, and coping with complexity Practices, approaches, and attitudes: keep it simple, collaborate well, reuse, and create malleable code Tactics for learning effectively, behaving ethically, finding challenges, and avoiding stagnation Practical ways to complete things: use the right tools, know what “done” looks like, and seek help from colleagues Habits for working well with others, and pursuing development as a social activity

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
# Becoming a Better Programmer: A Handbook for People Who Care About Code ## 【One-Line Pitch】 A practical, language-agnostic collection of hard-won lessons and techniques for programmers who want to elevate their craft—from writing cleaner code and testing effectively to navigating legacy systems and collaborating with teammates. Ideal for developers at any level who treat programming as a profession worth mastering, not just a job. ## 【Book Arc】 - **Opening (~0%–6%)**: Introduces the book's five-part structure—code-level techniques, practices and attitudes, learning tactics, completion strategies, and social habits—framing programming as both a technical and human discipline. - **Early (~6%–19%)**: Focuses on code fundamentals: consistent formatting and team-wide editor configuration, the importance of naming (especially for public APIs), and the radical idea that removing code is often the best improvement you can make. - **Early (~19%–28%)**: Explores why unnecessary code sneaks in despite good processes, and provides a systematic approach to understanding unfamiliar codebases—examining file structure, documentation, dependencies, and overall code quality. - **Middle (~28%–38%)**: Covers debugging strategies (binary chop, software archaeology through version control) and testing philosophy, including the test-first TDD cycle and the critical importance of maintaining your test suite. - **Middle (~38%–47%)**: Tackles complexity head-on, analyzing how "blobs and lines" (objects and their relationships) create tangled systems, and introducing principles like high cohesion and loose coupling to keep designs manageable. ## 【Key Takeaways】 - **Consistent formatting is a team discipline, not a style preference** (Early): When IDEs, tab stops, and line endings differ across a team, code becomes fractured and hard to work with—the "Whitespace Wars" story shows how one dissenting developer can poison an entire codebase. - **Removing code is a powerful improvement technique** (Early): Every line costs maintenance over its lifetime; deleting thousands of lines and replacing them with a few is often the highest-value refactoring you can do. - **Never comment out code—delete it** (Early): Commented-out code signals indecision and confuses readers; version control exists precisely so you can remove code completely and recover it later if needed. - **Unnecessary code enters through predictable vices** (Early): Writing code for amusement, anticipating future needs (violating YAGNI), avoiding customer conversations, and inventing bogus requirements—recognize these patterns in yourself and your team. - **Approach unfamiliar codebases systematically** (Early): Examine directory structure, documentation, static analysis output, requirements docs, and dependency choices to quickly gauge a project's health before diving into details. - **Binary chop problem spaces for faster debugging** (Early): Instead of linear search through possible causes, repeatedly halve the problem space to reach solutions in O(log n) time rather than O(n). - **Test-first TDD is a short feedback loop, not a religious ritual** (Middle): The red-green-refactor cycle—write failing test, implement simplest solution, refactor—keeps feedback tight and drives better API design, even if you don't follow it dogmatically. - **Your test suite is a communication channel—maintain it** (Middle): When tests fail, they're telling you something; commenting them out or deleting them to "save time" is like silencing a smoke alarm because it's annoying. ## 【Reading Tips】 - **Skim the war stories**: Goodliffe's personal anecdotes (like the Whitespace Wars) illustrate principles memorably—read them for context, but don't expect them to carry technical depth. - **Deep-read Chapters 3–4 on removing code**: This is where the book's most contrarian and valuable advice lives; the "code indulgence" list is worth memorizing as a self-check. - **Use the "Try this" exercises**: Each chapter ends with practical challenges (like the Boy Scout Rule—leave code better than you found it); these are where the book transforms from reading to practice. - **Treat Part I as a checklist**: The codebase navigation and testing chapters work best as reference material to consult when you're actually facing a new project or debugging session. - **Don't expect deep technical tutorials**: This is a craft book, not a language reference—it's about judgment, habits, and perspective, so read it for mindset shifts rather than syntax. ## 【Coverage Limits】 This guide covers the book's first half (Parts I and into II), focusing on code-level techniques, testing, debugging, and complexity management. The excerpts do not cover the later sections on learning tactics, ethical behavior, tooling, collaboration, and social aspects of development. ##
Page 19
ss this page at http://bit.ly/becoming_a_better_programmer. To comment or ask technical questions about this book, send email to bookques tions@oreilly.com....
View in text
Excerpt 2
If you don’t need it right now, don’t write it right now.) • But it was only a small thing; not a massive “extra” feature. It was easier to just implement it...
View in text
Excerpt 3
near past of the codebase when this bug didn’t exist. Armed with your reproducible test case, step forward in time to determine which code change‐ set caused...
View in text
Excerpt 4
ned role, and not be a grab bag of unrelated functionality. Loose coupling Coupling is a measure of the interdependency between modules; the amount of wiring...
View in text
Excerpt 5
can be quickly and clearly described, and easily understood. You can summarise it in a simple sentence, or in one clear diagram. Simple designs are easy to c...
View in text
Excerpt 6
ed is love. They emphasised the point: love is all you need. Love; that’s it. Literally. Nothing else. It’s incredible how long a career they had given that...
View in text
Excerpt 7
parts of the process. Use a scripting language to do this. The build script acts as unambiguous documentation on how to build the project. It also ensures th...
View in text
Excerpt 8
rent system; just because it looks elegant, even if—shudder to think—it doesn’t actually provide business value. Often this kind of personal challenge can on...
View in text
Tags
AI categories
Programming LanguageCodeProgramming
ISBN: 1491905530
Publisher: O'Reilly Media
Publish Year: 2014
Language: English
Pages: 360
File Format: PDF
File Size: 23.0 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…