How Does a Great Junior Software Engineer Look Like?
Characteristics of good junior software engineering: technical skill, soft skill, behavior and more
Welcome to The Scalable, blog and newsletter to help you faster in becoming tech leader. Check our tech lead roadmaps.
Before we start, kindly to subscribe, follow me on Twitter & Linkedin and share this content to your friends. Enjoy.
Quick Links:
Intro
A great junior software engineer is a software engineer who demonstrates qualities and potential for growth. This type of engineer simply needs a bit of direction, and they will quickly excel in terms of skills and career progression.
Whether as a co-worker or a leader, working with this type of engineer is pleasant for me. I don't need to put in much effort to make them functionally capable, and witnessing their growth is truly enjoyable.
I have interviewed 1k++ software engineers, and after conducting numerous interviews, I have noticed a pattern that distinguishes an average engineer from a potential software engineer.
In today's discussion, we are going to break down the characteristics and qualities of good junior software engineer looks like. We will explore the technical skills, soft skills, and behaviors needed for a software engineer with great potential.
Technical Skill
Having strong technical skills in the early stages of a software engineering career indeed helps, but it does not guarantee success. I have observed many individuals who excelled in university or were capable of writing good code, but when they entered the industry, they failed to make an impact on the company, and their skills and careers stagnated.
If you don't have strong technical skills, don't worry. At this stage, you are allowed to "Follow the rule first (framework or standard), then follow your heart." However, it's important to note that you still need a decent technical skill. At the very least, you should:
Understand the fundamentals of algorithms and data structures. It's okay if you only know how to use them. Having a deeper understanding of how they work is even better.
Be proficient in at least one programming language and its associated frameworks.
Suggestion: focus on mastering one language first. When you already have a grasp you could learn more with the focus understanding end-to-end from frontend until your product deployed and can be accessed.Be able to read logs, perform testing, debugging, and Googling (and Chat GPT-ing) to learn from problems.
Be able to work with MySQL or PostgreSQL, familiarizing yourself with database management and interacting with databases.
Soft Skill & Mindset
Think Structurally
Software engineering things revolve around thinking structurally. Algorithms involve step-by-step to solve a problem, which inherently follows a structure. Similarly, data structures, as the name suggests, are all about organizing and structuring data.
I have observed that software engineers with great potential always think structurally. It is easy to identify this quality by simply examining how they explain things and approach their work on projects.
When explaining things, they tend to provide explanations in a step-by-step manner, rather than jumping in and out of concepts. They organize their tasks structurally, for example developing "Create API" before the "Getter API" is important for them, because it helps them become more efficient in testing features and ensures a systematic progression in their work.
Problem Solver
An average software engineer: focus on completing tasks
A great junior software engineer: focus on solving the problems.
To illustrate this contrast, let's consider the scenario where an engineer is asked to build an API to display a transaction history.
The software engineer that has a great potential will find out what is the real problem and how to solve it. In this scenario, writing code is not a problem, querying is not a problem, how to display the transaction is the problem.
Growth Mindset
A growth mindset is a belief system or mindset in which individuals believe that their abilities, intelligence, and talents can be developed and improved through effort, learning, and persistence.
Software engineers with great potential possess a growth mindset. They embrace challenges and constantly seek opportunities to review their mistakes and improve in the future. They are not afraid of feedback and actively seek ways to grow and develop their skills.
Positive
It's always easy to find faults in others or even within your own company. The larger the company, the higher the chance of encountering a "toxic group" of people who engage in negative conversations, leading to a detrimental atmosphere. Unfortunately, I have witnessed many potential software engineers who ended up joining such groups, resulting in a decline in their performance.
On the other hand, true software engineers with great potential, when they encounter something they dislike, choose to communicate with their superiors to clarify assumptions and find solutions. They approach these situations in a proactive and constructive manner.
Behavior
Eager to Learn (20-80 Pareto Principle)
I have observed that great junior software engineers share a common trait: they invest their time in developing their skills outside of working hours. This aligns with the Pareto principle, which suggests that 20% of the time spent outside of work can have an impact on 80% of their career development.
They often engage in personal projects, pursue learning courses, or go the extra mile for their company. This is what we refer to as being "eager to learn." However, the term can sometimes be vague. Many software engineers self-proclaim that they are eager to learn, but to clarify this, a simple question can be asked: "Could you explain what you have learned in the past 3 months?" This helps gauge their actual commitment to continuous learning and skill development.
Proactive & Self-Motivated
Great junior software engineers possess a deep understanding that their success in their career is primarily dependent on their own efforts, rather than relying solely on others. As a result, they exhibit a proactive approach to acquiring knowledge and skills. They recognize the value of mentors, senior colleagues, and managers as valuable resources for growth and learning.
During one-on-one meetings, for instance, they take an active role in seeking feedback, guidance, and direction to enhance their impact within the team and the company. They actively participate in discussions, ask relevant questions, and demonstrate a genuine eagerness to improve.
Moreover, they exhibit a strong initiative in problem-solving. They don't wait for instructions or assignments; instead, they proactively identify and address challenges and seek solutions. These junior engineers willingly take on larger responsibilities when the opportunity arises, showing their readiness to contribute beyond their designated tasks.
Good Ethics
Many people possess various characteristics, but without good ethics, trust can be compromised, leading to a decline in professional relationships. Ultimately, trust is the most crucial aspect of one's career. When trust is established, it opens doors to opportunities, even if you may not be the most intelligent or skilled individual in the room.
TL;DR
So, being a great junior software engineer is not solely about technical proficiency. While they should possess a decent technical foundation, their soft skills and mindset play a significant role. These include structural thinking, a growth mindset, and a focus on problem-solving. Additionally, their behavior is instrumental in their growth, such as investing time to learn outside of working hours and being proactive.
Furthermore, they exhibit integrity and demonstrate positive ethics within the company. This involves acting in an ethical and principled manner, fostering trust and maintaining strong professional relationships. These qualities contribute to their overall success and growth as junior software engineers.
That’s it for today, thank you for reading! If you find it valuable, don’t forget to: