Prefer planned rework to big bang delivery

We have a few large projects on at work to replace key legacy systems and are discussing how to do that.

Most of the discussions so far have tended to end up in a position where an incremental piece of delivery of the large overall system has been rejected because we know it will require rework later.

In this case, knowing about the rework is good!

For large projects which do not plan to deliver in an incremental way, the total amount of work required is unknown. It is in our interests to make as much of that work as known as possible as early as possible, but if a large system does not go into production until is fully complete, then the amount of bugs and rework to be done are both a) unknown in advance and b) time-critical. This is the worst of all worlds.

Far better is to incrementally deliver over an up-front longer timescale (you’re going to have a longer timescale than your big bang delivery plan accommodates anyway, you can just choose to ignore that fact by drawing a gantt chart of how many days a task 2 years from now will take) and know that what you’re delivering actually works, and that reworking it will be a time-bounded effort because you will have both the experience of doing the delivery and evidence of real-world usage and behaviours of your system.

Riding my bike online

I like riding my bicycle. I like being outside; I like getting exercise; I like that I can do it solo and leave all my daily concerns at home as I cycle on a dedicated paved path which winds its way between crop fields and over bridges.

Or at least I did until I moved house from somewhere I could be on that path in seconds, to somewhere where I have to dismantle my bike, put it in the boot of my car, drive to the path , reassemble the bike and then set off – quite a different experience. I’m sure a bike rack for the car would make things easier, but it’s sort of not the point. Ease of access is key.

So a year ago I bought a turbo trainer and got a subscription to Zwift (wikipedia and official site). I set up my bike in the garage and hooked up my phone to a cheap projector over its USB-C connector and now I get to cycle around the Champs-Élysées or a volcanic island whenever I like. 

I tried several alternatives to Zwift, in particular some of the free ones, but sadly none of them were as good.

It’s not quite a substitute for being outside, but it does tick the boxes for ease of access, gets me some exercise and the gamification and MMO aspect do mean that I forget about everything else whilst I’m cycling, a precious commodity since remote working kicked in and the gap between home and work reduced to zero. 

Look on my works

A few years ago I read Ivanhoe and, as intended, ended up suitably grumpy at the French and felt sorry for the Saxons.

Last weekend some roadworks forced me to drive through Cricklade for the first time. Cricklade was founded in 878 by the Saxons, and its church is dedicated to Samson of Dol, one of the Seven Founder Saints of Brittany.

One of the other notable British missionaries to Brittany was Gildas, who died in about 570, and who wrote the frankly wonderful De Excidio et Conquestu Britanniae (“On the Ruin and Conquest of Britain”) – an excoriation of the kings and priests who failed to stand up to the Saxons when they invaded and allowed the country to fall into what he considered ruin when the culture of Sub-Roman Britain was overthrown. The following is from a 19th century translation:

>KINGS Britain has, but they are as her tyrants: she has judges, but they are ungodly men: engaged in frequent plunder and disturbance, but of harmless men: avenging and defending, yea for the benefit of criminals and robbers. They have numerous wives, though harlots and adulterous women: they swear but by way of forswearing, making vows yet almost immediately use falsehood. They make wars, but the wars they undertake are civil and unjust ones. They certainly pursue thieves industriously throughout the country, whilst those thieves who sit with them at table, they not only esteem but even remunerate.

I keep thinking about how genuinely upset GIldas must have been to have written these screeds against the immorality of the country’s leaders. I guess nothing really changes.

Make it easy to write objectives

I have never worked with a software developer who enjoyed writing their quarterly or annual objectives.

Most had been previously burned out by laborious processes which either meant two objectives take hours to write, or they’re easy to write but vague enough that they take hours to evidence every 3 months. In some cases they’ve even had objectives in which they had no say because they were either handed to them directly by a line manager, or had “trickled down” from group or org OKRs.

My thoughts on this were triggered by Matt Jukes’ post about his feelings on OKRs, which I share. 

I have helped set objectives for dozens of developers in multiple organisations in the last 10 years. My own goals when doing this are:

  1. Try to make the process as painless as possible
  2. Try to align the objectives with what a developer wants to be doing – if possible work with them before the session so they can create some draft objectives of their own
  3. Don’t set more than three objectives for a quarter
  4. Make each objective SMART – you want to be able to look at it and say “yes this is done” or “no, this is not done” in clear terms. If you want to provide “levels of done” then that’s fine, but see point 1.
  5. Set objectives which help someone grow! Whether it’s giving them confidence by building on existing skills, or learning new ones, or even just really getting to a tricky problem they have been wanting to take on, lean into these! Make the objectives desirable! Can they always _all_ be like this? Probably not, but keep your eyes open for opportunities.

None of these sound like revolutionary approaches, but in my experience, they’re still exceedingly rare and this list has taken me pretty far in building both good relationships and good people.

Time management resolution

I don’t do resolutions, but I have changed how I approach something at work for this year, and so I guess that counts, right?

I now have regular blocks of time in my calendar marked out as “Busy. Any meetings added in this time will be declined.”. This was after I realised I had multiple days in a week where in 7 hours I was doing a dozen or more meetings and was feeling totally burnt out at the end of each of those.

