The programmer’s path
1. Career ladder
Programmers also have levels depending on their qualifications. Once, concepts like “coder,” “programmer,” and “hacker” were used, but now everyone has switched to English titles from US IT.
There are 6 main levels for a developer:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
From country to country, and even from company to company, some parameters may differ, but the idea is roughly as follows:
🌱 Intern Software Engineer — interns. They are in the process of learning programming, have neither commercial experience nor experience participating in large projects. They typically work under the supervision of more experienced colleagues. Their main task at work is to study the codebase and the fundamentals of software development, completing simple coding tasks and participating in testing.
🐣 Junior Software Engineer — programmers already, but without serious commercial experience, or with less than a year of experience. They work under the guidance of more experienced developers, implementing parts of projects and participating in code review cycles. This career stage is focused on deepening technical skills and understanding project tasks.
🦾 Middle Software Engineer (or simply Software Engineer): have more autonomy in making technical decisions, are responsible for significant parts of a project, begin mentoring less experienced colleagues, and participate more actively in architecture discussions. Typically have 2–5 years of hands-on experience.
🧑🔬 Senior Software Engineer: are responsible for designing and implementing complex systems, provide mentoring and leadership within the team, participate in strategic project planning, and often represent the team in communication with clients and other stakeholders. Typically have 5–10 years of experience.
🧠 TechLead: is responsible for the final technical outcome of the project, leads development, solves the most complex tasks, ensures compliance with technical standards, and coordinates developers’ work.
🏆 Principal Software Engineer: works at the highest technical level, often participates in shaping the company’s technical strategy, developing innovative solutions and establishing technical standards, serves as the chief mentor for technical leaders, and is a key expert on complex technical issues.
Interesting. Large companies may have additional roles and sub-roles. For example, Google has roles like:
- Staff Software Engineer (L6): has significant influence on the technical policy of their department.
- Senior Staff Software Engineer (L7): works on large-scale and complex projects, defines the strategic direction of technological development in the company.
2. Lego products
A long time ago (in 1975), Niklaus Wirth, the creator of the Pascal language, wrote the book “Algorithms + Data Structures = Programs.” Since then, a lot has changed. A modern software product is not what it was 10 years ago, and certainly not what it was 20 years ago. There is no point even talking about 1975 — 50 years have passed since then ⏳
A modern programmer no longer writes programs by hand. Instead, they assemble them from ready-made parts (libraries) and write code that helps those parts work together🧩. Modern software products can consist of dozens and hundreds of programs. Some of them run on the user’s computer and mobile devices, while most run on servers in a data center.
Many of these programs, such as a web server or a database, have already been written. You just need to configure them correctly so they work as required. Although over time the configuration process can become so complex that it effectively turns into development. 🤦♂️
Programmers are constantly fighting with themselves. Instead of writing similar code again in different programs, they write libraries that can be configured (customized) for their needs, and then simply connect them everywhere they are needed.
Over the last 20 years, programmers have written a huge number of libraries, frameworks, and open repositories. There are literally millions of them. And now writing all the code from scratch is considered bad form. Instead, you should assemble a program from high-quality, proven solutions — libraries, frameworks, packages, and modules 🧱
But even that approach is becoming outdated. The trend of the last 10 years is moving to the cloud—large data centers that provide your programs with everything they need. Want a database? We have hundreds to choose from. Want a rare, unique web server — we have those too! Any whim for your money.
3. “I am an engineer” © Elon Musk
There is no longer a need to write complex and boring things yourself. If you need some functionality, there are already ready-made libraries and frameworks for that. Your job is: a) to know they exist, b) to find a suitable option (there are often several alternatives, with different quality and nuances), c) to understand how to integrate it into your project 🎓
This has only made the work more interesting. Now you can add new functionality to a product 10 times faster. 30 years ago, if you needed a web server, you wrote it from scratch. 20 years ago, you bought one, installed it, and configured it. And now—you simply go to the Azure or AWS cloud portal and enable the service you need 🌐
This, by the way, is one of the reasons for the popularity of Kotlin. It is great not only for building large enterprise solutions, but also for “gluing” different components together—through the rich JVM ecosystem there are integrations with pretty much anything: databases, microservices, REST API, messaging systems, cloud services, analytics platforms.
Accordingly, the profession of Kotlin Software Engineer has long since transformed into Fullstack Kotlin Developer. It is important for a modern developer to understand how a database works (PostgreSQL, MySQL/MariaDB, MongoDB, etc.) in order to build interactions correctly. You need to understand how the frontend is structured (HTML, CSS, JavaScript/TypeScript, React, Angular) to set up communication with the Kotlin backend (Spring Boot, Micronaut, Quarkus). And of course, these days you cannot go anywhere without Docker—it is already an industry standard 🐳.
Modern development is very different from what it was 20 years ago. A programmer writes code no more than 50% of the time—the rest goes to reading documentation, learning new technologies, designing, and teamwork in meetings. Lone-wolf programmers are now more of a rare exception.