Privacy Cookies

When you visit a website and have to consent to cookies, the user experience is often confusing. The wording, or the appearance of controls look like they are designed to mislead.

Sometimes when you see options and they look disabled by default, I wonder if I am misunderstanding what the dialog represents. So even when you close the dialog, have you really consented?

Additionally, how do I really know that my options have been saved and used correctly? Unless I see an advert for something I looked at on a particular website, I am oblivious to what a website stored about me, or sent on to their many partners.

Someone has made a short “game” which illustrates how bad these consent dialogs are.

https://cookieconsentspeed.run/

String comparisons

We recently had a controversial bug where our software was showing female-related information for males. Another team was responsible for the code that generates the warnings, but first I had to check we were passing in the correct information.

For males, we were passing in “Male”, “Female” for female, and “Unknown” if the information wasn’t stored. This looked correct, although using text in this way easily leads to bugs as I will soon discuss.

Another point of contention here is that if this is representing Gender, we aren’t providing enough options for today’s culture. More controversially – throughout the codebase, we are sometimes labelling this Sex and other places it is Gender. The user interface labells it Gender, but then the database column says Sex. 😬

This is obviously going to lead to problems if the developer uses this data in a way that wasn’t intended.

I was surprised users hadn’t flagged this as an issue because surely someone would be offended by the limited options and the way we display it. Also, some features of our software could easy display misleading information (just like the bug I will discuss).

So back to the main point of this blog. We were passing in what looked like the correct data, but then I looked at the other team’s code. It was actually worse than I anticipated.

if (sex == "M")
	criteria.Add("Sex = Male");
else
	criteria.Add("Sex = Female");

Whoopsies. This is wrong on so many levels.

First of all, the method call asked for a C# String which is: text of one or more characters. There is a special type called “char” to represent a single character. So if they only wanted 1 character, then they should use the “char” type. However, using char still has similar flaws like I explain in the next paragraphs.

Performing String comparisons is bad because I could pass in “Male”, “male”, “MALE”, “m”, “m” etc, with similar permutations for “Female” and “Unknown”, and I could have also passed in some complete nonsense. What happens if I pass in “Thing”? surely it should throw an error because that is invalid? Instead they treat “Thing” as a “Female”.

This has caused the behaviour we were seeing. We pass in “Male” which seems like the correct thing to pass in, but because “Male” doesn’t equal “M”, the method treats “Male” as “Female”. It also treats “Unknown” as “Female”. Even if they had used char types, we would still see problems when comparing “M” to “m”, and “U” would still be treated as “Female”.

A more robust solution would be to define an Enum type of all the states, then check for certain types explicitly, but throw an exception for anything that doesn’t match the conditions you have defined. If someone adds more cases to the Enum in the future but doesn’t modify your code, your code will cause a crash. At least that highlights a problem rather than causing unexpected behaviour, or causing offence to users or their customers.

It can look something like this. (You can use a “switch” statement if you prefer).

if (sex == Sex.Male)
{
   criteria.Add("Sex = Male");
}
else if (sex == Sex.Female)
{
   criteria.Add("Sex = Female");
}
else if (sex == Sex.Unknown)
{
   criteria.Add("Sex = Unknown");
}
else
{
   throw new ArgumentInvalidException(sex);
}

I was going to suggest that if they had written unit tests, then some of these problems would have been spotted earlier. However, if they were barely thinking about the code they were writing, then no doubt they would come up with unit tests to check that “M” returns “Male” and “F” returns “Female”, and wouldn’t have bothered with other scenarios. You would have thought someone that code reviewed it would have spotted it, but they must have lazily done that too.

Dealing With Software Support #2

I recently had to deal with another company’s software support team, and this was the second bug I had logged. The first bug didn’t go well at all. For this second issue, I had provided them detailed recreation steps, and videos of the issue occurring.

After I logged the issue, they said they would investigate and get back to me shortly. After nearly 2 weeks, I received an email requesting to arrange a phone call. I thought he was going to give me some news but he wanted me to demo it. So I asked him what that would give him over the videos. He said the videos I sent him wouldn’t play. Brilliant.

I didn’t understand why the videos won’t play. I recorded them using the Microsoft Game Bar feature and they ran fine on my machine. Instead, he wanted me to record the video with Powerpoint. This is bonkers. At least I learned that Powerpoint can record screens. It’s quite useful because you can zone out a tiny part of your window to record…but then there is no option to simply record the full screen!

The problem we had was that our software was intermittently crashing when it was interacting with theirs. However if you changed some Security settings in their software to “never warn me about suspicious activity”, then the crash didn’t occur. You would have thought it should pop up a message box rather than crash. So I asked their Support specifically if he had any idea why this would happen. If it was something I could change at our end, then maybe I could quickly resolve the issue.

