The EPAM Advanced Software Engineering career path was announced in 2019 to recognize experienced technologists with 10 or more years of industry experience who wanted to focus on their engineering career leading up to the CTO role.
Technology has been changing for as long as I've been working with it. And the pace of change has been accelerating. Advanced engineering as a concept seems to be the next logical step in the evolution of EPAM’s engineering DNA. Until recently, our engineers did not have a managerial career track, and now they will. And that makes me very happy.
Why didn’t we have Advanced Engineers before?
We've always had Advanced Engineers, we just didn't have a proper name for the role and its function. Previously, an entire team, a single Chief Engineer, or sometimes a Solution Architect played the advanced engineer role. That person might have been both a developer and an architect.
There are lots of Chief Engineers and Solution Architects who act as informal Advanced Engineers. In the past, they were pigeonholed into the job and had no path to growth. With the new role of Advanced Engineer, their skills and knowledge can be recognized and growth opportunities made available to them. Formalizing the function into a separate career track also makes it easier to find qualified candidates.
I've chosen this track as the next step of my career. I was already a Chief Software Engineer at EPAM Anywhere, but then I heard that there was a special track for technical guys like me with cross-stack development experience who like complex tasks and non-standard workflows. I thought, "Why not?" and started preparing.
What does an Advanced Engineer do?
Advanced Engineers analyze the client’s business goals, study the requirements of a product, and make decisions regarding the overall technical and design strategy. Advanced Engineers accomplish this by understanding the company’s underlying technology architecture and how it conforms to the product requirements.
Advanced Engineers need to have extensive cross-stack development experience across a host of different domains and a variety of programming languages. They analyze requests, create detailed technical designs, and turn those designs into simple prototypes to demonstrate feasibility.
Most importantly, Advanced Engineers are responsible for ensuring that the products they build are scalable and meet performance criteria, while always preparing for the future. Advanced Engineers need to be able to think ahead, anticipate potential problems, and create a plan for mitigating them.
Advanced Engineers participate in presales, consult clients, and conduct audits of the code of existing technology solutions to evaluate its effectiveness. They're also expected to proactively promote High Engineering Culture, incorporate emerging technology, share their best engineering practices, enhance EPAM’s image for our clients, and be a role model for our Engineers.
Just keep solving technical problems with beautiful, correct, fast, maintainable, readable code — and enjoy the process while doing it.
What qualities should Advanced Engineers have?
The world of software engineering is evolving at a rapid pace. With increasing complexity in software systems, the need for top-notch technologists is growing.
The top five characteristics of an Advanced Engineer:
- A technologist at heart with hands-on expertise and a comprehensive technical knowledge of engineering and systems of different levels of complexity, as well as various cutting-edge technologies in different domains.
- Has strong problem-solving skills with a focus on results.
- Has systems engineering skills (to enable the realization of successful systems) and systems thinking skills (to decompose existing systems and recompose them in new ways with new approaches and technologies).
- Is recognized as a top talent in the technical domain at a company, industry, and global level.
- Is eager for ongoing learning and sharing expertise through training, mentoring, community outreach, and more.
To be an Advanced Engineer, you need both technical and business skills. Technical skills include experience with coding languages, frameworks, and tools as well as in-depth knowledge of the latest development trends. The necessary business skills can be gained by working on projects with different stakeholders or taking courses in project or product management.
By engineering maturity, we mean ASEs’ understanding of their primary stack — inside knowledge of collections, memory models, multithreading, runtime environment, and various algorithms (e.g. garbage collectors, balancing, non-standard algorithmic problems). We can also include here the engineering aspect, processes, clean code, object-oriented and functional programming, and more.
Why might a project need an Advanced Engineer?
There are a few key reasons why a project might need an Advanced Engineer.
- The project entails building platforms and systems of different levels of complexity, and strong technology leadership is needed.
- The software is essential to the client’s mission-critical systems and fundamental to their business success.
- The engagement is R&D-driven, with many unknowns, such as cutting-edge technologies to be improved or developed.
- A technical advisor is needed to solve complex technical challenges and navigate from strategy to execution.
- To bring best-in-class Engineering skills to the client’s team. This could include situations in which the project is time-sensitive, and existing staff doesn’t have the expertise to complete it on time.
What is the difference between a Solution Architect and an Advanced Engineer?
The answer to that question lies in the focus on what an engineer does and wants to do in their future career: client-facing solution consulting and architecture vs. day-to-day, hands-on, expert-level problem-solving. So, the start of an Advanced Engineer and Solution Architect (SA) career track may look similar, and a strong technologist is likely capable of playing either role. As these professionals progress through their careers, however, the differences become more evident:
- An SA focuses on identifying the most suitable technological solution for the needs of the business and has a comprehensive vision of the necessary technology. The SA is on the business side and helps explain technical IT concepts in a way that makes sense and is easy to digest. They can gently guide clients toward the optimal solution that best suits their needs, regardless of complexity.
- An ASE focuses more on the technical side of solutions, by creating detailed designs and implementations. The ASE, as a deep technical expert with day-to-day hands-on practice, can validate high-level architecture applicability and communicate with corresponding experts from the client’s side.
What is the difference between a Lead Engineer and an Advanced Engineer?
This question concerns how an engineer works and wants to work in the future:
- A Lead Engineer focuses on the application level or a subsystem of a larger system and generally implements the solution components.
- An ASE can deal with complex engineering problems, including many different components, large data volumes, and high loads. This includes technical design and the ability to implement and troubleshoot any specific system component.
Who can become an Advanced Engineer?
Any Software Engineer who wants to keep doing engineering in practice has a chance to become an Advanced Engineer in the future.
As for who is ready to become an Advanced Engineer in the near term: usually, this person is a very experienced Lead Engineer with extensive practice in developing complex systems.
Solution Architects (who often play the ASE role on the project) may also switch their career path to Advanced Software Engineering. This change makes sense for SAs who feel they’re more suited to a technical path rather than a client-facing business role.
Be eager to learn new stuff related to technologies. Never give up coding, since that's the key point that defines an ASE. At the same time, dive into modern technologies and, of course, be open to collaborating with others. Don't be focused on project activities only, since your contribution involves a broader impact. Your self-development will become your mission.
How to grow in Advanced Engineering at EPAM Anywhere?
At EPAM Anywhere, we invest considerable effort in developing a continuous learning culture to help ASE talent stay ahead of the rapid evolution in the tech industry. Potential and current Advanced Software Engineers can accelerate their competencies through the continuous learning path in Advanced Software Engineering, following the 70-20-10 rule, which consists of programs, professional communities, and self-study resources.
- We recommend that you start bylearning what this role is really about, since individuals obtain 70% of their knowledge from day-to-day job-related experiences — there are many internal resources to provide you with comprehensive information. You can access an extensive ASE library with books, podcasts, and other recommended materials in advanced engineering.
- Join the Technology Excellence Initiative (TEI) — a global educational community of architects, advanced engineers, delivery managers, and engineering managers who focus on sharing the latest technology, know-how, project case studies, and accumulated experience.
- Study at the Solution Architecture School (SAS). The course lasts about 4–6 months, and ends with a final project. The program is optional for Advanced Engineers, though it is recommended to enhance their knowledge of Solution Architecture basics, practice architecture competencies, train design skills, and develop a broad vision of technologies and architecture patterns.
- Pass the ASE Onboarding (ASEO) program, designed especially for newbies to examine ASE best practices, company tools, and useful sources that can help with day-to-day ASE activities. It consists of the ASE basics and an orientation webinar to make the onboarding for new ASEs smooth.
- The highest level of study is the Technology Mentoring Program (TMP). This is a 4-month practice-oriented educational program where mentors share their experience to help mentees achieve their practical goals. This could involve mentees implementing specific changes in their work, developing their growth mindset, and growing to the CTO level.
- Current Advanced Engineers are also welcome to join the ASE Team (ASET). This is a global core community of Advanced Software Engineers who develop the ASE discipline, create best practices, coordinate ASE initiatives, promote High Engineering Culture, impact our clients and technology, and serve as role models for other engineers.
My Resource Manager Hleb Valasiuk, Director, Delivery Manager, and my colleague Andrei Palchys, a fellow Chief Software Engineer, were my mentors. They were always open to answering my questions. Andrei, for example, helped me in preparing artifacts and shared his experience. And I'll never forget when Hleb took a look at my PoC project required for my ASE Assessment and asked me to improve the user experience right before the session. While stressful, this helped me a lot in securing my ASE role.
Apply for our Software Developer jobs to start your journey to an Advanced Software Engineering career!
Thanks to Denis Chichmaryov (Director, Software Engineering), Dzmitry Tabolich (Senior Solution Architect), Dzmitry Zhyuliuk (Software Engineering Manager), Kirill Sultanov (Chief Software Engineer II), and Rufat Khaslarov (Chief Software Engineer I) for their contribution to this guide.
The article was originally published on November 19, 2020 and updated on April 20, 2022