CodeGym /Courses /JAVA 25 SELF /The programmer’s path

The programmer’s path

JAVA 25 SELF
Level 7 , Lesson 6
Available

1. Career ladder

Programmers also have levels depending on their qualifications. Once, terms like “coder,” “programmer,” and “hacker” were used, but now everyone has switched to English names from American 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 approximately as follows:

  • 🌱 Intern Software Engineer — 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 basics of software development, performing simple coding tasks and participating in testing.
  • 🐣 Junior Software Engineer — 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 stage of a career focuses 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: responsible for designing and implementing complex systems, providing mentorship and leadership within the team, participating in strategic project planning, and often representing the team in communication with clients and other stakeholders. Typically have 5–10 years of experience.
  • 🧠 TechLead: responsible for the final technical outcome of a project, leads development, tackles the most complex tasks, ensures adherence to technical standards, and coordinates the activities of developers.
  • 🏆 Principal Software Engineer: operates at the highest technical level, often participates in shaping the company’s technical strategy, developing innovative solutions and establishing technical standards, serves as the primary mentor for technical leaders, and is a key expert in complex technical matters.

Fun fact. 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, defining the strategic direction of technological development in the company.

2. Lego products

Long ago (in 1975) Niklaus Wirth, the creator of the Pascal language, wrote the book “Algorithms + Data Structures = Programs.” Much has changed since then. A modern software product is not what it was 10 years ago, and certainly not what it was 20 years ago. As for 1975 — 50 years have passed since then ⏳

The modern programmer no longer writes programs by hand. They rather assemble them from ready-made parts (libraries) and write code that helps those parts interact🧩. 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. They just need to be configured correctly so they work as they should. Although over time the configuration process can become so complex that it effectively turns into development. 🤦‍♂️

Programmers constantly fight themselves. Instead of writing similar code again in different programs, they write libraries that can be configured to their needs, and then simply plug them into all the required places.

Over the past 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 assemble a program from high-quality, proven solutions — libraries, frameworks, packages, and modules 🧱

But even this approach is already becoming outdated. The trend of the last 10 years is the move 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 — those exist too! Any whim for your money.

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 libraries and frameworks for that. Your tasks are: 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 🎓

The work has only become more interesting because of this. You can now add new functionality to a product 10 times faster. Thirty years ago, if you needed a web server, you wrote it from scratch. Twenty years ago — you bought, installed, and configured it. And now — you just go to the Azure or AWS cloud portal and turn on the required service 🌐

This, by the way, is one of the reasons for the popularity of Java. 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 practically anything: databases, microservices, REST APIs, messaging systems, cloud services, analytics platforms.

Accordingly, the Java Software Engineer profession has long transformed into a Full-stack Java Developer. A modern developer needs to understand how a database works (PostgreSQL, MySQL/MariaDB, MongoDB, etc.) to design the interaction properly. You need to understand how the front end works (HTML, CSS, JavaScript/TypeScript, React, Angular) to set up communication with the Java back end (Spring Boot, Micronaut, Quarkus). And of course, you can’t get anywhere without Docker — it’s 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 is spent reading documentation, learning new technologies, design, and teamwork in meetings. Solo programmers are now rather a rare exception.

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