The Line Manager Handover

I’ve stated in a previous blog that when management changes hands, I believe the current manager should be the one that announces it. I felt annoyed when my team’s management changed hands and it was announced by the incoming manager.

It’s happened again, but this time on a personal level. I get a meeting request for a “Line Manager Handover” from my future line manager (Alan). Surely, my current line manager (Louise) should have told me this was happening, rather than me finding out via a meeting invite?

What does the meeting even entail? I thought it would be a pointless meeting and it was. I reckon a lot of things should be discussed between Alan and Louise, and not with me present in the meeting.

In the meeting, my future manager, Alan turned to Louise and asked “is there any problems with attendance or illness I should know about?”.

Ridiculously rude.

Obviously, it’s a good question, but not one to ask my manager as if I wasn’t in the room. How can she answer that truthfully anyway? She wasn’t gonna say:

“yeah, there’s a few times where he rings up sick but I have a large suspicion he is faking it. I was actually gonna flag it up with HR if it happens again.”

Fictional quote

I find it bizarre that managers often show a lack of “people skills”. Not a great start.

The Sad, Dejected Presentation

We had a meeting that involved multiple teams. At one point we went back to our desks and talked about the plan for the next Quarter. We looked at the main features, put them in order of how we wanted to tackle them. We considered the length of time they would take, and which ones could be done in parallel. The Product Owner (PO) drew up a nice Gantt chart with rectangles showing the size, and the rows showing the parallel approach.

We had an hour, but took 45 minutes, then rejoined the meeting. The PO did our presentation describing all the work items and the justification to the order. The host then asks the next team’s presenter to come up.

The main developer shakes his head, another developer looks down and plays with his phone. Their manager, who is normally really confident, speaks in a dejected tone.

“We don’t Story Point our work, so we didn’t know the size of the work. We simply didn’t have enough time to plan, so we just wrote down a few bits of work that was coming up.”

Pretty much the end of their presentation.

Here are my comments:

  1. We knew about this meeting a week in advance. How come they didn’t think about their work in that time?
  2. 1 hour was more than enough time to fill in the form for the presentation.
  3. We hadn’t Story Pointed our work either, and we don’t have clear requirements, but we still came up with a respectable plan.
  4. Despite our PO explaining what each feature on our plan was, this team made no attempt to explain what any of their work was. Surely if someone does a presentation before you, you need to make some attempt at matching the quality.

In their section of potential risks, they mention they don’t have a PO, so struggle to prioritise their work.

Here are my comments:

  1. Although we have a PO, I think a lot of our prioritisation is actually driven by the development team. The PO adds the overall idea, but we tell him how feasible it is and what order it needs to be completed in.
  2. Out of all the teams in the business, I think you can argue they are the team that has the lowest need for a PO, hence they haven’t hired one for them. Their requirements are driven by other internal team’s requests. They can easily decide on the priority by what they are asking for.
  3. In our appraisals, we are encouraged to provide evidence of times where we have stepped up, and this situation is a prime example where you can show how organised/responsible you are. Making little attempt during a meeting, and being disorganised during your project when you have a backlog of 100 bugs/feature requests from other teams is a bit irresponsible. Surely you can judge how serious the bugs are, and how important the features are for the business. It’s not like they have no work on their board; they really do have 100+ items on there.

TLDR

Someone asked for the documentation that will be sent alongside our software releases. Some clients require specific documentation. A Manager responds, attaching a couple of documents. I have a look at them to see what the deal is.

One of them began like this:

Summary
TLDR The software is tested using the following ...

“Too Long Didn’t Read”? In a formal document sent out to customers!? Really? I really hope we actually haven’t sent that yet, and this was just in draft stage.

TLDR is the extremely informal way of saying “Summary” so why is it included in a Summary section? It’s a redundant phrase and definitely not appropriate for the context.

King Of All Excuses

Beavis seems the king of working from home. I don’t think I’ve known anyone work from home as much as he does. His excuses often seem strangely worded. Most people will just say “My daughter is poorly” or “I’m getting work done on the house”, you know; simple, straight to the point, and not disclosing personal details.

