How Many People Does It Take To Design A Webpage?

We have a requirement for a 404 error page.

I asked the Product Owner if we have a design for it. Should be simple shouldn’t it? Probably has a heading, a company logo, maybe some other text.

He posts on Slack that he has had a word with the User Experience team and they are going to design it. Fair enough, although why hasn’t this been designed already? We are several months into a Web-based project.

A Software Architect then replies saying that he has put together some “findings” and will arrange a meeting with other Architects to discuss it.

Hang on! how many people are involved in a simple page design? Why does it need Architects?

The world has gone mad.

Hiring Juniors

The company I work for sometimes has problems with recruitment, because they don’t often offer wages comparable with the rest of the industry. Also, there are companies offering more money with better transport links. Instead of increasing wages, they often have the idea of acquiring unskilled workers and training them up; hoping enough of them will be long-term employees.

The thing is, although that has worked in the past, we were in a situation where we had experienced C# developers teaching Juniors C# to work on C#. Now we have the case that C# developers are expected to teach Juniors Web-related technologies like Javascript and AWS.

We have hired a batch of these Juniors from Bootcamp companies that do “crash courses”, where they learn various skills within 3 months, then they find them a proper job. Some of them I’ve asked questions, expecting them to be more knowledgable than me, and then they say something along the lines of “this is new to me, I didn’t study it”. So what are they doing their crash course on? We are hiring them for Javascript and AWS and they come here and tell us they haven’t seen it before.

The other day, one of these Juniors asked me a question, but added: “I expect you won’t know because this is new to you as well, but I don’t know who I can ask”. This is exactly the problem. How can we train them if we are trying to learn ourselves. The whole point of hiring Juniors is that you have enough Seniors to turn them into good developers and this just can’t happen with our structure. The fact that a Junior has joined, all excited to learn and start an exciting career; only to find he has little support and is set to struggle; it’s disheartening, and he knows this already.

Managers are proper proud of all this recruitment though, and even HR/Marketing have placed sponsored articles about it in a local newspaper. One article was about how one guy had all these dead end jobs and now he is employed to produce “solutions and codes”. Such strange phrasing.

Slack Police

I’ve said in previous blogs there’s a team that are extreme Slack fanboys, and will try and drum up support for Slack, and hate for Microsoft Teams.

One of their team members questioned if anyone else was having network issues because his Slack conference call was horrendous. People started replying saying that they have long since abandoned Slack for conference calls because:

A) Sometimes members of your team cannot be heard

B) The audio quality is often poor

C) There’s a limit of 15 participants.

D) Calls cannot be recorded

It’s a simple fact that Microsoft Teams is vastly superior for conference calls. You can debate all you want about the text messaging features, emoji support and layout. Arguing for Slack conference calls is just ridiculous fanboy talk.

Quickly, the chief Slack Fanboy then posts something along the lines of:

“Please don’t post any Slack vs Teams debates. I don’t want to respond to these conversations”

Slack Fanboy

But yet, this is coming from the guy that made an emoji which is “Anti-teams” and will use it against anyone that mentions Teams. He also doesn’t have to respond to conversations on Slack; he can just ignore them. He often fuels the fire, but then complains when he loses the debate.

Jenkins

There’s a developer that is a massive fan of Jenkins. I’ve never used Jenkins, but he wrote a large post about why he insisted his team migrate to it, and I didn’t understand any of it.

I found it interesting that at first he mentions moving away from AWS CodeBuild because it wasn’t clear if builds were passing or not. I don’t know how this was a problem. The builds are linked to Pull Requests and GitHub displays this clearly.

What I found more interesting is that later on, he then says that GitHub Actions is in its infancy so isn’t as powerful as Jenkins. Sure, but why were you using both CodeBuild and GitHub Actions?

Further to this, one of his advantages of using Jenkins was “Don’t have to pay for GitHub Actions”. Hang on, but you have to pay for a build sever to run Jenkins. How does that even make sense? He was running it on AWS, so was paying Amazon for a dedicated server anyway. I’m pretty sure CodeBuild and GitHub Actions are cheaper to run than a server.

He further justifies using Jenkins with the “everyone else is doing it” line. I’m not even sure if he can verify this claim, but he said “if you look at the big ,key players in the market you will ALWAYS find they have a Jenkins instance”.

He also mentions another team used to use it. Yes that is right “used to use”. Which team was it? The one he used to be in. It was his implementation, and as soon as he switched teams, his old team had binned Jenkins.

I do wish people would use facts in their proposals rather than chatting nonsense to suit their own agenda.

GitHub Actions are Secure

In a previous blog on GitHub Actions, I have mentioned how some people love trendy technology and want to use technology when it may not be suitable.

Today, I was reading some documentation a team had put together which justified why they use GitHub Actions.

