Stop Calling Them Soft Skills: It’s Crude and Confusing

I consider soft skills crucial to success in an IT career, but I find the term crude and confusing for two reasons. It suggests a tidy separation into non-overlapping categories which doesn’t exist, and it carries a hidden, more pernicious value judgment by hinting they are less important than hard skills.

I hope professional coaches have a clearer understanding of the scope of these skills than a layperson like myself, who is regularly encouraged to keep up his soft skills, with little idea where to start. I duckducked into the definition and present you with this unscientific motley array:

Photo by Meruyert Gonullu through
Continue reading

The One Timeless Benefit of Design Patterns

Originally published on DZone
There’s not much buzz about design patterns these days. They appear to have joined the hall of fame of accepted wisdom, alongside the Silver Bullet, SOLID and DRY. Lately, I had the opportunity to share some thoughts on the importance of good old design patterns with Koen Aerts, CTO of Team Rockstars IT. Here’s the gist of that talk in a more digestible format.

Before I start, let me set some boundaries, as people can get doctrinaire about definitions. I refer to the good old bridge, builder, decorator, and factory patterns. Architectural patterns like MVC do not fall into the same category, much fewer paradigms like serverless and microservices (aka SOA the next generation).

Then again, the latter do constitute a legitimate grey area. They’re clearly about design, patterns, and best practices as well. They offer standard solutions to common challenges. But what makes them different is the scale at which they operate. Classic design patterns are recipes for manageable bits of code, solutions that often fit in a single screen. They explain how to stack the bricks for your new house, whereas microservices show you how to lay out the entire neighborhood.

Medieval design patterns: the scaffolding inside the spire of Salisbury Cathedral, England
Continue reading

The Piña-Colada Delusion of the Digital Nomad

I have something to say about digital nomads, or rather the phenomenon. I don’t like to generalize, but there’s a certain archetype that really gets under my skin. It’s the freelancing thirty-something who at quarterly intervals migrates to whatever continent has the best beach weather, to build a cool web shop while sipping a tropical cocktail. You can picture the stock images without a Google search. I shouldn’t target certain millennials and their destructive travel habits, being free of student debt myself and happily settled in my low-mortgage house. I used to have a big carbon footprint at one time, but at a time when the environmental impact of flying got a fraction of the airtime it gets now.

Image by Andrea Piacquadio from
Continue reading

Don’t Make Me Think (More Than Needed)

(Previously posted on DZone)
In three earlier posts on DZone and this blog, I drew a lighthearted comparison between types of developers, two veteran film directors, the relentless perfectionist Stanley Kubrick and passionate amateur Woody Allen as well as comic book anti-hero Gomer Goof as the disaster artist. I wanted to highlight overlapping tendencies, not suggest strict categories. Stereotypes like Roy and Moss from the tv show The IT Crowd work great in fiction, or the evil and funny Nedry (anagram for nerdy, LOL) from the first Jurassic Park movie?

Illustration by Sandra de Haan
Continue reading

Fighting Fragility With Property-Based Testing

Previously published on DZone.
However long you work in software, you always feel late to the party. You encounter some seemingly cutting-edge new tool only to learn it has been around for decades, sometimes inspired by research papers from 1970. Still, you can’t keep up with everything and have a life. Property-based testing (PBT) is such an established technology and it deserves more attention. Java has the Jqwik library, Scala has ScalaCheckand Python has Hypothesis

Check the links at the end for some good tutorials. Here I want to skip the nitty-gritty and focus in detail on its killer feature, which is the ability to warn when some change to production code is no longer sufficiently covered by a test suite.

Continue reading

The Full-stack Dev Is Bent Out of T-shape

Previously posted on Dzone

There are still plenty of openings for full-stack developers. If the stack is the gamut of programming languages, protocols, and middleware to build and maintain a serious internet application, then a full stack developer is the digital Jack of all trades who, contrary to the saying, has mastered them all. I once called myself such, and in 2001 it wasn’t necessarily an act of youthful hubris. The popular LAMP stack (Linux, Apache, MySQL, and Perl) was still manageable.

Continue reading

The Competition Won’t Eat Java’s Lunch Anytime Soon

In a previous post, I drew some comparisons between the evolution of computer languages and natural languages. One such is Turing completeness: native speakers express everything they want with a limited toolkit of vocabulary, sounds, and syntactic rules that must not be too hard to master. Another parallel is the slow, incremental nature of language evolution. Languages avoid breaking changes, given the billions of lines of legacy that would otherwise be rendered unreadable.

Image by Cup of Couple licensed from
Continue reading

Java Is More Like English Than You Think

At a recent in-house event celebrating the launch of Java 17, I was asked to give a talk on the future of the language. I don’t have a hotline to Oracle, so I took the opportunity to dust off my linguistics degree and point out how the nature and comparatively glacial evolution of human languages is not unlike what you can witness in computer languages, compressed within decades. This is the first of two posts based on that talk.

Image by Shvets Productions licensed from
Continue reading

Agile’s Creative Adaptation Can Be Exhausting

This article was previously published on DZone.

No product of our human intellect, however ingenious, is immune to criticism. Especially if it’s ubiquitous, it will meet with disapproval somewhere. The way we apply Agile principles is a hotly debated topic, whereas the community generally stands by the original Agile Manifesto. Is it therefore a question of not doing things right, or might we not be doing the right thing? After all, large-scale projects still founder and software quality has not improved by leaps and bounds since 2001. 

Image used under license from
Continue reading

You’re no rockstar, but you have more Yoda appeal than you think

I don’t like to blog about blogging, but there’s an opinion regularly put forth by fortysomething developers that gets me worked up. The gist runs as follows: the writer no longer likes being a software developer and based on their own anecdotal evidence wonders why so many other similarly disillusioned old hands flock to management positions. Disappointed that real progress in the art of programming is stagnant, they complain that people – not them! – keep making the same stupid mistakes. As if history doesn’t repeat itself everywhere all the time.

Not a dead-end career yet!
Continue reading