V
V
Viktor2017-02-18 14:27:36
JavaScript
Viktor, 2017-02-18 14:27:36

How to improve the level of programming?

I estimate my strength at the level of a junior.
When I program, I catch myself thinking that my code is somehow inexpressive or something. Those. it is clear that the signor did not write. It turns out to be poorly scalable, each new functionality is added more and more complicated.
How to move to the next level?

Answer the question

In order to leave comments, you need to log in

17 answer(s)
I
Ivan Tomilov, 2017-02-18
@tiabc

Good developers are constantly evolving and never stand still. Any development consists in doing things, in solving specific problems and in the feedback that you receive from others or as a result of reflection.
TL;DR: Read books, do things, read other people's code.
What can you start doing right now to become a better programmer?
1. Study the base. Algorithms, networks, cryptography, architecture, OS, browser design, compilers, etc. The study of such things gives an understanding of what tasks are in the real world and how the "big guys" solve the problems that arise. This is a treasure trove of insights.
2. Get a full-time job with a strong team, even if you're a junior. I believe that there is only one way to grow as a developer: to work full time on one business product. This approach teaches you how to solve scalability issues, think ahead, work on the process you follow in development, solve problems that come with long-term operation, solve problems with comfortable environments, and generally learn to plan your work in relation to business needs.
3. Writing code is not the biggest part of the work of senior developers, I would say. But when it comes to the code itself, you need to understand what you are writing and why. There are classic books that can be found, for example, in the programmer competence matrix, there are modern, but useful ones like The Art of Readable Code, which I highly recommend. You need to read books. At the interview, I always ask what books the applicant has read or is reading, and if the answer is no, then this is a big minus.
4. Participate in open source. There you always have to deal with the way of thinking of various people and the code that they write. This teaches you to read someone else's code, find errors in it and treat it critically and with arguments, offering your own solutions. Open source development, just like books, gives you the experience of others that you yourself would never get from people who are often smarter or more experienced than you in something. In open source, by the way, unlike business development, there is a chance for pleasure to write very high-quality code, which is not always necessary in business.
5. Be patient. It won't happen in one day. Think about naming, share responsibilities, study algorithms and the ecosystem, optimize your workspace, learn new technologies, read articles, and over the next years of regular effort, you will find a new way of thinking and develop maintainable and reliable software. There is no easy way, unfortunately.

L
Lenar Shagiev, 2017-02-19
@shagiev

If you want to improve the quality of your code:
1) Study the books "Refactoring" and "Perfect Code".
2) Train on CodeWars - try to understand and clean code. And then compare with the decisions of other participants, take into account how you could do better.
3) Learn design patterns.
4) Take large open source projects with good architecture and try to change or improve something in them. In the process, learn how they are designed, you will unwittingly learn and adopt effective methods for solving many problems.

V
Vasily Nazarov, 2017-02-18
@vnaz

Read about SOLID. DRY and KISS.
Apply them to your code.
A small trick: the code is not always and not always born beautiful for everyone, it is usually refactored, and it is not at all necessary to get indescribable beauty, it is enough to make it "normal"

A
Alexander Zubarev, 2017-02-26
@zualex

In order to improve your level, you need to find your shortcomings.
Because of this, I made a web developer development map https://github.com/zualex/devmap
It seems to me that the way to improve your level is individual. I will describe how it was for me
1) I worked in a web studio, riveted sites one by one, it became very boring, I thought I was cool and decided to go for a promotion, after the first interview I realized that I was nobody)
Level up - the realization that you are not cool
2 ) I began to study and, most importantly, apply new technologies for me: git, laravel, gulp, etc. He studied gradually, did not attack everything at once, something fell away, something became an invaluable tool.
Level up - the realization that you need to constantly develop
3) Over time, they began to constantly contact me if problems arose, I needed advice, I began to conduct technical interviews. The understanding came that you need to grow in the direction of managing the team. I started reading books a lot. The books went very well, I felt a huge benefit from them.
Level up - reading books
4) After a while, I realized that I had reached the ceiling, I started going to interviews, various shortcomings were revealed.
Level up - go to interviews
5) New job, where everything is arranged differently (in a good way), new team, new tests
Level up - exit from the comfort zone

I
Igor, 2017-02-18
@imikh

The most effective thing is to work in a team where they do the senior review code. (For example, this is how it is in our team).

D
di23, 2017-02-18
@di23

Are you treading water? And simple practice does not help?
Get out of your comfort zone, get out of there. Learn something new and interesting. FP, SICP if you haven't read it yet, some thread Haskell, Go.... Play the TIS-100 game. Buy an Arduino. In general, stretch your brain.

X
xfg, 2017-02-19
@xfg

If we are talking about the OOP approach, then read the book on DDD from Vaughn Vernon. In fact, the author describes how to build a layered architecture to separate the mess of business logic, storage, application and presentation into separate layers with unidirectional data flow. The book sets the vector of movement and allows you to minimize your own creative staggering from side to side, which ultimately leads to spaghetti code.

K
Kir ---, 2017-02-23
@SowingSadness

