Login to IT – advice from a programmer by vocation

I would say this – before you move on to paid courses on “getting into IT”, you should first try the free ones, especially those where you can not only watch videos.

https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/pages/syllabus/ – well, this is a classic classic from MIT, and there are still tasks that can be completed. A diploma and feedback from teachers will not be given to you for free, of course. Now it's in Python, but you can read the canonical course in the Lisp dialect! And try to do a course project.

https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5 – CS50 from Harvard in Russian. Many thanks to those who translated. I especially recommend the Python version, which also has a problem set.

It seems to me that this will be quite enough to understand, firstly, whether you like this IT. Secondly, after completing these free courses, paid ones from Yandex and others will be much more effective.

Please note that the courses I recommend are written by people who are professors at established universities and who are not afraid of you taking away their work. I would probably add a Scala course from creator of the language. Yes, I know that people don’t write in Scala en masse, but the principles of programming are outlined here quite well.

What to expect from work?

Another point that discourages people is that they expect that work in IT is not only better paid, but also much more interesting. This is wrong. 80 percent of it consists of routine (and 80 percent is still a very optimistic estimate).

Moreover, you need to understand that the more interesting the work, the more people want it, including those very young “programmers by vocation”. Therefore, do not be surprised that you may have to work in the so-called “hopeless projects“After all, cobol programmers are still maintaining systems created in the 70s.

What to practice on?

Good question. On the one hand, the work itself will most likely be boring. On the other hand, it is impossible to learn something if it is not interesting. This is how the brain works – boredom is built into it as a defense mechanism against wasting effort and learning unnecessary knowledge.

Returning to online courses, one of the main problems is that what they offer as a practical lesson is not interesting to you personally. Not surprising, really. Many courses suggest making some kind of React application with a backend that is not very expressive, which somehow records something in the database. Cool, but this application will not be used in practice later in any way, and does not arouse any interest among the majority of students. They do it because “Well, you have to pass it, otherwise you’ll fail.”

A good way is to try making a game. Here's a good one reddit post about this theme. I'll add:

  • Set a good standard for yourself – the game shouldn't be too difficult. You should see some results pretty quickly.

  • Try to make some simple games using really old-school elements. For example, the same Tetris using old graphic libraries under DOS (i.e. we write it into memory ourselves, operate in C), running on a DOS emulator. Why is that? Because modern languages ​​like Python or Java provide a very good boost for the programmer thanks to garbage collectors and standard collections such as sets and dictionaries. Try yourself once to go down to a lower level for at least a month, catch a segfault, etc. Read more about why you shouldn’t jump into IT after studying Java in the excellent article The perils of Java schools. Or read Dijkstra's letter on how to teach.

  • Try to draw – fractals and other miracles to help. As in games, the good thing here is that the visual result is visible very quickly. And all sorts of exercises computational geometry They will quickly make it clear why the first-year teachers stuffed them with matrices and vectors. And implementing all kinds of trees will give you very good experience working with recursion and manipulating collections.

  • Are you an office worker? Automate your process as much as you can. Using Python and others like them, try to classify your letters (and train them to classify them yourself, and not with sci-kit), automate the parsing of your Excel files and sending letters somewhere, or try to parse some site that interests you.

  • Do a normal set of course projects. For example, Yale's CS 323 course described Here – here the tasks are not in the “let’s make a website” style, but in the “let’s make our own truncated Unix command shell or ZLW compression” style. The good thing about such tasks is that they can be completed in a couple of weeks (i.e. the goal is not so far away that your brain becomes depressed), and they give a very good idea of ​​​​what lies under the hood of all UI developer tools . When getting involved in IT in assembly processes, CI/CD, etc. this knowledge is irreplaceable.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *