Keith Jarrett’s Agile Craftsmanship

Many non-technical skills, qualities, and mindsets are part of software craftsmanship. Today I want to talk about two:

  • Resilience
  • Improvisation

Resilience helps us cope with difficulties by not giving up too soon. Improvisation deals with compromise and creativity in the face of the unexpected. The intuition to distinguish negotiable best practices from unchangeable truths is what agility is about. In earlier posts, I drew analogies between people from art and fiction (Stanley KubrickWoody Allen, and Gomer Goof).

Here’s the story of an agile musician I find very inspiring.

© ECM records
Continue reading

Dave Eggers’ World of Autocorrect Is a Hell on Earth

Dave Eggers’ new novel is a darkly comical techno dystopia. The Every (no link: buy it from your local book shop) is the sequel to The Circle. Its eponymous company is an unholy alliance of the major tech behemoths whose names need no mention. The Every is well on its way to wipe out or enslave all competition when our heroine Delaney joins it, on a secret mission to bring down the system from within. But after the first chapters we already know that resistance is futile.

Winston Smith from George Orwell’s Ur-dystopia 1984 likewise knew he did not stand a chance against the omniscient, all-seeing Party. Yet whereas the surveillance technologies that Orwell conceived were science fiction in 1948, most of The Every’s toys are already here or available soon in an Apple Store near you. Every new addictive app is a wolf in sheep’s clothing, adding more data points to your privacy profile. Eggers’ mission as a techno sceptic is anything but subtle.

Continue reading

Things We Still Do, Twenty Years Onward

Previously posted on Dzone
Joel Spolsky’s once prolific blogging output dried up years ago, but Things You Should Never Do, Part I is still a classic after 22 years. He wrote it as an outsider’s postmortem following the first beta release (6) of Netscape’s browser, three years after the previous major release 4. There never was a version 5. The team had decided on a full rewrite, and the resulting delay probably cost them their competitive advantage over Microsoft’s Internet Explorer. 

If Netscape actually had some adult supervision with software industry experience, they might not have shot themselves in the foot so badly”, he closes. 

I like reading computing history and consider to what degree those articles are relevant today. Here’s the gist of the original argument in my own words.

By stalling development on their current product, Netscape appeared to have shut for business, at least from the end user’s perspective. That was strategically disastrous. It made no business sense to abandon their flagship project like that. From a technical standpoint, it was even worse to throw away all working code and start from scratch. Most code is harder to read than to write, but you should always prefer refactoring to rewriting. Full rewrites are no guarantee that you will not introduce the same bugs again, that were so painstakingly discovered and fixed in the old base.

Continue reading

Peter Dinklage Was Right About Snow White

Near the end of a laid-back chat in Mark Maron’s WTF podcast, actor Peter Dinklage let his irritation suddenly run free over the planned live action remake of Disney’s Snow White and the Seven Dwarfs. The casting of a Latino actor as the female lead did not warm him to the project. It was still an excuse to rehash an archaic story, for no better reason than to cash in on its legendary status. “Have I done nothing to advance the cause from my soap box?”, he jokes, 56 minutes in. I agree. You can rewrite and re-cast all you want to make it more palatable, but you’re still telling Snow White. Why not spend that energy on new stories?

Continue reading

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