Report Ideas

Our Team Lead had been hyping up how important it is to improve the statistics of our codebase. So we have a report that runs and gives you metrics about duplicated code, “code smells”, possible bugs, test coverage etc.

Our Team Lead said that Colin had some great points and would be presenting them in our meeting. 

​and Colin’s points were

  1. Can we add rules?
  2. Can we remove rules?
  3. Should we document our changes?

​Which are all basic questions and not any kind of guidance. Obviously, the answers are 

  1. obviously, 
  2. obviously, 
  3. and the majority of the time, no; that would be overkill

He also did a demo to illustrate what we can include in our documentation. The “code smell” was that there was the same assignment twice like:

somethingEnabled = whatever!=null && somethingElse!=null

otherFeatureEnabled = whatever!=null && somethingElse!=null

So the assignment logic is the same. Then he said the solution is to create a new variable. Yes, that is obvious….  but he has some timing tests to illustrate the performance difference of 0.00025 seconds. Since he has proven that this is the correct thing to do, we now must document that as the official solution.

Embarrassing. So cringey.

Then the next day, Colin was talking about his work item and said if he has permission, he would also fix the “code smells” that were declared by the reporting software. So the Team Lead asked him what the “code smells” were and Colin said “unused using statements”.

Since when did developers ever declare/ask for permission for something so trivial? We just did it because it’s obvious. Even Visual Studio tells you to do it. “Unused usings” are shown in a lighter font, and you have an icon in the side prompting you to remove them. It’s part of the Code Cleanup feature too, so you run it and it automatically removes them.

Any developer would just do these refactorings as standard. 

There’s a general rule called DRY; Don’t Repeat Yourself that means you should avoid duplicated code. We don’t need to document that any further. 

Other code smells like extra blank lines, spelling errors, unused methods; are all trivial. You don’t need to explain them. The reporting software actually has explanations and examples for all the rules anyway.

The IP

Becky: “I can’t contact my machine.”

Shows a screenshot…

  • initially pinging her machine by IP address; it is responding.
  • She tries to remote on using the machine name, and not the full address; Didn’t work.
  • Then she tries by IP, but it’s a completely different IP to what she was pinging; Didn’t work.

I reply “You are using the wrong IP”

A couple of hours later, she replies: “Nevermind I went into the office to restart it”…even though we are supposed to stay at home and not go to the office.

VMception and other Tales

We were supposed to be using a program to connect to a Virtual Machine. Some of us encountered a bug that prevented us from installing this software on our company laptops.

One developer asks

“Would we be able to install it through a Virtual Machine?”

Yeah of course. Let’s connect onto a Virtual Machine, then install some software to connect to another Virtual Machine that we actually want to connect to. Brilliant plan.

A Virtual Machine in a Virtual Machine. We could make a film about it – like Inception.

What we actually did is log the bug with the provider’s support team, and they quickly fixed it.

Chapter 2

We were given instructions on how to install this special Virtual Machine. We already have Office365 accounts, but for some reason, we were given a separate email address to use just for these Virtual Machines.

Beavis managed to make excuses to take the previous week off. When he finally returned to work, he wrote “I’ve been sent instructions; am I supposed to be configuring this virtual machine?”

<sarcasm> No, you just got sent the instructions to ignore them.

“I think it only works when you remote onto your work PC” 

Rob

No Rob, it’s literally why we are using virtual machines, so we don’t have to remote onto something physical.

Then Beavis is up to his usual tricks, delaying as long as possible just to get out of doing work. He posts on slack:

“The instructions say to log in using my new email address. Do I have to log out of my usual work email because I’m already signed in?”.

Beavis

Is that a serious question? How many websites allow you to log into them with two different accounts at once? Just log out, or use a different browser. Simple.

The other thing of note in the instructions was the 2-factor-authentication. “If you use another app like Authy then you need to download Microsoft Authenticator as well.” I guess the instructions could have just said “You must use Microsoft Authenticator”. That would have been clearer.

Another team member says “I’m getting an error”

“What app are you using?” 

“Google Authenticator”

<facepalm> (-‸ლ)

Watch Someone Drink Water

I was using the Explore feature on Steam, and came across this “game”:

Each Sale I Drink a Glass of Water : The Game

The game/experiment is in Early Access for one year and every time someone buys it, I will record myself drinking a glass of water and add it to the game. The updates with the new clips will be added each Friday. Have fun watching me drink water!

Each Sale I Drink a Glass of Water : The Game

There’s quite a lot of weird cash grabs on Steam, but I guess the phrase “Build it, and they will come” is appropriate. If you put it on Steam, someone will buy it.

It’s £2.09. Buy loads of copies and make him drown.

Meet The Team

So I’m in my new team now, and it’s pretty much like I expected. There’s one good Senior developer, some good testers, some bad testers, then a few bad developers. The ratio of developers to testers is a concern, because there’s way more testers than developers, and the standard of developers is poor.

Guess who the bad developers are? The Colins are here, and so is Beavis. Completely called it (see A New/Old Adventure).

The good thing is that I can definitely look good compared to everyone else. I did say there is one good Senior, although I don’t know much about him. He does have a good reputation in the company, so I expect him to be much better than me. He is part-time though.

The more I explain about this team the worse it gets doesn’t it? Part-time staff, incompetent developers (Colin), a developer that doesn’t show up (Beavis), too many testers.

