JavaRush /Courses /Go SELF /The Programmer’s Path

The Programmer’s Path

Go SELF
Level 7, Lesson 6
Available

The Programmer’s Path

1. Career ladder

Programmers also have gradations depending on qualification. At one time, 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 gist is roughly this:

🌱 Intern Software Engineer — these are interns. They are in the process of learning programming, have no commercial experience, and no experience participating in large projects. They usually work under the supervision of more experienced colleagues. Their main task at work is to study the codebase and the fundamentals of software development by completing simple coding tasks and participating in testing.

🐣 Junior Software Engineer — these are already programmers, 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): they have more autonomy in making technical decisions, are responsible for significant parts of the project, begin mentoring less experienced colleagues, and participate more actively in architecture discussions. They typically have 2–5 years of hands-on experience.

🧑‍🔬 Senior Software Engineer: they are responsible for designing and implementing complex systems, provide mentorship and leadership within the team, participate in strategic project planning, and often represent the team in communication with clients and other stakeholders. They typically have 5–10 years of experience.

🧠 TechLead: 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.

This is 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 and defines the strategic direction of the company’s technology development.

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. And 1975 is not even worth talking about — 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 interact🧩. Modern software products can consist of dozens or 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, are already written. You just need to configure them correctly so that they work as intended. Although over time the configuration process can become so complex that it effectively turns into development. 🤦‍♂️

Programmers are constantly wrestling with themselves. Instead of writing similar code again in different programs, they write libraries that can be configured (customized) to their needs, and then simply connect them everywhere required.

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 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 this 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! Anything you want, as long as you pay.

3. “I’m an engineer” © Elon Musk

img

You no longer need to write complex and boring things yourself. If you need some functionality, there are already ready-made libraries and frameworks for it. Your task is: (a) know they exist, (b) find a suitable option (there are often several alternatives, with different quality and nuances), (c) understand how to integrate it into your project 🎓

Work has only become more interesting because of this. 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 it, installed it, and configured it. And now—you just go to the Azure or AWS cloud portal and turn on the service you need 🌐

By the way, this is one of the reasons for the popularity of the Go language. It is perfectly suited for developing high-load backend, microservices, and cloud infrastructure — its simple syntax, built-in concurrency via goroutines, and fast compilation make it one of the main tools of a modern backend developer. It is no coincidence that Docker, Kubernetes, and Terraform are written in Go.

Accordingly, the profession of Go Software Engineer over time covers an increasingly broad stack. It is important for a modern developer to understand how a database works (PostgreSQL, MySQL/MariaDB, MongoDB, etc.) to correctly build interactions. You need to understand the basic principles of how the frontend works (HTML, CSS, JavaScript/TypeScript, React, Angular). And, of course, you can't go anywhere without Docker nowadays — it is already an industry standard 🐳.

Modern development is very different from what it was 20 years ago. A programmer writes code for no more than 50% of their time—the rest goes to reading documentation, learning new technologies, design, and team work in meetings. Lone-wolf programmers are now more of a rare exception.

Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION