The pragmatic craftsman

I’ve been working in software development for a solid 15 years now, and I’ve seen all sorts of projects, and developers.

While software craftsmanship is talked about a lot, and quite often seen in job ads; one thing often left out is pragmatism. In fact, I’ve seen software craftsmanship taken so far, that it has killed projects, and products.

This is not a post to say craftsmanship is bad, I am the first to admit writing good, clean code is very important for the long term survival of a product. There is value in good, clean code without a doubt. Unfortunately, I see it very often, developers over think a solution, or try to flex their “technical muscles”. What results is an over-engineered, or overly complicated solution.

Pragmatic – Dealing with things sensibly and realistically in a way that is based on practical rather than theoretical considerations

Stepping back a bit – Our job is to solve problems, in a cost effective manner.

Not to use the latest technology, or patterns to build your CV. It isn’t to use CQRS, Event Sourcing or Docker because it is cool. And not to mention over designing, products for every edge-case up front.

No one can design the perfect solution up front. An idea I always try to drive through teams I work with, that has served me well – deliver quickly, and leave time to iterate.

A question I always ask during design reviews is – “Do you need it?”. At times it could be a pattern I am questioning, a framework, or technology. I’ve even done it to automated tests.

If the team cannot outline value a choice is going to provide, it shines light on it very quickly. It isn’t to push back, or cut anyone down – sometimes I use the question to ensure the team understands why a choice was made. As we all know – there are no silver bullets.

And a reminder – Tests aren’t the only thing that will sustain the software over the years, it is simplicity. Many developers will work on the code base, and our job is to make it easy to understand, and safe to modify.

The “pragmatic craftsman” as I call it, is one that not only builds well crafted software, but focuses and delivers business value iteratively. They cultivate raving fans, should be egoless, humble and most of all, focus on the outcome.

I enjoy working with talent developers, but I love working with pragmatic craftsman.

Hello again world

As my first post on this new blog, I wanted to write a big thanks to two people who have given me the nudge to start this blogging again.

The first one is Tal Rotbart. I’ve worked with Tal for close to 18 months now at PageUp, and I’ve got the say, I have learnt a great deal from him in such short space of time. He is a very strategic thinker, and quite a different mould of “techie”. One of the most talented guys I have worked with.

He encouraged me to focus on building a public profile, and share my thoughts. So… here I am, back to blogging.

We are currently on a very interesting journey, realigning a product company, as well as the classic journey from Monolith to Microservices. I have grown a lot, and learnt a great deal of things in the past 18 months, so this is the start of sharing some of those learnings.

The second one is John Sonmez. I’m sure John has influenced quite a number of developers, but I’ve been following John’s work for a number of months now and he has an interesting way of connecting. His free course on blogging is what got me going, and to be honest, it is a little more fun with the structured approach he has provided.

I’ve been in touch with John through this free course and it is nice to have the personal touch – not just an automated email system.

So cheers to both of you!