📜 ⬆️ ⬇️

From junior developer to senior

Good day, Habr. Inspired by the article about system administrators, I decided to write something similar for developers.

But before embarking on the path of cultivating yourself as a senior developer, you need to ask yourself a simple question: “Do I like programming?”.

image
Senior developer. Taken from here .
')


Confucius owns the dictum: “Choose an occupation to your liking, and you will not have to work for a single day!”. And for the developer, this is one hundred percent true. If it brings pleasure to write code, if it overwhelms with joy from the fact that the feature works, if the program runs just as planned and this causes an emotional boost - yes, programming will bring pleasure and money, and most importantly - building a developer's career will turn into a real pleasure.

So what should you do?


1. Start early


Basics of algorithms began in my elementary school. At 7m, they started teaching pascal, at 10m - C. Naturally, there are hardly fifth-graders here, but the message is: as soon as the first interest in programming is noticed, it is worth supporting it with knowledge. Moreover, the school still does not give a good understanding: even if there are programming lessons, they do not give such a thorough knowledge as books. So, for high school and just to get acquainted with the topic, I propose the classic “Kernighan, Richie: C programming language”. Frankly, I replaced this book with a book with the same name, but for the authorship of Podbelsky and Fomin.

2. Learn by yourself


Seriously. Learning to program can only be programming. Read books and manuals. Understand the examples. Write your own programs. Once upon a time I wanted to watch one anime, but there was no Russian dubbing, there were subtitles in str (right?). The trouble is that the Internet was slow and expensive (hello, dialup!), And the found subtitles lagged behind for five seconds. It is clear that editing the files with my hands was very long, so a dialogue application was written in C + WinApi that accepted the file, the size and offset sign, and formed the corrected sab file for me. It was written naturally crooked and bazno, but

a) I solved the problem
b) Understood the basics of WinApi
c) I learned debug and debug output

3. Go to university in the specialty


Even if the programming itself will not be enough to give, there are several advantages in studies:

1. Mathematical basis. Mathematics is still useful. Will you write the simplest graphics editor for Android or games for linux, will you implement the encryption algorithm? Math is still needed.

2. Future colleagues. These guys - your classmates and fellow students - they are also programmers in the future! You can exchange experience with them, and after 5 years get the opportunity to get a good company on the recommendation. And it is always pleasant to discuss professional problems.

3. University Communications. A decent university always has cooperation with IT companies. These can be hardware developers, software developers, or both. Specialists will come from these companies and give lectures - yes, on Saturdays in the morning. But this is an opportunity to learn from people who are on a wave in their industry.

4. Get started early


Try to get an internship. Many development companies especially now focus their personnel search on students of 2-3-4 courses. This is primarily due to the lack of qualified personnel, and therefore companies decide to grow such personnel on their own. After a successful internship, they usually promise a job for 20-30 hours a week and not the worst money.

4. Understand the basics


Understand how the computer works. What does the processor, memory, what are clocks, registers, pointers, memory models. It is clear that it is not necessary to thoroughly know the processor architecture. But to understand how the program is executed, what a stack and a heap are, you need to know already in the first year.

Study data structures and algorithms. They are the basis of everything. Solving any applied problem, first select data structures and objects describing them, and only then use them. The data structures are basically everything.

5. Dig out and understand


image

This is the basic principle of development. Without knowing how the foundation works, it is impossible to understand how a complex system works. And, although everyone is talking about abstractions, we all know that they flow . Therefore, in each problem you need to find out the cause. Otherwise, we get the cult of cargo . I do not know how much people realize this, but only an understanding of the principle of the system’s operation allows us to do something within predictable terms. This concerns, by the way, not only programming, but generally any work.

Learn the source of what you work with. Understandably, they are not always available. But if you are lucky to have the source code, refer to them. If you work with Java - see how the library classes are written. Reading someone else's code is simply useful, because when you read, you learn, and at the same time you understand what happens when one or another function is called.

6. Never stop


Every time you get some piece of knowledge - for example, the principle of the TreeSet - you need to feel the moment “I am cool! I know how it works! ” And the next moment pacify pride and go on. Let learning be the inspiration for further study.

image

7. Use the best tools.


Writing in a notebook is good until you come across a tool with syntax highlighting. Such a tool is good as long as you do not know what autocompletion is. The idea is clear.

8. Communicate with seniors


They are more experienced than you and they will share their experiences. Always ask how best. When you are tormented between two dubious options, there is a chance that you just do not see the good. Go to your technical manager, he will tell.

9. Help others


Despite the fact that the previous principle is good, there is even better: helping others, you learn yourself. Sign up at stackoverflow.com and answer. Not only is this a good way of development, the profile on SO is a line in the resume and the path to careers.stackexchange.com.

10. Go for an interview


Suddenly, not to change jobs. Knowing what the technical specialists are asking, one can understand in which areas of knowledge there is a gap. After you can come home and start to fill this gap.

It is clear how to become a programmer. How to become a senior?


In my understanding, a senior programmer is a person who can do the whole project himself, at a minimum. This means that he understands the principles of the platform. He knows the life cycles of the application (not only, it started - it worked - it turned off, but it was also written-tested, released, updated, deleted). He can think out the architecture. It can build a development ecosystem. A senior programmer is not just a developer. His responsibilities include not only developing, but also ensuring the development process. This means that he knows his tools well. He knows how to ensure the quality of the product (tests, inspections), he knows that collecting a binary in one click is important.
He can set tasks to colleagues and subordinates.

How to achieve this all?


For me, the answer is only one - own projects. Open or not, on order or on enthusiasm, it doesn't matter. If you got a job as a programmer, you are unlikely to be allowed to “project setup”. And the older ones are busy people, it is not always convenient for them to tell why thousands of small things are somehow fulfilled. Understanding the details will come when an attempt is made to build a project from scratch on your own: set up a repository with source code, create a project structure, build test infrastructure, raise continious integration, set up a bug tracker for a project.

What to read?


I myself am mostly a java programmer. And therefore I will not advise books on c ++ or python. Here is a list of what I read myself:

0. Programming language C (Podbelsky, Fomin).
1. Java Certification for Java 6 2nd edition
2. Effective Java (Joshua Bloch)
3. Code Complete (Steve Macconnell).
4. Concurrency in Practise (Dug Lea & others).

Read all better in the original. It is clear that for this you need English, but all the best programming materials are still on it.

And what quality code will I get?


The only important criterion for a code, besides the correctness of its work, is its readability. In most cases (we are silent about performance), a clear code is a good code. I will not remember about a psychomaniac who will support the code, but the desire for well-readable code will pull you to heights.

Source: https://habr.com/ru/post/148498/


All Articles