How hiring people motivated me to grow

Daily writing prompt
Describe a decision you made in the past that helped you learn or grow.

In the early 2000s, I was a new and ambitious software engineer with very little theoretical knowledge. Worked as a webmaster, which included front-end, back-end, databases, and a bit of systems work, all with Microsoft products. My confidence didn’t match the realities of my actual knowledge. Something happened and 2-3 colleagues quit in the same year, leaving me as the most senior developer, despite my young age and limited knowledge. I had to hire replacements. So, I found some article that said that I should only hire people who are better developers than me. It said that “A people hire A people, B people hire C people” (attributed to Steve Jobs). I took that meme very seriously. The folks I hired were so good that I needed to step up my game significantly to remain relevant. In the process of learning, I decided to go back to the university and get a Master’s degree in Information Systems from Sofia University.

I’ve done some hiring work later and found loopholes in this rule (so did others on Hackernews). Looking for people who are significantly more competent than the hirer opens the gates to masters in BS language (link to a post from January on the subject). If I discuss an area where I’m not particularly knowledgeable with a candidate, the candidate could fool me by using impenetrable language, specific to that technology.

Over time, I changed. I currently believe that:

  • The ability to explain past work would be a top skill during a hiring interview, closely followed by soft skills
  • Every single person on the planet would be better than me at something and I’m just a few questions away from figuring out what that thing is

Despite that, I did hire some good folks, and they motivated me to learn and improve. Maybe not the most impactful choice I made in life but quite good.

If you could have something named after you, what would it be?

Daily writing prompt
If you could have something named after you, what would it be?

I wouldn’t mind a great-grandchild named after me. My name is cool and means happy, or happyin. Not sure where the in came from but it appeared at least a century ago.

Apart from that, perhaps I would name after myself the rule to not deploy important software changes last thing on Friday. Some things are better done at the beginning of the day.

The probability of introducing a problem is greater at the end of the day, and greater at the end of the week when you’re tired. The probability of a problem being discovered when fewer people are around is lower. Weekends also make resolving issues more difficult – critical people might be out of reach or might be surprisingly upset that you reached them.

Partial rewrites

Every complex software system tends to have sub-systems that are in the process of being rewritten but stuck in limbo. I call this myself the Hydra, although it’s a term that doesn’t exist outside of my head.

Generated with imgflip.

The subject of second systems deserves a full essay but while I sit on it and finish the books I have in mind, let’s enjoy this gem from Artur’s blog:

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.

Gall’s law

A measure for good code

Today we discussed with a colleague what is good code and what isn’t. We somewhat agreed that good code is code that can be understood and changed by people who aren’t the author. Hours later, I found this quote in the book I’m reading and wanted to share it:

The true test of good code is how easy it is to change it.

Martin Fowler, Refactoring

There’s code people understand, change, and create a mess. There’s code people understand, change, and don’t create a mess. There’s code people don’t understand and don’t change. It stays perfect until somebody decides to start over and create a two-headed Hydra because they see no other way.

Impenetrable Language

Obscure and impenetrable language conveys a sense of expertise

Dan Ariely

Have you been in a situation in which the person you talk to speaks and you don’t get anything? I have in a variety of cases:

  • Worked for 3 months on the same team with a statistician
  • Spent time with Systems and DevOps folks speaking their language
  • Discussed some renovation projects with a variety of contractors
  • I have a 5-year-old

The common thing between these situations is that the person in front of me may speak with excitement and a lot, and I only catch a fraction of what’s said, and most certainly not the meaning. Many of these scenarios are harmless and funny, but some aren’t. Sometimes, the language can be used maliciously. For example, some of the contractors I spoke with convinced me to do unnecessary repairs or justified expenses without me understanding what they meant. Subpar and expensive work followed.

How does that work?

Each discipline forms terminology and professional jargon that’s used between experts to understand each other and to transfer knowledge. Knowing that language creates a sense of belonging to an exclusive group of people. We are used to accepting that people know things better than us in almost all areas. So it is expected that professionals in an area use the professional language. The caveat is, that they’re expected to do that between each other. When these words are used outside of the professional context or during a negotiation with a person with different expertise, it could indicate a few things:

  • Lack of awareness that the other person doesn’t understand everything
  • An attempt to coerce approval based on expertise, also known as an “Appeal to authority” – and is a logical fallacy.

For example, in the previous sentence, I could use “Argumentum ad verecundiam” instead of “Appeal to authority” and would use obscure language myself, trying to sound like an expert, while I’m really not.

My expectations about expert language

We can’t assume bad intent when obscure language is used in a conversation with us. We can, however, be aware that many experts would be able to switch their language depending on the audience. I have two relatives who are university professors in different technical areas. I’ve had plenty of conversations with them on their work without hearing a single challenging or jargon word.

It is also possible to introduce necessary expert words by explaining them. For example, the wordpress.com pricing advertises “Global edge caching”.

Many consumers of that information would understand it but most would have no idea what it is. So there’s a tooltip introducing the terminology, this way making it fair.

The construction worker should also be able to explain why tiles can or can’t be put on a specific foundation in a language that I understand, so should the project manager explain Scrum and the Systems engineer who wants to use AWS for their project should be able to explain why without a single BS word.

The 5-year-old is forgiven.

How to identify red flags

My strategy is to ask for an explanation when I hear something that I don’t understand. When I ask too many questions and I keep not understanding, a red flag appears. It still doesn’t necessarily mean the other person is ill-intended. It might mean I didn’t do my homework with a glossary. In that case, we may need to bring out somebody else to the conversation who is fluent in the language. Otherwise, we have a communication failure, and the communication failure can lead to bigger problems.

TL;DR – “Oh shit, I don’t understand a word they’re saying, they must be an expert” needs to become “Oh shit, I don’t a word they’re saying. Do I ask them to slow down and explain or shall I call Saul?”