“Our software may be thinking this 3rd party app is suspicious. And disabling that security setting helps!”

Support

Well, that sure was helpful. I bet he referred to Captain Obvious for that one.

Why is it intermittent? Why would it think our application is suspicious? why would it crash instead of popping up a message if it was suspicious? My line of questioning is to prompt him into getting to the bottom of the issue but it seemed he couldn’t be bothered investigating or even logging it with their Development team with this information.

I was also annoyed how he kept on chasing my responses when I’d barely had any time to respond. In his email signature, it said he was working 9-5:30 Monday to Friday, and he sometimes sent emails at 8pm on a Friday. Then I’d also get an email 9am Monday reminding me that I haven’t replied to his last email. If he doesn’t work weekends, why does he assume I do? He has literally given me 0 working hours to respond. 

There were even occasions where he wouldn’t even chase me by email, but would chase me up by an actual phone call that I didn’t agree to. We had put our IT’s department’s phone number on the Support ticket. I told him many times to contact me by email, but we can arrange a Microsoft Teams call if we need to talk. He would then email saying he couldn’t get through by phone. So I would remind him

“The phone number is for our IT department. I don’t have a direct number.”

Then he would sometimes respond with something similar to:

“We tried to connect you by phone, but unfortunately unable to connect”

Support

Absolute wind-ups.

I find that they always want to arrange calls, even though they end up asking something that can have been addressed by email. They must get reviewed by how many calls they make or something. I don’t understand the advantages. Being put on the spot to give information over the phone isn’t as effective as asking in an email and waiting for the person to have time to acquire the information when they are free. But maybe that’s just my preference? Still, they should respect the customer’s preferences.

At one point, he suggested that the reason why some users didn’t encounter the issue was due to a different “Microsoft .Net Framework” version installed on their machine. I asked him the best way of finding this information out. He replies with the following: 

I found the framework version in the error listed in Event Viewer for the affected machine. You can check if they are different by comparing a working machine and non-working machine.

Support

Do you see a flaw in their plan?

A working machine doesn’t log an error in the Event Viewer:smile:

Database Patching – Everything Is Fine

When it comes to changes to the Database, we have a tool (which I will call DBPatcher) which runs your changes, runs the Unit Tests and runs Code Analysis (finds bad formatting, violations of coding standards, common mistakes etc). So it is vital that this passes successfully before you send your code to review.

I was doing a Code Review aka Pull Request (PR) and I saw evidence that they hadn’t run it through this DBPatcher tool.

Ronald was eager to get his code checked in, so wanted me to approve. However, I wanted them to run the tool and fix any issues first. The conversation went like this:

[Thursday 8:21 AM] Ronald
     Can we complete the PR? do you have any doubts on it 
​[Thursday 8:23 AM] Me
    I'm convinced DBPatcher will flag those select statements because there is a mix of tabs and spaces
<yes it is trivial to flag, but DBPatcher will flag this, so this is evidence they haven’t run it. There could be other errors too, but I will let DBPatcher find them>
​[Thursday 8:23 AM] Ronald
    OK, thank you. I will complete the PR 
​[Thursday 8:25 AM] Me
    what? I am saying the DB patcher will give you errors
​[Thursday 8:26 AM] Ronald
    sorry for misunderstanding 
    I ran it in the morning. We didn't get any error for our DB changes and unit testing also didn't throw any error for our code
<he attempts to send me a screenshot of the final result but it didn’t seem to transfer>
​[Thursday 8:44 AM] Me
   The image isn't showing for me. But since I started running DBPatcher when you messaged me, and mine has just finished, I can only assume you disabled the "Run Code Analysis" to speed it up
​[Thursday 8:45 AM] Me
    In fact, there's some failing unit tests too
<this is contrary to what Ronald claimed. He said there were no Code Analysis errors and no Unit Test failures, and I see both.
[Thursday 8:45 AM] Ronald
   I have enabled those and haven't unchecked it before running the patch 
​[Thursday 8:45 AM] Me
    What is in the output window?
​[Thursday 8:46 AM] Ronald
    yes there are some errors, but not related to our code and our schema 
​[Thursday 8:48 AM] Me    
DataWarehouse
Error on line: 12
ColumnListFormatting: Select column list incorrectly formatted
<clearly his code>
​[Thursday 8:50 AM] Ronald
    oh ok 
​[Thursday 1:19 PM] Ronald
    we resolved formatting in our SQL commands 
    we couldn't find which unit testing is failing and we are not sure if this unit test is part of our project. Can you help us with this one ?
​[Thursday 1:21 PM] Me
    
|20|[DataWarehouseTest].[Test1] |Error |
|21|[DataWarehouseTest].[Test2] |Error |
|22|[DataWarehouseTest].[Test3] |Error |
|23|[DataWarehouseTest].[Test4] |Error |
|24|[DataWarehouseTest].[Test5] |Error |
​[Thursday 1:26 PM] Ronald
    
