Farcical Development: Templates

The Plan

A developer in my team, Isobel, was free to pick up some work, and she knew another team had too many items assigned, so their Team Lead contacted us to ask if we could pick up the work instead. 

I wasn’t opposed to the idea, but we didn’t know what the enhancement was at the time, so didn’t know how long it would take and didn’t know if our Testers would be available to test it, or would the other team test it? It’s unclear, but their Team Lead wanted me to commit and accept reassigning it to us.

When I looked at the enhancement details, there was loads of confusion because it had loads of code changes linked to it, and was logged about a year and a half ago. It turns out, a year ago, a developer had done the work, checked the code in, but then got told to “roll it back” due to lack of testing resources. Then instead of going into the next release, it was somehow delayed a year… Now we have a lack of development and testing resources! 

There was this comment too:

The change will then need to go out as an urgent/emergency release. As the functionality is deemed potentially unsafe, we only have 7 days to get it out, it’s actually 6 now as it was logged yesterday.

1.5 years later… 

There was another item I was assigned recently, and that had similar chaos with how long it sat on our backlog

10th November 2020 - bug logged
15th September 2021 - assigned to the team

No wonder our users are often reluctant to report bugs because we don’t seem bothered about fixing them. Then our release process is also really long so sometimes there’s a 6 month lead time after we fix it.

I'll try and quickly explain the feature: Users can create these Templates which are composed of components. There's these special "calculation" components which use data added to the record and give you a score. Users can add data-entry components to the template which can be used by the calculation components. However, it's not clear which data is used, and we can change the calculation formula at any time; which makes it “unsafe”. You can also group several components together to make a Group Component. So the plan is basically to stop users from adding these calculator components, and they have to use our own Group Components which will have the calculator and the prerequisite data-entry components with it. For existing templates, we just have to show a message, telling the users their template isn’t recommended to be used.

I was invited to a meeting along with Isobel, and the managers tell us that all we need to do is take the old code, update some user-facing text which the UX team will confirm, then it just needs to be tested, but it should all work since it was ready for testing over a year ago. So in terms of development work, it sounds like we’d spend more time in meetings and generally discussing the work – than actually doing the work. (I later find out this is not true).

Assigned to Isobel

I tell Isobel to go through the changes and make sure they really do meet the requirements. A few days later, Isobel says she is on annual leave for 2 week but the changes are fine. The next day, I’m told I should look at it instead.

Assigned to Me

After an hour of testing it out, I find that there was:

  • A control partially truncated
  • Some extra spacing in one of the error messages
  • Some components that were disabled that shouldn’t be
  • Inconsistency in behaviour between “Templates” and “Templates Pro”
  • Group Item logic was completely wrong
  • Blank warnings were appearing for all other components

So how did the original developer think this was ready? Why did Isobel think it was ready?

So I start to fix the issues and I find copy-and-pasted code, redundant code, unclear code, code which could easily be unit tested but isn’t. I spent around 3 weeks sorting it out and it still wasn’t perfect. Meanwhile, I was invited to other meetings to say they changed their mind about some features. I had to undo some changes, change more UI text, and disable a few more components. In hindsight, I think I may as well have binned it, and started it again from scratch.

When I thought it was ready, I had the Pull Request created in the first week of January, ready to be checked-in for testing, however, there were no testers free, so it sat there for a month.

Eventually, the testers begin testing it and find a few problems with it. I fixed 3 out of 4 issues, but the last one seemed to be impossible to fix due to another bug which really needed to go to the specialist team that dealt with that area. 

The actual template knows where it came from, but the Group item inside doesn’t. There was this interesting variable name that made me smile.

isOneOfOurs

I showed it to a colleague

“seems like Britain First wrote this”

Bants from colleague

There was some code where we set the originID to either the user’s or our organisationID. However, it set it to 0 which then assumed it was one of ours. I tried looking at one of the other properties which was a different type of ID; a GUID, but it was blank, so it was broken there too. 

I couldn’t see a simple way to fix this. It would be far too risky for me to change, and I definitely didn’t have time. So I got told to abandon it and it would be reprioritised.

I think it was around 6 weeks later, it was assigned to another team. So it is now it’s with its 4th team, approaching 2 years later. Maybe we can call this a “pass the parcel” enhancement.

Assigned to Kumar

I was aware that the development re-started (along with some other requirement changes) when I saw a Pull Request for it. It was from Kumar, a developer in India that is absolutely rubbish. Not only that, it is quite hard to help him because his English is fairly poor. I also can’t tell if he is trolling, or if he really is that bad.