A standard team will have their code stored on GitHub, and when new code is ready to be checked in (via a “Pull Request”), a build is triggered on AWS (Amazon Web Services) CodeBuild. If successful, then you can use the built code to deploy to a test system, and to the live server.

The reason specified by Simon why to use GitHub Actions was that it is “self-contained, so is therefore more efficient and more secure”.

I know that GitHub actions use Microsoft’s Azure platform, and I assumed that GitHub store their code on their own servers. So with GitHub Actions, Azure will take the code from the GitHub server and build it, whereas CodeBuild takes the code from the GitHub server and builds it…no difference at all.

Well, there could be a speed difference if Azure is better than AWS or vice-versa, but the claims of “self-contained”, “efficient” and “more secure” is all conjecture.

I did contact Simon and he used some interesting phrasing along the lines of “No idea if it is better or worse, the statement was meant to address the concerns at the time.”

What? He wrote it just to please his colleagues/managers even though it was pure fabrication?

“hey Simon, we need to set up a build process”

“OK, I’ll set up GitHub Actions”

“One thing we forgot to add, security is the utmost priority. We want the most secure tech available”

“Yeah, you cannot get more secure than GitHub Actions, I’ll show you it in this documentation that I wrote”.

“Oh wow, it is really secure”

Fictional dialogue exchange

I did try to research if my claims of GitHub having their own servers is true. This blog is quite old, but back in 2015, they did use their own servers.

“At GitHub we place an emphasis on stability, availability, and performance. A large component of ensuring we excel in these areas is deploying services on bare-metal hardware. This allows us to tailor hardware configurations to our specific needs, guarantee a certain performance profile, and own the availability of our systems from end to end.

Of course, operating our own data centers and managing the hardware that’s deployed there introduces its own set of complications.”

https://github.blog/2015-12-01-githubs-metal-cloud/

The Problematic Button

William had a problem where his form controls could not be focussed; so you couldn’t click a button. He blamed me for breaking this functionality:

“You added a button which is clickable but you disabled everything else”

I told him it was a simple HTML button with an onClick handler; there was nothing fancy, not even CSS applied to it. I hadn’t changed any other component.

I asked him how he knew it was me that broke it. I asked him if he has verified his outlandish claims by removing the button and seeing if the problem persists.

Of course he hasn’t, he just looked at who had made a change last. I asked him if he had seen it working before – since this was a new page he was adding. He didn’t even seem sure.

Turns out it was some CSS that broke the functionality, but this code had been there a while. No idea why he didn’t notice it before, but it definitely wasn’t my button.

Obsoleting Your Codebase

William sure has a knack for saying the wrong thing, leading to lots of wasted time.

His team had been using our repository to check in their example code. Our repository’s purpose is example code, so it fits nicely in there in my opinion.

He comes over to my desk and claims that developers will wonder where they need to go to find the example code, so he wants them to go to a new repository he has just created.

How are people going to find his repository if they somehow can’t find our repository?

Well, his idea is that his repository will also deploy a website with instructions on.

How are people going to find his website?

Well, he hasn’t thought of that point. He also stated that when he moves the code to the new repository, it will make our codebase “obsolete”.

I was really annoyed by this. Firstly, if you create a new repository and move all the code from an existing repository, all you have essentially done is renamed the repository (and wasted a lot of time). Secondly, why does he think his repository is more important than ours? Surely it should be agreed with the team, rather than just pulling rank and forcing his ludicrous ideas through.

I firmly put my point across and then he replies:

“I’m not making your codebase obsolete, I’m just moving my code out of it. None of your code is going anywhere”.

WHY DIDN’T HE JUST SAY THAT THEN!?

I still think it is dumb creating another repository, because now there will be two repositories to check for example code, and all the example code is currently in the same location. If a website is actually helpful, then it can be added to our repository.

Your Code Is Unstable

William sure has a knack for saying the wrong thing, leading to lots of wasted time.

William joined the stand-up and said that he needs a “stable” build of our code, so specifically wanted the Lead Developer to merge our latest changes into our “master” branch. He kept on saying our “master” branch was “unstable”.

Later on, he comes over to my desk, and I ask him what he means by “unstable” – since that implies there is some kind of crash and we didn’t know of any. He then replies:

“it doesn’t work”.

“what doesn’t work?”

“eeeeeeeer”.

He then asks another team member to explain, and his colleague ended up saying “the branch doesn’t build”.

Weird I thought, since it is a “gated build”; we can’t check in unless the build completes. Turns out the Lead Developer had bypassed the gated check and broke the build.

So we have gone from “It’s not stable”, to “it doesn’t work” to “it doesn’t build”. I don’t get how you can be that bad at communicating such a simple development concept.