I ran the DB patcher 20mins ago with the code analysis checked and we checked the output results also, we couldn't find anything related to DataWarehouseTest 
Attached the DB patcher output result we got 
[DBPatcher OutputResult.txt] 
<I look at the file. It has hundreds of errors, so it is hard to make sense of. His database is clearly screwed. No wonder it was running quick and he couldn’t see any Unit Test errors; they simply weren’t running>
​[Thursday 1:31 PM] Me
    your database looks absolutely messed up. You shouldn't have those errors. The unit tests are failing to run

C:\DatabasePatcher\tSQLt\RunAllUnitTests.sql
Could not find stored procedure 'tSQLt.RunAll'.

    you need a new database.
[Thursday 5:50 PM] Ronald
    Thanks for notifying us of these issues.
    Now we have fixed these issues and ran the patch, and there were no issues with our project.
​[Thursday 5:51 PM] Ronald
    please review it from your side 

I then look through their changes which fixed the unit test. With Unit Tests, you usually create a variable called “Expected” then set that manually. Then you create an “Actual” variable and this is set based on the actual code. They had those statements as normal, but then they had added this:

update #ActualResult set SessionGuid = '38090f0d-3496-48c3-a991-a0220fe3b58f', SlotGuid = '0b817794-7ffb-4ae3-8013-a7847a1b2139';

