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.

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.

Indian English

I always knew there was English (UK) and English (USA) which has minor differences in spelling e.g. localize instead of localise, and words/phrases like “sidewalk” instead of “pavement”. UK folk can understand it fine, although we often joke about it not being “proper English”. In recent years, I’ve sometimes worked with Indian staff and quickly came across some strange words and phrases.

So it turns out there should be a English (India) too. Here are some classics:

  1. Today morning” instead of “this morning”
  2. Have some doubts” instead of “have a query/question”
  3. Prepone the meeting” instead of “bring the meeting forward”. Prepone is the opposite of postpone. I actually really like that one. It’s incredibly logical and is easier to say.
  4. to do the needful”. This one often throws me off. I think it’s like “please action this”, or “do whatever is required”.
  5. Kindly revert”. Indians love prefixing sentences with kindly. Apparently “revert” means “respond” which is just weird. This causes confusion when they leave this as a code comment on a Pull Request/Code Review. You think they are telling you to roll back your changes, but they just want you to respond with a reply.
  6. The same”. They use this instead of “it”, sometimes it sounds fine, other times it is really jarring. “Can you fix the bug and update the documentation for the same”.

Bonus one: Some people pronounce GitHub as “JitHub”. This probably is in the same category as the pronunciation of the Gif image format.

The API 2

