Development

Sustainable Software

I’ve been tossing the idea of Sustainable Software back and forth in my mind for over a decade, possibly even longer than that.

By now, I’ve been working as a professional software engineer for more than 17 years, for a wide variety of companies, most of whom have standardised around different technology stacks. I’ve used PHP, Go, JavaScript, Ruby, Python; even some Perl, though I definitely wouldn’t claim to be current in all of them.

I’ve also worked with a number of different project management techniques, from extremely formalised approaches like PRINCE2, to more agile-focused ones like Scrum and Shape Up. I definitely have a preference towards the lighter touch approaches, however!

Throughout all of this time, the idea that software development should be sustainable has stuck with me. Whilst there are times when, as a team, you need to pull out all of the stops in order to deliver a key feature in a very tight timescale, this definitely should not be the norm. Not unless you want to see a high rate of attrition amongst your engineers and a significant accumulation of technical debt, that is. And if you do want those things… I don’t think there’s anything I could say that would convince you otherwise.

Microservices, and why they're not always the answer

Microservices have been fashionable for a while now, and why wouldn’t they be?

On the face of it, the concept sounds compelling; your application is complex, so you break it up into many smaller components that work together to get the job done.

In theory, this allows your development teams to work independently of each other, multiplying your throughput and delivering more value to your clients and your business. Sure, there’s a bit of extra operational overhead, but that’s ok, right?

Lead Developer London 2019

On the 11th and 12th of June 2019, I was at Lead Developer London 2019, along with around 1400 other attendees.

Lead Dev is my favourite conference of the year, and this year did not disappoint. I’m still processing my thoughts from all of the incredible talks. I just tried to make a list of my favourites, and it ended up including more than half of the talks.

This year, the majority of the talks were either 10 minutes or 30 minutes long, with only one (very worthwhile) exception. This felt like a better balance than in 2018, and definitely better than other conferences I’ve attended that have talks of an hour or longer. Refreshment breaks were plentiful, and the food was actually pretty good.

In between talks, I got a chance to chat to several of the speakers, including Nick Means and Pat Kua, plus speakers from previous years who this time came as attendees. Everyone was, as always, super-friendly. I keep thinking that I’ll submit a talk one of these years, but then the crippling fear of making a fool of myself kicks in and I decide against it. I don’t yet feel I’ve got anything unique to say that hasn’t already been said a thousand times or more, but I’ll keep thinking.

Lead Dev is inspiring from start-to-finish, and I hope to be there again next year.

Once the videos and slides are out, and I’ve had chance to collect myself, I’ll write up my notes and post them here for all who are interested.

Containers

By now, most IT professionals will have heard of Docker and containers. They’re either using containers, or are considering doing so in the future.

Personally, I’m something of a recent convert to the idea of using containers. Until I started in my current role at Divido, all of my employers had been using more traditional hosting environments; some were even actively hostile towards the idea of containers.

Not a Ninja

I’m not a ninja.

I’m not a rock star either.

I’m a software developer. That’s what makes me tick.

Why I like Ruby on Rails

I’ve now been a professional web developer for more than eight years, and I had an interest in web technologies for some years before that. In that time, I’ve spent a substantial amount of time looking for something that would make my life easier, to make me more productive.