Last week, at 10am Beavis wrote something like “I have a poorly pip. She was meant to get up at 7 but got up at 9, so I have to work at home”. I had to read it a couple of times to realise that “pip” was presumably his daughter. But then I wondered how he didn’t get her up at 7. If he really couldn’t get her up because she was ill, then surely he would know by 8 that she ain’t going to school, and he ain’t going to work. At 10am, why is Beavis declaring he isn’t coming in, when he knew that long ago that he wasn’t coming in?

His excuse this week was that it was “Pip’s first day at School so I’m taking my parents down. Once they are sorted, then I’ll be back to work as normal”. Again, I had to re-read it a few times to make sense of it. He meant he was taking his daughter and parents to the School. His daughter will stay there, and he will drive his parents back. Now they know where the School is located, they will handle the child-care from now on. The “taking my parents down” phrasing sounded funny, like he is gonna kill them.

However the next day, he is working at home again because he “needs to take care of the bloody parents”. Dammit Beavis, you have really gone and killed them and now you have to bury the bodies.

Also, if Pip hadn’t started going to School, where does she normally go that her illness prevented her from going to? If his parents were free to take her to School, why couldn’t they have looked after her when she was ill? Presumably they did look after her prior to her starting School.

Too many unanswered questions. I think he is lying his way out of his murder spree.

Recently, the Coronavirus has been becoming more prominent. Now there is strong advice that if you show any symptoms, then you need to self-isolate, which means you have to work from home for at least a week. So it was no surprise to me when Beavis declares himself as self-isolating.

I don’t know how he gets away with it. There is no way someone can have such bad luck that he gets impacted by all these personal and family afflictions.

Jenkins

There’s a developer that is a massive fan of Jenkins. I’ve never used Jenkins, but he wrote a large post about why he insisted his team migrate to it, and I didn’t understand any of it.

I found it interesting that at first he mentions moving away from AWS CodeBuild because it wasn’t clear if builds were passing or not. I don’t know how this was a problem. The builds are linked to Pull Requests and GitHub displays this clearly.

What I found more interesting is that later on, he then says that GitHub Actions is in its infancy so isn’t as powerful as Jenkins. Sure, but why were you using both CodeBuild and GitHub Actions?

Further to this, one of his advantages of using Jenkins was “Don’t have to pay for GitHub Actions”. Hang on, but you have to pay for a build sever to run Jenkins. How does that even make sense? He was running it on AWS, so was paying Amazon for a dedicated server anyway. I’m pretty sure CodeBuild and GitHub Actions are cheaper to run than a server.

He further justifies using Jenkins with the “everyone else is doing it” line. I’m not even sure if he can verify this claim, but he said “if you look at the big ,key players in the market you will ALWAYS find they have a Jenkins instance”.

He also mentions another team used to use it. Yes that is right “used to use”. Which team was it? The one he used to be in. It was his implementation, and as soon as he switched teams, his old team had binned Jenkins.

I do wish people would use facts in their proposals rather than chatting nonsense to suit their own agenda.

Review Of The Performance Review

For context, it’s best to read my initial blog on this topic: Appraisals

Our review system basically involves us stating some salient things we have done, and we have to rate it against a few categories of values, and rate it 1-4, but we are only really allowed to score it a 3.

So my Performance Review is complete. To nobody’s surprise; I was scored a 3. My manager asked if I was surprised by the score, and I said I wasn’t because that is what everyone else would have got. She said that some people did get a 4. Not sure how; it doesn’t make sense to me.

I think if I went above my role, I’d expect push back from someone. Imagine waltzing into another department like Support with the aim of being “collaborative” – and start demanding changes. Then they are like “who the hell are you? Someone call security!”. If a development manager went in there and started demanding changes, then people would listen. In reality, they would organise a meeting, but their meeting would be accepted, and mine wouldn’t. The reason is that I’m just a developer and have no authority. Yet, if it did happen, I can then tick the boxes of Collaborative Working, Initiative, Innovation etc.

Even trying to take the lead on a project is a tough one. People’s job title’s give a natural hierarchy. When you have a designated Lead, then some Seniors, what chance does a Developer have at even running a meeting, never-mind designing some architecture? The only time it’s gonna happen if people are on annual leave for multiple days or have extended leave. Then you have to spot the opportunity, and take it.

In another meeting, I was talking to a different manager, and raised my concerns about the review process. He then told me that someone in the team got scored a 2.