I would have thought that Kumar would have been told to speak to me about the work so I can “hand it over”, or at least he should have seen my name and comments on the item and shown some initiative and asked me about it. As it goes, this new change was something I already had fixed, it just wasn’t checked in. I could tell his fix wouldn’t work just by reading his changes. I message him telling him this.

He later responds with this conversation:

Kumar  10:11
Hi Mate
10:12
With the changes i have raised as a PR, I created a page as Group item and section as well with itself containing the components as Group as well as non Group items and it seems working  .
can i share you the screen mate ?
Me  10:14
so a user authored page/section Group item which contains one of the components - shows the message
and a Officially-authored page/section Group item which contains one of the calculators - does not show the message

Kumar  10:14 Exactly mate Kumar  12:34 Hi Mate, Shall i comment out that the fix has completed the scenario we discussed here ?

I didn’t believe him, so I checked his code out, built it and tested it out myself. Obviously broken as expected.

Me  12:50
just trying it now and it looks broken to me
got an Officially Authored Group Page and all the components have warnings next to them
Kumar  13:10
Ok dude, I will have a look on it.
Kumar  13:31
Hi Mate, As u said it was showing up all the warning
I might have not removed the Pages and section flag check for showing warnings
will debug the code mate,

The next day

Kumar  07:12
Hi Mate
Good Morning Mate

I look at the latest Pull Requests and see his new changes. Instead of taking my code that I know works, he has come up with his own solution. I think it might work, just harder to read.

Me  08:59 did you test my changes or just write that yourself? 
Kumar  09:11
no mate i have took it from latest service branch of my team
was everything fine mate ?
i tested that locally and working fine
Me  09:13
it is similar to what I had done, just more lines of code
Kumar  09:14
haha, ok mate i will make the changes as suggested in the comments
Thanks Mate

It’s not really funny. You just wasted a full day’s work because you didn’t just use my code.

I explained to him that this item is a bit of a nightmare since there’s multiple places you need to change due to “Templates” and “Templates Pro” which doesn’t share much code. Then there’s some existing bugs, and many different combinations of templates you can create. He doesn’t seem to test his work at all, so I think he had no chance of getting this working. I was trying to emphasise how much testing needs doing with every change to try and get him to put some effort in. Unit testing would help alleviate some of the manual testing. The next day…

Kumar  13:27
Hi mate, Good noon
It is becoming a night mare as u said :joy:, i have completed with the unit test case also have fixed other area like Warnings were happening in the “Admin org” too. i have fixed that now. Kindly review and guide me to proceed further
Me  15:58
<send him picture> that should have the main yellow banner at the top shouldn't it?
Kumar  15:58
If it was a “Admin org” org, it should not have mate
Me  15:59
it's not
Kumar  15:59
Then it should have i believe
haah, one more PR patch upcoming ..?
:exploding_head: literally with this work
Me  16:17
I suggested 2 unit tests. You have only done 1. I think it is the other scenario where it doesn't work
Kumar  16:32
Ok , but if the method will not execute if the template was Group template mate, so do i need to do that as well ? in turn it returns empty
Me  16:40
isn't your requirement that it shows the message regardless if it is Officially-authored or User-authored
Kumar  16:41
yes, that is the requirement
i will check on the code once again mate
haah lil confusing

Although the overall work is confusing, this is one of the simplest parts of it: Show a message regardless of who created it. If the method is “returning empty” then that is the bug, it should return a message.

There was a line of code like

if (!configEnabled && activeSubscription)

and he changed it to

if ((!configEnabled && activeSubscription)
||
(configEnabled && activeSubscription))

so I wrote: “so just activeSubscription then

Kumar: I am not able to get ur point here, kindly guide me

Me: “true or false” is always true isn’t it?

Kumar
yes mate, so shall it be framed like this
if ((configEnabled || !configEnabled) && activeSubscription)

NO! That still says “true or false”. I was trying to think of how I can write a response without telling him he doesn’t understand the very basics of programming. This is like Day 1 of learning how to write code.

Kumar: haah, I got it, just “activeSubscription” is enough isn’t it?

I was glad he seemed to understand in the end, because I was tempted to tell him to change his career…then he adds:

“correct me if I am wrong”

He has zero confidence.

The very next day he then tells me there is another requirement to remove the banner that he has been changing, so “is there any point carrying on?”. He sends me a screenshot of the requirement rather than giving me a link. He is definitely sent here to troll.

I’m sure he must have known about this, and I don’t know why he either:

  • didn’t make the deletions first (it would reduce the amount of code and reduce confusion)
  • not change any code he knew he was going to delete

