The Passionate Programmer

The Passionate Programmer Blog

Automated Code Refactoring: A Conversation

Note: The following is a conversation between me and ChatGPT 4o.  David: Hey ChatGPT, let’s talk about automated code refactoring today. Refactoring is crucial for maintaining code quality over time...

A Deep Dive into Abstractions in Software: A Conversation

Note: The following is a conversation between me and ChatGPT 4o.  David: Hi ChatGPT, today I’d like to discuss abstractions in software. They’re such a fundamental concept, yet they’re often...

A Conversation on Using AI to Generate Better Names in Code

Note: The following is a conversation between me and ChatGPT 4o.  David: Hey ChatGPT, I’ve been thinking about how crucial naming is in programming. Good names for methods, types, and namespaces can...

Conversations with AI – A New Blog Series

Welcome to “The Passionate Programmer”! I’m excited to introduce a new series of blog posts that I believe will help us learn and apply key concepts in software development more effectively. The...

Developers Love to Develop

When we build software in an Agile process correctly, we discover that it is actually more efficient and quicker to do high-quality work than in a traditional Waterfall process. This is because a...

Iterative Development is Different

I think a lot of companies believe that Agile software development is merely a process and that somehow software developers know how to use. But in my experience that is simply not true.  The way we...

The Agile Discipline

I’ve heard a lot of people say that because they are using Agile or Scrum that they don’t need to do design or write documentation—or even think. Nothing is further from the truth!  I wrote a post...

What is Software Quality?

If ever there was a convoluted, misunderstood term in software development, it’s the word “quality.” To some people, quality in software is software that does the right thing. Others...

Being a Producer

The actor-producer Paul Reiser once said that producing is about figuring out what needs to be done and doing it. I think this also makes a good job description for software developers. Programmers...

What Makes a Design Good?

I often ask attendees of my classes what makes a good design or what makes a design not good. We can all recognize some aspect of a design or implementation in software as being good or not but it can...

Large-Language Models

ChatGPT is a large-language model, a particular kind of AI program. Large-language models (LLMs) are not intelligent; they don’t learn and grow based on user interactions but learn through training. ...