Defining Developer. Positions
Junior developer
Basic knowledge of IT, software, and hardware, even though you know the basics of computer programming and its tools. Should have at least 1-year experience in the relevant technology stack. Requires guidance and mentorship.
Basic knowledge of IT, software and hardware, even though you know the basics of computer programming and its tools. You probably know one programming language and have basic code writing skills. You slowly learn to repair minor, less significant errors or bugs in the software. How quickly you jump to the next career level depends only on your commitment and the number of people from whom you can learn.
Role highlights
- Has the ability to perform simpler technical tasks independently but requires guidance/mentorship on more complicated tasks
- Has the ability to fix small, less important bugs without assistance
- Can contribute to scrum ceremonies
- Will not resolve production issues without assistance
- Should be supervised
- Needs to get comfortable with the codebase before doing anything too crucial.
- Is not in a position to liaise with clients and stakeholders
- Will take longer than intermediate and senior to complete tasks
- Takes implementation guidance from more senior developers
- Code and pull requests will be reviewed more carefully and receive more feedback than intermediates and seniors
- Would ask for help more frequently
- There is an emphasis on learning and development
- Still needs to learn good coding principles
- Still needs to learn how systems are tested and come together
Key Characteristics and Qualities
Shows Initiative
- Being proactive - identifying an opportunity where you can take action
- Ask questions
- Understand when to ask for help and who to ask and recognising when you are out of your depth
Inquisitive
- Having a curious mindset, open-minded
- Open to feedback / constructive criticism and willingness to internalise and do the work to improve
Eager (to learn)
- Keen to always expand knowledge base and improve skills.
- Learning from team members and seniors
Engaged
- Continually contributing whatever the context (within team meetings, code related, company wide suggestions etc)
Driven
- How am I improving on my skill set, my communication, my interactions (personal growth mindset)
Hardworking
- Not doing the bare minimum
Reliable
- Doing what you saying you are going to do, turning up when you're expected to, offering help when its needed
Ask questions
- Understand when to ask for help and who to ask and recognising when you are out of your depth
Open-minded
- Open to feedback / constructive criticism and willingness to internalise and do the work to improve
Intermediate developer
Has experience on several projects with 4+ years experience in the relevant technology stack.
Has the ability to perform the tasks assigned to them independently, i.e. must understand the business requirements and be able to translate them into technical solutions with minimal guidance.
Role highlights
- Can set up the dev environment on their own and assist with configuring build & release pipelines
- Learns to write maintainable code according to best practices
- Learns to update code to be more maintainable and adhere to best practices
- Assists in breaking major tasks down into smaller sub-tasks
- Can find major bugs in code
- Can review code and provide relevant feedback
- Has the ability to perform technical tasks independently but could require guidance/mentorship on more complicated tasks
- Has knowledge of standard templates and solutions, has a conceptual understanding of why they are needed and will learn how to apply them
- Is in a position to liaise with clients and stakeholders
- Will take longer than senior developers to complete tasks
- Knows when and who to ask for help
- Able to assist junior developers in learning relevant skills
- Has a good understanding of good coding principles
- Has a good understanding of how systems are tested and come together
Key Characteristics and Qualities
Shows Initiative
- Being proactive - identifying an opportunity where you can take action
- Ask questions
- Understand when to ask for help and who to ask and recognising when you are out of your depth
Inquisitive
- Having a curious mindset, open-minded
- Open to feedback / constructive criticism and willingness to internalise and do the work to improve
Engaged
- Continually contributing whatever the context (within team meetings, code related, company wide suggestions etc)
Team-oriented
- Taking your team into account before saying something or doing something. Carrying your weight (putting your hand up for certain things)
Dedicated
- Commitment to the job, team, and company goals. Going the extra mile
Hardworking
- Not doing the bare minimum
Humble / humility
- Not assuming that you're always right, being open to other perspectives
Reliable
- Doing what you saying you are going to do, turning up when you're expected to, offering help when its needed
Honesty
- Transparency and not being deceiving. Conducting yourself with integrity
Time management
- Managing your time to deliver on work
Active listening
- Listening to what someone says without already preparing a response. Being present during a conversation
Patience
- With your teammates, clients, and different perspectives
Open-minded
- Open to feedback / constructive criticism and willingness to internalise and do the work to improve
Communication
- Ability to articulate yourself clearly and effectively
Task estimation
- Being able to accurately calculate how much time you need to complete a task and being able to communicate it to the relevant parties
Senior developer
Has experience on many projects with 8+ years of experience in the relevant technology stack. A senior developer has learned a lot from their mistakes and knows exactly what they can and can't do, what code they can change, and what they should leave unchanged. Has the ability to perform the tasks assigned to them independently. Understands the business requirements and can translate them into technical solutions. Provides guidance and mentorship to juniors and intermediates.
Role highlights
- Can initiate projects, set up development environments, set up source control repositories, and configure build & release pipelines on their own
- Writes maintainable code according to best practices
- Updates code to be more maintainable and adhere to best practices
- Breaks major tasks down into smaller sub-tasks
- Can find major bugs in code quicker than an intermediate
- Do regular code reviews for less experienced developers
- Has experience in solving problems and tasks of different complexity
- Is responsible for mentoring junior and middle team members
- Is familiar with standard templates and solutions when building an application in their field, understands why they are needed, and knows how to apply them.
- Can independently solve different problems due to past experience
- Can distil complex problems through the application of design patterns
- Can manage a team of developers doing simple to mid-level tasks
- Should have enough experience to architect and structure a small project
- Has the ability to develop and mentor the less experienced developers of the team
- Has a solid view of the project deliverables and suggests better ways to improve process and implementation
- Regularly liaises with clients and stakeholders
- Has a good understanding of the design of libraries and frameworks.
- Understands good coding principles
- Understands how systems are tested and come together
Key Characteristics and Qualities
Eager (to learn)
- Keen always to expand the knowledge base and improve skills. Learning from team members and seniors
Team-oriented
- Taking your team into account before saying something or doing something. Carrying your weight (putting your hand up for certain things)
Driven
- How am I improving on my skill set, my communication, my interactions (personal growth mindset)
Dedicated
- Commitment to the job, team, and company goals. Going the extra mile
Solutions Oriented
- Finding solutions and not just starting problems. Sees the bigger picture
Humble / humility
- Not assuming that you're always right, being open to other perspectives
Reliable
- Doing what you saying you are going to do, turning up when you're expected to, offering help when its needed
Aptitude to understand the client
- Understanding client requirements and converting them into action
Patience
- With your teammates, clients, and different perspectives
Deliver Feedback
- Ability to deliver constructive criticism effectively
Patience
- With your teammates, clients, and different perspectives
Communication
- Ability to articulate yourself clearly and effectively
Leadership experience
- Guidance, mentorship, communicate goals and motivate the team to achieve those goals
Professional communication
- Communication on all platforms are in line with NML standards
Task estimation
- Being able to accurately calculate how much time you need to complete a task and being able to communicate it to the relevant parties
Technical Lead
A technical lead is a professional who oversees a team of technical personnel at a software or technology company. They often lead software development or software engineering teams and troubleshoot technical issues that involve software development, engineering tasks, and product releases.
A technical lead needs to have a great deal of professional experience in software development and a deep understanding of technology, but they should also be personable and capable enough to lead a team and collaborate with others effectively.
Role highlights
- Will initiate projects, set up development environments, set up source control repositories, and configure build & release pipelines on their own
- Ensures quality and delivery are of high standards by team members
- Plan, design, lead and execute technical solutions and improvements
- Delegates work and assignments to team members
- Assists in defining standard templates and solutions when building an application in their field, understands why they are needed, and knows how to apply them.
- Can manage a team of developers doing simple to complex tasks
- Is responsible for mentoring team members
- Primarily liaises with clients and stakeholders
- Helps improve technical knowledge within their project team by guiding them through technical issues and challenges
- Has an understanding of the full scope of the project required that their team is responsible for
- Has an understanding of the full scope of the project required that their team is responsible for
- Can help team members solve technical and architectural problems based on past experience
- Thought leaders and senior in the experience
Key Characteristics and Qualities
Eager (to learn)
- Keen always to expand the knowledge base and improve skills. Learning from team members and seniors
Team-oriented
- Taking your team into account before saying something or doing something. Carrying your weight (putting your hand up for certain things)
Driven
- How am I improving on my skill set, my communication, my interactions (personal growth mindset)
Dedicated
- Commitment to the job, team, and company goals. Going the extra mile
Solutions Oriented
- Finding solutions and not just starting problems. Sees the bigger picture
Humble / humility
- Not assuming that you're always right, being open to other perspectives
Reliable
- Doing what you saying you are going to do, turning up when you're expected to, offering help when its needed
Aptitude to understand the client
- Understanding client requirements and converting them into actions
Patience
- With your teammates, clients, and different perspectives
Deliver Feedback
- Ability to deliver constructive criticism effectively
Patience
- With your teammates, clients, and different perspectives
Communication
- Ability to articulate yourself clearly and effectively
Leadership experience
- Guidance, mentorship, communicate goals and motivate the team to achieve those goals
Professional communication
- Communication on all platforms are in line with NML standards
Task estimation
- Being able to accurately calculate how much time you need to complete a task and being able to communicate it to the relevant parties
Solutions Architect
Some projects are large or complex and require an architect, but in general, a project may require an architect for many different reasons. The architect requires an understanding of the client's business, the ability to analyze complex technical systems, and then communicate this understanding to the client and developers. In addition, an architect must have a broad outlook regarding platforms and components available on the market from which the solution can be built. For an architect, "microservices", "cloud", etc., are not fashionable trends but clearly verified technological solutions that give strictly defined advantages and impose appropriate limitations.
Role highlights
- Building and integrating information systems to meet the company’s needs.
- Assessing the systems architecture currently in place and working with technical staff to recommend solutions to improve it.
- Resolving technical problems as they arise.
- Providing supervision and guidance to development teams.
- Continually researching current and emerging technologies and proposing changes where needed.
- Informing various stakeholders about any problems with the current technical solutions being implemented.
- Assessing the business impact that certain technical choices have.
- Defines architectural guidance and principles and best practices
- Ensures architectural guidance and principles are followed by teams
- Is responsible for mentoring teams
- Thought leaders and senior in experience
Key Characteristics and Qualities
Eager (to learn)
- Keen always to expand the knowledge base and improve skills. Learning from team members and seniors
Team-oriented
- Taking your team into account before saying something or doing something. Carrying your weight (putting your hand up for certain things)
Driven
- How am I improving on my skill set, my communication, my interactions (personal growth mindset)
Dedicated
- Commitment to the job, team, and company goals. Going the extra mile
Solutions Oriented
- Finding solutions and not just starting problems. Sees the bigger picture
Humble / humility
- Not assuming that you're always right, being open to other perspectives
Professionalism
- Acting in a work appropriate manner. Ensuring that your number 1 priority at work is fulfilling the duties and responsibilities for which you were hired. Acting as brand ambassador for NML
Aptitude to understand the client
- Understanding client requirements and converting them into actions
Patience
- With your teammates, clients, and different perspectives
Deliver Feedback
- Ability to deliver constructive criticism effectively
Patience
- With your teammates, clients, and different perspectives
Communication
- Ability to articulate yourself clearly and effectively
Leadership experience
- Guidance, mentorship, communicate goals and motivate the team to achieve those goals
Professional communication
- Communication on all platforms are in line with NML standards
Task estimation
- Being able to accurately calculate how much time you need to complete a task and being able to communicate it to the relevant parties
Team Lead
Team Leads are still hands-on, designing and helping build software on a daily basis alongside their team. They are fully involved and invested in the projects they are assigned to.
Companies that value their people will want to create environments where everyone is mentored, coached, and able to grow. Team Leads are ultimately responsible for this mentoring and are held accountable for the growth of the individuals within their teams. This is done through day-to-day management of the team, monthly one-on-one sessions, and performance appraisals preparation, which they are expected to run and manage. This is not always an easy task and sometimes requires a Team Lead to deal with difficult situations and conversations.
Role highlights
- Will initiate projects, set up development environments, set up source control repositories, and configure build & release pipelines on their own
- Ensures quality and delivery are of high standards by team members
- Delegates work and assignments to team members
- Assists direct reports in defining OKRs and KPIs for performance appraisals
- Performs monthly 1-on-1 with team members
- Can manage a team of developers doing simple to complex tasks
- Is responsible for facilitating career growth and development of team members
- Primarily liaises with clients and stakeholders
- Has the understanding of the full scope of the project required that their team is responsible for
- Defines initial people & process risks in working on large projects
- Can help team members solve team & interpersonal problems based on past experience
- Thought leaders and senior in experience
Key Characteristics and Qualities
Shows Initiative
- Being proactive - identifying an opportunity where you can take action
- Ask questions
- Understand when to ask for help and who to ask and recognising when you are out of your depth
Inquisitive
- Having a curious mindset, open-minded
- Open to feedback / constructive criticism and willingness to internalise and do the work to improve
Eager (to learn)
- Keen to always expand knowledge base and improve skills.
- Learning from team members and seniors
Engaged
- Continually contributing whatever the context (within team meetings, code related, company wide suggestions etc)
Driven
- How am I improving on my skill set, my communication, my interactions (personal growth mindset)
Hardworking
- Not doing the bare minimum
Reliable
- Doing what you saying you are going to do, turning up when you're expected to, offering help when its needed
Professionalism
- Acting in a work appropriate manner. Ensuring that your number one priority at work is fulfilling the duties and responsibilities for which you were hired Acting as brand ambassador for NML