So he made changes trying to fix a feature he knew he was going to remove. I had invested time reading the code, manually testing it, and all this back and forth communication. What a waste of my time.

Unassigned?

The good news is that he is leaving so he is going to be another company’s problem. The bad news is this enhancement is going to be reassigned to someone else.

I’ll probably write another blog about Kumar; I’ve got some more notes on previous development work he has done. If this enhancement ever goes live, maybe I will write a follow-up blog on it too.

Employee Forum

An “Employee Forum” was created recently. Each month, a group of representatives from different departments talk about suggestions and complaints – to try and improve life at work. These are then proposed to Senior Management or Human Resources to hopefully implement.

Personally, I can’t imagine this lasting because many suggestions are illogical or have just descended into madness – and there’s only been two meetings over the 2 months.

I think no matter how good things are, people will always suggest more time off, higher pay, or both. Many of these suggestions do involve more time off, and it seems we have tried every angle already.

Some of these suggestions have company responses already.

Offices are not being used. Are managers encouraging the use of them?

Response: Will re-communicate about the offices to encourage colleagues to use them.

My take: Since we now are all home-working, the office is barely used. It’s optional for people to work so some people work there permanently if their home isn’t suitable, or they come in when their team does. Now it ain’t an “office”; it is a “collaboration hub”. I think it’s important to include this one in the blog to set the scene. The office improvement suggestions are funnier given that the office is under-utilised; it’s like they want more perks than we had before when the office was 100% full capacity – which doesn’t make financial sense.

What is the official business position on dogs in the office?

Response: Dogs are not permitted in the office. Multiple reasons are behind this, such as colleagues with allergies, or aversion to dogs. A dedicated area for dogs within each office is also not permitted.

My take: Did people ever want dogs in the office before? This isn’t the strangest suggestion, but this is what I mean by descending into madness. How was this one of the first suggestions? Surely we should prioritise bigger issues.

Would we consider offering everyone an extra day holiday for life events?

Notes: Representatives discussed and came to the conclusion it’s fairest for it to be a birthday specific holiday because other life events, such as wedding day, may not apply to all. Will take this to HR.

My take: I like how the representatives consider a wedding day might not apply to all, but later they soon forget this and start demanding more maternity leave/pay; even though that is for child-bearing women specifically. You can never really be consistently inclusive anyway.

The general sentiment of a birthday holiday is nice, but then there will be people that will say they are too busy at work to take it off, so then will want the day off later. May as well just increase everyone’s holiday allowance by 1 rather than dictating a specific day.

Could we move to a 4-day working week approach that other businesses are adopting?

Notes: This means working 4 days of standard hours with the same 5 day salary.
Representatives discussed how this would work in supporting our main customers who operate 24/7. Will take this to HR.

My take: Imagine the conversation that person has with HR:
Representative: “what do you think of an extra day holiday?”
HR: “Rejected. Not gonna happen”
Representative: “Ok, next question, how about we only work 4 days?”
HR: “what? no!”
Representative (as we will see later): “How about loads more holiday?”
HR: “get out of here!”

I have heard some claims that working 4 days is more effective. I can actually see it both ways. When it is Friday, people often take longer breaks or work slower because “it’s Friday”/”it’s nearly the weekend”. If you remove the Friday, some people may work faster to get the same amount of work done, or they could just adapt the “it’s Friday” thought to “it’s Thursday”.

The Return to Work Program needs to be rethought.

Notes: An example of this is an employee who came back to work in December from maternity leave and was told from HR that the ‘Return to Work’ program starts in April (apparently runs every quarter) so she would have to wait a good 3 months to get the return to work support.

Response: We need to address this.

My take: Well, this just sounds like a dumb thing we do. How has the return to work program failed that much? What does this Return To Work program even involve? Are people introduced to any new employees and told about new/changed processes? Surely you would be aware after 3 months back at work anyway.

Offices used to have refreshment options available on site: vending machines, fresh fruit, and hot drinks machines, and a canteen serving hot food. The only facilities now are tea/coffee.

My take: What do you expect here? We had a canteen, fruit, and vending machines because the office was full. It currently operates on less than 10% capacity. It doesn’t seem feasible to supply fresh fruit. Vending machines are a possibility since the products will have a longer shelf life (but I bet those are pricey to rent anyway). Canteen was nearly shut down on a few occasions because it wasn’t profitable enough. A different office also requested they want a Canteen and even suggested people would pay a monthly fee to run it. It used to cost £3.75 per hot meal and I used it most days so I was spending ~£75 a month if there’s 20 work days. The fee would be significantly higher than this to make that profitable with fewer numbers of staff using it. No way are they going to pay that. Can’t people just buy some food on the way to the office? I think we still have microwaves if you want to warm food up. If not, ask for the microwaves back!

