
Introduction
This habratopic is intended for all those who want to immerse themselves in the magic world of programming, but not yet know where to start. Perhaps you have already attempted to learn programming, but hopelessly stalled.
It so happened that about four or five months ago I decided to slightly diversify my leisure with a new hobby and get to grips with web programming. How I came to life like this is a topic for a completely different article, and now this is not about that. It will be about the difficulties that I faced, and for which I was absolutely not ready. Perhaps this topic will help you better prepare and not repeat my mistakes.
')
So, after realizing an obsessive desire to at least a little and master this mysterious craft, everyone asks an absolutely logical question - “Where should I start?” There can be a lot of answers - new screenshots, books, courses, online training, forums, and so on and so forth are at the service of newbies. Learn, I do not want. And since there is no generally accepted system of self-learning programming, you can watch and read everything indiscriminately, all day long. If you wish, you can drown in reading, but to confidently move up the ladder of knowledge, you need to spend your time and energy clearly and effectively, and if you don’t know where to start and where to go, you will simply wander into a dense forest where you can wander for weeks Finally, you will not go to the right path. If you leave at all - there is a great chance that you simply get tired of this whole thing quickly.
I myself went on this way - I downloaded clouds of rollers, bought several books in addition, read them and threw them, because I still didn’t have enough knowledge and training, despite the fact that all the materials were intended for “beginners”. I constantly googled various trivia, asked Nuba questions on the forums, grabbing the minuses, and this killed in me the desire to continue learning.
Yes, any knowledge and any accumulated (puffed up?) Experience will certainly help and come in handy, but your goal is to learn what you want to learn, and see the result in the foreseeable future, right?
Absolutely all the materials that came to my eyes, after a brief introduction, immediately rushed off the bat, offering the reader solutions and examples on a given topic. I felt like an absolute Losers in the class of geeks, and constantly faced with the same problem - the authors of the books, however, like any other educational material, assumed that I had some
basic background , which, at first glance, to direct programming has no relations.
It’s like if you came to work, say, as a crane operator, you were put into a tower on the very first day, and tapped on the shoulder with the words “Well, good luck!”. But what about safety and a basic explanation of what to do and what not to do? How do I use the tools? What tools do I have in stock?
What should I know before starting work?The article is purely advisory in nature, but if I had gotten a similar topic in my eyes half a year ago, I would significantly increase my productivity, save a lot of time for myself, as well as many people from the forums who answered my absolutely idiotic questions. For each item, I added a few links as starting points to start learning. Since the text is intended for absolute beginners (and I myself still think so) - I will speak very simply and clearly, so if you are a guru and you have found an error in my text, judge, but not strictly!
So, what should you know before you get into programming?
1. Terminal
I will be very honest with you. If someone half a year ago told me that the people of this planet are still actively using the command line, even with cool GUIs and the most advanced operating systems, I would have laughed at this person in person. However, after starting to view the first screencast, I was no longer so funny - instead of the beautiful Makovsky interface, a black window looked sternly at me, which I seem to have seen before, in the nineties. Already after a few days, I laughed less and more restrained, watching how the screencast guys skillfully perform any actions with the help of text commands, the purpose of which I had no idea. You understand how this problem slowed down my learning process. I tried to keep on repeating to myself that the terminal is an unnecessary thing, and surely the person from the next screencast will make maximum use of the labels and the mouse - but no, the miracle did not happen, the torture continued and soon (after I was interested in Node.js) I gave up
For your further successful self-study programming, you
need to learn how to use the terminal. In addition to direct interaction with programming languages, learning how to use the terminal will help you better, let's say, understand the computer language and the file system device as a whole, and this is a small step in the right direction. Moreover, you will thank me after you start learning screenshots, in which the terminal is used constantly.
Self study
25 things about the terminal that every Mac user should know (eng.)
How to be a terminal pro - a series of excellent screencasts from Tuts +
2. Regular expressions
Imagine that you decided to learn a foreign language without delving into its alphabet, alphabet or hieroglyphics. Of course it is possible. But how much will it complicate the process and the path to understanding the essence of things? The decision is dubious, right? So, regular expressions (they are also
regexes , with emphasis on the first syllable) are, to put it in simple terms, to some extent the supporting alphabet of any programmer, or, to put it in the wiktionary language,
“a formal language for searching and manipulating text stitches based on the use of metacharacters .
Look regex may, for example, like this:
((?=.*\d)(?=.*[az])(?=.*[AZ]).{8,15})
The task of regular expressions is to help a programmer with searching for something. I'll explain now.
If I want to find all the words in my program, part of which is the word
car (car, carrot, cartoon), my regex will look like this:
/ car /
If I am only interested in the word car, I will write:
/ \ bcar \ b /
Further - more fun. You can filter the search through the word, through the letter, delete the words before or after the desired result ... The list of possibilities to filter the results using regular expressions really captures, and paired with the terminal, about which I already told you above, this thing is just incredibly cool . Despite the different syntax of individual representatives of the PLO, many of them support regexes and save a lot of time for people using them.
“Well search, who needs it? I will learn to program, and not to look for words! ”- you will surely think. I heard you and even understood. So if you still doubt the need to bother with regular expressions, just take my word for it - they will be useful to you. Many books and screencasts use regexes in examples, without explaining what is going on at all - the authors think that you already have these basics and especially do not focus on chewing the writing.
It’s not at all necessary to cram them, but, you see, viewing a couple of screencasts on this topic clearly will not kill you.
Self study
Screencasts from Tuts + -
Regular expressions up and running3. Software for development - know your weapon
Rule number one - you should know and own your tools to the maximum. Competently chosen and studied editor, in which you will soon begin to work wonders, I can easily compare with the excellent samurai sword. The soldiers are assembling and disassembling their machines blindfolded - that's how good you must own the software you use! As long as you write a simple function letter by letter, your enemy, using the full potential of his editor, will write a few.
For web development there are a huge number of programs, from simple text editors to complex cloud solutions. In this article I will not compare these editors with each other; you will have to do it yourself - after all, you live with this editor, work and look at it in grief and joy. I opted for the
Sublime Text 2 editor. In addition to the tons of features that Sublime has, it should be noted that it is shareware and there are a lot of excellent documentation on it. Perhaps very soon, having learned all the tricks of Sublime and learning to connect plugins to it, such a line will be common for you:
div>(header>ul>li*2>a)+footer>p
(
Emmet plugin is used, if you are interested)
Self study
Cooking Sublime for front-endTuts + -
Sublime Text 2 first steps4. Version control system
"Well, what's this all about?" - you ask. Oh, the version control system is a wonderful thing that no serious developer can do without these days. Wikipedia
says - "The version control system allows you to store multiple versions of the same document, if necessary, go back to earlier versions, determine who made this or that change, and much more, and more." There are a lot of version control systems, so immediately I will say - below we will talk exclusively about GitHub, the largest service for joint development of projects.
A reasonable question: “Why do I need to master this Gitkhab, because I have nothing to spread yet?” And there are several reasons for that. In addition to maintaining your own repositories, GitHub will, first, help you to become aware of yourself as part of a huge developer community (perhaps someone reading now smirked, but believe me, this is really important, especially in the early stages of learning!). In addition, you can take a look at someone else's source code and learn how to download and fork it (copy). In the future, GitHub will often emerge in various online courses and screencasts, and, of course, their authors will be sure that you know how to use GitHub. So if you have some time in the week, do yourself a favor - try Git.
Self study
Tuts +
Git essentialsTry git5. History and culture
This item is rather an auxiliary one, but if the programmer you admire is named Steve Jobs, then please continue reading. Programming has a rich and interesting history (I tell you as a historian for the first diploma), in which you should pick at least for general education. Being engaged in something, it is always useful to know where from this something grow legs. In addition, I sincerely believe that without knowing the history of the subject it is impossible to fully understand its essence, and, consequently, to achieve ultimate success in its development. Therefore, if after some time such names as Linus Torvalds or Grace Hopper will not be empty words for you - respect and respect!
Remember - the one who does not study history repeats its mistakes.
Conclusion
I hope this text did not frighten you in any way, but on the contrary, sent you in the right direction, or will help you in the future to avoid difficulties that are constantly encountered on the student’s path. I will be happy to receive feedback and comments, or links to additional resources that will help newcomers to self-study.
Never give up!