Batch File Shenanigans

I was running a batch file (a script containing a series of command line commands) and it was randomly closing without displaying any errors. A developer, Lee had recently made changes to this script. I had posted a message to state the problems I was having, and he messages me. The exchange roughly went like this:

Lee: “I can help, share your screen”

Me: “You will just see it close though; there’s no errors”

Lee: “No, just share, we will make it work. I just need 5 minutes”

Me: “Oh, do you have an idea of why it isn’t working then?”

Lee: “No, I need to see what you are doing first”

Me: “I’m running the batch file, and it closes, that is all you will see”

Not sure why he claimed it would only take 5 minutes. How did he pluck that estimate out of the air? After he would see it close, he was only going to get me to try all different workarounds. That is going to take way more time than 5 minutes.

There was a simple workaround that would allow me to get on with my work: simply revert his changes and carry on.

I reverted his changes, and carried on with my assigned work. After I finished my work, I did go back and work out what was causing it. I shared my findings with Lee, who made some changes and asked me to try it out. It didn’t work.

 did have to try several different variations of the script to help him come up with the proper solution. This back-and-forth ended up taking around an hour or so. 

I definitely didn’t have time to do that when he contacted me and claimed he would just need 5 mins. I’m glad I used my intuition.

Discovering the Programming Process

An automated tester posts a blog which got loads of “likes” and comments from Managers. One example comment was “what a well-written and informative blog”.

I read it, then read it again, then read it again. I’m so confused.

He begins by explaining how they are testing an API using Postman and have a collection of tests that they need to check-in to source control. Fair enough.

Then they say how it’s a tedious process where each team member needs to download the files, try them out, then mail the developer/tester who wrote the tests with their comments, then the process repeats. 

I’m thinking “what sort of crazy process is this? This is what Source Control and the Code Review process were invented for”. You have side-by-side comparisons (“current file” to “changed file”) so you can see what they have changed. You can write comments directly alongside the code for them to read and make changes.

I must be missing something. 

Then he explains that they needed to decide where to save their files. The Postman software encouraged them to store the files in Postman’s cloud service. “No, we aren’t gonna do that!” he writes as if it is some kind of security risk to save your files online. Instead, he is gonna save them online in GitHub. I send him a message about it, and he admits that I’m right, it’s just that he felt Github was more secure. 

My loyal readers will be thinking “Hang on, haven’t you come across this scenario before?”. Oh yeah, here it is: GitHub Actions Are Secure. Yet another staff member chatting nonsense to sound good to the Managers and hype up GitHub. “We are taking security seriously with our decisions! This software is more secure because I said it is”. Has GitHub hypnotised everyone or something? They must have some propaganda machine. I’m not saying it isn’t secure, but claiming everything else isn’t as secure without evidence is just weird.

He then says how they wrote their own test library in Javascript which slowed them down because you don’t get great autocomplete support in the IDE. I’m thinking “maybe use Typescript”. He then explains that after writing their own library, they discover Jest; the most popular Javascript testing library. Hang on, how did you overlook the most popular testing library?

He then concludes that it is best to:

  1. Use GitHub for source control
  2. Take advantage of side-by-side diffs, and publish feedback in this code review process
  3. Use Jest for Javascript Testing
  4. Use Typescript to give type-safety and autocomplete support in the IDE

Tell me something I don’t know.

Then managers are drooling over these revelations, even though this is common practice to Javascript developers and probably has been for several years. 

I want to know how much time his team has wasted messing about. Surely they didn’t start the project pretending software development had just been invented?

Social Justice Warriors and “Cancel Culture”

This is going to be a controversial one. It’s also a long one.

Many months ago, I went out seeking new development podcasts to listen to, and I checked one out that happened to be run by a group of women in the tech industry.

My opinion on the content was mixed and I did think it would be a cool idea to do some podcast reviews. However, after I wrote it, I felt that some of the criticism could be perceived as a sexist attack (because they are women), so I decided it wasn’t worth the backlash, and therefore didn’t post it.

I did listen to more episodes and I did follow some of the hosts on Twitter. However, as time went on, I saw more things I didn’t like with their behaviour.

I still don’t think it is worth naming them, because as I’ll explain, they could retaliate with their “cancel culture” attitude, and I really don’t want a tirade of abuse from 80 thousand people.

So in this blog, I’ll just refer to them as the SJW Podcasters.

Let’s just summarise some of my beliefs, so you can bear in mind as you read.

  • Yes, I do have a blog where I criticise people, but I also like to draw attention to the positives. Also, see the two points below:
  • I think freedom of speech is important, but I do draw the line when the speech incites hatred and can cause harm to people.
  • I judge developers on their code and attitude towards software development, and not by any bias of race/gender etc.