The UK Parental Leave policy is not very competitive

My take: Not sure how we compare to other companies but I’ve found that women can take something like 9 months maternity, get 1 month full pay, then can take 2 months unpaid leave, then return to work on reduced hours. What more do they want? Maybe it’s controversial and a minority view, but I don’t think people need to be encouraged to start families or be paid at their employers expense. We are paid to work, not chill out, but you wouldn’t think it with the requests for more holiday, reduced working hours, more social events etc.

Compared to many other companies, our Maternity policy and pay is very basic. This could be a deterrent to people wanting to start families. The return bonus is a good feature, however doesn’t assist with the cost of living whilst on Maternity leave.

My take: It is such an outrage; it’s on here twice! Seems the current policy is a “deterrent”, so I was wrong and people need to be encouraged to start families, then receive a “Return to work” bonus to get them back in. Insane. Also, what do they mean with “cost of living”? We mostly work at home now, so the costs of chilling at home shouldn’t increase.

Can we build a few bug hotels and bird tables in the gardens?

My take: “What? We can’t bring dogs in? What about bugs?” WTF. I hadn’t even heard of a “bug hotel” until now. Who is suggesting this nonsense? It’s making me angry reading this. Might make some sense if the offices were full, but they aren’t.

People who currently have an entitlement of 28 days annual leave should still be allowed to purchase 5 days, otherwise it is a scheme that doesn’t apply to many (it’s really 2 days purchase available).

My take: I think new employees have 25 days plus the usual bank holidays, then over years of service, it can go up to 28. But then you can purchase days up to 30. So the ask is that we should be able to buy 5 regardless of current allowance.

Recently, I was saying to some of my colleagues that 28 days is a fantastic annual leave and those in the USA barely get any leave at all which surely would make them go insane. But look at us chillers, we want more than 28 days!

Can we review holiday entitlement for length of service and/or senior roles? After 14 years, I have 28 days per year, whereas rival companies are on 35 to 38.

My take: They wanted to buy 5 days on top of 28 for a total of 33. Now they have increased their demands. “Can’t we just have 38 instead?” What’s the next demand? “Buy 5 days on top of 38”?
Do we still want our birthday off as well? These demands are just escalating.

Can we get a fleet of ‘Boris’ bikes to allow people to get off-site and obtain lunches from local businesses without the need to get in their cars or walk across muddy fields?

My take: Boris bikes refers to what they have in London where you can rent bikes to cycle around London. Here is a bonus fact: even though Boris Johnson was the London Major when the bikes were introduced, it was actually the former mayor Ken Livingstone that started working on the plan.

So we want to hire bikes to cycle to get food. The nearest supermarket is literally 10 minutes if you walk slowly and there’s only fields if you leap over the wall onto private land, so no idea where that false claim has come from. If you walk the other direction, there’s a few shops where you can buy food within 5 minutes walk (and can take a scenic detour through a park; no muddy fields this direction either), and a few pubs that serve lunch also within a 10 minute walk.

They want bikes because they are too lazy to walk, but would they cycle? isn’t that more effort? Locking/unlocking the bike at your start and end destination. Probably have to put a helmet on for health and safety. The extra hassle if the bike gets stolen… ain’t nobody got time for that.

Subsidised Pet Insurance – Wellness Allowance, £360 per annum to cover anything health related, Gym, massages peloton etc

My take: why not just ask for an extra £500 wage increase?

Anyway, I’ve got tired of critiquing these demands. I vote to stop the Employee Forum. It has clearly got out of hand already, and there is no way the majority of these are even going to be considered. I think all that will happen is that we will be encouraged to use the current offices more (and they may reinstate a vending machine if we do), and I could see maternity benefits being increased slightly. Everything else will be laughed at.

Hot Guids In Your Area

One of my colleagues showed me this nerdy website https://secretgeek.net/hotGuids/index.htm

It’s a parody of those “Hot or Not” style websites that were popular years ago. It shows you a GUID and you have to select if you find it “hot” or “not”.

A GUID is a globally unique identifier

It looks something like this:

{63ef87e8-8909-2540-f5c4-3f8777c64ab5}

GUIDs are perfect as a randomly generated identification number since the probability of duplicates is very negligable.

Due to that trait, I would have thought the features of the website such as “Popular GuidsGuids with more than 1 hot vote” wouldn’t actually be implemented because the chance of showing you a GUID that was shown to 2 people would be basically impossible – so that’s part of the joke.

More humorous than that is this:

