Greetings, Khabrovtsy!
I decided to share my experience of "successful" learning of the programming language (s).
Not to say that I'm a complete layman in the IT industry, but my training plan "to become an IT developer" - went with a bang at the seams.
A bit of background.
I must say right away that I did not go through targeted training in computer science. And my specialization in education is far from technical. He worked since 2005. to 2012 in various companies, both small and large, directly related to the IT industry. Learned a bit of everything: sis. administration of Windows (even MCP, MCSA managed to get it), a little bit VMware (VCP is also in the piggy bank), additionally studied a different bunch of programs that system. admins usually use in their daily work.
I tried myself in corporate sales, by the way, it worked well. I managed to work a little with a software distributor, as well as with integrator companies, and had a good understanding of software licensing policies. He planned to become a Project manager, even started studying PMBOK, time management, various international standards, such as ISO, Tier, and even swung at PCI DSS.
But at a certain moment he burned out and gave up everything. I went on vacation for 8 years, so to speak.
After a long analysis, I nevertheless matured and realized that it was time to turn to the west, and preferably closer to the Silicon Valley, because with English it is more or less normal, you can pull yourself up to the required level.
It's clear that no one is waiting for me there, but sis. admins, salesmen and project managers there and there are enough of their own. Moreover, without knowing the situation on the local market, it will be immediately possible to find a job, well, at least it is problematic.
A path was chosen in my head that it was time to retrain as a developer. It will be easier and better in terms of prospects and work in the western market. There has always been a shortage of programmers in the labor market, and there are still not enough programmers.
Moreover, for a long time I wanted to learn programming and specialize in SAP direction. The path of independent study of the basics, the ABAP language, was chosen, but somehow abandoned this business. I don’t remember for what reason, it seems because of the difficulty in understanding.
Now the story itself, let's go ...
So, after 8 years of rest from IT in general, I began to study the overseas labor market and decided to start specializing in mobile development. After googling programming languages for mobile applications and inspired by the fact that Google officially announced the Kotlin language as a priority language for an android application, he firmly decided to learn Kotlin on his own in a maximum of 1 year and make plans for immigration for permanent residence in the United States.
A couple of weeks of watching trainings and reading manuals was enough for me to make sure that there is nothing to do in Kotlin without knowledge of Java. Although on the Internet, many say that you can learn from scratch. And after registering on GitHub, installing IntelliJ IDEA, JDK and trying to understand the code, I already began to realize that I will have to study for a very, very long time and hard.
It was decided to put Kotlin aside for now and delve deeper into the java language. And so he did. Eh, I remember in my time java was still SUN's brainchild.
I quickly switched to Java without regret. and there are more manuals for self-study and there are many more vacancies for Java developers. True, I did not decide where to start it would be better: with Java, or still switch to JS, but oh well, I thought I’ll figure it out. I read somewhere on the forums that it is much easier and faster to enter the development world with JS.
I started learning Java in a standard way, after reading a mountain of articles and watching a bunch of videos "How to become a Java programmer". I downloaded the book by Bruce Eckel "The Philosophy of Java", according to the recommendations of many on the forums, as the most correct start to learning the language for beginners.
So I'll tell you honestly, it's not at all for beginners.
I tried not to pay attention to it and read on, the digestibility is about 20-25%, I realized that this will not work. We'll have to understand the C language, and even in the book they regularly write in black and white that the material is designed for readers with knowledge of the basics of the C language.
Well, no choice. Again I read a bunch of information, hundreds of views of videos on various topics about the C language. I download the book by Kernighan and Ritchie "C Language", I start studying, the assimilation is already better than in Java, so to speak, about 50-60%, which does not please me at all.
One thing was reassuring that true developers all started with the C language, and also that after learning C, other languages, in particular Java, would be understood many times faster and more accessible.
However, titles in the book such as:
“This book is not an introductory course in programming; it assumes some familiarity with basic programming concepts such as variables, assignment statements, loops, functions "
or:
" assumes working knowledge of basic programming elements; it does not explain what a computer or a compiler is, does not explain the meaning of expressions like N = N + 1 "
and phrases such as:
Symbolic constants.
etc.
gradually led me to the fact that I cannot do without studying Computer Science.
At the same time, I begin to delve into Computer Sciense, again downloading tons of books. I register for the Harvard CS50 course, start learning the basics of programming, carefully read the book by Vladston Ferreira Philo "Theoretical Minimum in Computer Science".
I notice that learning the C language is moving into the background, more and more time is being devoted to the basics of programming.
And if in binary, variables, functions, loops, compiler, interpreter, simple equations, etc. I figured it out even more or less, then an expression like N = N + 1 and more complex equations drove me into an easy stupor.
For a long time I delved into why 0 to the 0 degree is equal to 1, and I have a feeling that I have not fully understood the whole point.
But this task made me stop at reading a book on CS. the further I read, the more complicated the equations and problems were already:
I had to google about quadratic equations, as it is written in the book, and delve into the discriminants. Well, I forgot, I thought, algebra, with whom does not happen. However, I could not solve the problem on my own, I had to turn to the child's school teacher in mathematics for help.
I got a solution, but I could not understand how the teacher solved it:
To my question: “how are such equations solved?”, The answer was very simple:
“teach the study of a function, start analysis and optimization problems. Algebra Grade 10-11 ".
Well, I think, ok, I'll watch a couple of video examples for schoolchildren on youtube, I will understand how to solve them, and I will continue to “glock” studying in CS.
And after watching these videos on algebra dawned on me ...
www.youtube.com/watch?v=RbX_QHxu7Lg
www.youtube.com/watch?v=FVSG7Neopuo
Not that I do not remember how to solve such problems - I elementary as it turned out that I simply do not know Algebra for 10-11 grades!
Expressions such as: limits, mathematical thinking, extremum, derivatives, polynomials, etc. for me turned out to be like speech in the language of the Mayan tribe.
Probably, my knowledge of mathematics remained at the level of mathematics lessons in grades 5-6.
I am beginning to realize that for a complete picture of understanding Computer Science, I will need to re-learn algebra, and then HigherMat. I do not exclude that the campaign will most likely need to repeat physics lessons and something else from the school curriculum. And before actually learning Java and JS, I will need 5 years of studying algebra and higher mathematics.
To fly to Mars and back faster, just 1.5 years, according to scientists ...
So, after analyzing the past month and a half of independent learning, it became obvious to me that I am like a "hamster in a wheel", as if I was running (learning ), but in fact I am standing still. I haven’t increased my knowledge of programming, except that I can run a program in the C language ("Hello, world").
Moreover, after a ton of new information has fallen into my little brain, it seems to have gone “shut down” at all, and categorically refuses to accept new information.
The algorithm I built for learning programming failed almost at the very beginning.
It became clear that you need to revise your training plan and approach to it.
However, I am not yet fully aware of the picture, and from what side should one approach at all now to acquiring the profession of "Java-developer", because the standard education, from the basics of algebra and higher education, will be very long and is not suitable in my case.
And it was then that I was already quite somehow sad.
Does it take so long to become a programmer without a technical background?
Of course, I am inspired by articles on the Internet, where people write that in 1.5 years they became a Java developer and left for Germany, Canada, the USA, but evaluating my sad experience, I am not sure that this is possible.
Or is it still not mine? And is the profession "developer" for the elite, for the "caste of special people"?
I know that there are people who have mastered programming without getting a higher education in computer science. There are many of them.
And I am eager to join such wonderful and purposeful people.
Unsubscribe in the comments, pliz, who managed to master programming, as well as your vision of why my plan and approach to learning failed. Your recommendations will be very useful to me, revising my programming learning plan, as well as ambition and expectation of the final result.
I doubt that I am the only one faced with a similar problem. I can even say that there are a lot of people like me ...
Thank you in advance!