How? If you read my previous blog on Appraisals, I mentioned how I tried to score myself a 2 for some areas, and I got rejected. If you talk about your score with your manager in your monthly 1-to-1 meetings, even if they did tell you that you have scored a 2 that month, then you will just step up your game, or write more justifications on the sheet to make sure it doesn’t happen again. Even if you did score 2 for 3 months or so, then are scored 3 for the final 9 months, surely your overall score would become 3 anyway? So how can you end up with a 2 unless you have consistently under-performed, done nothing to correct it, and even agreed with your manager that it is fine to be scored a 2? Surely no one in their right mind would do that.

The only reason I can think of is if the scoring hasn’t been consistently applied. Now if you read my previous blog on Appraisals, I mention that we have arrived at this current process with the aim that it is the fairest way of assessing someone, and would be consistently applied.

So let’s talk about the consistency.

Firstly, the goalposts were constantly moved during the year. We were told to fill out a basic spreadsheet, then a month later, new columns were added, then the criteria was changed, then we had to add a personal objective in addition to the default ones. Then there was an additional sheet to fill in. Then near the end of the year, someone told me the criteria had changed, but yet my line manager never told me that. So by the end of the year, some teams were using a different system.

Secondly, sometimes people with the same line manager as me told me extra tips, or about approaching deadlines, but my manager had somehow forgot to tell me about it.

Thirdly, we were initially told our final score mattered and there was no chance of promotion during the year. Then half-way in, an email comes in from HR saying how there is a Mid-Year mini review where some people will be promoted, and we had 3 weeks to submit our forms. However, that same day, we get an announcement from a manager in the department stating that 3 people had just been promoted…but yet they hadn’t completed their forms; the Mid-Year review hadn’t happened yet. For the Mid-Year review, I was struggling to finalise it, and my manager said I had till the end of the week, and she would submit what I had by Monday because it’s a hard deadline. On Monday, when the deadline had apparently passed, I overheard her say to someone else that they had until Wednesday.

Fourthly, even though I said we have monthly 1-to-1’s where we agree a monthly score for the items we submit, one member of my team said he hadn’t done that since the Mid-Year, and he had to cobble something together to submit for the End Of Year Review.

The thing is, because of the poor management of projects this year, there’s been many moments where I have been idle. When we have had requirements, they haven’t been clear and there hasn’t been great scope to actually shine. So if you compare my productivity to previous years, maybe you would give me a 2, rather than 3, but that’s not even really my fault.

I also think any metrics shouldn’t change people’s behaviour. However there was one time where I heard someone say something along the lines of “I have been investigating TechnologyX but it’s not really feasible.” Her colleague then said “so are you free to pick something else up?”, then she replied “no, I’m going to investigate it further so I can add more detail to my appraisal documents”.

In a similar fashion, there are plenty of times in the stand-ups where people say “today I am updating my documents” or “I am doing personal development”. The fact that people spend entire days updating a document instead of doing actual work – is a massive problem.

I also think people try and introduce ideas just so they can tick some boxes for innovation on their documents. I don’t see any reason why teams would switch from Code Build, to GitHub Actions, then Jenkins unless there is some extra personal incentive.

I think if the review system was consistently applied, was set-in-stone rather than constantly evolving, and we had no surprise deadlines spring up on us; then the review system would be acceptable. I feel like I can only give this system a 1 out of 4.

Hopefully it will be better next year.

GitHub Actions are Secure

In a previous blog on GitHub Actions, I have mentioned how some people love trendy technology and want to use technology when it may not be suitable.

Today, I was reading some documentation a team had put together which justified why they use GitHub Actions.

A standard team will have their code stored on GitHub, and when new code is ready to be checked in (via a “Pull Request”), a build is triggered on AWS (Amazon Web Services) CodeBuild. If successful, then you can use the built code to deploy to a test system, and to the live server.

The reason specified by Simon why to use GitHub Actions was that it is “self-contained, so is therefore more efficient and more secure”.

I know that GitHub actions use Microsoft’s Azure platform, and I assumed that GitHub store their code on their own servers. So with GitHub Actions, Azure will take the code from the GitHub server and build it, whereas CodeBuild takes the code from the GitHub server and builds it…no difference at all.

Well, there could be a speed difference if Azure is better than AWS or vice-versa, but the claims of “self-contained”, “efficient” and “more secure” is all conjecture.

I did contact Simon and he used some interesting phrasing along the lines of “No idea if it is better or worse, the statement was meant to address the concerns at the time.”

What? He wrote it just to please his colleagues/managers even though it was pure fabrication?

“hey Simon, we need to set up a build process”

“OK, I’ll set up GitHub Actions”

“One thing we forgot to add, security is the utmost priority. We want the most secure tech available”

“Yeah, you cannot get more secure than GitHub Actions, I’ll show you it in this documentation that I wrote”.

“Oh wow, it is really secure”

Fictional dialogue exchange

I did try to research if my claims of GitHub having their own servers is true. This blog is quite old, but back in 2015, they did use their own servers.

“At GitHub we place an emphasis on stability, availability, and performance. A large component of ensuring we excel in these areas is deploying services on bare-metal hardware. This allows us to tailor hardware configurations to our specific needs, guarantee a certain performance profile, and own the availability of our systems from end to end.

Of course, operating our own data centers and managing the hardware that’s deployed there introduces its own set of complications.”

https://github.blog/2015-12-01-githubs-metal-cloud/

The Problematic Button

William had a problem where his form controls could not be focussed; so you couldn’t click a button. He blamed me for breaking this functionality:

“You added a button which is clickable but you disabled everything else”

I told him it was a simple HTML button with an onClick handler; there was nothing fancy, not even CSS applied to it. I hadn’t changed any other component.

I asked him how he knew it was me that broke it. I asked him if he has verified his outlandish claims by removing the button and seeing if the problem persists.

Of course he hasn’t, he just looked at who had made a change last. I asked him if he had seen it working before – since this was a new page he was adding. He didn’t even seem sure.

Turns out it was some CSS that broke the functionality, but this code had been there a while. No idea why he didn’t notice it before, but it definitely wasn’t my button.

Obsoleting Your Codebase

William sure has a knack for saying the wrong thing, leading to lots of wasted time.

His team had been using our repository to check in their example code. Our repository’s purpose is example code, so it fits nicely in there in my opinion.

He comes over to my desk and claims that developers will wonder where they need to go to find the example code, so he wants them to go to a new repository he has just created.

How are people going to find his repository if they somehow can’t find our repository?

Well, his idea is that his repository will also deploy a website with instructions on.

How are people going to find his website?

Well, he hasn’t thought of that point. He also stated that when he moves the code to the new repository, it will make our codebase “obsolete”.

I was really annoyed by this. Firstly, if you create a new repository and move all the code from an existing repository, all you have essentially done is renamed the repository (and wasted a lot of time). Secondly, why does he think his repository is more important than ours? Surely it should be agreed with the team, rather than just pulling rank and forcing his ludicrous ideas through.

I firmly put my point across and then he replies:

“I’m not making your codebase obsolete, I’m just moving my code out of it. None of your code is going anywhere”.

WHY DIDN’T HE JUST SAY THAT THEN!?

I still think it is dumb creating another repository, because now there will be two repositories to check for example code, and all the example code is currently in the same location. If a website is actually helpful, then it can be added to our repository.

Your Code Is Unstable

William sure has a knack for saying the wrong thing, leading to lots of wasted time.

William joined the stand-up and said that he needs a “stable” build of our code, so specifically wanted the Lead Developer to merge our latest changes into our “master” branch. He kept on saying our “master” branch was “unstable”.

Later on, he comes over to my desk, and I ask him what he means by “unstable” – since that implies there is some kind of crash and we didn’t know of any. He then replies:

“it doesn’t work”.

“what doesn’t work?”

“eeeeeeeer”.

He then asks another team member to explain, and his colleague ended up saying “the branch doesn’t build”.

Weird I thought, since it is a “gated build”; we can’t check in unless the build completes. Turns out the Lead Developer had bypassed the gated check and broke the build.

So we have gone from “It’s not stable”, to “it doesn’t work” to “it doesn’t build”. I don’t get how you can be that bad at communicating such a simple development concept.

Additionally, on the stand-up call, I felt it was very patronising to specifically ask for the Lead Developer to do a basic merge. As it turns out, he meant that the Lead Developer should sort it out because he broke it, but he never stated that was the cause of the issue. It would have been good to open the conversation with that fact. You know; give some context and background to what the problem was.