📜 ⬆️ ⬇️

10 ways to improve your programming skills

1. Learn a new programming language


Learning a new programming language will develop new ways of thinking, especially if the new programming language uses paradigms that you are not familiar with. Many of the acquired ways of thinking can be applied to languages ​​that you already know. You might even love a new programming language for you so much that you start using it for serious projects.

Among programming languages, an excellent cognitive effect and catch-up experience are: Lisp (or Scheme ), Fort , PostScript or Factor ( stack programming languages ), Haskell ( strongly typed , pure functional language ) or OCaml ( object-oriented functional programming language ), Prolog ( logic programming ), Erlang (excellent parallel computations ).


')

2. Read a good, complex book on programming


A lot of knowledge can be gleaned from books. Undoubtedly, the practice is very important, but after reading at least one good, complex book on programming, you not only test your thinking, but, most likely, upgrade your skill in this matter.
Here is an example of such literature: The Art of Computer Programming (if you want to boil the brain), Structure and Interpretation of Computer Programs , A Discipline of Programming or the famous dragon book . On the advice of ArtemSmirnov : Concepts, Techniques, and Models of Computer Programming .
Of course, you can read unpretentious books, but avoid literature such as "For Dummies", "... in 24 hours", "... in 3 weeks." Such books will not give you significant benefits in terms of improving programming skills.

3. Join open source project


What are the advantages of participating in an open source project? Teamwork (a wonderful thing, especially if you previously worked only on your own), the opportunity to learn how to delve into someone else's code, understanding it (quite a difficult task).
Known (and not so) open source development community: GitHub , Sourceforge , gitorious , BitBucket , Ohloh .

4. Solve programmer puzzles


This is also an excellent method for improving programming skills, especially since it is not a problem to find a puzzle for the evening. For example, mathematically-oriented tasks can be found on Project Euler , which is one of the most popular programming puzzle sites. From myself I can advise The Python Challenge .
I also suggest that you try programming golf where programmers try to solve a puzzle by making as few keystrokes as possible. This can teach you many of the isoteric and special features of a programming language, making the work more creative and fun. You can try yourself in this specific golf here .
Link from sl_bug : Timus Online Judge
Links from winger : acm.sgu.ru , codeforces.ru , topcoder.com
Link from black_bunny : acm.mipt.ru
Link from kane : spoj.pl

5. Program


Every new program start doing "from scratch." Design your entire architecture yourself and implement it. Repeat.
Programming is the best way to learn programming. You will learn from your mistakes, and at the end of the project you will get much more pleasure than reading a book. In addition, you "fill your hand" and will quickly navigate the issues in which they themselves sorted out.

6. Read and study code.


Explore interesting codes, such as the Linux kernel (keep in mind this is a very large code). A good training operating system is MINIX3 . You will be able to learn a lot of new idioms of the language, and something else about software architecture. Reading an unfamiliar source code is a difficult but very useful work.

7. Hang on sites and programming forums, read blogs


Hanging out on programming sites and forums, you will show yourself and learn from others. Also read blogs, preferably more often. I can advise Joel on Software (no longer publishes records, but there is an archive in which you can find many interesting things), Coding Horror and Lambda the Ultimate . With spmbt feed: habrahabr , StackOverFlow
mgarin suggests:
forum.sources.ru and forum.vingrad.ru - 2 major forums on various programming languages


8. Write about programming.


Start your blog about programming, and write to it, even if it is for yourself. Browse Q & A sites and try to give answers. So you can gain knowledge in a question that you yourself might never have encountered. If you feel confident - write tutorials. If you write about programming, you should be up to date on the question being lit, use appropriate terminology, and be able to correctly answer the question posed on the topic. If you write on English-language sites - this is also a great opportunity to pump your knowledge of English.

9. Learn low-level programming.


Studying low-level programming is useful for better understanding the operation of the machine. Read about C , maybe master the assembler . Learn how the computer runs the program, and how the operating system works (at a high level, at least). If you want to learn something serious about low-level programming, then read books on computer organization, operating systems, embedded systems, driver development, etc.
hx0 suggests:
If you want to learn assembler and learn about building operating systems, consider the VictoriaOS source code, try to write for it some simple programs like echo.

SaveTheRbtz shared an interesting reference:
I think it's worth mentioning MIT's OS:
pdos.csail.mit.edu/6.828/xv6/

+ great pdf attached to it


10. Doesn't work? Do not chase immediately for help! Think for yourself!


So, you have a problem in the code: does not work, or does not work as it should. You want to solve it as quickly as possible. What are you doing? Write directly to the forum, in QA, or just a friend. Now, never do that . It is better to spend time trying to correct the error yourself. Take the paper, pencil and write the scheme of the algorithm, check with the code. Didn't work? Relax, go for a walk, refresh your brain, try to figure it out again. Are you already an hour or two (time depends on the size of the problem) suffer with this piece of code? Beat Google in search of a solution? So be it, ask for help. In any case, try to solve the problem with your brain. You will spend time, but add skills.

PS: In some points there are links to good books, blogs, websites. If you have something to supplement the link list (preferably Russian resources, books) - write in the LAN, I will definitely add.

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


All Articles