Diving into Programming 2: Where not to Begin?
For starters, here are some statements to think about.
The overwhelming majority of programmers’ daily tasks consist of finding and assessing the necessary information and building new mental abstractions. So it is just impossible to learn everything you need for work in advance. First of all, it is better to study the mechanism for obtaining new knowledge. It is about “learning to learn”.
The most topical technology turns into an ancient enterprise in six months or a year. The process of learning technologies should be continuous and never stop. The material which is taught to you on courses right now was prepared a couple of months ago and mastered by the teacher themself six months ago or earlier. The relevance of such knowledge is extremely small.
The learning process is always based on drawing analogies with already known things. And for each person, the process of making such analogies is strongly individual. All that a teacher is able to do is to impose their own analogies.
A certain basic set of knowledge can still be obtained during courses, but it is so fundamental that you can easily learn it independently. Git, the basics of Unix, algorithms and data structures, a bit of math. In addition, some basis for a specific profession. For example, in web programming you need to understand HTML, CSS, HTTP and stuff.
Of course, in practice, it can be difficult to master both the fundamentals and a certain programming language on your own, especially without any technical background, since you don’t have an overall picture. In this case, it is still important to distinguish good courses from bad ones.
Good courses give you new challenges, tasks which you learn to solve. Sometimes these are typical tasks and often typical approaches. Good courses do not impose approaches, but explain which ones are better and why. And the tool for solving the problem — say, ruby or python — you can choose depending on the situation. Bad courses teach you a language. Good courses teach you to meet the challenges and solve tasks.
And finally, even if you succeed to choose the best and the most rigorous courses, it’ll still be very hard to stand out from the increasing number of other similar students, not to say about thousands of computer science graduates.
And what is your take on this issue? Have you had your own experience with such courses or their graduates? How successful was it?