Becoming a great software engineer should be a goal that all professionals strive for, but what is the difference between somebody who can write code and a great software engineer?
If you asked 100 hiring managers this question, you would likely get 100 different responses, and this is because the field is so vast, and every company prioritises specific skills.
If you asked me this question, I would say:
"A great engineer is a person who has excellent problem-solving skills, a breadth of technical knowledge, can communicate effectively, possesses strong business acumen and is empathetic".
The technology sector innovates at lightning speed, with this comes new programming languages, frameworks and tools. A common mistake people make is chasing their tail and constantly trying to be on trend, leading to burnout and enormous wasted hours.
The fundamentals of software rarely change, and focusing on them allows you to develop an arsenal of timeless skills that will stand the test of time.
It is easy to get caught up in the wave of hype-driven development that appears in every direction that you look, but if you take a moment to reflect and think of all the hours that you have spent learning trends that are no longer relevant, you could you have spent that time more wisely.
Fundamentals all software engineers should learn:
- Data structures and algorithms
- Programming paradigms (OOP and functional)
- Testing procedures (Unit, integration and functional testing)
- Security (OWASP top ten)
- Operating systems
- System design
- Cloud computing
Creating open-source side projects is one of the ultimate ways to level up your technical ability whilst showcasing your technical skills to prospective employers.
When creating new projects, it is wise not to be overly ambitious and build something that you are confident you can see through until completion. It is better to have several smaller, well-built projects that showcase your best work rather than incomplete ambitious ones.
Keep them fun, use them for experimenting and reap the benefits of learning in public.
If you need inspiration, here is an excellent repository that categorises ideas by difficulty.
Business acumen, also known as business savviness, business sense and business understanding, is keenness and quickness in understanding and dealing with a business situation (risks and opportunities) in a manner that is likely to lead to a good outcome.
Developing strong business acumen is essential as you progress up the career ladder, as it helps you understand why products work and how your employer generates revenue.
Key skills to develop:
- See the "big picture" of the organisation, how the key drivers of the business relate to each other, work together to produce profitable growth, and relate to the job
- Understand critical company communications and data, including financial statements
- Use knowledge to make good decisions
- Understand how actions and decisions impact key company measures and leadership objectives
- Effectively communicate ideas to other employees, managers, executives, and the public
Personal attributes that enable someone to interact effectively and harmoniously with other people.
Soft skills are one of the most sought-after skills employers look for in engineers. Abilities such as empathy, critical thinking, and communication skills are integral to a company's culture and success.
Essential soft skills for software engineers:
- Openness to criticism
- Critical thinking
- Conflict management
- Time management
To strengthen your soft skills, consider using the following techniques:
- Identify areas that you need to improve
- Practice building your soft skills
- Ask for feedback from your manager and peers
Working in a fast-paced sector with tight deadlines, sitting at a desk all day, trying to keep up with industry trends and having a social life in-between can be tiresome, damaging and lead to burnout.
A job should never take control of your physical or mental well-being, as we should always be working to live and not living to work.
Here are some tips to help improve your well-being:
- Take breaks - Take frequent breaks that do not involve screen time, such as going for a walk, calling a friend, reading a book and disconnecting from technology
- Diet - Eat healthily and drink plenty of water
- Workout - Stay healthy and alleviate stress
- Develop hobbies - Make time to do things that you enjoy
- Meditate - Take some time to relax and breathe
- Socialise - Spend as much time as possible with friends and family
Set yourself achievable goals and targets that align with your career path. A great time to do this is with your manager in a one-to-one. Always having goals is a great way to ensure that you are constantly progressing and are a great way to obtain promotions and bonuses.
If your company has a skills matrix, aligning your goals can ensure guaranteed progression.
It is also great to set goals outside of the work environment, always aim to combat your weakest areas, and put yourself out of your comfort zone.