Atalasoft DPI

We use a software library from Atalasoft in our product to allow users to add annotations to PDFs.

One of our Indian developers posted on Slack to ask a question about a bug he was assigned to fix. It was quite hard to understand what he wanted but it sounded like the quality of the users PDFs were lowered to a point that they were blurry and unusable.

Hi Everyone, Here is my doubt was more of a generic one. In Document Attachment Module, I’m trying to attach a PDF. The attached PDF gets depreciated in the doc viewer.. After analysis came to a conclusion that, the Atalasoft Viewer we are using Document Attachment viewer should pass only with 96dpi(dots per inch).

However in the Atalasoft Documentation itself was given that inorder to increase the quality of the document inside the Document Viewer of Atalasoft we need to pass on the default or hardcoded resolution as attached.

With respect to this have attempting a bug in which need to fix this depreciation not in a hardcoded format.

Is there any way to calculate a PDF file’s DPI through its file size. (Note: Since PDF file was vector based and doesn’t posses any information related to dpi).Can anyone please guide me on this ? Apart from hardcoding and passing on a resolution value.

After struggling with it, another developer started working on it, but then went on annual leave so yet another developer took over. None of them had put much thought into what they were doing because when I asked them to explain the code, they couldn’t seem to. I then googled the code and found it on the Atalasoft website. https://www.atalasoft.com/kb2/KB/50067/HOWTO-Safely-Change-Set-Resolution-of-PdfDecoder

using (var annotateViewer = new AnnotateViewer())
{
    annotateViewer.DataImporters.Add(new Atalasoft.Annotate.Importers.PdfAnnotationDataImporter { SkipUnknownAnnotationTypes = false });                
    using (var pdfDec = new PdfDecoder())
    {
        pdfDec.RenderSettings = new RenderSettings { AnnotationSettings = AnnotationRenderSettings.RenderAll };
        Atalasoft.Imaging.Codec.RegisteredDecoders.Decoders.Add(pdfDec);
        SetPdfDecoderResolution();
    }     
    
    annotateViewer.Open(filePath);                
    var printer = new Printer(annotateViewer);
    printer.Print(printerSettings, documentName, printContext);
} 
 
 
static readonly object pdfLock = new object();

private static void SetPdfDecoderResolution()
{
    int standardResolution = 300;
    lock (pdfLock)
    {
        foreach (Atalasoft.Imaging.Codec.ImageDecoder rawDecoder in Atalasoft.Imaging.Codec.RegisteredDecoders.Decoders)
        {
            if (rawDecoder is PdfDecoder)
            {
                //By default PdfDecoder sets to lower resolution of 96 dpi
                //Reason for PDF depreciation
                ((PdfDecoder)rawDecoder).Resolution = standardResolution;
                return;
            }
        }
        Atalasoft.Imaging.Codec.RegisteredDecoders.Decoders.Add(new PdfDecoder() { Resolution = standardResolution });
    }
}

The code instantly stood out for being convoluted because we are creating a PdfDecoder called pdfDec, then instead of just setting properties on it, we add it to the RegisteredDecoders, then call our SetPdfDecoderResolution which loops through the decoders to find the one we added. If it can’t find it (which surely is impossible) it will add one.

I was talking to a Lead Developer about a completely different bug fix, and he says

“People just don’t think about what they write”

Lead Developer

So I decided to bring up this Atalasoft problem…

He said 

When I saw the lock I wanted to ask, “Which Stack Overflow post did you find this on?”

Lead Developer

So I told him they got it from the Atalasoft website!

So they had blindly pasted this Atalasoft code in without thinking. They could just set the Resolution property in the existing code since we already create the object; so already hold a reference to it. If this code can mean we can add multiple decoders (which you aren’t supposed to do), then we could create a method similar to SetPdfDecoderResolution where it checks if there is a decoder or add one if none exists. Then we ensure all the correct properties are set. 

They need to think

Lead Developer

I think the problem the Lead Developer had with the lock is that you use lock when you want to guarantee that only one thread is accessing a resource/section of code at any time; but this code wasn’t used in a multi-threaded context. So by blindly pasting in code without thinking, they were adding redundant lines and creating confusion. 

The actual fix was just

private const int highDotsPerInch = 300;
pdfDec.Resolution = highDotsPerInch;

But to reach this outcome, it took 3 developers to look at it, then 2 to review it. 

Ultimate Code Review Guide

A few years ago, I was talking to my manager about how we have a lack of people that like to perform Code Reviews, and it needed to change. He said since I had gained a reputation of being a good code reviewer, maybe I should do a presentation. I said it probably wasn’t that easy to come up with something generic and it needs a lot of thought. Maybe I would attempt to write a guide one day. Over the years, I have bookmarked a few blogs, collated some notes and ideas; but never put them together. So here is my attempt.

What Does Code Review Mean?

When a software developer has code they think is ready for Testing, they need to commit these changes to the main branch. Before this happens, there is often an approval process by their peers. This is the Code Review. The Github terminology is Pull Request. I’ve always found that to be a strange name.

Andy: 
pull requests?! 
since when do we use that term? 
Me:
when nerds go dating

I suppose you could say the aim is to attempt to perfect the code. But “Perfect” is not defined;  does perfect code even exist? The goal is to always write better code

There’s the 80/20 rule of Project Management which states that 80% of the feature can be written in 20% of the time; but then to perfect it, it then takes the remaining 80% of the time.  Sometimes you have to be pragmatic between programmer effort and actually delivering features on time

Code Reviews are a great opportunity to learn either as a reviewer or the reviewee. Receiving questions, suggestions, or instructions from your team members help you learn about the programming language, design patterns, common practices, alternate ways of approaching problems, or learn about the actual domain. As the reviewer, you are practising critical thinking and essentially debugging in your head which is a skill you will be doing every single day; since more time is spent reading code than writing code.

We all benefit from an extra pair of eyes. Sometimes you think you have written some great code, and keep reading over it and think it is fine. Then another team member glances at it and spots improvements which you agree on. I’ve seen plenty of smart developers write poor code which I know they would flag up if their colleagues wrote it.

Looking at Code Reviews helps team members gain context on other pieces of the code base. Having more awareness of what code is changing gives you a headstart in fixing future bugs when you know exactly where to investigate.

Code Reviews take time, and time is money. Formal reviews are costly; that cost has to be justified by the nature of the software project. Delaying new features and bug fixes can have an impact on users, but also other team members due to higher code churn causes merge issues when it is checked in. The longer code changes stay in a branch, the more likely you run into these merge issues.

Readable code

I have heard some developers say “reading code is way more difficult for me (than writing)”. Given that programming actually involves more reading than writing, then I think developers that struggle to read code need to be questioned! 

Since code is read many more times than it is written, you need to write code that is easily read by humans. If we were writing code just for the computer, we’d be writing in binary. Programming languages are meant to communicate to humans first, then computers after that. Although you don’t want to be too verbose, if you are optimising for the fewest lines of code; you are probably optimising the wrong thing.

Tone of your comments

The art in reviewing is to flag all possible problems, but you need to be careful how you word comments because finding problems in someone’s code can be seen as a personal attack, and people can feel like you are questioning their coding abilities. Reviewers can easily come across as condescending and demoralising their team members. The aim of the review is to improve the code, and grow your team member’s skills. It’s not about the reviewer’s ego or a chance to show off.

However, developers should take pride in their work, so attempting to submit some code that took no thought probably deserves a wake-up call. The severity of bad code can differ between systems. Does the software involve the potential loss of life (e.g. a medical device, vehicle safety system) or the handling of millions pounds of assets? Or is it a simple command-line utility that your colleagues use? In these severe situations, I can understand how reviewers lose their patience and write brutal comments. See Brutal PR Comments section.

The reviewer often holds a senior position, but could also be on the same level as the author. Regardless of any power dynamics, you need to bear in mind the author may have way more context and be involved in other meetings about the work; leading them to write the code in the way they did. Given that possibility, it’s better to phrase comments as questions rather than stating something with authority. Instead of “You should do it Y way” you could say “Can you talk about your reasons for choosing X? In most cases I’d use Y, is there a reason not to here?“. This approach comes across as more collaborative and friendly. In the case your suggestion was correct, they should realise when they try to answer. In the case that you are wrong, they can explain the additional information they have; and so all participants can learn.

You don’t always have to be negative as well. You can even add comments to add praise, or to admit that you learned something by reading their code. A bit of positivity helps negate any negative tone you had in previous comments.

