• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Ben Barden

Products - Projects - Process

  • Ben Barden
  • Home
  • Music
  • Weekly blogging in 2021
  • About
You are here: Home / Tech / Always be shipping

26th August 2017 by Ben Barden

Always be shipping

Building software is fun.

It’s great to develop something from nothing, or extend something to do more than it did before.

I think coders want to build things the best way they can. But in practice, that doesn’t always happen. Shortcuts can be taken, perhaps due to time pressures, or major requirements popping up late into a piece of work. Sometimes, you need to make changes to software that are quite different to what it was built for to begin with.

But software changes, and we can’t always anticipate how it’s going to change. In fact, we probably shouldn’t worry too much about how it might change in ways we simply don’t know about yet. (It’s a bit different if it’s your product, such as a hobby project, and you know some of what you’ll be adding later – and can build for those things accordingly.)

Perfect code

We shouldn’t be aiming for perfect code. Equally, we shouldn’t be happy with crappy code, but that’s not the point here.

Delivery – shipping a product or feature – is vital. It doesn’t matter how beautiful your code is if you never ship.

It definitely matters if you build a mess of a system that will be painful to work with in the future. But we shouldn’t be agonising over making everything perfect before anything is shipped.

I know there are developers who will find some of my code from years ago and say “what was he thinking?!” And to be honest, if I read it today I’d probably think something similar. I’m sure I could think of ways to improve the code I worked on back then that I didn’t think of at the time.

But the important thing is that the code shipped, we could monitor how things went in production, and we could get stuck into other projects.

Continuous improvement

Continuous improvement is a wonderful thing. Some of my favourite projects have been framework migrations. I’ve migrated from a proprietary framework to Zend v1; I’ve migrated from a basic home-grown set of PHP classes to an MVC framework; I’ve managed a migration from Drupal to Laravel. More recently, I’ve worked with a team who have been migrating from a FuelPHP monolith to a service-oriented architecture.

With large-scale migrations or any major refactoring, breaking off components of the application and migrating them piece by piece is an excellent way to minimise risk, keep momentum going, and avoid a seemingly infinite end date. The concept of “dropping” a massive new upgrade on a given date for an entire customer base is extremely risky, and runs the risk of being rolled back if it all goes pear-shaped.

Testing

There’s a phrase I have in my head at all times as a reminder of why “big bang” launches are so dangerous:

It is difficult to know when testing is complete.

Testing is not something you start and finish. Testing is an ongoing process, a discipline, that can incorporate a selection of the following at various times:

  • Automated unit tests
  • Automated integration tests
  • Manual exploratory tests
  • Manual functional tests
  • Manual or automated regression tests
  • Manual UI tests
  • Non-functional tests (a large category)

Testing helps to highlight everything from catastrophic failures to tiny UX quirks. But having tests doesn’t mean your big bang implementation will be fine – especially in a big, complex system.

Scrum

In Scrum, the output of a sprint is a potentially shippable product increment. Whether you ship or not is up to you. But the point is that you can ship if you want to. This capability should be available to the Product Owner.

When a development team thinks they have 6-12 months, or years, to deliver a project (or maybe there’s no end date at all), it’s can be very tricky to keep the team focused. Agile accepts that requirements change frequently. This in itself is not an instant issue. However, when you have a long-running project that isn’t shipping anything, and constantly changing requirements, especially when development is already in progress – that’s a recipe for disaster.

Always be shipping

There’s a lot of different things I’ve discussed in this post, but it boils down to one simple thing. Always be shipping.

Stop adding a day here and there to perfect something that already works fine (and has unit tests that pass).

Start getting stuff out the door.

Filed Under: Tech

About the author

Web dev, bug finder, writer of niche music
Founder/coder at switchscores.com
Product Manager at Octopus Energy / Kraken Technologies Read More…

Primary Sidebar

benbarden

This was good! Nothing clever but 😁👍 This was good! Nothing clever but 😁👍
Watching Sophie Ellis Bextor on Graham Norton with Watching Sophie Ellis Bextor on Graham Norton with a band wearing animal masks/heads. A very 2020 way to round out a very surreal year. Great music, too! #HappyNewYear2021
Lunch was good today! Lunch was good today!
Guildford Castle, 25th Dec 2020. Merry Christmas. Guildford Castle, 25th Dec 2020. Merry Christmas. 

#loveguildford #guildford #guildfordcastle #christmas
Winter sun. Winter sun.
Sunday walk. Sunday walk.
Sunday afternoon walk. Sunday afternoon walk.
This year's #topnine ... This year's #topnine ...
#glutenfree beers 😁🕺 Oh hey, my latest musi #glutenfree beers 😁🕺

Oh hey, my latest music is now up on Spotify! Link in my profile!
New music coming soon to #spotify and most other o New music coming soon to #spotify and most other online stores. Release date tbc.

This is my 3rd release, containing 2 tracks: November Dawn, and Legacy Layers.

The tracks originally featured as part of my self-produced albums, Symmetry 1 and 2. Each track on Symmetry 1 has a companion track on Symmetry 2. These two are cut from the same cloth and are a kind of "trance guitar" style.

Newly-mastered for 2020, I think the music sounds nice and fresh. Maybe you'll like them!

Slowly building up my discography... you can find me under the name "GFD".
4pm. Must be November. 4pm. Must be November.
The #glutenfree way to have beer and Pringles. 🕺
Just arrive: Thirty years of #thedivinecomedy boxs Just arrive: Thirty years of #thedivinecomedy boxset 😁 this should be good. I've been a fan since 1996, and know the albums well. But I've missed loads of B-sides - and I know there are plenty. This set is a huge collection of music and will take some time to get through fully!!
Coffee time! Coffee time!
Anyone fancy a #glutenfree mince pie? And iced, no Anyone fancy a #glutenfree mince pie? And iced, no less! They're great!
My next music release is coming soon! My next music release is coming soon!
A 25 year epic journey: Way, way back in Septemb A 25 year epic journey:
 
Way, way back in September 1995… I wrote my first proper song, called “Waiting for the Sun”. It’s a bit basic.

Fast-forward to 2005. I had a pile of about 100 unfinished tracks. Tired of never finishing anything, I wanted enough tracks for an album. Over the next few years, I put together five albums, before taking a break in 2009.

In 2016, I decided to start music again under a new artist name – “GFD”. I did three more albums, a remix album, before writing two more albums under my own name. Eleven in total. (Album 10 was called “Ten”, in case anyone lost count.)

So, what now? Well, I’ve had a go at mastering one of my tracks, added some basic artwork, and uploaded it to stores.
The track has been approved, and will hit streaming services in a couple of weeks. It only took 25 years!

A truly epic journey… and the track is quite aptly titled Epic Journey.

Epic Journey by GFD hits Spotify, Apple Music, Amazon Music, Google Play, Tidal, Shazam, and Deezer on September 18th, 2020.

#music #spotify #epicjourney #gfd #instrumentalmusic
New glasses! New glasses!
When Mini Metro gets a bit chaotic. #nintendoswitc When Mini Metro gets a bit chaotic. #nintendoswitch
Gastly, Gastly, everywhere! #pokemongo Gastly, Gastly, everywhere! #pokemongo
Load More… Follow on Instagram

Recent Posts

  • Why personal projects are worth pursuing
  • How recurring calendar reminders help me to get things done
  • Looking back at 2020
  • A 25-year Epic Journey
  • A poor comms strategy – and a plea to do better

Archives

Categories

Handcrafted with on the Genesis Framework