Senior Developer Career Path at Netguru
People are the foundation of our success, which includes transparency and diversity in the team, and a commitment to creating the best possible environment for employees to work and grow.
Our customer innovations are developed by the Delivery department, i.e., project teams. To learn about how we function and what kind of work environment we create, we talked to Bartosz Pranczke, Engineering Director.
Bartosz started here 11 years ago as a Ruby on Rails Developer, when there were a dozen or so people in the organization. With the growth of the company and his own experience, he was responsible for many areas. The way he shaped them is clearly visible today.
In our conversation with Bartek, we learned that he has a lot to say about how Netguru helps its most experienced employees grow, why it gives them more than product companies, and how it relies on each team member's individual aptitude.
What does the developer career path at Netguru look like?
Bartek Pranczke: The initial career path is well within the market standard. We start with a Junior Developer, i.e., a person who can already program but has little experience and needs regular support from more experienced colleagues. Junior Developers gain experience by performing slightly simpler tasks in internal and commercial projects. They also participate in additional mentoring programs.
Depending on a specific developer’s level of experience, juniorship lasts around 3-6 months. Promotion hinges on the progress made by the individual developer and their total level of experience. During this time, the Junior Developer works with a team, gains an understanding of its structure, and benefits from the care of their mentor during the first month of the juniorship.
Employees also receive access to valuable documentation and detailed information on what they are expected to learn during the juniorship. They work mostly in internal Agile projects, which makes for a safe trial run of what it’s like to work for a client. Over time, as the Junior Developer gains independence, they join a client project - which grants them further opportunity for learning and growth according to our competence matrix. If a client’s project requirements allow it, Junior Developers may join such a commercial endeavor even earlier in their careers.
The next stage is the Regular Developer. At this stage, the developer is already independent in most common tasks and does not require support.
A promotion to Senior Developer means that a person not only knows how to program, but also takes responsibility for the entire software engineering process. That is, he or she applies the rules and tools necessary to create code that will be useful. In practice, this means e.g., the ability to work with CI/CD, the wise use of design patterns, and ensuring that the project meets non-functional requirements.
To become a Senior Developer, the ability to share knowledge and be a mentor to other team members is also required. This is very important at Netguru. Mutual support and good cooperation are some of the pillars of our organization’s culture. Additionally, a Senior Developer should be able to join a call with a potential client and talk to them about the technology or project they participate in.
Do you have to have a specific aptitude to be a good Senior Developer?
In many projects, the Senior Developer or Tech Lead may be the most experienced person in the project team, so they become the guarantor of the project's technological success. Because we play the role of consultants for our clients, understanding of the client's business context is additionally valued in order, for example, to be able to participate in discussions both on how to build a given functionality and on whether it makes sense to build it at all. A Senior Developer is also someone who, having considerable experience, is able to propose appropriate technologies for specific problems and understands the implications of these choices.
What is it like to be a Senior Developer who wants to grow further?
Concurrently with the Senior Developer position, you may take on the role of Project Tech Lead. A Tech Lead is a person who is responsible for the entire software delivery process. In addition to the technological aspects, this includes helping the team communicate effectively with the client, planning and executing the development plan. It is important to meet business requirements and provide leadership support to team members.
The Tech Lead must be aware of the client's budget and time constraints and adjust development to these factors. Typically, the larger the project team, the less time the Tech Lead spends on programming, prioritizing management and coordination.
Being a Senior Developer and Tech Lead at the same time is a great opportunity to decide the next steps in your career, as the managerial and technical paths usually diverge during the next step. The Senior Developer position is a sort of middle ground between these options - and a great choice for people who like to write code, but also want to coordinate the entire development process based on client requirements and the business context.
What growth opportunities do a Senior Developer and Tech Lead have within the organization?
There are several: Engineering Lead, Software Architect, and Solution Architect. Each signifies a specific direction of development.
On the managerial side, the next step is the Engineering Lead position. This person acts as the glue for the many projects we often do for a single client. He or she takes care of high-level implementation of the client's vision - he or she is usually the main technical person the client works with - and is responsible for building an environment in which our people can build high-quality software. The scale at which an Engineering Lead operates is usually a few dozen people.
On the technology side, a Senior Developer can grow into a Software Architect. The biggest difference from Senior Developer is the level of complexity of the challenges. A Senior Developer should have no problem designing the architecture for a typical Web application with average traffic. An Architect can do it for complex applications with a large scale, high traffic and often covered by Service Level Availability agreements (SLA).
This role is the latest change in career paths and we are just finalizing the framework. We are trying to create roles that meet both the development needs of our people and the needs of our clients and this is a great example of where we manage to reconcile these two worlds. On the one hand, we have more and more very experienced Senior Developers, and on the other, thanks to the growth of the company, we have more and more clients who come to us with complex challenges.
Currently, the last step of the technical career path is the position of Solution Architect. A person in this position deals with designing architectures for enterprise systems where integration of many different systems and business processes is needed.
That's a lot of diverse opportunities.
Such a large number of roles is due to the fact that the challenges we face in software development are very diverse. Sometimes they are suitable for a person with a year of experience, and sometimes you need someone who has seen and experienced a lot for several years. We pay attention to make sure that the career path is clear, attractive and that the organization offers the right support at every stage.
Each developer has their own career path - clearly defined, with their own mentor. We use tools and competence matrices developed by us to even better support our team’s development. Experience shows that the most effective method of development is working in a well-chosen project coupled with mentoring from a more experienced person. Depending on the area in which we want to develop, the mentor may be a technical project leader, department manager or e.g., HRBP.
What are the perks of working at Netguru versus a company creating its own product?
The biggest advantage (and for some, disadvantage) of working at a consulting agency is the greater project dynamics relative to product companies. The average length of a programmer's assignment to a project is one year. For team members and for me this is an advantage, because it often happens that the requirements of a given project do not grow significantly over time and keeping the initial team for many years results in stagnant development.
Rotating people in the team once in a while, so that everyone is on the project according to their skills and according to the direction of development chosen by them, is a good step thanks to which we can keep our teams motivated, which is what we care about. A well-thought-out rotation system also prevents the project from becoming mired in technological debt, as it prevents development based on secret knowledge of the oldest developers.
A larger spectrum of projects also helps you gain experience faster. It is harder to fall into a routine and each project brings a new challenge. With the low number of projects that you see in some product companies, those years of experience grow, but through the repetition of challenges, skills do not follow.
Another important distinction is that the development of our people directly translates into the development of our organization. Compatibility in this area is a great motivator for us as an organization to support people with all our might in their career development. In product companies, promotions are often not a direct benefit to the company, as they de facto mean that you have to pay more for the same developer's work. This can result in an unclear promotion process.
The expectations of the market and the workforce in terms of needs and competencies are constantly changing, this has become particularly evident in 2020. How do you respond to this?
We listen to our people, how they react to changes around them, what they expect. We offer them not only interesting development options, an individual approach, and attractive benefits, but also a good salary. Our team members have the opportunity to work on projects for clients from around the globe and build top quality products. Examples include our cooperation with Volkswagen, Moonfare, and Keller Williams. We have introduced increased salary ranges for Delivery employees with experience at the senior level or above. We want this to be a smooth continuation of the development opportunities for these people.
The IT market is constantly evolving, the demand for technical roles is increasing. One of our goals is to be among the top IT employers in the world, which requires years of work on many different levels. We pay attention to the quality of projects delivered and customer satisfaction, but we also keep in mind that our work has a positive impact on the rest of the world. That's why we've joined the B Corporation™ movement to raise the bar even higher on the impact of our growth on our employees, customers, suppliers, community, and the environment.
How can a Senior Developer, Tech Lead, or other senior position in Delivery make an impact on their career?
The task of the organization is to support the development of employees by building a clear career path, but also by offering access to clients and projects with challenging problems, solving which gives access to new skills, knowledge or perspective. We want Netguru team members to learn new things because it creates a self-reinforcing mechanism: Great people want to work with great people. This is the foundation of a well-functioning organization. People with more experience can't be pigeonholed into a rigid career path (and that's good!), so we try to leave a lot of flexibility when it comes to areas where you can grow.
I think we all find it much easier to learn things that interest us. We try to take advantage of that. As a result, people who have been part of the Delivery team for a long time have a lot of decision-making freedom regarding their own daily tasks. They direct their growth by choosing what to focus on as they work.
Is this due to Netguru's growth rate?
In part, yes. The advantage of larger scale companies is that they are able to support and take advantage of a much wider range of skills in their workforce. If we don't currently have a project that fits under a more experienced person, as a growing organization we have many needs beyond project work. Internal R&D projects that allow us to then implement new technologies in projects, creating best practices that less experienced people can then use, consulting on complex challenges in our projects, or creating processes that drive the entire company forward are just a few examples.
Why formalize career paths then?
The career path exists to give people a framework and benchmark for their development. Netguru also offers a second, less formalized development path that can be combined with the main path, or separated at some stage. We are open to suggestions from our people about what they would like to do. Much of what we do is not planned from the top, but is the result of grassroots initiatives. Our Product Design, React Native, and Node.js departments, as well as most aspects of how we develop software, are the results of initiatives by developers who want to improve or create something new within the organization.
For me personally, the most attractive career path is one where you are not constrained by an artificial ceiling. For almost a decade at Netguru, I've had many roles whose names and responsibilities I could define for myself. I think that such a combination of a well-described career path for several years of development, along with the addition of flexibility for the initiatives of our people, is a very good combination. We want to be an attractive place to work at for years and I think that everyone will find the right challenges for themselves here.
What's behind the growth of the company and an increased need for hiring?
We are indeed growing very fast. We have lots of new projects and we are trying to work with enterprise customers. Consequently, we need experienced hands to work. We are also looking for people with many years of experience, who want to polish their soft skills and do not have such an opportunity in their current company. We are creating new job openings for Junior Developers. If you want to begin your career by participating in commercial projects - check out the careers tab on our website. Netguru provides all employees the opportunity to exchange technical knowledge and learn from each other, and organizes a mentoring program.
We focus on the development of each employee. We don't put everyone into one bag - we approach the needs and ambitions of each person individually. We help employees find the right area of development for them. In the case of people with senior or greater experience, it may be building knowledge resources, training others, sharing knowledge at internal conferences, as well as opportunities to change positions and promotions, or change their specialization within the company's structures. We are always open to dialog and believe in a flexible approach to work.
Bartosz Pranczke Engineering Director associated with Netguru since 2012, is in charge of building the Web department, which includes the Frontend, Backend, and Cloud departments. His main task is to support the team in effective software delivery on an increasingly large scale. In practice, this means, among other things, creating an environment for developers to grow, and creating and executing technology strategy and vision.