Reviewers are empathetic that the recent joiner might not be aware of all the coding guidelines especially ones that are informal ones (not written down anywhere). Reviewers are also well aware that a new joiner is still ramping up with the codebase, and won’t be up-to-date with conventions and functionality.

Where To Start:

Sometimes I just dive straight into the code and start reading. Sometimes this can give you the best judgement to whether the code is clear or not. If it isn’t immediately obvious, or the code looks/”feels” strange, then I will try to gain more context. I read the Title, I read the description provided. I look at the linked Bug/Requirement and read the information that the developer had, and understand the problem they were trying to solve.

To get an overview of the change, you can glance at which files were changed/added/deleted. Sometimes reading the folder names gives you more context. Are you looking at client or server code? Are there database changes? etc. Do the files match up with what you expect; maybe they added a file by mistake. Maybe they added some temporary “hack” they made to test their code and haven’t deleted it.

Read In More Detail

Two questions to keep in mind are

        • How could I improve that?

        • What could go wrong?

You can review it by two approaches: readability and functionality.

If you can’t understand that code now, in one year you won’t get it either. If code is hard to understand, then it is harder to change, and more error prone. An easy thing to look for are typos, unclear names (“Variables with intent”), ambiguous names, wrongly named code.

Small functions are easy to read, are less likely to need code comments, and also easy to test. You can look for large functions and consider if they can be broken down. 

If there are code comments, are they needed? Do they add value? Comments are good to explain hard-to-read code, or weird design decisions the author made because you can’t think of a better solution. Maybe there is a way to make the code more readable without the comments.

Does the code conform to your “coding standards”. An example can be casing eg:

  • // camelCase
  • // PascalCase
  • // snake_case
  • // kebab-case

Your team may have other rules about styling such as:

  • “returning early from methods”, 
  • using certain syntax,
  •  Keep argument list small.

However, if a given piece of syntax should never show up in your codebase, you should really add an automatic “linter” rule that will either flag it, or automatically fix it. It’s a waste of time to make this a manual process and it doesn’t provide a ton of value. You could say “if it’s not worth it to add the rule; then it’s probably not worth it to highlight it in the code review either”. Not all things can be linted though such as coming up with good names for variables/methods/classes. 

Sometimes, you may have a recommendation that should not prevent the code from moving forward, but you want to note anyway. Marking these things with a prefix such as “NB” or non-blocking can be a great way to flag a small annoyance that the author can ignore if they don’t want to fix now. You might do this if you don’t feel too strongly about the issue, or think it’s not worth holding up the change. You always need to remember to be pragmatic.

The functionality approach would be considering code for how it meets the requirements, as well as “non-functional” requirements like scalability and security. Is there any code that is redundant or duplicated? Are there any obvious bugs like the classic Null Reference or Index out of bounds? You could also ask yourself “How would I have done it? Is it my way better? Could that logic improve the current one?” 

  • Has the person added any Unit Tests, and if not, can they? If tests have been deleted, is this the correct thing to do?
  • Does this change impact another system?
  • Are errors handled correctly?
  • Is the functionality over-engineered? Are there new third-party dependencies that are unnecessary?
  • Are they using a design pattern incorrectly?
  • Does the feature cause problems as the number of users scales? It might work on their machine, but will it work in live?

What should I do when I don’t know the language of the code?

There can be scenarios where you don’t know about a certain coding language or technology, but you have to review it. You can make it clear that you have limited knowledge before making comments. If there is no automatic linting on the code, a good starting point is the superficial review: look for typos and well-name of variables. Try to ask questions so you can learn, and also check their understanding. Sometimes asking questions gets them thinking and they find flaws in their own code. 

A related point to make here, is that if someone is writing in a language they aren’t fluent in, they can write against the convention. We had a developer writing C# but was fluent in C++, so we often see him write If statements backwards like: “if  (false == value)” which is a c++ naming convention.

“If you’ve ever seen Java code written in a C++ style or vice versa, you’ll know what I mean. I’ve previously referred to this in terms of speaking a language with an accent – you can speak C# with a Java accent just as you can speak French with an English accent. Neither is pleasant.” – Jon Skeet

Approve/With Suggestions/Reject

Once you have written your comments, you can set an overall status of the review. The terms differ depending on the system (ADO/GitHub etc) but it generally follows Approve/With Suggestions/Reject.

It’s possible to select an overall status that doesn’t match your comments.

 Andy rejected the pull request
The change is implemented perfectly, I’m just thinking we could alter the design slightly to provide better flexibility.

One developer explained his process of what he selects. So he can Approve, but also leave comments. But that is a different message from when he uses the “With Suggestions” and leaves comments.

The way I do code reviews is as follows
· Just comments – I’m starting a conversation on the change, and will Finish it later, usually I am expecting you to reply, so feel free to reply to my comments. I usually choose a “finish reason” after discussion.
· “Looks Good” – just check it in.
· “Looks Good” + Comments – just check it in but I had something to say.
· “With Comments” + Comments – there are minor things, style/formatting that I'd like changing, please make where appropriate (I can be wrong) and check in. I don't need another review.
· “With comments” + No comments – I am agreeing with someone else’s comments, or if I was first, I probably clicked the wrong button - check with me for clarification.
· “Needs work” + Comments – Please make the suggested changes and submit a new Code Review.
· “Needs work” + No comments - Agreeing with someone else’s comments, or if I was first, I probably clicked the wrong button - check with me for clarification.

Brutal PR Comments

John
If you want something done, do it yourself.
Yesterday at 10:06

John
Well, this shows that you did not even attempt to OPEN the DB Utility Tool, let alone test via the DB Utility Tool. It would crash opening this.
Line 351 | 5 hours ago

John
I have not reviewed any of the C# code, I expect it to be as depressing as the DB code though.
5 hours ago

John
What the hell is this doing in here?
Also why have you stopped inserting the ONE important thing from this trigger - the change to the organisation!
Line 101 | 5 hours ago

When To Do A Project Review

When it comes to merging an entire project, this can consist of hundreds of files. Despite being reviewed by team members, the final merge will be reviewed by an Expert. We have tried to get Experts involved early in the projects but since it can take a long time and the deadline can be far away, they aren’t inclined to do it. Then when you want to release it in the next few weeks, they will review it and dump loads of comments on it, blocking the merge.

“This is taking a long time and there are quite a few problems with it, nothing that can’t be fixed in a week or so, but some things that should have been flagged up by someone / thing before it gets to me. This process has to change.” – Expert

You probably need to ensure that each team has an Expert Reviewer in the team, so that quality reviews are done throughout the project. We often didn’t have teams structured in this way.

“they need to stop having teams that don’t have at least one person who knows what they’re doing” – Dan

One of my colleagues wrote the following about this issue. He often gets blamed for holding up projects when he is being asked to review with limited time. Any feedback he gives then blocks the project, and if he doesn’t review in time, then he also blocks the project:

Mike’s Pull Request (PR) ideas

For the most part we are doing a good job with pull requests, but occasionally I feel we can do better. I’ve thought of some useful guidelines, that will ensure quality, again most people are following these, so great job, but please keep them in mind PR Guidelines

Your team should be self-sustaining: 

  • As a developer you should always be able to send your PR to someone in your team for a thorough review.
  • If you’re regularly having to pull in external resource to review your code, you should make your team leader/scrum-master aware, so they can discuss this with resource managers.
  • Code should always be reviewed internally before someone external to the team is added to the review, this ensures that the external reviewer only sees code which has survived the initial review pass.

If external expertise is required:

  • Let your team leader/scrum-master know that expertise is required, identify the person with expertise and contact them to let them know you will require their time, preferably a sprint in advance, so they can discuss with their team and prioritise time in the next sprint.
  • Your PR is not “urgent” unless its SLA is at risk of expiring.
  • You are not to refer to external reviewers as “a blocker”. If external expertise is required, then it is an essential part of the development process, and they are only seen as blockers due to poor planning.

Draft PRs are not very useful to external reviewers, since you can only comment on them: not approve, but they’re great for sharing day-to-day progress updates between remote developers.

They should be used to update your team’s senior developers and technical architects on your progress, and receive feedback.

I would say in a well-oiled team, that developers should share code each day, by some mechanism that makes it visible to their seniors for feedback, this ensures valuable short feedback-cycles and is the most cost-effective way of ensuring quality during development

Respect the reviewer