I got back in touch with the people who had called those meetings (including myself, clearly my own worst enemy) and asked if my contribution had been valuable, and they said it had. There are very few meetings where I am a quiet observer so I’ll take their word for it, and I already reject meetings I don’t think I can be useful in or I suggest alternative people to attend, but the feedback means that if I’m usefully being glue then I need to take more aggressive direct action to protect my time and this is my first try at that.

Microsoft’s collaboration tools are terrible

Not only are their tools terrible, but everyone involved in their creation should feel bad.

Let’s name the subjects of most of my ire, in no particular order:

  1. Microsoft Teams
  2. Azure DevOps
  3. Office 365 (or whatever this week’s branding is)

Each of these tools is **substantially** behind their competitors. The easiest comparison to draw is with Google’s suite, in particular Google Meet and the G Suite tools. I reckon Word 365 is a decade behind Google Docs. Microsoft Teams has made huge strides forward since the Coronavirus lockdowns, so let’s be generous and say they’re only 5 years behind.

Let’s start shall we?

When sharing docs through Word, and editing collaboratively there are **huge** time delays between contributions showing up on others’ screens – changes that in Google Docs appear instantly. There are times when one person can be typing paragraphs and suddenly those paragraphs disappear from view for other people, leading to delays, communication problems and of course destruction of flow. It deals with change conflicts terribly, locking areas of a page where people are typing, making it basically impossible to do sentence-level collaboration. The user-user sync is nearly unusable, to the point that when I now do collaboration on Word docs, it’s easier to start a video call and get people to shout out their changes rather than actually try and all contribute to the doc together.

Azure DevOps is a dystopian nightmare of a web application. I honestly don’t know where to start. Let’s go with the fact that for accessing any of its wide range of services, if you don’t have JavaScript, or have blocked the wrong script, or have a patchy connection that doesn’t load all those files correctly – you get nothing. Nada. Zip. Zilch. Blank screen for you buddy! What, you wanted something that worked without rendering literally everything on the client side like it wasn’t 2012 any more? Bad luck to you! What, you mean there is a _terrible_ performance cost of doing this on every single page load? Well, you’d better get used to it! When you bring up a menu you want _all_ the items to appear straight away rather than clicking it, seeing 5 options and then 5 seconds later another 10 appear at seemingly random locations in that list? Weirdo. 

My own personal status check of Azure DevOps is that it uses a stylised floppy disk icon for the “save” action. Windows 10 and 11 don’t even come with drivers for floppy disk drives any more. Every single piece of UX across the whole product is trash, and this is just underlined by its **awful** performance, and this is coming from someone who has used Jira.

I could go on and on about all these products, but what I could never do is recommend that anyone ever use them.

Microsoft, you need to do better.

God of War Ragnarok is underwhelming

God of War Ragnarok has been underwhelming so far

I am in the early stages of God of War Ragnarok. The first game was a brilliant revitalisation of a game series which had had its origins and gameplay strip-mined by a succession of inferior sequels during the 2000s and early 2010s.

This game, after playing for 5 hours or so of the ~35 hours I expect to play, feels like it is making the same mistakes. It feels like the exact same game as 2018’s God of War, but with a less compelling story and no changes to the gameplay. My wife walking past me playing it said the graphics look better than the first one, but when they’re mostly reduced to so much window dressing rather than being part of the game – so what?

I have obviously been spoiled by multiple open-world games in the last few years like Assassin’s Creed Odyssey, Horizon Zero Dawn, Fenyx Immortals Rising and of course Breath of the Wild. God of War is not an open-world game, but it covers itself in their trappings, and even old RPGs from the early 2000s allow more exploration and interaction with the background world than this does. The first bore these restrictions well – they were there to funnel you through the good story, to explore the new gameplay and to set a basis for a new series in this franchise. This sequel (so far) has so far done nothing to expand on that new, high, baseline, instead just providing more of the same.

I look forward to being able to write a new post in a few weeks’ time that declares an incredible opening-up of the world and gameplay once a certain stage in the game is reached, but I think it’s unlikely.

Running 16-bit Windows 95 games on 64-bit Windows 10

If you are running an x64 version of Windows then when you try and run an old 16-bit Windows 95 application you will see an error screen saying “This app can’t run on your PC”:

To solve this:

  1. Grab a build of winevdm (source) from AppVeyor
  2. Extract the artifact somewhere local, open a command window and cd to that directory
  3. Run your win16 binary as a parameter to otvdm e.g. otvdm c:\games\game.exe
  4. Done!

There’s some background information on why this running 16bit apps doesn’t work, and the virtualisation layers and tooling involved here.

The reason I started looking at this is because I was reminded of an old game called Mordor (here is the official Mordor homepage and here is the demo on the Internet Archive) from some random videogame nostalgia thread somewhere on that internet. Despite the name, it has nothing to do with anything by Tolkein, but is a rogue-like dungeon-exploring RPG.

I had forgotten it existed until seeing its name in that context jogged a 25-year-old memory, and now I can play it again!