What should I learn after I've learned my first programming language?

Q: What have you learned next, after learning your first programming language?

Answer

When I've learned my first programming language, I did not yet know what I'm confronted with, so I won't tell you what and how I've learned. I'll tell you instead how I wish I had proceeded and what I wish I had known.

The challenge is not to learn a programming language, neither to learn algorithms, nor the APIs of a framework or of an operating system. All these things are helpful, useful, and you'll have to learn them, but they are rather side-effects of your journey, not the goal.

Your main goal should be developing an engineering mindset - to get to the point where you not only know how to solve a problem, but to feel it - programming is a part of your way of thinking, rather than an abstract activity.

Of course, in order to undertake such a journey, you need to handle a programming language so well, that it doesn't feel like a wall any more, meaning: to have an idea, and to move from idea to code seamlessly, without feeling that “writing code” is an important step - to not even feel that you write code, but to feel that you express ideas.

Code is not just code - code is ideas, expressed formally.

And in order to express better, more maintainable, more correct, more performant, etc, some ideas, the following tools help:

  1. knowing multiple programming paradigms
    for this you need to know multiple programming language; I haven't seen a senior programmer who knows only one language, from 3-5 up is normal. But this doesn't mean that you have to learn first a few paradigms (with the help of different languages), and then proceed with the next item on the list. Instead, jump around and combine them, learn one language, then learn some of the next points, then come back and learn one more language, and so on - jump and combine the steps, so that you keep your enthusiasm high
  2. elementary data structures
    at least from lists to graphs
  3. design patterns; do not learn them by heart. DPs are meant to make you think about the structure of the code, and use/combine them in useful ways, not just for the sake of using them
  4. understanding theory of complexity and of algorithms

Do not forget, you can combine steps or alternate them, at various levels of depth. You could for instance learn how to deal with linked lists in C, then start learning C++, and as part of it, learn and practice some graph algorithms.

Discussion

Enter your comment. Wiki syntax is allowed:
F X᠎ L O N