Additionally, on the stand-up call, I felt it was very patronising to specifically ask for the Lead Developer to do a basic merge. As it turns out, he meant that the Lead Developer should sort it out because he broke it, but he never stated that was the cause of the issue. It would have been good to open the conversation with that fact. You know; give some context and background to what the problem was.

Beavis and the Mail Merge

Beavis was fixing a bug where the header in a mail merge didn’t display the correct label. Each country has a different name for their Identification numbers. The data was correct, but the label always showed the English name.

He comes up with a fix where he checks if the region is Scotland or Wales, otherwise he returns the English label. What about Ireland? The bug still remains. What about other countries we support in the future? This will require a further change to this code.

He takes the text from a resource file which is fine. He wrote some unit tests which covered his few scenarios. However, he was comparing the returned value to the text from the resource file. This means if someone accidentally changes the text in the resource file, then runs the tests; it will still pass. The tests should have been written with hard-coded text so isn’t so coupled to the actual implementation.

When it was submitted to review, the Lead Developer comments that it doesn’t fix all scenarios. He also made a brilliant point about another aspect of Beavis’ code. He was taking the customer’s information from the currently selected customer. This is mail merge. Mail merges are often done in batches. There isn’t just one selected customer, but a list of them. This could take the wrong person’s data.

A few days later, Beavis finally came up with the expected solution. The next day, it still isn’t checked in, and his update was along the lines of “I’m updating my branch”, which should only take a minute, not the entire day. I checked the history of the Bug. It has taken him 2 weeks, when I reckon I would have completed it in a day.

Later on, I overhear a Lead Developer express his concern to a manager that Beavis had been really slow and hadn’t showed any thought or care about his work.

It’s nice that it has been flagged as an issue.

Women In Tech

Recently, there seems to be more of a push to encourage women to apply for tech roles through means of tech conferences. I was thinking though, that surely the types of people that know about tech conferences – are the people that are already in the industry.

It probably makes sense to target the promotion directly at schools. Back in my day, if you knew programming, it was because you taught yourself, or went onto further education to study it. I have heard that these days, it is taught more at schools, so over time, I think the new generation will naturally enter the industry. It’s at that age you really need to get people interested. Otherwise, they will go and get a degree in some other field and the tech industry probably has a lower chance of getting someone to switch.

I think my employer has a lot of females in the managerial side of the department, but are severely lacking in terms of female developers. There’s a better representation of testers though, although still male dominated. I firmly believe this is purely a case of the representation of applicants, rather than any gender bias of offering roles. If anything, females have a better chance of landing jobs (LinkedIn even state this here https://business.linkedin.com/talent-solutions/blog/diversity/2019/how-women-find-jobs-gender-report).

Recently at one of these “Women In Tech” events, one female manager, Jackie goes to it. She surely has been in the industry for 30+ years, she joined the company in a high managerial position within the department, and has had promotions since. Surely her experiences of being a woman in tech hasn’t been negative. Therefore, I think she isn’t really the sort of person that could benefit from the event. Maybe a good candidate for actually doing a talk though.

If the talks involve how to tailor job advertisements to encourage female applications, then it’s probably a great event for HR to attend. It’s also ideal for women not currently in the industry, but they need to know the event is on, and be encouraged to go to it. This poses a question of where to advertise, and how to advertise.

So on to the actual criticism. Jackie comes back and reports on the event. One of the “facts” caught my attention. It said:

“Women apply to jobs when they meet 100% of the job listing. Men apply when they meet 60%.”

Now, I’m always sceptical of “facts” and severely doubted this one. Surely you can easily disprove it by simply assuming it is true. Sounds odd, but bear with me. A female reads this “fact”, then applies for a job when she meets 60% of the criteria. Fact disproved. Any fact that claims it applies to all people surely cannot be accurate.

As it turns out, with a bit of Googling, I found a more accurate quote, although I couldn’t find the actual source.

“Women working at HP applied for a promotion only when they believed they met 100 percent of the qualifications listed for the job. Men were happy to apply when they thought they could meet 60 percent of the job requirements.”

So the quote was from Hewlett-Packard, observing their staff applying for promotions. So it’s a very small sample size to base the statement on, and it is for internal staff rather than external applicants. So women and men already in the tech industry. Interestingly enough, the LinkedIn study I mentioned early verified that women did apply to roles differently to men.

I was thinking about job advertisements and thought there is no way I’d ever would have had a job if I only applied to jobs when I met 100% of the criteria. Most of them do contain irrelevant technologies just to sound more exciting (maybe they use C# but they will say C#/Java/C++). They often ask for degrees, or experience as a “Full-Stack” developer when it’s not actually required. Maybe they specify things you use rather than things you need to know the inner workings of (virtual machines). Maybe they even ramble on about generic stuff like “enthusiasm for technology”, “passion for quality”. The more things you list, and the more jargon you list – the more chance people are put off because they don’t feel qualified.