Side Rants: Music Hipsters

Just for a change, here is a non-development blog.

I once was talking about music with my brother and ranted about someone claiming their music taste was the best and they kept on hyping up obscure bands. It seemed to me they just liked them because of their obscurity, and then trashed any band that was popular.

My brother responded; “damn, I hate those Pitchfork hipsters”.

I asked him what he meant, and he told me about the music review website Pitchfork. They tend to cover music outside the mainstream eye (apart from Kanye West for some reason), and my brother said he knows loads of people that listen to obscure bands, plus Kanye West, and also think their taste is elite. A weird coincidence.

Music is all about having your own opinion, but yet there’s loads of people that just accept the music that plays on the radio. Then there’s a large group of people that are very anti-radio, yet just follow Pitchfork instead. Ironically, they are just doing the same thing and following trends, but then pretending they’re not a sheep.

At work, a guy keeps hyping up how cool his music taste is. He does listen to quite a range of stuff; a combination of obscure rock bands, electronic/indie-pop, and hip-hop.

One day, I take a look at The Needle Drop aka Anthony Fantano aka Melon, and noticed many of these obscure and cool bands that they love have been reviewed by The Needle Drop; and reviewed highly.

It seems we have a Melon Hipster on our hands.

Today, he starts ranting about how bad Green Day’s new album is; “Father Of All…”.

Melon Hipster hadn’t listened to Green Day since American Idiot, presumably after that his music taste “matured”. So what makes him listen to “Father Of All…” when he hadn’t listened to 21st Century Breakdown, Uno, Dos, Tré, and Radio Revolution?

Well, The Needle Drop had just reviewed it, hated it, and gave it a ridiculous score of 0. Melon Hipster had listened to it just to trash it.

I’m not saying it’s a good album (I haven’t heard it), but listening to an album once and then ranting about how bad it is isn’t an honest opinion. Echoing the “opinion” of a media outlet or social media influencer doesn’t make your music taste cool either.

How To Assign A Bug

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

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

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

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

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

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

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

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

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

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

“What email thread?!”

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

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

Absolute farcical.

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

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

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

Mini Musing #4: Amnesia

Colin sits down next to Senior Developer Tim.

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

Brilliant. Sometimes it’s like a comedy show.

Window-dressing The Codebase

We have a report analysing our code that does the usual static analysis checks like Code Coverage, “Code Smells” etc.

One team boasted how their report was 100% code coverage and 0 Code Smells; a perfect score.

I thought it was strange because over the previous 3 weeks, many people had pointed out the many bugs their project had. If they do have 100% code coverage, then they aren’t testing the right things. Zero code smells seems suspicious too.

I had a little peek at their repository to spot any suspicious activity. One of the recent bugs stated “we have run out of switch statements”. Obviously, to us software developers – that is a very funny statement to make. What he meant was, they have a huge switch with 30 conditions and the report flags up switch statements that exceed 30 conditions. This is a “Code Smell” because it implies its a bad design.

You could address this warning by:

  • rewrite a large part of it to implement a better design
  • do nothing. The warning still flags it in the report.
  • suppress the warning so the report doesn’t show it.

The developer decided to make a code change, but didn’t bother with a better design. His new switch had 30 statements, but the “default case” then called another method which had another several conditions in it. It gets rid of the warning, but it makes the code more harder to read; so he has made it worse. Suppressing the warning keeps the code readable, but you will still be perceived to be fiddling the report.

Looking at other recent check-ins, the team had “temporarily” suppressed warnings and then logged Bugs to address them later. This is definitely fiddling the report. It makes the report look good, but increased their backlog of work, and wasted time. They could have done meaningful work and let the report do its job with reporting accurate figures.

Then they are highlighting their teams “success” to the managers. The managers don’t look much further than a report, so they are happy.

Just follow the instructions

There’s a team who chose to set-up a generated report every time a code build was triggered. This report will show the usual static analysis checks like Code Coverage, “Code Smells”, bugs etc. It was encouraged that other teams should set this up too; so we were told to contact Rory who was leading this initiative.

I took responsibility for setting this up for my team, so I contacted Rory who sent me a link and said “just follow the instructions”.

I look at the instructions and they seemed to be for setting up a new instance of a Report server, rather than making your build process utilise the existing Report server. Common sense told me he had sent me the wrong link. I asked him again.

He reiterates: “It’s really easy, just follow the instructions”.

I felt Rory was messing me about, so I asked another colleague who was also setting it up for his team. He told me that with Rory’s link, there was only one link within that page which showed you some sample configuration. Every other step listed wasn’t relevant. Yup, Rory was messing me about.