I wrote in a previous blog (https://strangercodingtings.home.blog/2019/12/30/the-api/) about an API that we wanted but didn’t meet our needs.

Another month went by, and we contacted the team to get estimates when they plan on changing the API to actually be usable.

The response we got was that their project was finished, and all the developers have been reassigned to different projects.

Hang on! How can they write an API and not work alongside any team!? The whole point of it is to provide data to other teams, so how can other team’s not be involved?

It’s not like they didn’t know we wanted it, I was requesting data from them in the prior 2 months.

I’m not sure when they plan on scheduling this work in, but it’s just stupid.

Joined up working

I think it’s best if you have teams that are in the same location since meetings are easier to arrange and have fluid communication.

If you are in the same office, you can have ad-hoc face-to-face communication. You can all go into a meeting room and don’t need any conference-call equipment which can have all kinds of problems; disconnecting, low audio quality. Same time-zones means there are more hour slots available to arrange meetings in.

I’ve heard people imply that teams end up being distributed just so that the other offices feel like they “feel part of it”/feel integrated into the company. Yet giving them a dedicated project they are responsible for would probably achieve that better; they will have more responsibility/autonomy. Adding members from the main development office makes it feel like they are been supervised.

Many times, you rely on a third party of some kind (by third party, this could be another team within the company or a different company). Maybe the third party collects the data and you just retrieve it via an API. You don’t really care about how the data got there, just that you can use it and it works accurately. Your team that wrote the user interface feel like they have achieved something. The team that collated the data and provided the API feel like they have achieved something. The teams may only need to communicate for a minor part of it. The teams need to know the overall aim, and what parameters they need for the API. My point here is that you can have two different teams with some minor collaboration, but both feel like they have contributed massively to the overall goal of the project.

I think adding a remote worker for the hell of it is just inefficient. Unless they are exceptional and can’t be replaced by the talent you have locally, then its just adding in unnecessary inefficiencies and causing unnecessary bottlenecks (have to delay meetings due to time-zones), have to wait until the next working day to get a response, different countries having different National Holidays.

Unprofessional Slack

I find that people can be rather informal on Slack due to people perceiving it more like an Instant Messaging client, rather than a formal communication channel like email.

Here are some examples words and phrases:

  1. Words, phrases or spelling that I would consider “Baby speak”: Fanks, looksies,
  2. Very similar to the point above: comedic phrases like Facejacker’s Brian Badonde: “Bwoh bwexcellent work”,
  3. Switching letters for comedic effect: “fassive mailure”.
  4. Old English phrases: “I say, old bean
  5. Regional slang. I’ve seen it all, from Geordie “howay”, Yorkshire “off t’meeting”, and Cockney “I’ll have a butchers at your report”.

When we are in a multicultural team, there is no way a non-English speaker understands this. I did ask the non-English members of my team, and they were unaware of Cockney rhyming slang. They did recall a few phrases from films that they had seen and were now enlightened.

Other comedic spellings/phrases/inside-jokes can be confusing or make people feel left out.

Other unprofessional examples:

  1. People putting silly statuses including sexual innuendos. They would never do this on Skype.
  2. People posting stuff they would never write in an email or say to your face. I was communicating in a thread with someone over the course of an hour. It was time to go home, so I left the office. He then posted some meme along the lines of “and he’s gone!” implying I fled because he asked me to do work. There is no way he would have said that to my face. I have never even met the guy in person or spoke on the phone.
  3. Someone asked for help with putting a video together. For some reason he added a random swear word. One guy points it out that it is NSFW, then someone makes a joke about the video consisting of pornographic material, someone else makes a joke about a convicted sex offender. No idea why people thought any of these things were appropriate, and it is completely out of character for our company culture. If I hadn’t read it myself, I wouldn’t have believed it happened…

but I guess anything goes on Slack.

How To Assign A Bug

I was asked by Simon to check source control to see if there was an obvious cause of a problem reported by a customer. I looked through the code and couldn’t find anything that stood out.

I heard Simon talk on the phone and it sounded like it was an important issue. I asked him if this was high priority and he said it was.

So I did a bit more digging, then Colin came over. Simon had also asked Colin to look into it, and Colin said to me “don’t worry about it, I’ll look into it.” So I went back to my normal project work.

An hour or so later, I heard a tester talk about the issue. I was interested in how the situation was progressing, so I went over to ask them about it. He said he had just started looking into it, but wondered if I had recreated it yet. I tell him; “I’m not looking into it, Colin is”. Simon then says “you have to look into it, Colin’s manager won’t let him work on it”.

“What the hell? Why wasn’t I told?” I then asked if there was a work item with information about the bug. “No” replies Simon.

Back in my day, we were told that we couldn’t work on anything without a bug being logged. It makes sense, all information goes in the item, and then if you are off sick, another person can easily pick it up.

If there’s no bug report, how do I know what the problem is, or perceived to be? Anyway, I ask the tester, and he shows me a Slack conversation from Simon. If I was always supposed to be looking at this issue, why weren’t I added to this Slack conversation?

I begin setting up the data to try and recreate the issue, when Colin comes over. Even though he isn’t working on it, he wanted to give me some advice. He starts talking about a recent project that was completed. I ask:

“What are you on about? Is this relevant to this issue?”.

“Yes, it’s in the email thread”.

“What email thread?!”

So even though it was decided that Colin couldn’t look at this issue, he was involved in an email thread. The tester was involved in a Slack thread. I’m not involved in either of them.

Again, how can I be expected to recreate an issue, when I don’t know any of the details? Also, it is pretty urgent. There’s a call tomorrow with several people from other departments; support staff, important managers etc. I’m supposed to explain my theories of how this problem was introduced.

Absolute farcical.

Later on, I’m at a different manager’s desk, and he has an email open. It’s an email thread between a few managers discussing if Colin can look at the issue or not. It’s not just Colin’s line manager, but other important managers within the department.

So much time wasted trying to decide which person should do the work, meanwhile there’s no process that is followed to actually assign the work properly. It’s thrown between verbal, email and instant messaging.

How difficult is it to log the issue properly, then find a developer that is available to look into it? It’s not like we’ve never seen a bug before. What happened to the “tried and tested” process?

Mini Musing #4: Amnesia

Colin sits down next to Senior Developer Tim.

Colin: “Can I speak to you about the 2 things I was going to ask you yesterday?”
Tim: “Yeah sure, what’s up?”
Colin: “Can you remember what the questions were?”
Tim: “No”
Colin: “I’ll come back when I remember what they were”.

Brilliant. Sometimes it’s like a comedy show.

Playing Dumb

Derek always annoyed me when he would play dumb when doing non-programming tasks. So if he was helping Testers by running test cases – they would tell him to open a test case, and he would be like “what software do I use?”, “what do I click now?”, “do I click the Pass button when I’ve finished?”

It just wastes time and frustrates people. I always thought he was being as awkward as possible so they would just tell him not to bother. If he asks all those questions, then it’s just gonna waste a tester’s time. If they are answering questions, then it means they aren’t running test cases. The idea of a developer helping out means there are two people running test cases. But an awkward developer just means there is a developer slowly running test cases whilst supervised by a tester who could have just done the job quickly.

I’m introducing a new character, Beavis; because he always acts dumb, or at least appears oblivious. Also, he has a very Beavis-like laugh.

Beavis was doing the exact same technique. I heard him ask many dumb questions like that. Later, he calls me over to help set something up. I tell him his account doesn’t have enough permissions.

So he logs in with the admin user, goes to the configuration module and then says:

“how do I find my user?”

“click the Find button”

“where is that?”

“In the menu, first button”

he clicks it. A dialog appears. “How do I then find my user? Do I just type in my name?”

“No, you have to type Pi to 10 decimal places!”

I didn’t really say that, but it was hard to keep calm with the questions that are just wasting my time.

He then says “sorry, I’ve never used this program before”. Even though that was clearly a lie.

Beavis and Butthead

I know he hasn’t used it much because he used to work on a completely different software product, but he has used it and was helping a Junior set it up the very next day. But when you have 20+ years of experience in the software industry, how can you not be comfortable using basic features? Many features are intuitive. If you wanted to find some text, it doesn’t matter if it is Internet Explorer, Microsoft Word, Notepad, OneNote, Visual Studio; you would always press Ctrl+F. Want to Save? Look for a “Floppy Disk” icon, or the word “Save”.