Read what is OOP, SOLID.
At what you should understand each term strictly. What is the difference between a paradigm and a principle. What is polymorphism and how does it differ from parametric. What is Single Responsibility. What are her criteria.
Once you feel that you understand each term and how it is implemented in practice, then you will be surprised at how much better your code has become. But this will take a lot of time.

V
Victor P., 2017-02-27
@Jeer

Hey!
The phrase "I can't use Javascript" is very general. Although many people pour shit on this magical language, I consider it one of the most beautiful and expressive. I’ll tell you how it was for me, I started writing on it in the Java J2SE system, where js was an internal scripting language (at the same time I read a book with a rhino, the most popular among beginners, well, I didn’t finish it, I only needed syntax). The main things were straight in the work: declaration of variables, cycles, conditions, work with lists. In principle, the tasks are not difficult, everything was solved and okay.
Then there was web development. Having some basic skills, it was not difficult to turn on. Arising tasks were solved by Google + stack overflow. But the output turned out, just like you say, ugly code. Support for it was mainly so-called custom programming. Then I read the jQuery book (o'really with Peter I on the cover), well, as I read it, I flipped through it, one might say. And the fact is that I only learned more jQuery functions, like nothing, but for me it was something new. I just learned that you can do more than one clumsy way, but there are other options. Even my Google queries have become more elegant, clearer or something. Then I read the book "Graphics in JavaScript" (still the same O'Really). There are interesting optimizations at the beginning, but the very organization of the code, I have never done this and I liked it. Although I didn't do graphics, I just wanted to look at Javascript from a different perspective. And I didn't guess. Then I came across an article from habr, OOP in Javascript. There are many such articles, I don’t know which one I read. But I combined what was in the book and use it to this day. Again, I just didn't know it was possible.
After that, I decided to look in the direction of node.js, bought some small book, played around, realized that everything was raw, I didn’t like something, tinkered around for myself, and abandoned it. But again, I did not regret that I spent some free time on this :) after that I began to understand callbacks, before that I knew roughly what it was, but I didn’t work with it, I didn’t use it in any way. And then I found out that it’s possible and it’s quite legal and it works not only in the node, but also in the client.
Now sometimes only articles from Habr or GT come across, one had an advanced node.js, it was told, for example, about asynchronous code, promises and so on. Now I do not use it, but at least I learned that it is possible. And if I need something, I will go to Google, but now I can at least be able to formulate what I want.
Recently I came across an article (I will give at least one link) https://habrahabr.ru/post/154105/ - functional programming in js. Previously, out of interest, I watched what it was, again, just for myself, I didn’t really like it, I decided not to spend a lot of time on it. And here it is in a completely understandable language, for dummies, and even using Javascript examples. In no way am I calling for becoming a functionalist, I'm just saying that there are different approaches and you need to look at them at least for familiarization.
To sum up: practice is essential, I have always had it, although js has never been my main language. Books are needed and books are important, they already said here, and I really like this phrase "if you want to be a writer, read a lot." Look at the language from the other side. That is, if you are working on client-side js + jQuery, try writing a game in html5 (space invaders or others), well, or other options, I gave examples. Thematic mailing lists from habr and gt allow you to stay in good shape. And the last thing is perseverance and time

N
Nwton, 2017-02-18
@Nwton

Habr + practice.

X
xmoonlight, 2017-02-19
@xmoonlight

Learn to design and apply design patterns correctly .

A
Anton Zhukov, 2017-02-23
@MrCheater

The answer is general for any profession: you just need to fuck up, spend 10,000 hours honing your skills.

A
Andrew, 2017-02-23
@iCoderXXI

10 to 20 thousand hours of practice with constant self-improvement, always trying not to step on the same rake in the future, with enough healthy laziness, regularly returning to your old code.
You should try to write the code in such a way as if after you a psychopath who knows where you live will work with it. :)

V
Viktor Storozhenko, 2017-02-23
@montecazazza

Here's what I would recommend:
Studying design patterns - it will definitely be useful
Learn a different paradigm - if you are from OOP, study Functional programming
If you write in JavaScript, read something on the topic object composition vs class inheritance
And of course, study something on the topic Algorithms and Data Structures if you are not familiar with this topic
From all this, I would single out the study of a new approach (Functional) - in the course of studying you will learn a lot of interesting things

M
Maxim Kryuchek, 2017-02-23
@KMaxI

Try to come up with your own startup, or participate in someone else's. As a rule, the tasks solved in new projects are unique and interesting. And don't get stuck on one type of work.

S
Sergey, 2017-02-25
@red-barbarian

my opinion.
everything is trite)
if you want to be a writer, read a lot.
all good books like "clean code" are like theory. how it should be and what to do. writing your own code is very useful, but without criticism (proofreading) you can write something that is clear to yourself and not clear to yourself in a year.
reading someone else's good code instills, as they say, taste. imperceptibly.
Well, know the basics. like SOLID. these principles are aimed at breaking the system into the most independent and understandable parts.
I also think it will be useful to study TDD. very useful in my opinion.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question