Keeping up with the Joneses in Software Engineering

Andrei-Adnan Ismail
Vitamin Software
Published in
4 min readNov 10, 2015

“Keeping up with the Joneses” is an idiom in many parts of the English-speaking world referring to the comparison to one’s neighbor as a benchmark for social class or the accumulation of material goods. To fail to “keep up with the Joneses” is perceived as demonstrating socio-economic or cultural inferiority. — Wikipedia definition.

Now, you’ll wonder what this has to do with software engineering. Well, we’ve identified a few trends that are honestly quite worrying.

Recruiting

First of all, recruiting is a huge pain nowadays. Everyone is looking for software engineers — for the past few years, it has been voted as one of the top professions in most reliable charts.

Also, companies are now entering an ever accelerating race: provide the healthiest lunch for free! The highest salary! The fanciest chair and computer equipment!

Most engineers already have a job, so hiring a new one is usually one of two options:

  • hiring a fresh graduate into a more junior role. Here you’ll be battling Google, Apple, Facebook, Twitter and the likes who are already present in the best universities across the world.
  • poaching someone from an existing job. You’ll probably have to offer “more” in some way. Not necessarily more money, but maybe more opportunity to grow in a senior role, for example.

The truth is, however, most of the time companies tend to hire people when a project is already in trouble. And they probably won’t be using them efficiently because of that context. Hiring contractors is not that fashionable anymore — “a contractor is worth 100k in an exit, while an employee is worth 1M”. But once you hire an employee, you’re going to have to pay their salary every month. Just like that gym membership you know you’ll never really use.

Consultancy is therefore a solution when done right. As in everything else, communication is key: entering a high-visibility collaboration with an efficient team of software engineers can make all the difference in the world. Especially when they’re looking out for your interest.

Scaling

All the time, we hear about doing things “at scale”. Companies have scaling problems and hire more people to take care of them.

One of our more interesting experiences in the startup world was the case where we were paying lots of money and engineering time to scale a system that wasn’t really needed in the first place. We landed on this discovery by correlating sales data with the actual footprint of the customers in the database.

From a geek’s perspective, scaling is so sexy. You get to talk to your geek friends about the number of requests that go through your system daily. And how the business depends on that system to work well. You take pride in the way you crafted your code to take care of every edge case, and wrote automated tests for it. But what if it turns out that the system wasn’t really needed in the first place? What if the business that is paying your salary is not really making a profit from the system you’re working on?

Who cares? It’s fashionable to work “at scale” nowadays, as long as there are investors who pay for it. And you need to scale to keep up with the Joneses.

That’s why we value analysis above all. Because that’s the only way to choose the right solution to any problem. And when done properly, it leads to better estimates, accurate deadlines, effective strategies and reduced total cost of ownership.

Latest Technologies

Two very common phrases used by recruiters are “working for a company that is disrupting a field or saving the world”, and “playing with the latest technologies”.

This is another example of peeking at the Joneses. They’re using the latest technologies to “process huge amounts of data in order to extract insights”. Is that what your customers really want, or is it what you want your investors to hear?

Most of the time, you will see internal pressure from the team to upgrade a piece of software to a new library/technology before it was actually needed. This is perfectly understandable, for a couple of reasons:

  • most engineers have side projects; they want to be able to use the technologies they work on in their side projects. They want to take pride in their craft.
  • they need to feel motivated, and learning Yet Another Cool Framework That Can Do X in 3 Lines of Code Instead of 5 Lines is a perfectly good excuse.

Remember what we said about communication and analysis? Take that and add a team that is focused more on you making profit than on showing off shiny tech and you get a winning combination.

Because being tech savvy means knowing what to use, when and how. Even if it’s not the latest technology. Just as long as it makes your business thrive.

Conclusions

Technology is just a tool, not a purpose in itself. We’re here to help businesses thrive, just as much as people from other professions are. Preferably while making something useful for mankind.

So, dear engineer, take a good hard look at yourself in the mirror and ask yourself why you will be using the tools that you will be using today. Why you will be writing the code that you have been commissioned to. How you are helping the business that is paying your rent to become better, grow, or make its customers more efficient.

--

--

Andrei-Adnan Ismail
Vitamin Software

Software Engineer & Partner @ Vitamin Software. Past: engineering manager @ubervu, co-founder ProgrammerFitness.com, @kleenks & @gastrowiki. PhD in A.I.