Junior developers mistakes (Part 1)
Tags: webdev, beginners, programming, tutorial
Published: 2022-01-09 09:39:26

# Introduction
Hi, in this article I will try to consider the most common mistakes novice developers make. Some of them might apply to more experienced developers as well.
This article is my opinion, a lot can cause controversy and discussion, I will be glad to know your opinion

# Mistakes

## I don't need computer science

Probably the most controversial point. Most likely, as a novice developer or developer of simple forms and applications, you do not need it. I know many middle developers who are satisfied with their level and knowledge, for such people programming is a job that is enough for them at work. Therefore, if you decide that you are something big for programming, or you have more professional ambitions, you should not dismiss such people, you are no better and no worse than them, you are just different.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qlyvtshk9tkch65yyk1j.png)

But if you want to grow, there is nowhere without basic knowledge of computer science. Lack of this knowledge is an uncertainty that you, as a senior developer, cannot afford. And it is better to prepare for such tests in advance.

## Using too many libraries

* Use only proven and popular libraries (stars and issues on github, when was the last commit, how many downloads per week)
* Not every task requires a library
* The more untested and incomprehensible libraries there are, the higher the level of uncertainty

## Not using libraries at all :D 

The rules are the same as in the paragraph above. As a rule, a beginner will not write a solution better than in a popular library.

## I know everything

If it seems to you that you have achieved everything and are not mistaken, read about the [Dunning-Kruger Effect](https://www.britannica.com/science/Dunning-Kruger-effect).
Try to understand your area deeper (if it's a WEB, then study the architecture of WEB applications, how the browser works, the TCP /IP protocol), for general development, try to study the most popular [design patterns](https://refactoring.guru/design-patterns) and then try to adapt them to your environment. You can also upgrade well in algorithms and structures - https://www.codewars.com/.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8x5wu0jfxhb2wyfmxf8.jpg)

## Bad questions
Asking the right questions is half the solution. As a novice developer, what do you do when you can't solve a problem? As a rule, the algorithm is always the following? If you are satisfied with the current level of tasks and responsibility and your knowledge and skills are enough for this, then you can skip this point.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/300zn4pjrae6mdxqg06o.png)

As you can see, the correct algorithm is in the middle. This means that the other two approaches do not work. They work, but they create uncertainty in your decision. And uncertainty is fraught with errors and bugs that will be very difficult for you to catch.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9dn9q50lneg6wg3plh1.jpg)

**How do I know if I'm asking a good question?**

* You ask a question for solve one problem
* You understand the context of the problem, most likely you are faced with a limitation or do not know a specific simple algorithm
* You can tell what you did and at what stage something went wrong

For example, you need to find the hundredth Fibonacci number

BAD QUESTION:

* How to find the hundredth Fibanacci number ? (very abstract question)
* I found a solution but don't understand it. Can you help me ? (you haven't learned the context, and you can't tell how programm works)

GOOD QUESTION:

* I wrote a solution, I have a performance problem at the 100th step, maybe it's a recursive approach, can you tell me how to improve performance ? (Great question, you are in context, you have one problem that you do not know to solve yet)

## Be a professional

A banal point about soft skills:
* Not everyone around you is developers, try to explain yourself clearly to everyone
* Don't defend a bad decision just because it's yours
* Try to give a correct estimate of the timing - take twice as much as you planned
* Argument your position not with phrases: I like it so much, I dislike your approach, etc. Try to provide examples of patterns and approaches that confirm the correctness of your position.
* Don't be late for appointments
* Pair programming is cool, don't be afraid to write with senior developers
......

# Conclusion

Thank you for reading this article, I hope it helps you. I have not listed all the points and of course there will be a continuation if the article will be popular.