You can vibe code with your favorite “AI agent bro” all you want, but you need to be in charge and know what to ask it to type. Are you going to ask it to add tests? Not if you don’t know what tests are. Are you going to ask it to do a TDD… Continue reading Programming Is Not Dead; Typing Code Is
Tag: software-development
Pure vs Impure Methods: Understanding Side Effects in Coding
What’s the difference between these two methods? and Well, there are two ways of answering this question (aren’t there always?). One way is to look from outside in. If we squint our eyes and only look at the method signatures, they are identical. (The only difference is the name, but that’s just so I can… Continue reading Pure vs Impure Methods: Understanding Side Effects in Coding
Mastering Infinite Sequences in C#: A Complete Guide
Introduction to Infinite Sequences Infinite sequences in C# represent data streams that generate values indefinitely on demand, without precomputing or storing everything in memory. They leverage lazy evaluation, where elements are produced only when needed, making them ideal for scenarios like simulations or endless data generation. This approach prevents memory exhaustion from unbounded collections. IEnumerable… Continue reading Mastering Infinite Sequences in C#: A Complete Guide
Rethinking the “Audit Everything” Kata
Not every change that preserves system behavior is a refactoring. But every genuine refactoring, by definition, preserves client-facing behavior completely.
If You Don’t Want to Be Replaced by a Robot, Don’t Act Like a Robot
Here’s a rant I’ve been sitting on, and it’s time to let it out. In the modern software development landscape, there’s an unsettling trend: we pretend that the perfect project flow is a conveyor belt, and the only thing slowing us down is “imperfect” specification. Every sprint, there are grumbles about user stories that aren’t… Continue reading If You Don’t Want to Be Replaced by a Robot, Don’t Act Like a Robot
Changing Object Types to Reflect State Transitions
In object-oriented design, objects encapsulate state and expose behavior that operates on that state. Consequently, if an object must exhibit different behaviors at various stages of its lifecycle, it can be beneficial to represent these transitions by changing its type. For example, consider a system that manages books. A newly created but unsaved book might… Continue reading Changing Object Types to Reflect State Transitions