Titles often do not embody the exact same responsibilities or level of experience from one company to another. Sometimes, the differences in tiers are negligible but the titles are different. Companies may title an entry-level software development role as Engineer I, Junior Engineer, or Junior Developer. The journey of a software engineer isn’t set in stone, either. As you gain more experience and technologies evolve, the options available to you open up. What is clear is that as you gain more knowledge and experience you achieve greater mastery, and the increased responsibilities should follow.
At First Factory, we want you to have every opportunity to work with the technologies that fuel your personal passion for development. While we may hire you for an immediate and discrete technical need, we know that you will have experiences in, or come in contact with, numerous technologies and tools for building quality software products.
We don’t believe there is a static formula or simple test that proves someone is ready for a promotion; it is a mix of demonstrated skill, situational decision-making, receptiveness to feedback, an exhibited passion for continued learning, inclusive and proactive communication, and overall good citizenry with teammates and stakeholders. The following outlines engineers’ high-level tiers and responsibilities applicable to both development and quality assurance positions:
Junior Software Developer
A developer at the start of their career who has some foundational knowledge of software development but little to no practical experience. They require guidance and continued feedback to work on most tasks. They should show an eagerness to learn and be open and accepting of feedback.
Software Developer
A developer with generally one or more years of experience who has solid knowledge of programming basics and best practices. They should be able to demonstrate thoughtful problem-solving approaches when diagnosing issues and should be able to follow coding examples and best practices to maintain existing code. Finally, they should be motivated to collaborate and openly accept feedback from senior developers when receiving code reviews and other critiques.
Software Engineer
A mid-level developer will be solidly comfortable in at least one technology and demonstrate the ability to work independently while providing nearly optimal solutions. There will be minimal defects in their work as well as consistency in their velocity from sprint to sprint. They must be self-motivated, reliable, and exhibit strong communication with clients and across the team. There should be high confidence and accuracy when estimating individual tasks. In addition to adapting to the cultures and processes of different clients and teams, they should be able to offer mentoring to entry-level developers on a specific project.
Senior Software Engineer
Proficient in multiple technologies—with subject matter expertise in at least one major technology—and unafraid of learning new ones, a Senior Engineer can provide multiple solutions to numerous problems. They will be able to provide architectural guidance and articulate the pros and cons of each technical approach. The Senior Engineer considers all variables, including downstream dependencies, system compatibilities, code legibility, and long-term maintenance efficacy. They conduct code reviews and provide tutelage to more junior developers through mentoring and/or pair programming. They will be able to take leadership of teams, set an example of proactivity, and communicate effectively with stakeholders.
Tech Lead
The Tech Lead is an experienced Senior Engineer who is capable of setting coding standards and determining functional and technical requirements. They ensure that all of the team’s delivered code meets or exceeds those set standards. The Tech Lead must be capable of managing pressure related to issues at all levels of urgency, scope shift or creep, approaching deadlines, missed or misunderstood requirements, and shielding the team from those stressors. They will be able to understand the customer’s view and advocate on the user’s behalf. The Team Lead provides regular, ongoing, and formal coaching to junior team members and developers while adhering to and promoting the company values. We currently have two levels of Tech Lead: Tier 1 and Tier 2, with the main differences being experience, team size, and the scope of technical expertise required.
Architect
An Architect is focused on designing and implementing scalable, robust, and efficient software solutions. Whether starting from scratch or working with existing systems, the architect will identify the technologies, methodologies, protocols, and systems needed to build products and the functions they need to perform in isolation or when networked. These efforts require vast knowledge of full-stack technologies, databases, infrastructure, third-party products, info security, and other forms of governance and compliance. Building upon the experience as a Tech Lead, an Architect will lead the architectural design and development efforts, ensuring alignment with organizational objectives and technical standards.
Engineering Manager
An Engineering Manager ensures that key projects and engineering duties are fulfilled. They are responsible for solving any engineering issues that arise in a project, answering technical questions that the teams are struggling with, proposing project budgets, training new employees, and working with various clients to solve their needs. They prepare reports on the progress of the assigned projects and are accountable for the implementation of each system. As leaders, they ensure that proper processes are being followed to maximize their team’s productivity.
Senior Engineering Manager
A Senior Engineering Manager is responsible for delivering high-value solutions to our clients by ensuring the exceptional quality of our projects. The person in this role works directly with the Director of Engineering to define standards, guidelines, and processes that elevate the company and improve the craftsmanship of each team member. The Senior Engineering Manager coaches Technical Leads or other Engineering Managers on how to draft estimations, execute whole projects, and solve technical or architectural problems. As a key point of contact for existing and prospective clients, it is essential that this person be able to foster strong relationships with client stakeholders, to act as a trusted advisor, and to advocate for their needs as well.
Director of Engineering
This leader is responsible for the overall management of the Engineering Management team and serves as a coach and mentor for Tech Leads. The role’s primary focus is to coach and develop leadership and work with employees to develop and cultivate skill sets. We believe in management as a service, and the Director of Engineering must demonstrate this behavior for the other leads to follow. In addition, the director sets technical standards for the organization, provides estimates and project plans for clients, oversees the company infrastructure, and collaborates with third parties to ensure security compliance. This director will help drive training and development, including technical skill improvement, certifications, interview management, and other areas of related professional development. This role is a key bridge and partner for the executive team and the talented craftspeople who build out software products for our clients and ourselves.
Specific Development-Related Job Titles
Software Development
- Junior Software Developer
- Software Developer
- Software Engineer
- Senior Software Developer
- Tech Lead
- Architect
- Engineering Manager
- Senior Engineering Manager
- Director of Engineering
Quality Assurance – Functional
- Junior QA Engineer
- QA Engineer
- Senior QA Engineer
- QA Lead
- QA Manager
Quality Assurance – Automation
- Junior QA Automation Engineer
- QA Automation Engineer
- Senior QA Automation Engineer
- QA Automation Lead
- QA Automation Manager
Whatever your level, the team here at First Factory will support you in your professional development. We learn from each other and will help you develop the skills you need to fulfill the responsibilities of your role and prepare you for the next step in your career.