Standout BAD HABITS Even Senior Programmers Have

Modern Software Engineering
23 Apr 202518:05

Summary

TLDRIn this video, Dave Farley reflects on the concept of being a 'bad programmer,' sharing stories from his career to highlight the importance of learning from mistakes. He discusses how errors, such as losing data or making poor design decisions, are part of the programming journey. Farley emphasizes that it's not the mistakes themselves but how we recover and learn from them that separates good programmers from bad. He also recounts humorous and cautionary tales, including a programmer who tried to hide his incompetence, stressing the value of honesty, continuous learning, and careful coding practices.

Takeaways

  • 😀 Mistakes are a natural part of being a programmer, but it's how we cope with and learn from them that distinguishes good programmers from bad ones.
  • 😀 Losing code without backups or version control is a major mistake that can cause significant setbacks in a project.
  • 😀 Working in small steps, using version control, and ensuring quick recovery routes can help avoid major mistakes in programming.
  • 😀 Mistakes like working directly on production databases without backups highlight the importance of safety measures and testing environments.
  • 😀 Good programmers learn from their mistakes and avoid repeating them, which is key to improving over time.
  • 😀 Tools like debuggers and profilers are essential for effective software development and can help identify and fix issues quickly.
  • 😀 Poor design decisions, like overly complex methods or outdated systems, can make code difficult to maintain and improve.
  • 😀 Programmers need to adapt to changing constraints and environments, but they should strive to avoid perpetuating bad design choices.
  • 😀 Some mistakes, such as not knowing how to properly write code or perform code reviews, can have serious consequences for both the team and the project.
  • 😀 Developers should be honest about their skill levels and seek help or training rather than hiding their incompetence, which can harm the project in the long run.
  • 😀 The worst programmers are often those who lack self-awareness, cheat to cover up their mistakes, and contribute little to the success of the project.

Q & A

  • What does the speaker believe makes a programmer 'bad'?

    -The speaker believes that being a bad programmer isn't defined by making mistakes, but by how a programmer handles and learns from those mistakes. A programmer who fails to learn from errors and hides their mistakes is considered a bad programmer.

  • How did the speaker lose all of his work in his early career?

    -The speaker lost all of his work due to a hard disk failure, and at that time, he didn't use version control or have backups in place, leading to the loss of his code and the contract associated with it.

  • What major mistake occurred during the point of sale system project?

    -During the point of sale system project, one of the team members accidentally dropped a couple of tables in the production database while trying to recover from a corrupted record, leading to the loss of important production data.

  • How does the speaker define a good programmer?

    -A good programmer is someone who is thoughtful and learns from their mistakes. They don't just blindly follow processes but actively understand what works, why it works, and when it doesn't apply, making sure to avoid making the same mistakes repeatedly.

  • What were the consequences of a bad design in one of the systems described?

    -In the described system with a bad design, the use of 230 parameters in a single method led to a shocking amount of complexity and poor code. It highlighted a fundamental misunderstanding of good design and was a significant example of bad programming.

  • What was the issue with the car configuration system at the car company?

    -The car configuration system was originally designed for a mainframe computer using punch cards with a character limit of 80. Over time, as car configurations became more complex, the system kept adding complexity, leading to a convoluted and inefficient design that couldn't handle the growing demands.

  • What was the problem with the logging in a high-performance system?

    -In the high-performance system, excessive logging created more overhead than the actual performance work. Every line of logic was surrounded by two log statements, which severely impacted performance and added unnecessary complexity to the system.

  • What advice does the speaker give to programmers about debugging and profiling?

    -The speaker advises programmers to learn how to use debuggers and profilers to efficiently debug their code and profile performance. This allows them to spot issues early and avoid wasting time on inefficient or incorrect solutions.

  • What is the worst kind of programmer, according to the speaker?

    -The worst kind of programmer, according to the speaker, is someone who is fully aware of their incompetence but actively tries to hide it by cheating or deceiving others, such as providing fake code reviews or hiding their lack of knowledge.

  • How did the worst programmer in the speaker's experience deceive his clients?

    -The worst programmer deceived his clients by pretending to be an expert in coding reviews, using automated tools to generate reviews without understanding the code. He managed to secure high consultancy rates despite having very poor programming skills.

Outlines

plate

Esta sección está disponible solo para usuarios con suscripción. Por favor, mejora tu plan para acceder a esta parte.

Mejorar ahora

Mindmap

plate

Esta sección está disponible solo para usuarios con suscripción. Por favor, mejora tu plan para acceder a esta parte.

Mejorar ahora

Keywords

plate

Esta sección está disponible solo para usuarios con suscripción. Por favor, mejora tu plan para acceder a esta parte.

Mejorar ahora

Highlights

plate

Esta sección está disponible solo para usuarios con suscripción. Por favor, mejora tu plan para acceder a esta parte.

Mejorar ahora

Transcripts

plate

Esta sección está disponible solo para usuarios con suscripción. Por favor, mejora tu plan para acceder a esta parte.

Mejorar ahora
Rate This

5.0 / 5 (0 votes)

Etiquetas Relacionadas
Programming MistakesSoftware DevelopmentContinuous DeliveryDebugging TipsCode QualityLearning from MistakesTech LeadershipDevelopment StoriesPerformance OptimizationBest PracticesSoftware Engineering
¿Necesitas un resumen en inglés?