Answer the question
In order to leave comments, you need to log in
Knowledge that never gets old. Where to begin?
Hello
In one course that I'm taking online, it was stated that there is knowledge that does not become outdated and that it is very important for a programmer.
In this regard, while taking the online course in parallel, I plan to study the following disciplines and areas of knowledge (hereinafter referred to):
Mathematics The
ability to solve logical problems
Abstract thinking
Physics
Logic and intellectual games - checkers, chess, preference
Mathematical training:
Set theory
Logic
Discrete mathematics
Lambda -calculus
Computer Science: Numeral
Systems Data
Structures
Algorithms
Paradigms:
Imperative Programming
Functional programming
Logic programming
Hardware:
Computer architecture
Software:
Operating systems
Networks and protocols
Databases
Compilers interpreters
Miscellaneous:
Command line
proficiency Version control systems
Automated testing
Configuration management
I am 30 years old. At school, I liked mathematics, but after the 9th grade, the vector of my development took a different path. I want to go back to basics. Programming has been luring me for 12 years (!). He made attempts to start learning on his own, and these attempts were shattered to smithereens. Now there is a clear belief that this is real, the main thing is to take small steps every day to achieve the goal.
Please help me structure these sections of knowledge from important to secondary, how to understand what can be useful to me in the next half a year, a year to master the profession of Back-end developer (node.js) from scratch.
Answer the question
In order to leave comments, you need to log in
Straight from scratch, or have you taken any successful steps in these 12 years?
The list of disciplines looks good, but you should understand that you won’t have time to understand each of them thoroughly in a year.
Most important: start coding right now . Let it be a simple hello world, or stupid and inefficient solutions to the problem about 99 bottles, even the most terrible shit code, but it's infinitely better than none at all.
If the computers are completely zero, then I would advise you to familiarize yourself at least superficially with the architecture of the computer, operating systems and networks. If Tannenbaum does not go into the lung, then at least from books for children .
Maybe Martin Gardner will come in, try. It's not even worth trying to dive deep into every topic he covers, but he has quite a lot of interesting things in both mathematics and logic.
Let it be like "background" reading, maybe even read these books for fun. They won't provide any immediate benefits in programming, but one day you may notice that you understand WHY some algorithms work faster than others.
For a quick dive into coding, try colobot, for example. It is quite light, aimed at children. The Internet is full of tips and ready-made solutions, but you should not abuse them and copy the code without understanding how it works.
Then you can switch to codewars, do one task a day, for example. Compare your decision to other people's decisions.
Here's another list for you: Web developer development map
Here, not only timeless knowledge is already here, but it would be nice to spend at least 10 minutes on each of these topics in order to understand what it is about. Of course, for normal work on many of these topics, you will have to spend much more time.
Why is there this long list? Just pick a language, pick up a primer for it, and learn. Then the textbook is more complicated, then the textbooks on the standard library, popular frameworks, applied applications of the learned language, etc. etc. And of course, constant practice. Most of the items on the list will come by themselves in the process of professional growth, and some may never be encountered in 18 years of work, while being in demand and highly paid specialist.
With a list like this, you'll finish your studies at 50. However, now there is time before retirement.
I suggest this option:
Go through the tutorial on js Leave
a list of training projects (server, proxy, database, etc.)
Do the first project and write down all the missing knowledge
Learn all this
Repeat with the next project.
Projects must be educational and include all the necessary features of the language and the required knowledge. They should gradually become more complex and increase in size.
This list can be called "sleep with a classmate." Or even all of them.
What you didn’t learn at the time when it needed to be done, as you correctly wrote in the comments, it will take you up to 50 years, and this is if you have money, this time is not to work, but only to study.
Of course, a person who owns all this has more prospects, this is a set of general knowledge that can potentially be useful in a career, and a person already knows them, but nothing prevents him from mastering exactly what is needed now.
You need to get started as soon as possible. Steps:
0. Choose what to teach. Objectively, you need to learn the web, since it is easier and the entry threshold is much lower, in the same game development, mathematics is really needed. But with a stack of technologies, the main selection criterion is where there are acquaintances (we are now talking about a person of 30 years old, and not about yesterday's student who knows everything from your list and companies, in principle, are ready to invest in him for the future).
It is the fact that your friend can bring you to your first job that can play a decisive role, and then you can already move on with experience in industrial development.
1. In most cases, courses are not of very high quality, especially if they do not analyze what students read, but simply retell books. I’m not saying to quit directly, maybe not your case, but let’s start reading books.
2. In fact, the list of books may look something like this:
2.1. "Programming language {name of language}", or learn.javascript.ru by... it's clear which language.
2.2. A book on core technology (on Java - Spring, C # - ASP.NET, Python - Django, PHP - what a friend says, since their name is Legion). At this stage, you start actively coding to understand how it basically works.
2.3. I would advise you to read "Programming Practice" by Kernighan and Pike, there is more in C, but you don't need to really get into the code, but read until you understand, then put it off and start reading after a while. There is basic information about algorithms and data structures, no one will demand full knowledge of algorithms from a trainee / junior, but I know what O is and some basic algorithms will at least show that a person is interested in something. This is instead of fully studying algorithms and data structures at this stage.
2.4. There is a cool book for phishers by Metta Zandstra (maybe I made a little mistake in the letters, but Google will correct it), here there are basic patterns, both ordinary and architectural. You can read so as not to climb into the wilds of patterns at this stage.
3. Try to get somewhere at least for a free internship, and then learn what they say and what will be missed.
Good luck!!!
Oops. I would understand if a student asked such a question .... In our universities, "the ability to learn" is comprehended almost like a drill in the tsarist army - "hay-straw-hay-straw ...". In the end, of course, it turns out, but it leaves unforgettable memories :)
Why do you need all this? (if you already have a tower, of course)
In order to program, you probably don’t even need a tenth of it. Need to...program :) Choose a language, read the minimum level to write something like "hello-world-programming-is-a-buzz" - and go.
Further on, it will become clear what knowledge is needed. Knowledge for the sake of knowledge is only suitable for players in what-where-when and other bullshit ...
Logic doesn't get old. And mathematics, physics, programming are just a set of tools for the implementation of your task.
Correctly they say that you need to learn not php (for example), but you need to learn to program...
You forgot to add the multiplication table.
But seriously - if for 12 years you have not decided not to learn anything from this list, then why are these questions on the toaster? To find out how you can study less to learn something?
You just need to do it.
You are definitely on hexlet.io.
Himself like this (I'm 31), only there is no mathematical background.
It’s definitely not necessary to study this bunch of everything, a mental disorder can be earned in the worst case, at best you just hesitate and lose interest.
In general, in all this history of ours, studying "on the table" is the worst way that you can plan for yourself.
And what for in general such rigid planning and categorization of things in the nature?
Does not become obsolete:
1.1. ability to understand and create algorithms. (try to solve Olympiad problems on a simulator)
1.2. the ability to make a complex simple system. Those. the ability to make a certain model out of a system that exists in real life, to single out abstractions, to break them up. Make this model easy to add and change. those. what is called architecture.
1.3. the ability to write code that will be understandable in six months. or other people. This is called clean code.
2. English. )))
3. The ability to learn.
4. Desire to delve into. (in fact, this is also a skill)
the rest will be added.
Programming often = logical thinking and engineering vision
You provided a list that says that you have not even tried to calculate how long it will take and why you need it.
Better try to get a job as a jun. It's better to immediately understand that this is not your thing than to spend 10 years preparing to become a programmer, huh?
here people reported (to a similar question) that they started coding after 50, and got on their feet (before it was a merchant, at one time it was successful, but then fortune .. to put it mildly turned away) ... if memory serves, he is now 60, and he is happy and successfully coding back on php
in this whole story, the keyword is start
Didn't understand anything. Che is specifically said about knowledge that does not suit? Who is not satisfied, would he hire you otherwise? In what context and how were you reproached for lack of preparation?
You want to get an internship in a year, what do you plan to eat until then? The question is rhetorical and it's none of my business. I just want to say that the plan should be real, not abstract and meet your financial needs. You are also planning to make money. Enthusiasm won't get you far. Again, salary expectations are a very significant corrective info to focus on the specifics. Although it depends on the region. Therefore, you need to look for vacancies in your city. Something tells me that there may be significantly more vacancies for php than for a node. Yes, a holivar question, of course, but you specifically look at your vacancies. Html and js on the web need to know for sure, the question is at what level. Again, the question is for vacancies, what is required in them. You have to understand, of course. that the dream candidate is described in the vacancy and perhaps even the description was compiled by a left-handed person. But 70 percent probably need to match. Percentage of course by eye, by feeling. And it also depends on the region.
It is not clear that you already know from what starting point to start advising, what courses you are taking. Complete zero on js in particular and trash in general will suit the book Expressive javascript. And it's nice to bring es6 to it. I don’t remember well, it seems there are no arrow functions and other new goodies. Nevertheless, this is a book that I would safely recommend to a completely green beginner in programming, despite all my dislike for js. The next step after reading with problem solving is the study of vacancies, pulling up under vacancies. Maybe Angular is popular with you, you need to master it. Or really take a breath and go teach puff, the requirements will show.
By the way, I'm on Linux. I can not say about Windows. But you need to be able to install a node, what else is needed to deploy your projects (we start from the vacancy. I have postgris, ngnix, apache, djanga with the consequences, I don’t know about you), install your favorite ide and that’s it. I mean, you don't need to know everything in depth. I read books on Linux, but honestly forgot everything and remember only what I constantly use. You were given a link to the developer's development map above. There was Petzold's book. Code, the secret language of computer science. According to the architecture of the ZBS computer. But you don't need it to get an internship. To the fact that you have a lot of superfluous things in your plan, you have already been told
.
Of course, I made a lot of mistakes. I 'm sorry
It's nighttime and I'm writing from my phone
Set theory and logic are very useful. The rest can wait.
If you have time and you don't need to find a job quickly, it's best to start with a statically typed language. The frontend is written well in Elm. For the backend on the node, you can use Purescript.
Mathematics is definitely not needed, unless you are going to program graphics. At most, arithmetic is required. And instead of playing chess, it is better to think over the architecture of the next program.
Start with html, try to feel the environment, how it is to be a developer, then try some kind of scripting language, as you do all this, you will find solutions from areas (logic, mathematics, etc.). If you watch courses and now open a textbook for grade 10 in geometry, you won’t go far (IMHO). You just need to take the first step "there". Over time, there will be a backbone, you will understand that a huge part of a developer's time is not writing code and not even thinking through algorithms, but simply looking for solutions that someone has already created. From practice in the gaming industry (by the age of 20, I managed to work as a game developer), I can say that I was not very strong in discrete mathematics or geometry, but because of the environment, heaps of ready-made solutions and materials, the topics that I needed right at that moment dealt with in the evening. But if I sat and thoroughly memorized everything that is needed and not needed, time would run out, I would do nothing and everything would be in vain. Therefore, if the goal is to become a programmer, then you need to go in this direction, try, make mistakes and try again.
It's useless to study all this.
This is necessary for low-level, for complex tasks.
You still don't know if it will come in at all.
Therefore, for starters, html + css. Then php jees and esquel. Then git, laravel, pug, loess/sass, blade, webpack, .
Well, around then you will understand whether you need something like sipplusplus, Java, Kotlin, Go and other things.
And if then you realize that you can’t live without them, learn what you need (then you will understand what exactly you need from this), and in parallel, pull up your list.
And what you wrote so far is about nothing. You definitely do not need it, I give a tooth.
Soft:
...
Compilers interpreters
see in the list
Physics. And where, excuse me, is astronomy, chemistry, geometry, the basics of life and labor (also probably a useful subject)?
1) In the field of knowledge that you called "Software", everything is becoming obsolete.
2) There is another timeless area of expertise that you missed. All of these areas can be attributed to the technical field. But software is written by a person in interaction with other people and for people. Therefore, it is useful to understand, at a minimum, about such things as personal effectiveness and teamwork.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question