Single women in your area who are interested in this guid:
There are no single women in your area who are interested in this or any other guid.

Then there’s purchase options like an adoption certificate or a t-shirt, although I don’t think you can actually purchase them, but I’m sure they would sell a few if you could.

“I was wearing a t-shirt of my favorite guid
when a girl approached me and told me it was also
her favorite guid. We are now married and have
several children.”

target customer

Maybe that quote contradicts the other joke… or maybe there was only ever one single woman who was interested in a particular GUID. Or maybe the (fictional) reviewer was joking.

In case the website is removed from the internet, here it is in all its glory.

Game Review: Say No! More

My previous blog was a review for the game “Game Dev Tycoon” which was relevant to this blog due to being directly about software development. “Say No! More” isn’t about software development, but it is about office culture and seems like a social commentary on people being overly obedient to please managers in order to progress through the hierarchy.

You play as an office intern who starts a new job alongside two others. The boss introduces the company and jokes that you have to say “yes” to go far. One of the interns is excited because she is someone who loves saying “yes” and pleasing managers.

Your character struggles to speak but he soon finds a cassette player with a motivational tape which teaches him to say “No” with confidence.

This manager has left his lunchbox at home so he steals yours. This leads you to chase him to his office to get it back, but you are constantly stopped by your colleagues with random requests. You shoot them down with your newly learned word: saying “no”.

“Can you get me a coffee?” “no!”

“Can you copy these documents?” “no!”

There’s even a few dialogues where you can wait for something different to happen, but there’s no negative repercussions if you do say “No” to them. The movement is automatic with on-rails movement and you just press a button to say “no” and move on.

In each chapter, your character listens to more of the motivational tape, and so he learns new powers like charging up your “NO” for a more forceful statement, or sarcastically laughing, clapping or nodding which catches people off guard, allowing you to shout them down. You also learn different tones: cold, heated, crazy, lazy. However, it doesn’t actually make a difference even though the Tutorial makes out that these different types are necessary against some people.

The game hasn’t really got any gameplay, it’s more of a humorous experience, relying on the comedy, quirkiness, and the ragdoll/destruction you see when you say “no” and knock them down.

I say it does succeed; it did keep me entertained for the 1.5 hours. If it was longer, then it would become tedious. It reminds me of Weebl’s cartoons; its wacky style, combined with some of the “No” voice samples which sounds like “Weebl and Bob“‘s way of speaking.

Game Review: Game Dev Tycoon

Since Game Dev Tycoon is about software development, I decided to review it and put it on this blog.

Game Dev Tycoon is a simulation game with a game development theme. You start off as a solo developer in your garage, making simple games in order to raise money to expand. Once you have accumulated enough wealth, you can purchase a new office which allows you to hire more developers and work on more complicated games. Later, a larger office is available which allows you to hire even more staff, and even have a Research, and Hardware labs (as long as you have a Design and Technology specialist).

When you start to make a game, you choose the game’s name, pick the Size (you start off with Small, then unlock further sizes as you progress), Topic (theme), Genre and Platform. A later upgrade allows you to choose the target audience; Young, Everyone, Mature. Then there’s 3 stages of development where you move sliders and choose extra features. 

  1. Engine, Gameplay, Story
  2. Dialogues, Level design, AI
  3. World Design, Graphic, Sound.

You move the sliders based on your assumption of the genre (RPGs have an emphasis on Story, Simulation requires Engine), and by the results and feedback of your released games. After release, you can then generate a game report which will give you hints on which aspects are important, and if the target audience and platform fit the style of game and theme.

For medium sized projects and above, you have to assign a developer to lead the development for each aspect. Adding additional features (e.g. Soundtrack, Surround Sound) and using game engines comes at a cost, but the more features usually means a better quality game. It’s not clear how random a lot of these elements are though, or if certain tech affects the genres differently.

Once you have created your game, you can wait a bit longer to put the finishing touches. The number of bugs will decrease and you can add extra points to Design, Technology. When you click “Release”, you will be given a review score and your staff experience within all aspects will increase. 

Money will come in from the sales with declining sales over time, and then the game is removed from the market. Your staff wages increase as they level up, and the general cost of development means it’s a good idea to have a large surplus of money if you can. If you do drop into negative figures you can get offered a short term loan but with extremely high interest. If you can’t afford that, then you are bankrupt. You are allowed to restart from your last save, the last office move, or you can just start again. The game can be tricky if you don’t land those big revenues at the right time.