One criticism I had with the podcast is that sometimes they seemed to view things in terms of Social Justice, rather than just analysing the content. So for example, they were doing a book review which talked about differences between men and women in the workplace. They criticised the author because they didn’t explicitly mention that trans-women are women too. Surely it is implicit unless the author contradicted the assumption? However, later on they start talking about issues that apply specifically to biological females, which means their initial statement was hypocritical. Given that they spent time moaning about the author, essentially accusing them of being a trans-phobe; the podcast seemed to be more about Social Justice than it was about being a tech podcast. Also, they explicitly stated they lowered the rating of the book because it never used the word “transwoman” or any related words.

I can’t find the quote now, but I’m sure they wrote/said they will never have a male guest on their show because it takes away from the efforts of women. Surely if you want to promote equality/inclusivity, then you shouldn’t “fight fire with fire” and be exclusive with “positive discrimination”. What happens if a male wanted to come on the show to talk about how to get more women in the tech industry? Nope, we can’t have that can we?

The other day, a developer with 80,000+ followers on Twitter, posted a nerd joke which was a witty play-on-words on the Black Lives Matter movement. Obviously racism is like 10,000 times more important than trivial nerd issues in software development.

However, surely people are either:

  1. Going to find it slightly offensive, and unfollow him
  2. Don’t think anything/much of it, and ignore it
  3. Going to find it witty, and are happy people still can post humorous stuff in these dark times.

This joke was in no way racist, although you could say he was trivialising the movement. Whatever your stance, surely it doesn’t warrant drumming up hate to try and destroy his career.

One of the SJW Podcasters was extremely vocal about getting her followers to unfollow this guy, and no doubt they were also providing the negative comments towards him. I think he lost about 5,000 followers from the backlash, and got a tirade of abuse.

I’ve seen the SJW Podcasters gang up on other people for their tweets. What will happen is one of them will tweet some criticism, then the rest of them will join in, so it seems like there is bigger backlash. They did the same thing to this guy by targeting a director of a popular development tutorial website where the developer had a large presence. The director was quick to action the deletion of all his content, and banned him from the site.

Another development content provider saw the declaration of the ban, so also followed suit and also banned him from their platform.

Then they looked for his other online presences on major platforms and got him banned there too.

When this developer primarily finds work by his online presence, this is a massive hit to his career. People have flagged up other potentially controversial statements (more like Frankie Boyle style humour), so there is some argument that he could deserve it. However, why didn’t they “cancel” him years ago? Why now with a simple joke? Shows like South Park can be controversial too, but yet they address social issues with satirical comedy. They have mocked Social Justice Warriors with their character PC Principal.

Some responses were along the lines of “this guy has taught me a lot, who can I follow now?”. Someone was nice enough to respond with a list of their favourite developers. Who could be offended by that? Obviously the SJW Podcasters! He got a negative response, chastising him for his choices and dictates he needs to edit his post and include women and ethnic minorities. He did a follow-up tweet, including the members of the SJW Podcasters to appease her.

She then tweets a more detailed explanation directly to her followers. I was so pleased that this got a lot of backlash. It seemed like 70% of the responses were along the lines of “I follow developers based on merit, not their ethnicity/gender”, or “please do not tell me who I am allowed to promote”. A few high-profile developers also responded with messages along these lines. I thought they were quite brave for doing so because obviously, the SJW Podcasters were going to retaliate. “You are part of the problem” she tells them, angrily.

Absolute toxic behaviour.

The next day, I was so pleased to see that she deleted her tweet, but I was saddened when I saw the other high-profile developers having to debate with her followers that were accusing them of being sexist/racist.

I looked back through their recent tweets and there was another tweet by someone promoting their favourite developers. Not only did the SJW Podcasters claim it was sexist, but they also suggested they were unethical by just promoting their friends and not mentioning that fact. Now, that is quite a good point. If there is bias and you are promoting something with a commercial interest, then you should declare it. Promoting Twitter profiles is debatable because if you are promoting developers, then you are indirectly promoting their services (books, lessons, website, consulting etc). Now here is the hypocrisy… You can go to a popular book reviewing website, view the books that have been written by the SJW Podcasters and what do you see? 5 star reviews from each other without declaring that they are best friends with the author. Surely they got the book for free, and since they hadn’t declared it; that is against the website’s terms and conditions.

So let’s return to the “cancel culture” story. Additionally, on one of the posts I read that day, this tweet from well-regarded developer “Uncle Bob” was quoted.

