Software Development

Read More
flock of birds flying during daytime

What is agile?

What is agile? I’ve been giving this much thought. A company in the early stages of an “Agile transition” often encounters this question one way or another. Often it comes up in the form of […]

I’m getting too old for this shit

I’ve started a new project. A Visual Studio 2019 .Net Core application with React+Redux. A template application. Since, for jodiBooks, we’d already worked with react-native in combination with redux, I didn’t expect this to be […]

M is for monolith

Recently, I talked with someone about a monolithic software application. They didn’t know what I was talking about. Presumably because, so far in their career, they had always built either very simple applications, or monoliths. […]

Back in the saddle

It’s been a rough year. I’ve had some major health issues that, in hindsight, probably already started plagueing me somewhere in 2017. With the worst of it hitting me in January and February of this […]

Time travel and parallel universes

Suppose you’re working on a software project and you’ve tagged your release 0.1.0. It has been shipped and now you’re working on version 1.0.0. You’re reworking quite a lot. It’s a major release after all, a lot to be done 🙂

In comes someone who sees version 0.1.0 and thinks to him/herself: “Oooh, can you maybe add some functionality on top of that? I don’t want to wait for 1.0.0, that takes too long.”

Although the ‘building a house’ metaphor is a strained one when it comes to software, it can be used to abstract away from the nitty gritty detail of software development and describe things like project management and development strategies. Today, let’s discover some of the superpowers we have in software-land, and what their limitations are. And let’s use our superpowers to build a house 😉

Version control, especially Git, grants you the powers to:

  • work in parallel universes (branch)
  • go back in time (branch from older release or commit in the past)
  • automatically replay anything you did in a parallel universe in another parallel universe (merge or rebase)

This is convenient when we’re doing things that are unrelated. Two developers could branch from trunk (or master or main stream) and work in their own branches quite comfortably, as long as they don’t do conflicting things in the code base. Or, to strain the house metaphor to its breaking point: Someone could be installing a new kitchen while another team replaces the roof.