What should an amateur do to develop good programming skills after the basics?

Therefore, I will say right here that I am not a professional encoder. I am a lover. And to a large extent, like other people, I feel like I'm doing it wrong.

Like this question. Feeling that I'm not a good programmer if you started to feel it. Now I know basically that they say that you should not worry and that your good, even if you constantly doubt yourself. But they are talking to him. I do not look like him (in the sense that I am more a beginner) ... I have been programming as an amateur for 3 years (for 3 years of hobbies to you!), Unlike his 10-11 years, which he claims.

Also, the only thing I probably read in depth was Teach Yourself C ++ for 21 days . And before I continue, just so that you donโ€™t get confused with the various questions that I wrote (mostly) iPhone and OpenGL, I poked and nudged these two things for several months each, and finally them. But from what I noticed, is that I suck in creating good code. For me, this is not even a discussion about whether I am doing it wrong or not: I can say (from the different spaghetti codes that I create, and other various discrepancies that I, and others, can see and mark in my code). What is a good way to get rid of these terrible habits and make it more right, or if there is no "right way", then I mean the "typical" way?

+4
source share
8 answers

What should a hobby developer do: (I'm not an expert, I have listed all my thoughts. Please correct me if I am wrong)

  • You need to fully learn the language (C, C ++ or Java). Many of us were addicted to computers and programming, and we began to study and create pieces of software for fun. Many books you can find on amazon.com about best practices. You can get through this.

  • Learn concepts such as OOP, design patterns, UML. First of all, everyone should ask โ€œwhyโ€ for each answer. This will help you understand the best ways to model your system. Many C programmers, when migrating to C ++, use Class as a container for storing all variables and methods. So how to create a class, why should I create an abstract class. Therefore, why is useful.

  • Choose basic concepts such as Operating System, Computer Organization, Computer Architecture, Algorithms, software development, etc. Most of us are just programmers (designation "Software Engineer"). We all know how to encode and get a working solution. Other than that, most of us know nothing about computers. Because many programmers from different streams of technology. He studied these programming concepts and started creating applications and joined as a software developer in a company. But we (other streams) never studied these concepts. Therefore, you need to pick up these concepts that will help to better understand and code.

  • Participate in conferences (e.g. Microsoft TechEd) that help you understand upcoming technologies.

  • Writing a blog about best practices, your findings, new concepts, work on solutions. The blog will act as a discussion book where the visitor will share his views that will help you better understand the concepts.

  • Subscribe to RSS from blogs. This is really helpful.

  • Amazon.com I found that amazon.com really helps in collecting the right book to learn new concepts. user reviews, and check the list of books.

+1
source

Participate in an open source project.

+6
source

Well, look, the sad truth is that 50% of developers are below average. In fact, due to the Jon Skeet factor, this is more like 65%. But this does not mean that you should throw a towel. (If everyone did this, it would only serve to set the bar even higher, making even more people depressed.)

At least you acknowledge the fact that you are not satisfied with yourself and want to be better. I know people who write awful code and consider it the greatest in the world. But I donโ€™t think I have ever met a good developer who was not embarrassed from the code he wrote 6 months ago. This is normal, and it is a sign of progress.

+4
source

If I could give you two tips, they should get to know Test Driven Development and follow the online community related to TDD in your chosen language, and secondly, learn about SOLID principles for object-oriented programming.

If you do this, you can give up some of the spaghetti code habits that you have developed over the past few years. Both of these topics are very accessible, there is a lot of literature, both in print and on the Internet, and they have pretty vibrant online communities to give you help and advice.

Greetings.

+1
source

As an amateur, do not stop programming or reading other encodings. You have no pressure on the business!

It is time to learn the concepts of object-oriented programming (OOP), such as encapsulation, separation of problems, decoupled design, etc. Here are some of the basics you need to master at this time. Most good practices are based on such principles.

+1
source

Learn how to code correctly, how to express yourself in the least amount of code.

Forget everything about RAD, use unit tests solely to develop your code and follow design patterns and best practices.

Do not write garbage code, forbid copy and paste, but create your own library of reusable classes.

And then - GO FUNCTIONAL (seriously).

Oh, and if you use Java - switch to C #, seriously. Much better infrastructure, much better tools, much cleaner language.

+1
source

Reading books / blogs / websites is a good and absolutely necessary way to create a knowledge base. However, to get rid of writing bad code, nothing beats external help. With this, I mean practices like pair programming, code reviews, etc.

For a professional, this, of course, is much simpler, since most of us are not the only coders in our workplace. For an amateur ... well, I think the only way is to find a friend (from a neighbor or from the Internet) who is interested in starting an encoding project with you.

Believe me, a different look at your code can greatly expand your own look.

0
source

I would like to warn you about everything that has been said.

More precisely about the language of the main language. Learning the โ€œcoreโ€ language is not always a good way. Basically, I mean (Java, C #, C ++, PHP ...) I donโ€™t mean what is bad there, simply because most of the time they did not teach you the concept.

The main language in most cases, by the way, accepts the old concept and promotes them as new.

For example, now in PHP you have a closure (actually there is a lambda, but ...), in C # too ... Closing / lambda is a very old concept from LISP, back in the 60s.

So, be on the alert and always try to understand where it all came from. It is difficult, but the more you do it, the more acute you will die, like many other things :).

0
source

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


All Articles