As time progresses, games take longer to develop, require more staff and cost way more money. This is like real life when early computer games were developed by tiny teams over a few months. Those games may have been text only, or had primitive graphics with colours, but that was what the consoles could handle back then. Today’s “AAA” games take years to develop but have cutting-edge graphics and sound. So in this game you need to hire more staff, keep training their skills, and make sure you have the staff in the right areas. You can only have 1 game in development at any time.

As time progresses, new technologies become available for research, and Platforms are released or removed from the market. After a new Platform has been released, you can then buy a Development Licence to make games on that Platform (it would have been a nice idea to be able to work on games for the actual console launch though, then you would have the challenge of rushing your game out). The names and images of the consoles are slight variations to avoid copyright issues (or add humour to the game) but it’s easy to recognise what they are supposed to be. Each console is biassed towards certain genres and audiences. You start with the PC and Commodore, and it progresses to modern day with the Xbox Series and PS5.

You can take on simple contract work which gives you a small amount of money for a small amount of your time. The main advantage is to acquire more Research points. You can also develop games for Publishers but must create the game at a certain quality in order to receive the full amount. These contracts are more beneficial when you haven’t accumulated enough fans. Later on when you do have many fans, even mediocre games seem to sell themselves.

With your Research points, you can send your employees on training courses. You can Research new topics (which seems like a randomly ordered large list which is unlocked in batches), and technology. Once you have researched some more technology (mainly the improved graphics), it’s often beneficial to create a new Game Engine so you can use these features.

The Research room takes a lot of money to use. Even moving the slider slightly will cost $300k or so per month. You can research a Steam-like platform, the ability to make your own console in the Hardware Lab, create MMOs and a few other options. It’s quite hard to acquire these aspects before the game “ends”. You can carry on playing but new consoles won’t be released and there’s no “events” that trigger. 

There’s not many Genres but there are loads of Topics. However, I think some of the Topics should be classed as Genres such as “Racing” or “Sports”. Two other Genres that seem obvious to include would be Platforming and Puzzle.

I also wondered how the developer interpreted the genres especially when you unlock the ability to choose 2 genres (you cannot have multiple topics though). For example: what does “Adventure” mean? My assumption would be a point-and-click adventure such as Monkey Island, but then what does RPG-Adventure combo mean? Is such a combo doomed to fail, or do the developers have a different idea what this actually means? Maybe a certain Topic could fit this genre well? Casual is also down as a Genre, but I’d say this is closely tied to the size of a game. You don’t get major budget Casual games, although something mid-range like Animal Crossing. For the most part, the decisions seemed logical, but there’s probably some Topic-Genre combos that you won’t agree with because it is fairly subjective.

Just like most simulation games, I found myself playing for hours at a time and found it hard to put it down. It’s simplistic and definitely not for everyone, but I found it addictive and satisfying watching those number-bubbles float to the top and increment those total counts as your developers work on the game.

8/10

Bad Rules

I’ve written blogs discussing incentives, and will probably write more in the future. One of my classic stories was how a Test Manager stated she was judging Testers if they run 10 Test Cases a day. Some people just ran 10 then chilled out for the rest of the day even though they would have normally done more work than this. Others tried to run as many as they could, but they ignored the harder Test Cases and ones that depend on 3rd parties. So:

A) it looked like we were nearly complete because the number of remaining test cases were low, but this last batch took ages to run so was very misleading.

B) We discovered that 3rd Party API/Test Systems were down at the last minute.

So this incentive actually helped delay our releases.

I’ve been watching a lot of Andrew Platt’s videos recently. He has many channels but this one he just reads stories from Reddit. It’s basically very low-value and easy YouTube content to make 😀

The stories he did on Rules made me laugh. It’s a similar concept to incentives; you are trying to change people’s behaviour by rewards/punishments, but if they aren’t well-thought out, then they backfire.

Here’s a few notes on my favourite punishments from the video:

  • If you’re a minute late that’s half a point, if you’re up to 4 hours late that’s half a point. So if you are gonna be late, may as well delay more.
  • Death penalty for stealing sheep. Welshmen caught stealing sheep would claim to be making love to them because the penalty for bestiality was lower.
  • Day care started charging a small fine for parents who picked their children late. This caused more late pick-ups. Could be that parents didn’t feel as guilty because it didn’t seem as much of an inconvenience. Also, it’s cheap childcare.
  • Bus drivers got banned from wearing shorts – so they all wore skirts instead.
  • Cobras were killed for a bounty in order to reduce the population. Enterprising people bred cobras to cash-in the bounty. When the reward system was scrapped, the cobras were set free, increasing the cobra population.
  • “Dry Counties” banned drinking. People would drive further away to drink, causing an increase in drunk driving.
  • Mandatory to drop heating temperatures to save on electricity. People brought their own heaters which increased electric use.
  • “Clean Desk” Policy caused people to put all their paperwork in an envelope and place it in the Internal Mail. It would arrive on their desks the next morning.
  • Dominos deliver pizza within 30 mins or it will be free. This increased car crashes as the drivers would drive recklessly to get there on time.
  • Only giving smokers breaktime; rewarding smokers.

