Four Ways to Know if You're a Great Software Engineer
What’s the universal measurement of a great software engineer?
Software engineering is the art of crafting beautiful software. What is beautiful software? Some might say beautiful software looks aesthetically pleasing and feels intuitive, others might agree that beautiful software equals coherent and logical code. There’s no right or wrong here, being a good software engineer is up to interpretation. Here are my key takes on what makes someone a great engineer.
Fun to Work With
You’re the first to arrive at the office at 7:30 AM and sit down to sip your morning coffee while reading the latest scandals around the globe, with the occasional small dose of programming and startup news. You feel good and feel ready to crush the day. You open up Github and start to review your previous pull request, only to find your teammate nit-picking on your variable naming, semi-colon insertions, and other trivialities, while completely ignoring the feature you implemented without any issues.
Don’t be the guy to annoy your teammates. It’s fine to have standards, but such standards should be clearly defined and agreed on. If you argue about preferences, use prettier with ESLint. The two previous tools let teams agree on a standard while maintaining coding flavor.
Being a fun person to work with is absolutely crucial to being a great software engineer. Many engineers think that their code speaks for themselves. While we all admire great code, don’t be a jerk, especially if you’re a senior engineer. A great engineer should be fun to work with, non-lethargic, and ready to take on challenges. Not everyone can do it, but at least try. I’m often lethargic myself, but I try not to be. No matter how technically brilliant you are, you’ll always be limited by your ability to communicate.
“A rational person can find peace by cultivating indifference to things outside of their control.” — Naval Ravikant
Ability to Teach and Learn
Having the ability to lift your teammates is invaluable. You might be extremely proficient in X, while your teammate might be experienced in Y. The ability to exchange knowledge is often looked down upon. Great teams put their minds together. Greater problems require great teams.
If you want to become a truly great engineer, you should be able to swallow your ego and status. Wise senior engineers will often tell you they learn new things from junior engineers all the time. Junior engineers are eager to prove themselves and learn the latest and coolest programming tooling, only to demonstrate the tools to the team. A wise engineer considers and accepts any information from any source. Leave your dogmas at the door.
Amazing developers who lack team skills stagnate in roles, while perhaps less technically adept devs, who are more personable and more able to sell their ideas, flourish.
Don’t Give Up When Things Get Hard (Be Willing to Put the Hours In)
One day you will face a challenge that you have no business with. It shocks and overwhelms you. You ask yourself “I have to do what?!”. Stay calm, don’t panic. As a software engineer, I can assure you this is all part of the ride. Feeling overwhelmed is actually a good thing, it’s how we evolve. To grow, we have to face new and harder challenges — it’s the only way. When the time comes, don’t be afraid to take the leap forward.
As with any skill, you have to put in the hours. If it’s worth doing, it’s worth doing great. Don’t just do things for the sake of it, do it because you want to show everyone how great your work is. If you’re asked to do X, do X and add some sugar on top of it. A good way to put the hours in is just simply to build stuff, build anything, just build it. If you lack ideas, here’s a fun list of apps to build:
Taking Ownership and Beyond
Every executive or manager wants to carve the ownership ideology deep inside every team, for good reason. If workers take ownership and treat their code or products as if it belongs to them personally, they will take special care and consideration.
When working for a small team inside a big company, one can quickly lose the ownership feeling. It’s crucial to treat any codebase as if the next person to deal with the code will be a serial killer who knows where you live. Jokes aside, I think ownership is a powerful concept. If you're given a task, treat that task as though it serves you directly. In the grand scheme of things, you want to work in a well-known company, that changes the world for the better and leaves a dent in the universe. By taking ownership and responsibility, you’re directly signaling your values and beliefs.
10 Books Every Programmer Should Read
Reading is a vital skill in finding a desirable programming job
Thanks for reading, I hope you learned something new. Happy coding!