Posts
On Thinking Your Own Thoughts
We live in an age where we are exposed to an incredible amount of information. Despite unprecedented access to information, I’d argue there’s a dark side: we’re losing touch with our own thoughts. I believe the lack of space to think is to blame.
Object-Oriented vs Functional Programming—Why Not Both?
Good. Bad. Right. Wrong. This. That. People love binary oppositions, and Software Engineering is full of them. One such opposition is the discussion of object-oriented vs functional programming. However, I’d argue it doesn’t have to be either/or. With care, we can have the best of both worlds, but to do so we need to understand the strengths and weaknesses of both paradigms.
Coding for Yourself
Even though I’ve been programming for almost 15 years, I recently realized that I hardly write any programs for personal goals.
Naive Solutions: Sometimes the Smartest?
Recently, I read an article by Kent Beck over on Substack, in which he presented a ‘Thinkie’—a small mind-opening idea—called Naive Solution. His idea is that if you’re stuck, it can be valuable to pose the question:
The Refactoring Avalanche
Software is an intriguing discipline, and one of its most captivating aspects is how small events have humongous consequences. A recent exercise in refactoring at one of my projects showed me how seemingly tiny changes could trigger huge improvements in understanding and productivity. Some refactorings aren’t dissimilar to a snowflake setting off an avalanche.
On Writing Code
I love to read in my spare time. One of my favorite authors is Stephen King, whom I assume needs no introduction. You might not know that he wrote a book about the craft of writing, in a book aptly named On Writing.
Joyful Coding - Is TDD the Answer?
Does programming professionally bring you joy?
I Don't Know! (And That's Okay)
How often do you feel overwhelmed by everything you think you should know? Does this sometimes lead to feeling inadequacy - the tiny voice in your head telling you you’re an imposter?
TDD or Test-Last? One Thing at a Time
Programming is a challenging activity. One major cause for this is the sheer amount of balls to keep in the air. At any given time, we need to:
Empathy - The Key to Great Code
Which qualities in a person lead to great code?
Craft over Art
What is code to you? Is it a tool? A way to make your thoughts executable? Something beautiful perhaps?
Stop Testing Implementations
One class, one test.
Simple, Complicated, Simple
A few years ago, I took up the hobby of making slow coffee. The art of manually brewing coffee is involved and complicated but potentially offers a fantastic reward: an experience in a porcelain cup.
It Depends
Every summer (and winter) I pause to reflect on the year, a habit I highly recommend. What entranced me was the question: where have I made significant progress last year?
Perfectly Imperfect Code
We should strive to write perfect code.
TDD or Test-Last? Exploring Metaphors
Metaphors are everywhere. Our everyday language is full of them, mostly for good reason. They allow us to understand something novel by framing it in terms of concepts with which we are familiar.
TDD or Test-Last? Introduction
Time for something new! We’ll embark on a journey spanning many posts, exploring a delicate topic: Test-Driven Development. Specifically, we’ll discover how TDD differs from the more commonly seen Test-Last approach.
Exploring the Art of Authentic Writing
This post will be different: no technical stuff, no code, none of that. It will be a bit personal, making it kind of scary for me.
Why Dumb Tests are Smart
Writing tests that help evolve a system is hard, and you get there by avoiding smart tests while preferring dumb ones. Let’s dive in.
How to Name Interfaces, Abstract Classes, and Their Implementations
Naming abstract types and their implementations is challenging. Learn why you should avoid names like IRepository, RepositoryImpl, and AbstractRepository.
The Real Reasons for Doing Test-Driven Development
Why do people apply TDD? Here’s a secret: it’s not for the tests. Learn about the actual goal and values hidden under the surface of Test-Driven Development.
5 Books to Achieve the Mindset of a Software Craftsman 📚
How do you attain the mindset of a great coder? Reading these five books will give you a great start.
How To Use Exercism To Learn Programming Languages
Want to learn a new programming language, but don’t know where to start? Exercism might be what you’ve been looking for…
📕 Implementing Domain-Driven Design Review
Implementing Domain-Driven Design aka The Red Book. I held high expectations for this title, did it deliver? Find out in this review.
Technical Blogging Review
Are you thinking about starting a technical blog? Technical Blogging might be the book for you. Learn why in this review.
The Might of Microtypes
Ints, Doubles, Strings. We work with primitives all the time, but did you know they can hurt your Software Design? Microtypes can help!
5 Tweaks for a Productive Terminal
The terminal is a developer’s best friend. I’ll introduce five ways to make it an even better companion to your workflow.
Concocting the Battleship Codekata
B1. Miss. A2. Hit. That’s right, it’s Battleship! I created a Codekata for this nostalgic game. Learn all about it in this post.
Book Review: Domain-Driven Design
The “Blue Book” is a classic among software developers. What makes it so renowned? Is it that good? Find out in this review.
Reasons to Love Kotlin
After a few years of working with Kotlin daily, I reflect upon the six most compelling reasons to use the language.
Maintainable tests with Test Data Builders
Refactoring and then spend hours changing your tests? Not sure what a test does? Test Data Builders to the rescue!
How to become a better developer with CodeKatas
Practice makes perfect, and we developers can hone our skills with the CodeKata.
Improving Software Design with Role Interfaces
Role Interfaces offer a different perspective on the Interface in OOP. Learn what benefits this type of interface can bring your software design.
subscribe via RSS