So this means their code isn’t returning the correct result, but they are then manipulating the result (#ActualResult) to force it to match – so the test passes. They could have just changed the Expected result, but that would be sabotage anyway. Why would they knowingly break a feature like this?

Anyone who is serious about software development shouldn’t be doing this. They have “Senior” in their job title, and this change was approved by two of their team members. It was up to me to be the gatekeeper and reject this change.

[3:51 PM] Ronald
Sorry for the unit test update statement, I have removed those and all the unit tests are passing correctly.
Sorry, that was some typo.

A typo!? How can you possibly claim that was a typo? “Sorry, I accidentally bashed on the keyboard and somehow produced a sequence of characters that was valid: not only to be executed without error, but for the unit tests to pass too.”

I also don’t understand how you can have hundreds of errors and just continue working like everything is fine. Then when someone is telling you something is wrong, you still pretend everything is fine. When I tell him he hasn’t run DBPatcher, why didn’t he respond with “I did, but there were loads of errors. Can you help me fix this?” Proceeding like he did just wasted my time, created unnecessary friction and made himself look like a complete idiot.

Gender Pay Gap

We recently published our Gender Pay Gap figures, and HR and Directors love to hype it up. However, I read this definition we put out with our results, and wondered how useful it actually is:

The Gender Pay Gap GPG is the difference in the average pay and bonuses of all male and female employees across an organisation. This is different to equal pay which is the comparison of the amount a male and female gets paid for doing the same job.

Mean %Median %
Gender Pay Gap 20207.31.5
Gender Pay Gap 201911.25.1
Gender Bonus Gap 2020-28.514.1
Looks like we have reduced the Gender Pay Gap, although it looks like some women are getting massive bonuses to skew the mean
Pay QuartileMen %Women %
Upper7426
Upper Middle6634
Lower Middle7228
Lower6733
Seems around 2/3 of our staff are men, although women are getting those Upper Middle management jobs

So I’m not sure what these figures mean. I think these vague figures mean that we are grouping together Directors, Managers, Developers, Support Staff, Admin staff, maybe even cleaners. Then we split them by gender and publish the average.

Even if it was grouped by department, I’m not sure what you could take from the results, although I would quite like to see it. There’s not many women Developers in the UK offices, but there’s a fair amount of Software Testers, and plenty of Managers. I’ve no idea if the average manager gets paid more than the Developers but it could be possible women get paid more in our Department.

I think the second set of figures show how I imagine the Development Department is. There’s generally more men everywhere but the managerial roles that women seem to favour – are higher paid. So the highest proportion of women are in the “upper middle” (34%).

But you can’t conclude anything from these figures other than we probably need more women in general. What we need are the Equal Pay figures, but even then, I think there will be plenty of people that aren’t fairly paid regardless of gender. I wrote about how I was unfairly paid recently and I ended up with a promotion and ~£14k rise.

These somewhat cryptic statistics don’t really mean anything and just seems like a token gesture to appease those that would actually benefit from them if they were accurate. What I always find strange is that the HR department is mainly composed of women, and if these women are actually seeing a problem with Equal Pay, then surely they should sort it because they should have the power to do so.

In Defence of Brad Traversy

When I have written a few blogs on “Social Justice Warriors” in the Tech industry, I’ve chosen not to call specific people out in order to avoid backlash, but this situation has really riled me. I’ve only watched a few videos from Brad Traversy so I have no reason to defend him, but those attacking him seem very misguided. This is how I see things:

So back in June, Anastasia Marchenkova posted this:

So Hays is a guy in the tech community sending hate to a woman in the tech community. It’s unknown what triggered this, but it doesn’t matter – the abuse is out of order. Anastasia is suggesting that he was positively interacting with her by retweeting her content. If you view the full tweet, you see that her initial response to the abuse is this

“Hey Hays! This seems like a weird message from you- you’ve seemed to like my links to resources – have you been hacked”

Anastasia’s initial reaction

Remember this response. It’s key to understanding the misguided reactions.

Just like that quote, she also elaborates in the follow-up tweet

“I asked if he was hacked because we always had a good dialogue”

Anastasia

So it seems not only has Hays retweeted her content, it very much sounds like they have shared messages before too.

It’s worth noting that: if someone has been hacked and the hacker is sending abusive messages, asking if they have been hacked isn’t actually going to get a valid answer. Probably will just get more abuse back.

Brad Traversy then shows support for Anastasia with this tweet

“Such weird and incoherent messages, I would have sworn he was hacked by some low IQ incel that hates women. He has always seemed pretty chill in any interaction I’ve had with him. Maybe some kind of mental break. Unfollowing for now though. That shit is unacceptable”

Brad Traversy

So what did Brad say here that wasn’t echoing Anastasia’s thoughts? He agrees with her initial reaction of questioning the possibility of being hacked. He then mentions he has never witnessed this behaviour in previous interactions. Although he wants to give Hays the benefit of the doubt, he has unfollowed him.

But here comes the Social Justice Warriors that presumably, haven’t actually read the entire thread.

If Anastasia hadn’t made these comments herself, and Brad was the one to initially suggest them, then maybe Ali has a point that he is “minimizing” this experience. That’s not what has happened though, and Brad is being supportive.

So Brad obviously reacts to it and points out that this Social Justice Warrior and virtue signalling behaviour has to stop, because it is just toxic.

People really didn’t like Brad using the phrase “you people”, presumably because they thought he was attacking women. He wasn’t. He was attacking Social Justice Warriors, overreacting to anything. He wanted to show support for women in tech, and he has been lambasted by the people he was defending.

I thought this guy’s response was funny.

Brad responds to him with “There is a group of them that do it”. This is referring to some of her friends that gang up together, pooling their followers to collectively abuse, and even cancel someone completely. It had happened before when someone posted a joke; a tech pun based on current events. They requested all their followers unfollow this person, then contacted the CEO’s of several companies that the guy made money on, and demanded they delete his account. I could understand if he had done something really bad like committed a murder, but tweeting a joke isn’t enough to lose several sources of income. The guy could have lost his house or something.

I have even seen them respond to people that tweet “here are my personal favourite software developers” with something like “this isn’t representative of the industry because there’s no women”. If the person says “it is my list, with opinions from my experience, then they get accused of being a “tech bro”. If they back down and agree to add a woman, then they then say “what about women of colour”? Where do we stop? Do we need to list a developer from every country in the world? It was their personal tweet, you don’t have to comment on it.

Anastasia’s thread was supposed to be about Anastasia’s abuse, but Ali has then made it about Brad. Ironically, she then attacks Brad for making it about him.

The tweets have since been deleted, so I may be making this bit up, but I think Brad tweeted something on his own page along the lines of “if you are gonna cancel someone, then make sure it is justified”. He didn’t call Ali out specifically, but then she replied to it, so people then knew he was attacking her. She claimed that Brad was out of order because she would never publicly call him out. Well, apart from all these tweets I’ve linked to, which triggered Brad to make his tweet.

This stuff happened in June, but for some reason it has been brought up again as if it was some major turning point in the industry. They are acting like it is Armistice Day or something.

The intention is fine. Abusing someone is bad. Defending someone who abuses someone is bad. However, if you are gonna call someone out on it, it needs to actually be legit. They are attacking Brad when he didn’t do anything wrong.

Why is this being brought up again? It was 5 months ago. Sure, if it was a huge deal and actually accurate, it would be fine to bring it up. Brad wasn’t the huge deal, it was Hays. Surely something has triggered myraccoonhands into discussing this, so why not tweet about whatever the new situation is?

What riles me is that it’s a screenshot where you can’t see Anastasia’s original post. So now when people see this, it really does look like Brad is minimising women’s experience of abuse. Since people don’t research things, you then get responses attacking Brad.

This shows that Ali did have some success in cancelling Brad:

Check out this vitriolic tweet. When I initially saw it, I thought he meant Brad deleted his responses to Ali which is why myraccoonhands used a screenshot. But no, they used a screenshot to be deceptive. Not sure what sweetestshuga is on about with the apology. I don’t recall Brad apologising but he had nothing to apologise for.

Conclusion

I’ve personally never witnessed any hate in the workplace towards women, but I have no doubt that women do get patronised in the workplace and get abuse online. It’s out of order, but you need to tackle the problem effectively.

I think the problem with “Social Justice Warriors” is that they come across as extremists and don’t go after the actual problems. It just creates more divide.

I think it is kind of a “boy who cried wolf” scenario (probably will get in trouble for that, why can’t the girl cry wolf?), that if people falsely accuse people of being sexist; then when there is a case, it’s harder to believe them. Accusing people of being sexist for tweeting about their favourite developers (that just happen to be male), then accusing people of being sexist for agreeing with a woman’s accusations…surely the next accusation I’m going to dismiss. Then I’ll be called a misogynist and minimising the person’s experience, and it will seem like there is a case for it.

In future, Brad would be less inclined to speak up due to his experience; further perpetuating the “bro culture” that they aim to eradicate.

Anastasia described a problem with one guy who was abusive, but yet it quickly became about some other male who was an ally. Emily Kager, myraccoonhands , and Ali aren’t reminiscing about Hays awful posts to Anastasia, they are reflecting on how they attacked Brad, who was their ally.

People need to remember that if they attack people, then all their followers may join in on the attack, if they intended or not. The Youtuber The Quartering often discusses “controversial takes” and has been on both ends of that. If he is negative towards someone, he does tend to remind people not to be a lynch mob. We are merely discussing events that have happened. We are criticising the lynch mob behaviour and don’t want to create it. I only have 31 followers, but don’t go after anyone I’ve mentioned here.

Now I have written this blog:

  • myraccoonhands thinks I defend stalkers
  • wellis321 thinks I’m a prick who is not good for the industry.
  • Emily has now validated me as a misogynist
  • denvercoder will never promote my blog
  • Ali thinks I am minimising her experience

If this blog disappears, then I have been cancelled.

Office Tales

Introduction

Going to the office 5 days a week for my Software Engineering role was such a standard thing until the whole Coronavirus and lockdown became the new world. It’s crazy that my employer doesn’t have any interest in us returning to the office other than for optional collaboration. I mean, it does make sense, but it’s a complete u-turn on their previous ideals. We used to have a few offices nearby, but I think we only have 1 now. They redecorated the remaining office, cutting down the number of desks, and we are allowed to book time in the office if we wish, either individually or as an entire team. I have never been in though, and have only seen a handful of colleagues on a recent night out.

Things I miss about the Office

I think I miss the conversations you overhear from nearby desks, and communication is much more efficient when you can just walk over to someone’s desk. There will be people that you don’t need to interact with for your current work, but will acknowledge them as you walk about the office (often going/returning from lunch breaks). So it’s much more social when working in the office. I think there is a general awareness of what things are happening across the business, because you see people moving about and hear them talking about work. Now I only get that information if people post on communication software such as Slack/Yammer.

It seems I have quite a few draft blog posts that aren’t that exciting on their own, but I’ve put together a collection of ideas to reminisce about office life.

I’ve just discussed some things I miss about the office in this introduction, but the rest of the blog is basically “Things I don’t miss about the office” and “Other tales”.

Things I don’t miss about the office

Moving Desks

Every so often, managers decide to reassign loads of people between projects. Then, if the team sizes aren’t the same, they have no choice but to rearrange the desks, or simply relocate teams. This meant the entire department would move, even if the new desk is just 1 desk away. It was a major disruption and was basically a waste of half a day. People tended to unplug their PC a bit too early, but you did have your PC, 2 monitors, keyboard, mouse, drawer unit, then loads of cables and other items. It’s a big chain of moves though because you can only move if your new desk is free, but it is only free if the current person’s new desk is free and so on.

There was supposed to be a big move shortly before the lockdown happened. We were told that it was coming but then seemed to get delayed but no announcement (so no one knew what the holdup even was). 

I was told I was moving desks by my manager. An entire month went by with no update. I ask my manager what is going on. He says “I’ve been asking many times and I don’t get a concrete response. If you hear anything before I do, then tell me“.

A few days later, I heard another team talking about the new seating plan. I told my manager as requested.

He says he has the seating plan “but I need to spend some time to digest it“.

What are you on about? Just send it to me.

It’s a seating plan that has been released, and many developers were already reading it. Why is he making out it’s something he has to analyse then explain to me?

Anyway, the conclusion is that desk moves are very disruptive, managers find it a really hard task and they change their minds about it, then this makes it seem like a bigger event than it needs to be.

Sounds Of The Office

When I need to concentrate on programming, I often put my headphones in and listen to music. Drowning out all the random talking really helps you focus on your work. If people are talking, I’d often want to listen just in case it is something interesting and work-related, or maybe some funny casual chat that I want to hear.

Periodically, I’d take my headphones out, or maybe I would have to because I want to speak to someone or have a meeting.

Although the general sounds of the office were fine, there were some sounds that would do my head in.

Many people also used headphones to listen to their music, but there was one woman that often had her music on really loud. One time I looked over and saw that she had hair covering her ears, a beanie hat over that, then the headphones were placed over that. So the speakers have to go through a hat and her hair to reach her ears. No wonder she has it that loud. Also, I found it more distracting if I recognised the song. When Tool’s highly anticipated Fear Inoculum came out, she was listening to classic Tool every day and it went on for well over a month.

There were a few people with really exaggerated laughs. In previous blogs, I have mentioned one guy which I nicknamed Beavis for his style of laugh, but there were plenty of others that often did a fake laugh. One person sounded more like they were in pain rather than having a good time. It stressed me out.

There was one person that coughed a lot but it was more like a “ah mmm” like a stereotypical teacher would do to get a student’s attention. It wasn’t aggressive enough to actually clear her throat so it just seemed pointless to me, and extremely annoying.

Maybe the worst thing is this next subject, because I wouldn’t ever consider doing this whilst at work. I didn’t realise until I heard these sounds in the office, but I think it is a sound where it’s very satisfying to hear when it involves you, but hearing someone else do it; then it is vile. There were 2 managers sitting a couple of desks behind me, the woman was filing her nails and the scraping sound was very distracting. The worst thing that had me cringing though – the male was clipping his nails. Like I said, really satisfying if I am clipping my nails, but hearing that “click” sound on someone else’s; it had me cringing. I had to put my headphones on and crank up the volume, and try to not imagine those fingernails fly across his desk.

Kicked out of large meeting room

Meeting rooms were a really in-demand thing. Managers do love meetings, especially pointless ones. Then when you really do want a meeting, you just can’t get a room.

There were two meeting rooms next to each other, located near my desk.

  • Meeting Room A holds about 8 seated people, but you can get more people in if standing
  • Meeting Room B holds 3 people but you can get more people in if standing

I was called for an ad-hoc meeting with 3 other developers. Both rooms were free at the time. We take the larger room (Room A), since there’s 4 of us.

5 minutes in, someone knocks on the door

Sorry, I have a one-to-one and have booked this room

My fellow developers didn’t seem interested in arguing, so I followed suit and kept quiet. It’s a one-to-one so it’s a meeting for 2 people. Room B is perfect for them.

So after moving to Room B, we were trying to crowd around a laptop – crammed awkwardly in our seats. Meanwhile 2 people were sitting comfortably around a large desk in the opposite room. It looked ridiculous.

Office Tales

Empathy Lab

As I just explained, Meeting rooms were in high demand so we needed more of them. Of course, we like cutting down the number of meeting rooms for some cool initiative. One of them was the “Empathy Lab”.

“We were inspired in part by Facebook’s empathy lab which shows how people with impairments may interact with Facebook using assistive technology.

However, when building our accessibility empathy lab, it was important to us that it had a dual purpose: To raise awareness about accessibility, but also be an assistive technology testing space.”

I never saw it get used, but I did see many people get frustrated that they couldn’t find a meeting room.

The Recruitment Letter

Beavis gets a hand-written letter delivered to work written in a green pen. I don’t think I’ve seen anyone get anything delivered with their name on it that wasn’t a package, mainly from Amazon.

He opens this suspicious letter, and it is from a recruiter apparently from LinkedIn.

She explains that the unconventional approach to contacting him is due to the fact that his profile lacks detail and therefore that signals he doesn’t want to be contacted by recruiters.

<Sure, that makes sense.>

She likes the lack of detail in his profile though; it’s the kind of person she is looking for, so she wants to meet in person and talk at a Café.

I’ve never heard of this before? Is it a weird scam?

AWKS

Years ago, I wrote about how I was working in a team that was making the framework for a new application. One of our developers, Timothy, got moved to a team known as “Solutions Team” who were making a framework for the new application. I had asked him how his team differed to mine, surely we were doing exactly the same work? He said he was just doing what the managers told him.

A new developer, Nina joined the Solutions Team.

She comes over and asks Timothy to send her some documentation so she can understand what they have done over the last few months. (The correct answer is “nothing really, just messed about and partially duplicated another team’s work).

You could see the absolute terror in Timothy’ face. I think at that point, he was probably realising that I was right all along and their team was pointless.

Nina detects the panic and says in a concerned tone “are you okay?”

Timothy says “yeah” dejectedly, and then mumbles about “maybe he should update the documentation.”

Nina says she will come back later

It was the most awkward situation in a long time.

Just Paste It In

William has been working closely with a Junior developer. The Junior had a list of objects and needed a simple sort.

William is new to Javascript, but the syntax is exactly the same as C#. He looked at the method signature and didn’t understand it, so he told the Junior to google it.

The first solution they stumbled upon on Stack Overflow had an overly complex solution, but the original poster did request he required only one method that can handle sorting various items. Therefore it required an elaborate solution.

In the Junior’s case; he just wanted to simply sort a list; therefore this code wasn’t appropriate.

William told him to paste the complex method in and “it will work”. The Junior challenged him on it, asking if the algorithm sorted the items in ascending/descending order, and asking him to explain how the code worked.

William then just reads the name of the method and the parameters, trying to say some words in a confident way to blag that it was the correct thing to do: “It’s a dynamic sort, you just pass in the list, along with the name of the property you want to sort by“.

The Junior asks again if it sorts in ascending or descending order.

He then says “yeah you are right, this might not work“.

He had no idea what that code did, he was just hoping it worked – so was just confidently telling him it would work if he just pasted it in.

I ended up telling him how to do it. It’s a one line solution; not a 30 line method.

Code Comments are Code Smells

There was some code where there were 2 statements that look similar in meaning:

  • Details is null
  • No Details
  if (Details == null)
     return (bool?)null;
 
  if (!Details.Any())
     continue;

Yet, both those statements returned a different value. The first returns null, the second continues iterating the loop that the code was in and could return a completely different value depending on what was next in the list.          

So a reviewing developer writes a comment on the review:

“It is not clear why one should return and the other continues here. Maybe a quick inline comment to explain?”

(So the reviewing developer wanted them to write a code comment alongside the code, so anyone reading the code would be able to read the code comment explaining what the code means – therefore quickly understand the intent.)

The authoring developer responds:

“Explaining here as adding comments will open up code smells,

The Message can contain more than one ‘Detail’ and it will validate the following cases….”

(It’s not important for this blog to post his full explanation. The key thing is his refusal to add the code comment because code comments are apparently a “code smell”. The reviewing developer counters this statement accurately…)

Reviewing Developer:

Code smells are code that cause people headaches to read and understand, not what Static Analysis Tools say. Static Analysis Tools often spot things that meet the above criteria, but that doesn’t mean it is right all the time. Adding comments to explain why something has been done the way it has when it isn’t obviously clear IS best practice. It is best to write clean code so you don’t need comments, but when there is always a clear benefit to adding them, you should add them.

I’m not even sure what the author meant by “open up code smells”. I can’t think of a Static Analysis rule that could violate. Recently, I have encountered many examples of developers writing bad code, or changing code they didn’t need to touch. Then when I challenge them on it, they say the Static Analysis tool was flagging it up, so they modified the code until it stopped complaining. The point of Static Analysis tools is to write good code/to enforce best practice. However, like the reviewing developer said, it isn’t always correct. Also, the rules aren’t smart enough to detect when you are trying to trick them, so you can write bad code that doesn’t violate the rules. If you are resorting to tricking the analysis, then you definitely don’t care about writing good code.

In the book Clean Code, a point that the author makes is that you can eradicate code comments by writing readable code. Sometimes that’s not possible which is why you then need to write a code comment to provide the clarity.

Can I have o365?

We recently had a bug in our software that only occurred with users that were using Microsoft Office – o365. I couldn’t recreate it with my Office 2016, so I logged a ticket with IT to acquire a licence so I could test it out. As a software developer, once recreated, I can fix the issue or pass it on to Microsoft if it is their fault.

Some users are having problems with the Email functionality. It sounds like these users are using the o365 desktop apps. In order to attempt to recreate this issue, is it possible to get a temporary licence for the o365 desktop app for Outlook?

Me

Not understanding this request.

You currently have an E1 licence and Office Standard 2016 should have been installed on your machine as standard during the configuration process.

Are you able to test with that?

IT

It works fine for my Office 2016. These users have the desktop apps for o365, and we don’t have this version to investigate if this version is problematic.

Me

Would you be able to provide a list of users that are currently having this issue?

IT

No, these are our customers.

Me

(I knew he wouldn’t care about people’s details because obviously IT only deals with our staff. I could sense this response coming…)

We only support and manage the software for internal users.

If customers of the business are having issues, it would be up to Support to identify the issue and then find out what version of the software the customer is using.

We have the installers for versions from 2010 to 2016, so if Support or yourself find out which version is required, we can probably work out a way to install and activate this if the situation required it.

IT

DOES THIS GUY EVEN READ. I WANT o365

Users have complained to Support. Support have logged the bug and it’s come to Development for investigation. I’ve picked it up. I’m logging a ticket for myself because I need it to recreate the issue. Then I can fix the issue for our users. I don’t get why it’s so difficult for IT to understand. I think he was just trolling.

I eventually asked my line manager to get involved, and suddenly, IT fully understood the situation. The licence was promptly assigned. It’s strange how fast work gets done when people with authority get involved.

The Becky Special

Becky has worked at the company for several years as a Senior Software Tester. She occasionally does stupid things so I’ve written a few blogs about her. To be honest, she isn’t that bad when it comes to manual testing, but she isn’t technical at all; which then leads to funny mishaps.

I think she does try hard to get involved, but often has a hard time grasping even simple concepts. She seems to forget things too. There’s a few occasions where she has asked a question and stated “I’ve never come across this before”. Yet, if I search Slack, I can find the last time she asked it 3-6 months ago.

Here’s a collection of smaller stories that weren’t interesting for a full-length blog.

Interruptions

One thing that Becky likes doing is acting like she agrees with people. She often does it in an incredibly rude way.

For example, Mick was giving a detailed explanation, and while he was talking, Becky was like  “yeah… yeah… yeah, yeah… yeah”. What made it even more funny is when Mick finally finished, she went “ooooh” as if she was surprised.

On a casual/non-work chat, James was informing the team on Best By vs Use By dates shown on food.

James: “Best before means..

Becky (loudly): “Yeah! Yeah!

Then, because James got interrupted, someone else diverted the conversation. I knew roughly what he was going to say, but other people on the call may not have, and could have found it really interesting.

I get really frustrated when I am trying to explain how to recreate a bug, or the impact of it – so she really needs to understand in order to do her job – and she is talking over me with her “yeah, yeah, yeahs”. I don’t believe she can take the information in when she is constantly saying “yeah” while you are still talking.

Profiler

Becky found a client-side issue and I was trying to investigate the code to try to understand what was happening. After a while, Becky comes up with an idea:

Becky: “shall we use the profiler?

Me: “what sort of profiler?

Becky: “oh, I dunno! I was thinking SQL Profiler

Me: “It’s nothing to do with SQL

Becky: “ah right, yeah

I was really perplexed when she suggested using a profiler. I thought she was going to suggest something amazing like an advanced debugging tool, but no, she was just saying some words and hoping for the best.

Wrong Server

“Some help if possible…I cannot connect to the Application server within SQL Management Studio, but I can remote to it with no problem. I can however connect to the Database Server using my windows login through SQL Management Studio. Does the App server require admin credentials? TIA”

Becky

No, it doesn’t need special credentials, the problem is that Application servers don’t contain databases. A Database Server can be connected through SQL Management because it has databases. It’s in the name, really. 

Any server can be connected using Remote Desktop Connection. SQL Management Studio requires Databases.

Criticising Becky

I’ve had a few calls with different colleagues recently, and instead of giving me a standard greeting and then start discussing the topic at hand…they start the conversation with a rant about Becky.

They have been helping her prior to my call. Their statements have been similar to “god, she is such hard work”, and “I have repeatedly told her what to do, but she didn’t understand – so I ended up doing it myself.”

There was one exact quote I wrote down. I thought it was hilarious.

It’s difficult to come to terms with how useless she really is

The Fabulous Holiday

Becky: “did you enjoy your holiday yesterday?

Alison: “Actually, it was sick leave

Becky: “Fabulous

I was convinced that Becky didn’t listen to her response.

Are You Aware?

Becky added me to a group chat with a few people. She asked

Are you aware of this issue?

There was no previous context, and the chat didn’t have a title, so all I had to go on was her question.

I respond with a “shrug” emoji because I have literally no idea what she is referring to. After a few minutes, she hadn’t responded, so I thought I’d make it clear just in case she didn’t come to the realisation that she hadn’t sent a bug number or description. So I said 

“I assume you are referring to a recent meeting you assume I was in, or have added me to a group conversation and assumed I can see the previous chat history

So she responds

Sorry, I thought you were aware

I facepalm, then headbutt the desk.

Box Ticking

When we have a version of our software to release, the “patches” get stored on a server. However, the server was full which was preventing the new release from being created. This was scheduled to be signed off that evening, ready to be pushed to production tomorrow. We have a tool that can view the list of patches, and you can easily delete old versions you don’t care about. Just tick the checkboxes and click the “deprecate” button.

A few hours after I was aware of the issue, a Manager requested help. We point out that someone just needs to tick some boxes and click a button. He then posts an angry response.

“If all that needs to happen is ticking a box and clicking “deprecate”, I’m really struggling to understand why we’ve been totally blocked since this morning? 7 hours of time was absolutely wasted. Now I have to go and somehow explain this to the Senior Management why we are not signing off tomorrow!?

Angry Manager

I see this as a rhetorical statement, because obviously, he is really angry. However, Becky chimes in with:

“you have to make sure you tick the correct boxes.”

Becky

I was in tears. Absolute hilarity.