It’s good for the blog, if nothing else.

How To Make Your Team Hate You #1

I was thinking about the colleagues I’ve legitimately despised (and it’s not just my opinion), and most of them have something in common: they have either been promoted, or told they will get promoted if they prove themselves. So here is story number 1.

When I was a Tester, I was on an important project and was pushing the time. It wasn’t my fault, it was just the nature of the project, the nature of the testing, and the fixed deadline. I always knew it would be a  tight schedule. I didn’t want to sacrifice quality though and I knew the only way I could get it out in time if everything just worked, with no bugs and technical problems, and I needed 100% concentration to prove it.

I get interrupted by the newly promoted Test Lead. He sits there for several minutes berating me for the slow progress and starts reeling off a speech about how important the project was to the company. I kept on telling him I already understood and his speech was wasting my time and delaying me further. Obviously in addition to demoralising me.

After he finally left, the Lead Developer on my team exclaimed “who the hell does he think he is, talking to you like that?”

I’d never seen this developer angry before. He always had a calm demeanor. But he was furious.

The next day, the Test Leads line manager pulled me into a meeting and said the matter had been dealt with and that will never happen again. I then realised the Lead Developer must have reported him.

The lesson here is that if you do get promoted, make sure it doesn’t go to your head. Yeah, you have to manage people, but having a new fancy job title doesn’t mean you have to go wild. You are working with people. You are still working with your old colleagues. Treat them with respect and be more understanding. I think a lot of managers lead by example and gain respect by being nice.

Case Study: Steam – Play Next

On the PC digital game store, Steam, they have been adding experimental features under the name Steam Labs. One that eventually was implemented on your main library page was a feature called “Play Next”. 

This is simply recommending games that you already own. Steam users are notorious for having massive gaming libraries of games that they haven’t even played, so this was actually a highly requested feature.

I was looking at the discussion page for this feature and found a thread called “Can you add a different metric to use besides “0 hours played”?”

Right now it looks like Play Next only suggests games that are registered to our account and have no play time. As someone who idles games to get card drops, it would be helpful if there were some other metric we could use instead, like maybe “0 achievements earned.”

So he downloads a game and installs it. Then leaves it running without playing it just to get some “cards”. Cards are just simple images that are awarded to you after you play a game for a certain amount of time. Maybe it’s a random period of time. You may get around 5 per game, but maybe there are 8 cards to collect. So you have to buy the others from other gamers to actually complete your collection.

What does he do with the cards? He either sells the cards for around 2-5p each profit, or buys the remaining cards which could cost around 12-20p (Steam takes a cut of your sales). Then he can feel proud of his complete virtual card collection for a game that he hasn’t even played.

I’m guessing he isn’t paying for his electricity.

Meanwhile, Valve, the owners of Steam are laughing. They are basically printing money and keeping their users engaged.

Maybe they should make another Steam Lab feature that actively tells you which games have remaining “card drops”. There was (or still is) a page that shows this, but it was always hidden away.

Who is a Software Developer?

The following blog Are You A Developer was recently shared amongst my colleagues.

The blog addresses Imposter Syndrome. It then reassures people they are a developer if they meet this definition:

A developer is a person who writes code.

David Walsh

I think it is a serious trivialisation of what a developer is. Several of my colleagues apparently agreed with this blog “100%”. I don’t understand how you can agree with it.

One of my colleagues not only agreed with this blog’s definition, but proceeded to say that developers and testers shouldn’t have different job titles, they should just be “Engineers”. Absolute nonsense. Not all Testers are interested in writing code. Some are interested in writing Automated Tests which requires programming knowledge, but other Testers just enjoy Manual testing which has no required programming knowledge.

So let’s address the quoted statement with some analogies.

If I cooked a meal, can I call myself a chef?

If I pull up a weed, am I a gardener?

If I paint a wall, am I a painter?

If I kick a football, am I a footballer?

It’s obvious you need a certain level of competency to be able to call yourself one of these things. If you play football in your free time, you can say you “play football”, but not many would say “I’m a footballer”, because it comes with the implication that they have an exceptional level of skill.

I was thinking you can’t simply state you can call yourself a Developer if you receive money for writing code. If it was a simple website you did for a friend, maybe you wouldn’t be skilled enough to be employed in a full time job.

Conversely maybe you make brilliant websites in your free time but you have other passions for your full-time job. Maybe you are good enough to declare yourself as a developer, but you just aren’t a “professional” developer.

What about developers that don’t receive money but only work in Open Source projects? At least the community would give them recognition, so at that point, I think they can call themselves a developer.

So it definitely seems money isn’t a factor.

So who determines whether someone is a developer? Do you self-assess? or is it when you get a certain level of kudos from your peers?

When you look at the people I often write about like Colin and Derek, are they developers? Well, they have had a job for years, and managed to get lucky to be promoted to Senior. On paper they are more successful than I, but I think you’d be crazy to imply they are at the level I am; and I’m not anywhere near the best in the company. Maybe we are all developers but there’s good ones and bad ones.

Ideally, Job Titles should reflect people’s skill but they aren’t a perfect system. But I think it is clear you have exceptional/great/ok/poor developers, and everyone else below this skill level, just isn’t a developer.

So if you have followed a tutorial, copied some code and ran it; are you a developer?

No. But keep working, and maybe you will be. Then work your way through the ranks.