Once set up, you then get a “permission denied” because Rory needs to give your team explicit permissions to contact the Report server. Of course, even though I told him I was setting it up at the start of the day, he hasn’t bothered adding me to the authorized users. Instead, he then wants me to send a request on his Slack channel before he will grant me access.

The thing is, several other teams also needed to set it up, and they went through a similar process of being messed about.

Why didn’t he write some custom instructions? Most of the configuration could just be copied from one team to another.

Also, he always waited until teams were stating they were getting the “permission denied” before granting them access. Why couldn’t he just add them when they initially requested the instructions?

Absolutely infuriating.

Different Git Server

After being on a new project for a few months, Beavis is told he has to fix a bug in the old system. Now, both codebases are stored using Git source control, but they are located on different servers. Other than the initial connection, accessing them is the same, so if you are using the command line, the commands are exactly the same.

Beavis, a Senior Developer states that he has the code checked out from months ago, but it will be now out of date, so he needs to get the latest changes. He then says “do I need to create a new branch to get the latest code? And if so, do I create it on the server and sync it down, or create it locally and sync up?”

Beavis, it’s the same process you have been doing for the last few months. Sync to get the latest changes, then create a new local branch for your bug fix to go in.

In the end, I think he asked another developer who doesn’t understand Git very well and Beavis ends up cloning another copy of the code.

Facepalm.

Fighting His Corner

A few months back, there was a decision between two technologies, lets say it was a debate about Docker and Kubernetes. It was decided to proceed with Docker.

A manager, John said that he has instructions “from above” that we must use Kubernetes. Another manager, Jane seemed to protest about it even though it wouldn’t be anything to do with her. I was confused by this. It seemed really out of character and she didn’t even know the reasons why Kubernetes was dismissed. So it’s not like she actually had an opinion on the matter.

Anyway, further debates were had between John and a Senior Developer, and then I heard the Developer say that “John must go talk to Roy” – who was the major influence on the decision against Kubernetes.

Aaaaaah! that explains it. Roy is Jane’s boyfriend and she was defending his decision. That’s why she seemed belligerent.

It seems to be becoming a bit of a trend that people are supporting their friend’s ideas, blindly supporting a technology just because it appears trendy, or using unsubstantiated claims to support an idea.

2020 Vision

Recently, we have had a few meetings where Senior Management have given updates of the plans for the year. I always come out of these meetings non-the-wiser since they just talk buzzwords and marketing jargon. To me, it just translates to “we are doing work to improve our products”, but yet they ramble on for 45-60 mins.

I wrote down some words and phrases from the meeting. So here are the plans/vision/roadmap for 2020:

  1. interoperability
  2. driving efficiencies
  3. minimise the pipeline
  4. bringing on-stream
  5. embedding the modules
  6. mobility strategy
  7. rolling enhancement program
  8. put us in a strong position as we go through 2020
  9. decoupling the need for multiple products
  10. gain focus
  11. add value and retain customer base
  12. technical debt being addressed
  13. a step forward in innovation
  14. marketplace acceleration
  15. improve discoverability
  16. improve sign-up flows
  17. laying the architecture down
  18. building into propositions
  19. specifically aligned with the digital proposition
  20. product portfolio
  21. leverage across different markets
  22. release the roadmaps imminently

Doing Admin

Beavis, a software developer, was supposed to be helping out running manual tests since the Testers were behind on their work. That day, he was working at home and posts on Slack that he has “network issues” so was unable to test. He could have picked up some development work instead, but he didn’t bother.

So for his stand-up update, he says he was just doing “general admin” which I reckon meant he was chilling out at home.

A Tester explained to him that when they work at home, they remote onto their work PC, then connect to the test system from there. It’s a bit of a workaround but it’s what everyone does.

Unhappy with this workaround, Beavis decides to log a ticket with our IT Helpdesk.

A few days later, Beavis is supposed to be helping out the Testers, but is working from home again. Yet again, he posts on Slack that there are still “network issues”. A Manager challenges him on it, and he says he has logged a ticket, but it hasn’t been addressed – so he can’t help. The Manager tells him to remote onto his work PC, which is a known workaround.

The next day, for his stand-up update, he said he ended up doing “general admin” again like tidying up his C drive, and he was also doing “personal development”. So completely defying the Manager and other Tester’s advice.

He isn’t the first person to use the “doing admin” excuse. It’s hilarious when you think about it. How can you claim you spent 7.5 hours creating new folders, or sending files to the recycle bin? Even more ridiculous when you have already made that claim in the days prior.

Playing Dumb

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

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

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

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

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

“how do I find my user?”

“click the Find button”

“where is that?”

“In the menu, first button”

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

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

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

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

Beavis and Butthead

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