Despite Uncle Bob stating that you should only judge the code by the quality of it, and not the author’s background, you can see the negative replies to it. There are replies telling him he “is wrong”, “please delete your account” etc.

What the hell.

I even saw one of the SJW Podcasters’ followers suggest that their next target should be Uncle Bob because that tweet “is racist” and he needs to be canceled. No dude, it is literally the opposite case.

I just don’t understand what people are thinking. People are so obsessed with being politically correct, that they are then attacking and abusing people…which is completely against what they are fighting against:

  • They want inclusivity, so they promote exclusivity.
  • They want people to treat each other with respect, so they promote abuse.

Anyone that doesn’t agree with them is declared “part of the problem”.

After the “dust has settled”, one of the SJW Podcasters’ tweets “A little kindness goes a long way”, another tweets “Take care of each other.”

Practice what you preach. Lead by example. Call out toxic behaviour (but definitely make sure it is toxic). Don’t be a hypocrite.

Imposter Syndrome

Some of the Juniors have started to discuss they feel like they have Imposter Syndrome. I was reading about this a few months back. Imposter Syndrome is about feeling like you don’t deserve your current position/achievements. It’s apparently more common with female Software Developers but can happen in other jobs, and affect all genders.

I did write my concerns in a previous blog on “hiring juniors” where I felt it was the wrong decision to hire these Juniors because we weren’t set-up to support them.

There’s plenty of days where things don’t go your way, and you do wonder: if you were a bit better; would you have made more progress that day?

I can only imagine what it is like being a Junior and not having the mentors to support/teach you. If you don’t feel like you are learning and making progress, then it is obvious you are going to question if you deserve your job. Well, I guess I have been in that position. A blog for another day.

The thing is, the requirements for these Juniors were pretty low. It’s not like they are supposed to be good developers. They were hired because they were supposed to have potential, and we would train them to realise this potential. Although we have hired them then basically just ignored them instead. Maybe they feel like they don’t meet our expectations despite them being low. I guess if they are sitting around and not really contributing, then it’s easy to feel like a failure.

I think I have experienced the opposite of the Imposter Syndrome with many developers. Colin and Derek seem to be affected by this. They think they deserve a better role, when I think they are severely under-performing in their role. I’ve probably written about that the most. I guess it is just delusion, but it could be the Dunning–Kruger effect. See this video with David Dunning.

Dunning–Kruger effect with David Dunning himself

This is where you need a certain level of knowledge in a subject to realise how much you do not know, and therefore give an accurate judgment of your own abilities. It seems a weird concept, but there has been studies on this, where 30-40% of people place themselves in the top 5%. People who are dumb are too dumb to realise how dumb they are, so they think they are performing way higher. Interestingly, sometimes people who are very smart can’t judge themselves well either – because they wrongly assume people know what they know. I wonder how much of it goes down to ego too – where people don’t want to admit they aren’t that great to another person.

Using the Build Server to test your code

I was having a nosey at Pull Requests, and I saw one that was titled “Code to get the rest of the team up and running”.

I have a look, and after he sent the initial request, there were 2 other additional fixes along the lines of “fix broken build”. The next day, I checked back and there were 7 other additional fixes, again along the lines of “fix broken build”.

9 attempts.

Clearly, he wrote the code, and didn’t test it at all. Didn’t even build it. He just submitted the code, and let the Continuous Integration build run, and fail. Then run and fail, then run and fail… repeat until we all go insane.

They do say the definition of insanity is to do the same action multiple times and expect a different result.

9 attempts.

Still can’t get over it. At what point do you realise it’s best to actually test your changes? 

I guess in his mind, he wanted to check in the code as quickly as possible so he can “get the rest of the team up and running”, but surely you have got to realise your approach isn’t working. When your “quick change” has been spread over 2 days; it is no longer quick.

I love it when people cut corners to save time…but in the end it takes 5 times as long as it would have done if they had done it properly.

9 attempts.

But wait, there’s more. Well, there will always be more because he doesn’t learn from his mistakes. 

His next set of changes was to add support to handle a new message. His colleague reviewed his code and left a comment like “this line of code will prevent the message from being sent”. Yes that is right, he is adding a new message, and the message won’t even send. Yet he is sending it for review. Obviously didn’t test it; just coded it blind like before.

So he makes the change, makes some other smaller suggested tweaks. The build fails with Code Analysis errors which he would have found if he had actually built his changes locally. You know, step 1 when you begin to test your changes, and precisely the problem he encountered the week prior with his previous change.

The reviewer makes another comment, doubting some other part of his code would work. He replies: 

“I think I will have to abandon this review and get this tested.”

Insane Developer

You know what makes this worse? He used to be employed as a software tester.