I think a key takeaway from this idea is that you need to respect the reviewer. They are kindly dedicating their time. You also need to understand that the review process is there to improve code quality and not just a box-ticking exercise.

I find that sometimes people create a review, then instantly message you about it – even though you are often notified through alerts you have set up, or will check your review list when you have free time. Being nagged is not nice.

There have been times where I have submitted comments then am messaged a few minutes later asking to re-review. If you ask that quickly, then I know that you didn’t even build your changes never-mind test them to see if they work. Should I really approve something you took no care with? (Maybe a 100% unit tested solution would mean that this is possible though).

We also usually have a rule that 2 people need to review, so even if I approve it; then it still cannot go in, so I hate being nagged to approve when there is time. Sometimes code needs more thought to consider if there’s more aspects to it than initially thought. A rushed review isn’t a quality review.

Making statements like “please approve this, it needs to be released tomorrow” isn’t good for the reviewer. I want to be able to review it properly, leave comments as I wish, and even Reject it if I really don’t think it will work. 

Conclusion

If you see reviews as just a box-ticking exercise, then it defies the whole point of the review. It really needs buy-in throughout the team. If you want quality and continuous improvement, then support the review process. If you want speed, then it can be sacrificed at the expense of quality, and other benefits.

The code review process has a wide range of benefits and outcomes: teams see improved code quality, increased knowledge transfer within and across teams, more significant opportunities for collaboration and mentorship, and improved solutions to problems.

References:

https://dev.to/camilaleniss/the-code-review-guide-4gfo

https://laurieontech.com/posts/code-reviews/

https://softwareengineering.stackexchange.com/questions/422479/how-can-i-defend-reducing-the-strength-of-code-reviews

Shiela’s Wheels Renewal

I always hate talking on phones and I always think that some companies’ policy to “auto renew unless you phone up to cancel” takes advantage of that mindset. My Home Insurance is with Shiela’s Wheels and they auto-renewed last time at an increased cost (even though I would have another year “no claims” bonus so would expect a discount).

It was approaching the date of renewal, and I thought I probably needed to call them to cancel. However, I received a letter

“Due to our renewal criteria, we’re unable to renew your policy”.

No explanation given. Very weird.

I go on their website, and my account shows that it is set to auto renew. There was a message saying that it will auto-renew, and there should have been a link to see my new quote – but the link was disabled.

So is it set to renew or not?

I used their live webchat, and after “checking my account” for 5 mins they confirmed it wasn’t set to auto renew. So I told them that it shows as auto-renew on my account page. They then disabled it for me. I thought it was weird that they were so happy to disable and not try and keep me for another year. Don’t they want my business? I then ask them why I cannot renew, since I still am unaware of what the problem was.

Thanks for looking to renew with us, it’s great to hear you want to stay with us for another year. We won’t be able to renew your policy this year. This is due to an upgrade of our internal system and we’re sorry that this has impacted you. You can visit a price comparison website to get a new policy quote. Your cover details and how much you paid this year are available in your insurance schedule in your Account to help you create a like-for-like quote and compare your price. You can also be assured that a new esure quote will not be higher than any renewal quote we would have offered you at this time.Thanks again for choosing esure. We can’t wait to see you return.

How bonkers is that? They cannot renew existing customers in their new system, and are confident that if I go to a price comparison website, then their prices should be competitive so I could come back. Surely they have to pay a commision to the price comparison websites, and there’s a good chance I won’t come back.

As it goes, I went to a price comparison website and didn’t even see Shiela’s Wheels/Esure on there, so they have lost me as a customer.

Recently, I have been making jokes with my colleagues about how bad we write our “User Stories”.  I joked about some user stories for Shiela’s Wheels new computer system:

As an existing customer,
I don't want my policy to be renewed
because the system has been upgraded

As an existing customer
when I ask to renew
I want to be told to take my business elsewhere

I’ve also been playing around with AI (Bing Copilot) quite a lot recently and keep testing it out.

 

I gave it the instruction:

“I contacted my Home Insurance company about why I couldn’t renew with them. Their response was <insert quote from above>. Write about how ridiculous it is that upgrading a system means that they are unable to renew their policy.”

Funny – Blog Post – Long

In the whimsical world of insurance, where logic often takes a backseat to the mysterious workings of "system upgrades," we find ourselves in a delightful conundrum. Picture this: you're cozied up with your favorite insurance policy, dreaming of another year of uneventful coverage, when suddenly – bam! – you're hit with the "it's not you, it's our internal system" breakup line.

It's almost comedic, isn't it? The idea that a company, entrusted with the oh-so-serious business of insuring our worldly possessions, can't figure out how to keep a customer due to an upgrade. What are they upgrading to – a system that only accepts carrier pigeons? Are they swapping out their computers for abacuses? One can only imagine the boardroom conversation: "Folks, we've got two options – renew these policies, or play with our shiny new system. I say we go for the shiny!"

Let's not forget the helpful suggestion to visit a price comparison website. It's as if they're saying, "We've enjoyed taking your money, but why don't you go see if someone else wants a turn?" And the assurance that a new quote won't be higher than the renewal quote they would have offered is the cherry on top of this farcical sundae. It's like a restaurant saying, "We can't serve you dinner tonight, but rest assured, if we did, it wouldn't have been more expensive than last night's meal."

The silver lining? This situation provides a perfect opportunity for a humorous blog post or a stand-up comedy bit. Imagine the laughs you could get with lines like, "I tried to renew my insurance policy, but my company was too busy updating their system to take my money. I guess I'll just wrap my house in bubble wrap and hope for the best!"

In the end, while the situation may be frustrating, it's also a reminder that sometimes, life throws you a curveball that's so absurd, you can't help but laugh. And who knows, maybe that laughter is the best policy of all. So here's to system upgrades and the unexpected comedy they bring into our lives – may they always be as entertaining as they are inconvenient.

More Colin

In the early days, I wrote many blogs about Colin, a Senior Developer who was constantly writing bad code, cutting corners, and saying dumb stuff. After going through some old chat logs, I found a few stories that I don’t think I covered in the blog before:

Two Days For Nothing

Me 13:06:
Colin asked me for help. He says he has spent 2 days on his Work Item
No changes were needed; next!

Dean 13:06:
haha what's the Work Item about?

Me 13:07:
he was baffled by everything. He was creating a template with “Last Entry” field and he was like "why isn't it showing anything"
I said "your selected record is empty"

Colin just accidentally checked in a changeset – not just a file, but everything

Me, in dismay

Misleading Braces

Usually you use braces to group together blocks of code like for an If Statement, or Methods. Colin put his logic on the same line as the “if”, but then used a brace under it. So it looked like the brace belonged to the “If Statement” but it actually did not. We weren’t even aware you could just randomly put braces around code like that.

if ((!criterianValueSets.Any() || hasConcepts)) return hasConcepts;
{
//other code here
Me 10:12:
what a sneaky return. I'm surprised you can have a { after a return like that

Dean 10:12:
so what does the { even mean here?
like why is that code block in braces if it's not related to the if statement?

Me 10:12:
just groups together a random bit of code
I guess technically it is the else

Dean 10:12:
so can you do that wherever you want?

Me 10:12:
I was wondering that
you would have thought code analysis would moan even if it is valid

Dean 10:14:
you can, weird, and it affects the scope too...
is that legacy code where you found it?

Me 10:15:
nope. Colin. always Colin

Node Resolvers

Colin didn’t know about the Accept and Cancel properties on a windows form. His mind was blown

Colin said there were multiple Node Resolvers and he was stripping out Nodes from one of them…then a minute later he says there are only 1 Node resolver and he wasn’t stripping out Nodes. Now Steve is confused because he was calling Colin’s code and was expecting it to strip them out

Open closed principle

Me 15:12:
Colin is making a bit of a fool out of himself, showing a lack of knowledge of programming concepts
I said to him
“do we really need 3 separate methods for this? what about 1 method with a switch?”
So he simply replied “Open closed principle”
So I explained he was actually violating that principle by writing it the way he did.
“If there was a new Node system, you would have to change this dialog. It doesn't matter if you do my suggestion or leave it as it is. To conform to the open closed principle, surely you would need to pass in an object which can return the string. That way if a new Node system is added, you would add a new Node system object, and this class wouldn't need to be touched.
Anyway, merging the 3 methods would be neater”

Dean 15:13:
Urrrgh

Me 15:13:
I also slagged off that class he wrote before
“I reckon that the guy who came up with Polymorphism would be in tears if he saw this class.”
Colin had replied “Is that a complement ? I do not see any problem with it .”

I then emailed him with how to write it, and he now realises I am right

Dean 15:14:
That's good

Bugged Mindset

Colin always gets annoyed when I find a bug in his code.

But when testing miss something he loves it, even though it’s out in live and therefore it looks bad for all of us.

He’s not happy I have logged two bugs for his provenance story

NodeSystemCompatibility

Colin wrote a few similarly named methods but they did slightly different things but it wasn’t clear when to call them, and some returned a different value than what you would expect.

Me 12:45:
CheckNodeSystemCompatibility , IsNodeSystemCompatible
what is the difference?

Dean 12:45:
Lol

Me 12:45:
but don't call IsNodeSystemCompatible for documents, you need CheckDocumentForCompatibility
and CheckNodeSystemCompatibility has a switch that calls different methods and then negates them
case FolderItemTypes.DocumentTemplate:
return
!IsNodeSystemCompatibileForDocumentTemplate(selectedItem);
so if it is compatible, CheckNodeSystemCompatibility returns false
I think we should just delete the branch and pretend it didn't happen

Dean 12:50:
Hahahahaha
Why are they overcomplicating things??

Me 12:53:
they want bugs. it's not even unit tested

Dean 12:57:
What?!

Health and Safety

Me 14:08:
Colin has a wrist rest on the windowledge and it has melted

Dean 14:08:
ha

Me 14:08:
the gooey stuff has dripped down towards the plug sockets
bit of a health and safety hazard
meanwhile, he also had a hot chocolate hidden behind his monitors that stunk of sick

Dean 14:10:
nice

Me 14:13:
Colin claims he got that drink this morning
a bit worrying if the machine is dishing out sick

Me 15:22:
Mel reported Colin's wrist rest incident
the handyman dude is here to save the day

Dean 15:23:
thank god

Multiple Attempts

Me
is this correct? ...we can copy folders if there is one item we can copy, regardless if there are loads which it can't copy?

Colin
my mistake. should be the otherway round. Will change this to "!documentItems.Any(di => di.CanCopy)"

Colin
correction. documentItems.Any(di => di.CanCopy.Equals(false)); lol

Colin
documentItems.All(di => di.CanCopy). sorry my brain isn't working.

Call It Twice

Me 16:15:
bool canCopy = NodeSystemHelper.GetActionsWithProvenance(selectedItem: SelectedItem) != null && NodeSystemHelper.GetActionsWithProvenance(selectedItem: SelectedItem).CanCopy;

if the returned object isn't null, create it again and check a property
classic Colin

Dean 16:18:
Wtf; that's melting my head
i don't see how you can take any enjoyment out of development writing code like that

Christmas has come early

Me 16:18:
seems Colin has left us with 36 failing unit tests
Christmas has come early

Manager 16:19:
want me to get him to sort them out?....

Me 16:19:
are you going down there and punch him in the stomach
Manager 16:20:
gonna stove his head in!!....

No Unit Tests

Me 13:22:
Colin fixed a bug
“Fix bug where protocols created pre-version 1.5 shows N/A rather than the correct value”
On the code review:
“Me
unit tests?
Colin
Not failing”


oh that's ok then. Just fix a bug and don't cover the missing scenario
WHY DO I WORK HERE?
Dean 13:22:
Why would you not write one??
Me 13:22:
it may fail if you write one 😀

No Root Cause

In one part of our application, we always have problems where you select some data in a grid, then the menu bar refreshes multiple times. 

This time, there was a bug involving a menu option not becoming enabled until you hover the mouse over it – which was very strange.

Colin then decides to fix this new issue by adding another call to refresh the menu. Brilliant. It already flickered many times – let’s add another flicker!

The lead developer questions this change, and asks him what the root cause was. “This code is complicated, so I didn’t investigate”. Brilliant, totally lazy.

Luckily another developer stepped in and provided the proper fix.

If you don’t understand how the problem came about, then you could end up adding “hacky” code to make it work. But this just pollutes the codebase with more bad code and can cause more confusion and make the codebase harder to diagnose future issues. Good developers don’t cut corners like that.

Employee Profiles: Michel

One of our colleagues is a very distinctive character. He seems to love meetings, and getting involved in stuff that doesn’t concern him; which makes people think he is just looking to get out of work. However, even though some of the words he uses sounds like he could be blagging, if you think/check what he is saying carefully, he actually is extremely knowledgeable.

He also loves telling stories and talking about his personal life. He loves all things Thailand, so does Thai Boxing, used to be married to a Thai woman, and still goes there on holiday. He loves talking about food, cars, dogs, nutrition, gym, will often start sentences with “ironically”, and will often end sentences with “you know what I mean?” which makes many out of context quotes sound amazing.

You know what I mean?

Joshua 16:55:
how many times does Michel say you know what I mean?
Me 16:56:
The ironic thing is, I know exactly what you mean
  • ironically, it’s all feathers in my cap, you know what I mean?
  • I don’t even know what that is, you know what I mean?
  • I ask them, “do you speak Thai?” and some of them don’t, ironically
  • people don’t realise I’m as good in the role as I am, you know what I mean
  • the irony of it is, is that I didn’t know my MOT had run out, you know what I mean?
  • your chest is a big muscle group, you know what I mean?
  • the irony of it all is that she has her two fingers strapped up and she is a lesbian
  • yesterday I got a takeaway for no other reason that I was a bit peckish
  • you’ve got to be insane to fight a top level Thai with hemp wraps, it is suicide
  • I knew if I’d have stayed at home, I would have just vegetated on the sofa, you know what I mean?
  • it’s a colour printer and it does 5000 sheets, do you understand what I mean?
  • the thing is with wireless; is that you don’t have to be stood next to it to print, you know what I mean?
  • have you ever eaten polystyrene?
  • imagine a 3 year old kid sat on your lower body while you are asleep
  • I had to stop two of my gangster mates abducting him and leaving him out on the moor
  • it’s got a public get but a private set because at the end of the day you don’t want it to change, you know what I mean?
  • my body responds different to carbs, you know what I mean?
  • I’m multiskilled, you know what I mean?
  • The new camera interests me a bit. Do you know what I mean?
  • you get 3 or 4 hours with him on the morning, because he goes home, you know what I mean?
  • There’s an unknown; do you know what I mean?
  • it wouldn’t just stop working; you know what I mean?
  • I never like to mix business with pleasure, do you understand what I mean?
  • my heart was in my mouth, do you know what I mean?
  • I flummoxed him, you know what I mean?
  • If I don’t go out, I don’t see anybody, you know what I mean? 
  • there’s a reason why police use Alsatians , you know what I mean?
  • you can’t even drive around that corner at the speed limit. Actually you can, because I do it everyday. It wasn’t wet but it wasn’t dry, do you understand what I mean?

Michel about the old days:

  • it’s just how they were, you know what I mean?
  • at that time, it was just normal, you know what I mean?
  • in the 1960’s, no one gave a damn, you know what I mean?
  • there were no trains, no buses, you know what I mean

Walking Off

Andy: 
Michel said something yesterday like "I asked Graham to explain it but he confused me so I just walked off"

Me:
Yesterday, Michel also said something like "I'm here to speak with Dave, but he is gonna blag my head with advanced computer science"
sounds like he went around speaking to people then walking off

Andy: Michel likes taking responsibility for everything. They could have just logged a ticket for IT to turn the computers back on. There were a few that powered off

“I had to drive all the way to the office and plug them all in. Took most of the morning”

Michel

Michel On Leadership:

  • When it comes to leadership, some people are really good at it, and others have to try
  • I didn’t get to my position by going out of my way to fix environments. I broke them and then fixed them, you know what I mean?
  • we all fall foul of an environment not being patched, you know what I mean?
  • I am subtle as a brick
  • delegate if you can
  • everyone is human, and we all mess up
  • Shall I tell you when to worry? when I am worried
  • I type so fast, I miss out entire words
  •  as long as the output is correct, the process is up to the team: you know what I mean?

King of All Excuses: Part 3

I’ve written blogs about an employee which I referred to as Beavis, due to his grunt laugh. He is a complete liability and I don’t know why we didn’t sack him ages ago. His constant excuses why he cannot work are obvious lies. He came up with loads when we worked in the office but then when we started worked from home during lockdown, he had a whole new set to go through. 

I understand some people can have some bad luck or them or their family members can have health issues, but is it possible for him to be hit with such frequent illnesses and issues?

Check out Part 1 and Part 2.

Here’s around 3 months of excuses.

  1. Mobile phone has problems so can’t use authenticator to connect to VPN
  2. Broadband is too slow
  3. Needs to take his wife’s car for an MOT
  4. Laptop broke
  5. Antibiotics for his dog 
  6. Drove down to the village to see the extent of the floods 
  7. Optician appointment 
  8. Broadband not working
  9. Cracked Laptop Screen
  10. Oven repair
  11. Daughter’s sports day
  12. BT Broadband outage
  13. BT Broadband outage again, and phone tethering won’t work either.
  14. Builder is looking at some “snagging issues”
  15. Throat glands have all swollen up and I’ve lost my voice
  16. Emergency dentist work
  17. Check up following dentist work. Will take an hour total travel, waiting, then dentist time. So at least 2 hours.

A colleague was saying that his line manager isn’t very active so therefore he can send him a message saying that he isn’t coming in, then Nigel won’t have replied to accept his request.

“he uses Nigel’s inability to reply to his advantage”

Isobel: "I have been in contact with Beavis who did the work but he has had to take the day off unexpectedly"
Andy: "is it actually unexpected at this point?"

 Other People’s Excuses:

“randomly I’ve just got to move some bales of straw. back soon”

Zoe 

(one of the top manager’s wife, so gets a bit of leeway to do what she wants):

  1. cleaning dining table
  2. having a shower
  3. in garden having beers

Derek

(also notorious for slacking. I suspected the occasional lie from him too):

I’ll be working from home today, a leaky shower box is causing an unintended indoor water feature, so I’m hanging around for a plumber. Don’t forget to skype me for the stand-up 😉

I’m working from home today. Sorry I haven’t emailed sooner, I had some problems initially remoting in as my computer at work had a dicky fit.

Neurodiversity In The Workplace: Part 2

Introduction

I recently wrote a blog about internal blogs and statements posted by my employer about Neurodiversity. Then I thought I’d collate a collection of stories of people doing bizarre things at work. No idea if people were actually “neurodiverse” but given the claim:

“Diversity is important for any organisation to develop, and understanding neurodiversity comes with huge benefits.”

I like to imagine an entire company where everyone behaves erratically. For the most part, I don’t think there would be benefits; it would be more like a comedy show.

These stories are about Daniel. I always loved the way his mind worked so I often asked him obscure questions. Often when I went on Stack Overflow for programming questions, I saw interesting questions in the Hot Network Questions, most of which were from the WorldBuilding one where people ask questions to help them write fictional stories.

Most of these are taken from chat logs with my colleagues but some were in person:

Doing Work

Jim: "Are you shopping right now?"
Daniel: "No, I'm looking at climate change solutions"

This feels like a nicer solution just for avoiding wanton suppression, don’t suppose it matters at all though

Daniel

haven’t got too much done to be honest, calm before the storm, pounce before the calm yet outwardly frenzied lasceration  

Daniel

The Floorwalker Game Idea

Me 09:16: 
"If you’re having trouble accessing the system, please contact your floorwalker"
sounds like a quote from a Sci-Fi film
what the hell is a floorwalker?
Daniel 09:17:
hey, i used to be a floorwalker, we're a proud race
Me 09:18:
they should be in your game
then later on, you meet the mutated race Roofwalkers
you need a different strategy to take them down
Daniel 09:18:
or vice versa
that's actually a really great idea, i'm having thoughts

Badmington Health & Safety Risk Assessment

Me 10:45: 
have you done a risk assessment for badmington?
Daniel 10:45:
yep, the highest risk involves public humiliation
other risks include black hands from decaying rubber on the racket handle
net entanglement
Me 10:46:
and damaged knees from sliding on the floor like an idiot
Daniel 10:46:
direct impacts by shuttlecocks have been known to actually improve the recipient's health, so no worries there
I don't think anyones ever ended up on the floor before or since your session, so it can be marked as a non-coverable act of god or other deity

Jake Has Left Rumour

Me 08:58: 
I saw Jake on the bus this morning
Daniel 08:58:
I saw him buying a rutabaga last thursday
Me 08:59:
you said that he had gone
Daniel 09:00:
perhaps I said that he was going?
or perhaps I was passing along snippets of unsubstantiated rumour
it's me - I am the office gossip! the one you'd least suspect

Bath On Mars

Me 15:18: 
can you take a bath on Mars?
Daniel 15:19:
does sitting in a vat of gaseous nitrogen count?
Me 15:19:
as long as it has cleaning properties
http://space.stackexchange.com/questions/17817/can-you-take-a-bath-on-mars
Daniel 15:20:
glad you've kept looking at that, I haven't for a while
and yeah, why wouldn't you be able to aside from all of the obstacles to getting a bath (which depending on your circumstances on earth can be just as much of an obstacle)
Me 15:21:
yeah. His idea was wrong

Could a Halfling Warlock Ride a Pseudodragon?

Me 12:06: 
Could a Halfling Warlock Ride a Pseudodragon?
Daniel 12:07:
Depends how pseudo it is, fat man in a dragon suit?
Me 12:07:
http://rpg.stackexchange.com/questions/82821/could-a-halfling-warlock-ride-a-pseudodragon
turns out its an Imp
actually, I think he is saying either a pseudodragon or an imp
he rides the dragon but the imp carries him
Daniel 12:15:
simultaneously?
also... of all the questions!
Me 12:42:
Andrew hates warlocks, so I specifically searched for warlocks and chose the best question
probably looted his treasure
Daniel 12:47:
but they're shamanistic holymen who have cast off the shackles of material wealth!
Me 12:50:
they still like going on quests
Daniel 12:58:
true true, i uh they enjoy a good quest now and then

Would a full body diamond armor and sword guarantee survival and victory against a medieval battalion?

Me 15:55: 
http://worldbuilding.stackexchange.com/questions/54324/would-a-full-body-diamond-armor-and-sword-guarantee-survival-and-victory-against seems that the answer is a massive NO
Daniel 15:46:
depends how you use it, just for goodness' sake don't wear it
Me 15:48:
I think it would compliment my body type
Daniel 15:49:
bipedal?
Daniel 15:53:
again, I don't see why wearing it would be the sensible option here
Daniel 15:55:
flail it around like a really blunt mace
from as far away as possible
Me 15:55:
using armour as a weapon
Daniel 15:56:
the best defense etc

How can I prevent the collapse of the Soviet Union?

Me 13:25: 
How can I prevent the collapse of the Soviet Union?
Daniel 13:27:
Hmm, give the people working dishwashers?

Animals with unsaved homework

Me 15:31: 
I used to get people at uni with ctrl+alt+backspace
it rebooted our linux pcs
Daniel 15:31:
uh, awful
Me 15:32:
then you leg it when you find they didn't save their files
Daniel 15:32:
haha, we used to live like animals, animals with unsaved homework

Can Klingons swim?

Me 15:12: 
Can Klingons swim?
Daniel 15:13:
that's a bit niche
their wrinkled heads take in water and upends them?
Me 15:13:
I haven't seen much Star Trek, but I don't recall them finding lots of water
Daniel 15:14:
make war, not swan dives
Me 15:14:
so does anyone know if any of the races or crew can swim?
Daniel 15:14:
it must have come up
over 4000 episodes
Me 15:14:
that's actually a better question. If a Klingon goes swimming, does their skin flatten out instead of wrinkling
or do they wrinkle even more
Daniel 15:15:
ha, well do you know why ours wrinkles?
the best theory is an evolutionary quirk to provide better grip when in damp conditions
Me 15:16:
is it an unsolved mystery
Daniel 15:16:
so their skin might turn into the texture of a suction cup
I might read the stopping time by speeding it up inside a bubble one... but they're a bit thin today

My high masquerade standards

Me 15:24: 
are you off to the Christmas party?
Daniel 15:24:
not this year! helen's got other plans and damned if i'm going solo
Me 15:25:
omg
Daniel 15:25:
hang on, someone is calling for something work-related...
Me 15:25:
women
Daniel 15:43:
too right, besides it wouldn't meet my high masquerade standards
the last one i went to had a proper gladiatorial bouting arena, on high pedestals
and sumo suits
and i made the mask myself
and did a backflip off a pedestal while in a fat suit wearing a mask
Me 15:50:
ha

The Kidnap

“I know what it’s like to be dragged from the street and put in a dark room”

Daniel 

he said you can buy it like an experience day. You drive fast cars, Daniel gets locked up

Sentient spider

Me  15:44:
How would a very large, sentient spider communicate?
Daniel 15:45:
in a language we don't understand

Programming Mould

Me 10:32:
“I know this will be heresy and probably scandalize the computer programmers reading it, but if you just have a couple tiny spots of mold on top of the jam, or on the jar above the jam, you can even completely remove the mold (generously - i.e. excise a little bit extra all around the moldy patch too), & the rest of the jam can be still good.”

Is there some obscure reference that I don't get?
Daniel 10:33:
Sometimes I don't even remove the mold, I just eat around it
Me 10:33:
If someone can decipher that, it would be you. What has mold got to do with programmers?
Daniel 10:33:
I'm guessing it's a metaphor
legacy code can have good bits

Bossom raises no eyebrows but your own

Me 16:41:
there is a contact on Workplace called "Annys Bossom"
Daniel 16:41:
that raises no eyebrows but your own~
Me 16:42:
but she doesn't exist in outlook
she cannot be real
Daniel 16:42:
oh flip, that's an outrage!
Me 16:42:
I think we have been hacked
Daniel 16:43:
hmm, it does sound like a security flaw, thankfully there's no real impetus for security nor anything useful to be gained
annys bossom has cleaved through the security
Me 16:44:
ha
Daniel 16:45:
i've tried searching for other likely breaches, but I can't be certain some of these aren't actual names
I will go home and ponder this anon
Me 16:46:
like Jim Cockburn?
Daniel 16:47:
like the port?
port never lies
once hugh jass shows up we're doomed - have an evening!

Why are Daniel’s standup updates different?

“yesterday I did some work, and today I presumably will do more”

Daniel

Story Pointing

We were “story pointing” our work, and had to score the size a “1,2,3,5,8,13”. Daniel chose “6” which isn’t valid. Matt asked him how he came up with it, and he said “I generated a random number and multiplied it by 8”.

Random Question

I was in the kitchen with Daniel, and Tracey walked in. Daniel turns to her and says “What was the name of the woman who discovered DNA?

Your Feature Is Broken

Me 09:48: 
I don't think the Implied consent feature is working
Daniel 09:49: 
well, there's a decent chance it is, but I shall magnanimously hear you out (after my stand-up)

Neurodiversity In The Workplace: Part 1

Introduction

I recently wrote a blog about internal blogs and statements posted by my employer about Neurodiversity.

I thought I’d collate a collection of stories of people doing bizarre things at work. No idea if people were actually “neurodiverse” but given the claim:

“Diversity is important for any organisation to develop, and understanding neurodiversity comes with huge benefits.”

I like to imagine an entire company where everyone behaves erratically. For the most part, I don’t think there would be benefits; it would be more like a comedy show.

These stories are about several people but I will merge them under one name, Russell. Some of these are taken from chat logs with my colleagues:

Bitshift

Me:
fact from Russell: due to cosmic radiation, about once a month, you get a bitshift in your computer
Andrew 15:05:
i'm gonna knock him out

Mobile Phone

Russell purchased a cheap phone from China. I think it had a normal sim slot and he had a micro sim. He placed his sim card in there to try it out, then wanted to get it back out. He ended up slashing and poking at it with some scissors to get it out, eventually cutting off large bits of the plastic; basically trashed his new phone. Andrew told him that he could have gone to a phone shop and they would have got the sim card out for him. No idea what he was thinking.

In a similar cutting story…

Cutting Contactless

Me 11:39:
Russell has a contactless bank card, but he has cut it so the contactless won't work; says it is anti-fraud protection
Andrew 11:39:
you can just ask for that to be switched off at your bank. Idiot.
Me 11:40:
I was just gonna ask you if you can do that…or you can chop part of it with scissors
although surely you can't use it if you do that because won't staff refuse it because it's been tampered with
and I'd imagine cash machines won't like it either
Andrew 11:41:
it's just like the mobile phone situation again

Leaving Card

Me 09:56:
Matt said that Russell wrote a question in Steve's leaving card, asking him if he has an expansion for a computer game
Andrew 09:56:
LOL
Me 09:56:
didn't even sign his name, just a question

“That’s a cat’s paw I drew under my name in your card. Just to clear up the confusion” –

Russell to Phil

Playing Pool

Russell said to Matt “Do you fancy a game of pool in 30 seconds?”. Why not just ask to play right now, or not specify a time?

Car Park

We were having a department meeting about some upcoming redundancies. At the end, the manager asked if there are any questions. Russell speaks up

“when are the lines in the car park going to be repainted?”.

Everyone laughed and Russell was baffled. It wasn’t the time or the place to ask such a question.

Feeding the Birds

Russell once went to the reception desk to ask if he was allowed to feed the birds that were near the car park. Not sure why the receptionist was the authority on the matter, but I presume he was wondering if there was some kind of health and safety violation if he did so.

Computerise the Dental System

Russell is asking Matt about the Referrals code, and after 10 minutes, he reveals it is because he is going to the dentist but they are using a paper system, so he wants them to use a better system. I’d love to know if he actually spoke to the Dentist or the Receptionist to try and get requirements to design them a new computer system.

One day, the CEO came to visit and walked up to random people to ask them more about their job and what things are good/bad at the company.

Me 15:32:
Russell is talking to the CEO, this is gonna be good
Matt 15:33:
Oh god
He had to speak with Russell
Please record it
Me 15:33:
I hope he asks about the car park
or about dental appointment bookings
Matt 15:33:
Ha ha ha
Me 15:34:
or about feeding birds
all high on the agenda
Jim told the CEO he had no idea if we were Team A or B
straight in there with his knowledge
looks like Russell kept it short and serious!
Matt 15:36:
Ha ha ha
Honestly - poor CEO does not know what he has let himself in for

Who are they?

Russell was the sort of person that was quite oblivious to others. There were well-known colleagues that had been there for years, and he would ask who they were. There was a surreal moment where he asked “do you know where Rob sits?” when Rob had been in our team for a few months and sat 2 desks away. I don’t get why he was confused. Rob wasn’t at his desk at the time, but that shouldn’t have made him go crazy.

“I breathed in a nut”

Russell

Real World Research Studies

Me 10:57:
Russell has just gone to a meeting called "Real World Research Studies"
Andrew 10:57:
Is he joining us in the real world then? 🙂
Why weren't we invited?
Me 10:58:
dunno, he was dressed smart as well
Andrew 10:59:
How strange. Maybe it's a special project for the elite.

Timekeeping

We work 9-5, but allow people to work an hour later/earlier if they wish. I suppose we are more flexible on authorisation of your manager. Russell had some really strange working patterns.

Me 14:09:
Russell is here!
Melissa 14:09:
(chuckle)
Me 14:09:
he comes in when he wants
Melissa 14:10:
dont understand why you would work 2-10
bizarre shift
Me 14:10:
maybe he was raised by owls
Melissa 14:10:
hahahahaah
or bats
maybe he's batman
Me 14:11:
we have never seen them in the same place together, so it's a possibility


Me 15:27:
Russell has just turned up. What a legend!
Derek 15:33:
at 15:27?!
Me 15:33:
I hope he goes home at 4pm
Me 15:35:
I do wonder what he does throughout the day. Do you think he just woke up?
Derek 15:36:
I have absolutely no idea!
he's as crazy as a coconut that lad!
did you know he lives on a barge!?
Me 15:37:
he used to, I think he just rented it for a year or whatever
Derek 15:39:
ahhh - i wondered maybe he spent most of the day trying to get through the locks on the canal (rofl)


Me 15:06:
Russell is here!
Andrew 15:17:
he's just got in now?
Me 15:18:
Yeah

Me 13:53:
Russell didn't turn up to the pub for the meal, so Mel brought the meal back
it's still on the plate they served it on
Andrew 13:54:
Haha, did Russell order food but just not turn up?
Me 13:55:
yeah
Andrew 13:55:
what a pellet

Mispronunciations

have you heard how Russell says integer?
Me 14:29:
no
Andrew 14:32:
pronounces the 'g' as a hard G
like egg


Me 13:08:
"we are opening and closing so many wuh-pf windows"
Andrew 13:08:
Russell ?
Me 13:08:
yeah
loves pronouncing things different for the laugh
Andrew 13:09:
like when you only ever see something written down then embarrass yourself when first attempting to pronounce it in public
he's got it for everything

Unprofessional Language

Me 12:11: 
Russell is doing a demo to a group of people. "It's the same sort of shizzle..."
Andrew 12:12:
haha
he's an idiot
Me 12:12:
I don't know who these people are, but using words like "Shizzle" is crazy
Andrew 12:12:
ha are they external people?
Me 12:13:
not sure. They are dressed quite casually. Some of our managers are there as well

The Stand Off

Another peculiar character, Jeremy just leaped out of his chair. This startled Russell, noticeably jumping in his chair. They then just stared at each other for a good 15 seconds.

Email Etiquette

Russell starts off an email with “Hi guys” then proceeds to justify his use of the word “guy” and opts to use the word “squadron” rather than “group”.

“Hi guys (I don’t think there are any girls in the particular squadron I worked with this week – please correct me if I’m wrong though):”

He can also sign off emails in style

“Have at it.“

At our office canteen, the canteen owner used to sell really random stuff in addition to meals. Some people suggested they were stolen goods which I thought could actually be possible. Russell seemed to feel inclined to purchase whatever he was selling. One day we got a mass email saying taht Russell had bought chocolates to share. Not because it was his birthday or anything like that, just that the canteen was selling Guitar Hero 5.

“I had to buy a tub of candy from the canteen because I felt bad that I couldn’t buy guitar hero off them due to the fact that I already own a copy of that particular title.”

Me  08:49:
Is that a contender for Quote Of The Week?
Andrew 08:50:
that is pretty good
Me 08:51:
how can you feel bad about already owning something someone is selling
you would be poor if that was your mentality when you walked into a shop

He also apologised for sending a mass email where he had a massive box of Maltesers chocolate that he wanted to share.

Me  15:16:
is Russell really sorry for sending an email about Maltesers?
it will just happen again and he won't have learnt his lesson
Andrew 15:17:
he's off his head him

The Blair Witch

Me  15:17:
did I show you that photo where he is just facing the wall
Andrew 15:17:
lol no
omg please send
Me 15:18:
it was like he was acting out scenes from the Blair Witch Project
when he noticed me, he just walked further down the stairs and did it again
Andrew 15:21:
send me the pic
Andrew 15:28:
LOL
have you shown josh?
Me 15:28:
can't remember if I did
Me 15:33:
has the photo freaked you out
Andrew 15:33:
it's amazing
what the hell goes through his head?
why are there so many weirdos here?

The Shoulder Roll

Russell demonstrated the difference between a forward-roll and a shoulder roll. We were on the second floor of the office and it caused a loud bang. I messaged Andy who was on the floor below:

Me 10:15:
"I always worry about shoulder-rolling just in case there's broken glass on the floor" - Russell
did you hear a banging sound a few minutes ago?
Andrew 10:15:
hahaha yeah
Me 10:15:
the bang was Russell giving a demo of the roll
Andrew 10:15:
what the hell is shoulder rolling?
it sounded more like a hammer
Me 10:16:
Instead of doing the classic forward roll which starts on your head, the shoulder roll is a faster roll leading with your shoulder
I'll get him to come down and give you a demo

In Waves

There was one time where the office was really quiet and all of a sudden, Russell shouted

“IN WAAAAAAAAAAAAVES”

He was listening to Trivium’s “In Waves”.

Sometimes you saw him air guitaring, or pounding his chest.

In a similar battle theme, he turned up to the office party with a “Viking horn” which he filled with alcohol to drink out of.

Leaving

Me 14:29:
did you know Russell is leaving?
Andrew 14:35:
Yeah, he can slap his belly somewhere else
Me 14:35:
and spin around with a grin on his face
Andrew 14:35:
ha spin around?
i've not seen that one
Me 14:36:
he did it today
Andrew 14:36:
how many rotations we talking?
Me 14:36:
I think he only did 2, but that's all you need
Andrew 14:41:
"Remember slapping yer belly as a kid?"
Me 14:42:
and bringing your viking horn to the party
Andrew 14:42:
and miming along to some unheard metal guitar solo
Me 14:43:
ha. He was air guitaring earlier

He later left to get a job in London. I’m sure he said it paid about the same as what he was getting here, but he had to travel an hour to get there. London wages should be significantly higher due to the higher cost of living. So leaving a relaxed job for longer travel time is a really strange decision indeed.

Neurodiversity Celebration Week

In recent years, my employer has been progressively promoting more “woke” issues, as well as some health-related content. Our recent internal blogs on Viva Engage have been about Neurodiversity Celebration Week.

“This week is Neurodiversity Celebration Week; a worldwide initiative that aims to challenge stereotypes and misconceptions about neurological differences. We want to use this opportunity to raise awareness of the experiences of neurodivergent employees, highlight the value of neurodiversity in the workplace, and provide tools and guidance to help all our people create an inclusive environment where diverse minds can thrive.”

I think it is a good idea to remind people that some people think differently. I’m unaware if I have anything like autism but I do often struggle when posed questions that are phrased in certain ways. When we first learned about Agile development, and started doing “Retrospectives”, some of the initial ones had obscure questions like “if the last 2 weeks were a chocolate bar, what would it be?”. My mind is just like “wut”, whereas everyone else on the team came up with an answer, even if they just chose their favourite chocolate bar and forced certain elements into it. “There were some really smart solutions to problems so I chose Smarties”. When I failed to answer many questions over the months, some people moaned that I wasn’t participating, but I just got frustrated with that line of questioning.

“These blogs perfectly highlight the fact that everybody, and how we each experience the world, is different. Depending on how our brains are wired, we think, move, process information and communicate in different ways. We all have a responsibility to create an inclusive working environment where diverse minds can thrive. Everybody should feel safe, supported, and able to perform at their best. Therefore, it is important that we firstly recognise an individual’s differences, and work to harness their strengths and talents whilst minimising the challenges they may experience”

I think some conditions do have strengths and weaknesses. As far as I know, certain types of autism can lead to some great ideas since they have a different way of thinking, but then can be awkward in different social situations. One person wrote a blog on their life and observations with autism.

Here are some key takeaways from their blog:

  • Autism is a spectrum, which means that everyone who is autistic can have a wide variety of signs and symptoms, and how it impacts individuals can differ greatly.
  • Everyone uses phrases that have subtle implied meanings. For people with Autism, the implied elements simply disappear, and everything can be taken at face value. So an example they gave was if they put a jumper on, and someone asks “Are you cold?” they would answer “no” because they are now warmer. 
  • Their responses to questions can often seem rude or abrasive, yet they were only literally answering the question they were presented.
  • If you ask many questions quickly, they will then present an answer to each in the order you gave them. They are insistent in processing all information sequentially, and will want to answer all of them.
  • Sensory overload: They despise being touched, they feel overloaded by background sounds, and will need to be alone to recharge after a long period of social interaction.
  • They often talk over people

I was looking on our Sharepoint for the additional neurodivergent resources. I came across some strange statements:

“Most neurodiverse conditions are classified as disabilities, but it is important to note that not every neurodivergent person identifies with a disability, to avoid stigma and isolation.”

Is it really possible to “identify” with a disability? Like the autism blog described, they didn’t want people to treat them differently but they acknowledge their social awkwardness, and understand others need to be aware of their traits in order to not be offended, or to try and adapt their line of questioning. I assume that is the point the statement was trying to make.

“Diversity is important for any organisation to develop, and understanding neurodiversity comes with huge benefits.”

That’s another one that needs more explanation. I think some people can come up with interesting ideas if they have something similar to autism, but a lot of other neurodiverse conditions are only negative. The way you “benefit” is to try to reduce the impact of the negatives. The statement by itself sounds like it is only positive to hire neurodiverse people, when that is not the case.

I saw a recent BBC article where the caption claimed that Down’s Syndrome is “an ability not a disability”. I get the sentiment, and that people often misunderstand the condition, but I don’t think anyone really believes it is an ability. I’ve seen a lot of this reframing in recent years: Things that were considered “mental health” conditions are now framed as normalised/part of someone’s identity, so is a positive thing that should be celebrated. Then not only is this mentality being pushed by mainstream media, it’s now being pushed from inside company culture under the guise of Diversity, Equity, and Inclusion.

The Transparent Placation of the Employee Forum

A few years ago, the directors announced they were starting a Programme to improve the company culture, and act upon feedback we had recently given them via an “Employee Forum“.

I do think due to working at home, there isn’t the same togetherness there used to be. Years ago, we seemed a close-knit bunch, but these days, I get the impression people just want to do their work and go home…although they are already home.

We were asked to give initial feedback from the scheme, and one colleague made a somewhat epically-written post, which ended up being his last.

“This “programme” is an exercise in indulging in the same old political rhetoric and transparent placation many of us have grown all too familiar with. Perhaps I have simply grown jaded and cynical, but we have corporate correspondence envisioning a future where all feel valued, and yet casual communication engenders entirely the opposite. To, on the one hand, read statements such as the above and then be told such things as “if you want better pay, get another job”, is insulting to the intelligence and dedication of employees. This, “programme”, is in fact a desperate response to the abysmal employer image the company has cultivated for years; to this day exhibiting a callous disregard for even its most dedicated employees – you reap what you sow.

In short, this isn’t a question of “focus”; rather, it’s a question of chasing each of these lofty goals with equal levels of tenacity, integrity, and humility. This “programme” is years too late and, despite a ledger demonstrating the contrary, the company has only ever proven itself to be more than “a dollar short”.

The goals outlined as part of this programme infer/suppose a complete lack of humanism in company culture and are a tacit admission of gross negligence when it comes to employees; the shoulders upon which the company stands.”

Rodger

The directors responded with predictable responses:

“this does not reflect everyone’s view of our business”

“this isn’t the right platform to raise these issues”

“we value colleagues feedback and encourage great constructive conversations”

“I can assure you that the people on the programme are thoroughly committed to making a positive difference in our dedicated areas.”

“judge at the end and not at the start”

Various Managers

I understand both sides here, they did ask for feedback and they got it. However, they don’t want something so scathing to be publicly aired. It’s a tough one though because such statements could cause people to be more confident in airing their views (which is what they claim to want), but firing him like they did will suppress people from giving true feedback.

The usual process is probably to go to your line manager, but they don’t always raise it with their line manager. Then since it has to go up a few levels of the hierarchy; the message is probably going to get lost. If you suspect that happening, do you bypass them and go higher up the chain?

It was also written a bit too poetically which meant it was hard to understand some of the points. I think there is a specific and recent issue which he was referring to, and in the following days, I did learn that an employee that had been around for 20 years or so and been forced out. I didn’t learn the reason, but that was being referenced with “exhibiting a callous disregard for even its most dedicated employees“. So I think it was coming from a place of witnessing instances of toxic behaviour and calling it out, and it wasn’t even a personal grievance; he is sticking up for fellow employees.

The obvious (or maybe I should say “predictable”) response was to sack him, which they did. But you could have actually gone the opposite way and actually let him participate in making the changes to improve the culture. I only interacted with him a few times, but he always came across as knowledgeable and dedicated.

He goes on to say others keep quiet because they need their job, although it is low paid compared to industry standards. Many roles are overworked due to restructuring and merging roles together. Managers were ignoring the problems when raised. Proposed changes in Support were predicted by many to end in failure, but managers dismissed their concerns. I have seen similar comments on Glassdoor, which is where you don’t want the feedback, since that is on a public forum, and posted after an employee has left the business.

On a quest to get some juicy content for my blog, I managed to contact him before he got deactivated:

[Yesterday 15:07] Me
have you resigned. That post is epic

[Yesterday 15:07] Rodger
No. But don't plan on sticking around long haha

[Yesterday 15:08] Me
haven't you just started in development though? or did they do the classic "we will give you half pay until you prove yourself"

[Yesterday 15:14] Rodger
Sad but true

[Yesterday 15:20] Me
They are putting my notice period up from 1 month to 3. I made the point that this is contrary to the Employee of Choice which is supposed to be improving our conditions!

[Yesterday 15:20] Rodger
Good lord, that's rough...
And yeah, certainly feels that way

[Yesterday 15:21] Me
can't remember who was in charge at the time, but he put it down from 3 to 1, stating they wanted to improve things, and now we are undoing it. Apparently Experts and Managers are on like 6 months which just seems insane.

[Yesterday 15:22] Rodger
6 months. That's ridiculous, what company would be willing to wait that long for a new employee...

[Yesterday 15:23] Me
I don't see the point of changing the notice periods. Don't people just hand over their work in 1-2 weeks, take annual leave, then mess about for the rest of it
paying an unproductive employee who doesn't want to work there is just crazy. Even if they are moving for other reasons like leaving the country, it seems like you have to then leave on bad terms. Just let them go. 1 month is enough to deal with

[Yesterday 15:25] Rodger
Indeed. Don't get the mentality at all

[Yesterday 15:26] Me
anyway, I asked Jeannette to raise it in the Employee Forum. I reckon they will just say something like "its inline with industry standards" or some corporate statement

[Yesterday 15:27] Rodger
Oh aye, wasn't expecting a response.
Just wanted the catharsis of saying it all
Thanks regardless, though

[Yesterday 15:28] Me
they will probably delete your post and not try and address it. Reminds me of the negative glassdoor reviews then Jacqui says "this doesn't reflect my experience at all"
and I think, "how do you know what those jobs are like? you are on the big bucks, probably in your own office by yourself"

<NEXT DAY>

[12:05] Me
I couldn't resist responding [my post was about lines of communication, and trying to start a discussion with others around Rodger’s points to try and diffuse the argument]

[12:05] Rodger
Thanks haha

[12:07] Me
have they actually said anything to you directly? It's good that they didn't delete your post but then I was worried they would just sack you for these outbursts. I do think you might be a bit too (passive?) aggressive, but then I reckon you do have some good underlying points that they should listen to

[12:08] Rodger
Any aggressiveness, passive or otherwise, is only because the responses to my post have demonstrated a lack of understanding and contempt.
My initial post is nowhere near anything combative...
And, no. No one has spoken to me directly. People have spoken to my Manager and others around me though...

You've raised the right questions here.
Where can one speak about these things

[12:11] Me
I think someone did say (via a question) on our Departmental Meetings that the whole "we will take it offline" response just causes these problems. If there is an official response to it, everyone doesn't hear it because it was addressed one-on-one. Then I think that's what you are also calling out, because these Senior Managers are basically implying to contact them directly, rather than post in an open forum.

[12:12] Rodger
Aye

[12:13] Me
in my standup, one guy said he had to get a dictionary out to try and understand your points. It is super poetic. It makes it funnier but I do think it probably detracts from your points

[12:15] Rodger
Fair, but it's genuinely the way I speak and I thought it best to be as erudite as possible when articulating it all; in an effort to not just be dismissed as a dribbling idiot or fool, etc.

[12:27] Me
This does sound a bit extreme to me. Then that would be perceived to be an attack on the SLT
"The goals outlined as part of this programme infer/suppose a complete lack of humanism in company culture and are a tacit admission of gross negligence when it comes to employees; the shoulders upon which the company stands."

[12:31] Rodger
It certainly is a criticism.
The company admits that its staff don't feel; rewarded, included, valued, etc. (as inferred by the programme itself).
Is that not gross negligence?
I am perhaps opining there, but it doesn't seem to me to be an unreasonable statement and I would be happy to discuss the matter if literally anyone else was...

[12:35] Me
It can be a tough one because I think most people will complain about pay regardless of how much they actually get. Then if they don't get an inflation rise, they will moan about that but they might have been overpaid. So when people do complain, it might not be a valid point. but then I have been a victim of being underpaid

I think a common problem we have is that managers see us all as interchangeable. I have only been on this project a few months but we are gonna get our 3rd PO, and we have switched architects, and there was talk about moving one of our testers to another team. How can you be productive when that happens? can't build up knowledge or team chemistry. They still see us as "resources" they can move about. Probably doesn't help if a department is called Human Resources.

[12:38] Rodger
Indeed

[12:38] Me
I find it interesting how people like me moan, but yet stay here years so we must secretly like it

[12:39] Rodger
haha

[12:40] Me
I think it is actually a low stress job, and when I've known so many people leave and then come back, it does make you think it's not always greener on the other side. I also think other jobs will give you more responsibility. So I think it is comfortable here

do you find development stressful, or were your comments about your previous role?

[12:46] Rodger
I guess I'm in something of a unique position.
My comments were about my previous role, how things are now for me (which ain't "bad", just insanely busy), and everything I've heard and seen from elsewhere in the business

Conclusion

I think the lesson here is that if you really want to make changes to culture, then you need to be open to listening to “hard truths”. So if there was a problematic manager – if an employee openly reports the problem, it shouldn’t be the case that managers stick together. The claims should be investigated and if the manager is problematic, then they should be fired and not the employee. 

I think we lost a couple of good and very dedicated employees here, and yet managers were pretending everything was perfectly fine.