3 things that make a good Software Engineer in 2022.
From my early days in software engineering, I got the idea that a great software engineer was being the best programmer out there. Creating code so beautiful and elegant that people would be amazed. Well, how wrong I was 😉
1. Be everybody’s favourite writer
Masterpieces are great, and so is complex yet elegant code.
However, people are also amazed by Picasso’s masterpieces, yet don’t really understand them. So, amazing people with your code may not always be a good note.
Usually, beautiful and elegant code is hard to understand thus, hard to refactor, evolve or improve.
With this concept on your mind, think how it would be for a company with 21 engineers, where 5 of them write such beautiful but complex code, and the 16 left don’t even know how to read it. That is not innovation, or a good job but over-complication of things.
This is a lesson I have learned after many pieces of advice from other engineers with far more experience than me in the field:
“Write code that even a junior can understand and modify. Leave masterpieces for your personal projects”
A few days ago, I was reading an article that one of my colleagues (thanks Oinak) sent me (reference (it is in Spanish), where it said that over-engineering has killed more startups than the lack of good practices. And I think that is a big truth.
Of course, this does not mean that a good software engineer does not have a deep understanding of the technologies he/she develops on.
Then, what can make a software engineer good, apart from technical skills?
2. Know your product
Lately, software engineers have been getting more attention from the world, as it spins and evolves. We are starting to lose that image of geeks, sitting on a chair, staring at a screen, to be people making great fortunes and driving in sports cars around.
As the thought society had of us has changed, so has our role. Nowadays, software engineers are way more than just software engineers, they are also product engineers too.
Okay, stay with me here. I promise I am not going bananas yet.
There have been many cases where a senior software engineer has become a product owner due to its close relation to the product he/she was in charge.
We build that product bottom to top (with help from other teams and stakeholders) and know how it works. To the extent that we can forecast problems on new features being added or even suggest new features based on our experience with the product.
Also, the concept of YAGNI(You aren’t gonna need it) is quite crucial when the engineer really understands the product as it will save unnecessary developments.
So, from my point of view, the knowledge and understanding of the product he/she is working on is another key skill for a software engineer.
The article I was talking about before also talks about turning your software engineers into product engineers and states a really good idea:
If you can get a software engineer to think both of the product and the code, it will be the perfect mix for a productive team as no unnecessary code will be developed, thus saving time. And, as they say, time = money 😉
3. Be a team player
There is one thing a really hold as important when being, not only an engineer, but also a person, and that is: helping others if they need it.
Let’s picture this. Storytime 📖
From my early days writing code on my own, I remember how frustrating it was to not understand a concept or get my code to work (not even digging deep into StackOverflow 😉). And wishing that somebody would come down magically from heaven and solve all my problems.
How wrong I was 😆
Then, when I started working at my first company, just graduated from college. I remember myself so excited because, the people that worked there, much more experienced than I was, would be the key to all my problems of understanding.
Again. How wrong I was 😢
There was no time to sit down and help an entry-level intern understand complex things. It was a fast-paced environment, of course, as it always is, and senior engineers had better things to do.
I don’t regret the short time I spent there, because it helped me get skills than would be vital for my career. Also, that there is nothing better that squeezing your brains to find the solution.
However, working there was not comfortable as it did not feel like a team and I did not think that squeezing my brain was really healthy in the end.
It was not until my last job hop, that I found that team component I was looking for, and understood that helping others was the very least thing a software engineer could do apart from all the technical knowledge he/she may have.
In the end, we are players of a team, whether it is on a company, open-source project, freelancing, or just the community.
We work with people to create something, something good. So, why won’t we help each other when needed? Nobody asks for help if not truly needed.
Ego is the worst friend of a team. It makes you think everyone is either worse than you or wants to see you fall, and that forces you to work extremely hard in order to be over them because they will think you are worth nothing if you don’t.
Maybe this section should be renamed to “Leave your ego on read”.
Either way, everywhere you go, people will appreciate more a helping hand than a silent wall, and that will make you better too.
If somebody does not understand something, try explaining to them, you may see that your knowledge is not that deep on it and you can explore it together.
Of course. Disclaimer! This is not to say that you must leave apart all your responsibilities when somebody comes asking for help, but it is a note of the fact that, if help is asked, there must be a reason. Sometimes you would be able to help and sometimes you won’t, but maybe another colleague can jump in.
Summing up, we are a team.
Thanks for following along with this article. I hope you have enjoyed reading it as much as I did writing it.
See you around!!