Unnecessary Printing

Several years ago, my Grandad decided to try learn how to use a computer and experience the internet. He went all-in and bought a printer as well.

One time, I went around to his house and he said he had problems with his computer. Anything that resembled any kind of error, he seemed to panic.

I can’t even remember what his problem was exactly, probably something like OneDrive failing to sign-in. When I followed him into his computer room, he picked up a stack of papers and handed them to me. I looked at them and he had printed out the errors!

I thought it was hilarious. I told some of my colleagues about it and it became and inside-joke, so if one of us has an error we would tell each other to print it out so we can help resolve it.

A few months back, I saw Wes Bos tweet this and it made me laugh because I felt it was something my Grandad would have done.

Wokeness at work

March 8th was International Women’s Day and so people at work made a few posts about it. One person made a post about “Gender bias“:

“Gender bias comes in many different forms including stereotypes, assumptions and discrimination. It can be both deliberate and unconscious, malicious and unintended – but above all, it is a common barrier to equality – both for women and those who identify as women.

Today is a perfect opportunity to reflect on the role of gender bias in the workplace and in society as a whole and how we can all become allies and support our female colleagues, friends and family members. The best place to start is with our own learning.”

Person 1

I find today’s “woke” culture quite interesting because it’s actually quite difficult to say the right thing and it’s very easy to be hypocritical. She says “both for women and those who identify as women.” which implies they aren’t equal – this is basically a microaggression. The correct thing to do is not actually point it out, and just use the term “women”. However, she then goes on to use the term “female” instead of women in the following sentence. Ironically she did call out it can be “unintended” discrimination, and the “best place to start is with our own learning.”

Another person recommended these “unconscious bias” tests https://implicit.harvard.edu/implicit/takeatest.html 

“I tried the gender and race tools and it helped highlight to me where I have to think and work on my ‘implicit associations’. These associations should not be judged by anyone other than myself (they are after all how my brain has become wired over 50+ years) – but will help me understand, moderate and change my interactions and thought process when looking at a whole number of things.”

Person 2

I gave a few of them a go. The ones I tried had the same style. The test is that there’s a group of words associated with 4 categories. You are given a pair of categories, one on the left, one on the right. You are shown one word at a time, and have to press “I” and “E” on the keyboard to assign it to the correct category.

For example: “Gender – Career. This IAT often reveals a relative link between family and females and between career and males.”

I think the idea is that when Career and Males are paired together on one side, and “Family and Female” on the other, then you will match the words faster because of the strong association that these words are related.

As the Result screen states:

The order in which you take the test can influence your results, but the effect is small. We minimise this effect by giving practice trials after the categories switch sides. We also randomly assign the order of the IAT so that some people get one order and other people get the reverse order.

Harvard

I do think this will have a bigger impact than they claim, although maybe it depends on the individual. When I got to the end, sometimes I thought I was submitting the answers faster because I was used to the way the test worked, but then sometimes I ‘d get the wrong answer and think it was down to the fact that I recall pressing “E” when I saw “Salary”, but then in this round, I should be pressing “I”.

I did the Sexuality (‘Gay – Straight’ IAT) test first, and I was conscious of how it was expecting me to be biased, so I focussed more and was more determined to score higher. In the end it suggested I had a fairly strong preference for Straight. I would have liked to have seen the timings because I was convinced I had scored consistently in the later rounds, or even better because I was aware of how it was trying to trip me up. I think I messed up more in the early rounds because I was getting used to the test.

Personally, I wouldn’t read too much into the results anyway.

Salary: Cost of living increase

In the last few years, my employer hasn’t bothered matching inflation. When challenged, the HR Director has said they traditionally don’t do this and are not obligated to do so.

It’s basically a wage-cut if they don’t though, and each of these years they seem to be posting record profits. Always seems really sketchy when you get told there’s no budget but they seem to forget they are a Public Limited Company and need to announce their finances, including director’s bonuses and all that.

This time they acknowledged that inflation is very high this year, and are hyping up how caring they are because they are actually giving an increase… although in most cases it still is going to be under inflation. It was pretty predictable that it was going to rise further than the 5% they were benchmarking against. The current figure published by the ONS was 6.2%.

They claim to be giving “an excess of 7% rise“. Everyone is getting a 2% rise, with a further 3% at the discretion of line managers but they can’t give it if your salary has changed in the last 6 months. Last year, when they finally acknowledged I was underpaid, they staggered the increase in 2 instalments so I only got my full rise in January so that means I don’t qualify for this 3%. They are also giving 2% profit share which is a one-off payment and not a salary increase at all. Pension will increase by 0.5%.

So according to their maths, 2 + 3 + 2 + 0.5 is 7.5%. But 2 of that is the one-off payment so at most you can get 5.5%, but 0.5% is your pension, which is nice, but it doesn’t end up in your bank; so we only get 5% direct in our bank.

Personally, I just get the 2% plus 0.5% pension. That is supposed to cover the 6.25% inflation, and is it even going to stay that way? Could rise further.

I love that in the FAQ they provided with the announcement, they went with:

Will I receive a salary increase if I leave? 

Surely no one would even think that. How can you get a salary increase from a company you are no longer employed by.

:upside_down_face:

Software engineering team structures

This post outlines a useful structure for product-based software engineering teams. I believe it is a fairly standard structure in a modern software company. I’ve adapted this post from a contribution from a colleague.

The main principles are:

  1. to keep communication flowing;
  2. accountability is defined and understood;
  3. the ability to scale horizontally

People

A team size should be 7 +/- 3, or as Jeff Bezos calls it “The two-pizza size rule”: If you can’t feed the team on two pizzas, the team is too big.

The composition of the team should involve these people.

  • Technical Lead
  • Senior Engineers
  • Engineers
  • Junior Engineers (or Graduates/Apprentices)

A trend in the industry is to move towards the general term of “Engineer” rather than distinguishing between Developers and Testers. However, if there’s a lack of Automated Testing, then more Manual Testing is required which then has a stronger requirement to make this distinction between the roles. Having a distinction can lead to the “us and them” culture as code is “thrown over the fence” to be tested. The team can feel more fragmented – this isn’t always the case though.

Technical Leads do not necessarily need to be the most technical on the team, but they need leadership and management skills. They need to know who can solve an issue in their team and be the facilitator.

Juniors (or graduates/apprentices) are an important part of growing your business. When many job adverts ask for the standard “2 years experience”, how do you get it? Recruit juniors into your team and teach/mentor them, shaping them into the engineers you need.

A team needs to be a blend of skills, strengths, personalities. A junior engineer is a part of that blend. It keeps the senior members in the team on their toes, as they need to coach, mentor, and explain concepts to receptive minds. This can ground the team, and make them more productive.

Earlier we defined people, not roles. These are the roles that augment the team:

  • Product owner
  • Architect
  • Scrum master

These roles could be people in the team, but not every organisation will be at the scale to require a Full Time position for each team. If you don’t have a dedicated full time position, the team will need to decide who will pick up the duties of these roles.

Accountability

Responsibility – Who feels guilty when the team doesn’t deliver, or something goes wrong.

Accountability – Who takes the blame when the team doesn’t deliver, or something goes wrong.

When a team is formed, they are all responsible for everything the team needs to do. As a member of the team, you do whatever is needed to “get over the line”. Your process should not create single points of failure, or knowledge silos. Your process should provide mentoring to junior team members, and be supportive of learning.

The Technical Lead is accountable for making sure everything is complete and to the desired standard.

So what is everything? A non-exhaustive list would include:

  • Technical/Solution design.
  • Backlog management.
  • Both product and technical.
  • Development and testing.
  • Deploy and release management.
  • Support and documentation.
  • Monitoring and telemetry.
  • Reporting to managers
  • Sprint reports.
  • Roadmaps.
  • Quality metrics.
  • Quality control.

Line management can be with the Technical Lead, split between Technical Lead and another Senior within the team, or even people outside the team. If it is the latter, then the accountability needs to be clear.

Scaling

Scaling needs to be “horizontal” when a team unit becomes saturated: You do not make teams incrementally larger to scale your output. You add more teams and give accountability to these new teams. This goes back to the 7 +/- 3 idea.

you need to add another team:

  • If the average velocity of the team is not delivering the quantity you require.
  • If you are asking the Technical Lead if they need more people to deliver, and they are already at the top end of the 7 +/- 3 bracket.

If you are scaling, you are likely to come across engineering teams that need to work across product teams. Examples potentially could be: security; authentication; UI Libraries; or overall platform stability/accountability. Whilst these are individual products in their own right, they are servicing other development teams. They need to be more collaborative, open, and aware of the business needs of other teams. Their decisions will impact more people than decisions made in a single focus team. They will need to be honest and clearly communicate priorities.