Summary of Standout BAD HABITS Even Senior Programmers Have
Summary of "Standout BAD HABITS Even Senior Programmers Have"
This video by Dave Farley explores what truly makes a bad programmer beyond simply making mistakes, using personal anecdotes and stories from peers to highlight common pitfalls and lessons in software engineering. The core message is that mistakes are inevitable and human, but how programmers respond to and learn from these mistakes defines their quality and professionalism.
Main Ideas and Concepts
- Mistakes Are Normal, But Not the Whole Story
Everyone makes mistakes, including senior programmers. Making errors does not necessarily make someone a bad programmer. The key difference is how one handles and learns from those mistakes. - Examples of Mistakes
- Dave lost all his early code due to a hard disk failure and lack of version control.
- A colleague accidentally dropped tables in a live production database during a critical release, losing data.
- These were careless but understandable errors that taught important lessons.
- Learning from Mistakes
Good programmers:- Work in small, incremental steps.
- Use version control to avoid losing work.
- Employ automated testing and controlled environments to detect errors early and limit their impact.
- Develop an internal understanding of why practices work rather than blindly following tools or rules.
- Recognize trade-offs and make informed decisions rather than applying rules dogmatically.
- Bad Design and Legacy Constraints
- Poor system designs (e.g., a single method with 230 parameters) reflect lack of understanding of good programming principles.
- Legacy constraints (like 80-character punch card limits) can force programmers into complex, inefficient solutions.
- Sometimes programmers are not bad but are limited by historical or organizational constraints.
- Importance of Tool Mastery
Programmers should know how to use debugging tools and profilers to improve code quality and performance. Over-reliance on inefficient practices (like excessive logging instead of debugging) signals poor habits. - The Worst Programmer Example
- A consultant who was slow, wrote non-functional, naive code, and did not understand the language he was using.
- He faked code reviews by relying on automated tools rather than actual knowledge.
- This person actively hid his incompetence while charging premium rates, causing significant project delays and extra costs.
- This behavior crosses the line from mistake-making to professional misconduct.
- Key Lesson
Being a bad programmer is less about making mistakes and more about failing to learn, improve, and maintain integrity. Programmers have a duty of care to do their best work and be honest about their abilities and errors.
Methodology / Instructions to Avoid Bad Habits
- Always use version control to prevent loss of work.
- Work in small, incremental steps to reduce risk and simplify debugging.
- Use automated testing and controlled test environments to catch mistakes early and limit their impact.
- Develop a deep understanding of tools and techniques rather than following recipes blindly.
- Use debuggers instead of excessive logging for troubleshooting.
- Use profilers to identify performance bottlenecks.
- Avoid poor design patterns like massive parameter lists or “do it” methods that handle too many responsibilities.
- When constrained by legacy systems, try to isolate and encapsulate problematic parts rather than perpetuating bad designs.
- Maintain professional integrity: do not hide incompetence or cut corners that harm the project or team.
- Continuously learn and improve to avoid repeating the same mistakes.
Speakers / Sources Featured
- Dave Farley – Host and presenter, software engineer, author of The Software Developer’s Guide Book.
- Martin Thompson – World expert on high-performance software systems, shared stories about poor design and logging habits.
- Unnamed colleagues and friends of Dave Farley – Provided anecdotes about bad programming practices and legacy system constraints.
This video encourages programmers to embrace learning from mistakes, maintain professional integrity, and strive for thoughtful, well-informed engineering practices rather than simply avoiding errors.
Notable Quotes
— 12:40 — « How else can we debug the code? Uh ever thought of using a debugger? Apparently not. »
— 13:43 — « The worst programmer I ever worked with knew he was bad but then cheated every way that he could to hide it. »
— 16:41 — « To my mind this was the software equivalent of someone who isn't a surgeon conducting surgery or someone who isn't a pilot flying a plane. »
— 17:24 — « Yes we can all make mistakes but surely we have a duty of care to do the best job we can and that includes being able to recover and learn from our mistakes and not try to hide them or hide from them. »
Category
Educational