Answer the question
In order to leave comments, you need to log in
What to study, what to spend your free time on in order to become a demanded programmer with a normal salary in the future?
Hello. I am now 17, studying in college with a degree in computer systems and network maintenance. In the future I want to work as a programmer. Now it's summer, I have a huge amount of free time that I would not want to waste. At the moment I'm actively studying C++ (from books). I plan to continue to engage in self-study, so I’m interested in what to spend time and effort on, what and in what order to study (technologies, programming languages, development tools, etc.), how to make my learning more effective, what should I pay attention to?
Thanks in advance for your advice.
Answer the question
In order to leave comments, you need to log in
The answer to the question will greatly depend on the direction in which you think to develop.
Will it be network programming? Then it's si, basically.
Maybe web programming? Then there can be php, javascript, python, ruby.
Do you want to develop programs on the desktop? You need c# or java.
On mobile platforms? then java and objective c (plus swift).
Or go into game development? Then either c++ or c# (for Unity - probably the most popular platform).
Do you want exotic? Take a closer look at the functional languages - Erlang and Haskell.
Development of hardware and drivers for hardware? then si (without pluses) and assembler.
Decide what you want, because you can't cover everything. Choose one (or two) directions and achieve a good level in it. And then it will be easier for you to move on.
My advice is to try learning C# or Java (they are similar in many ways) for software, or Javascript and php/python for web apps and websites.
I will add that very good advice was given by @tsarevfs - in addition to the programming language, a good programmer should know several tools - and first of all, this is a version control system, for example, git. Plus unit testing (although you can start learning this later, in a year or two). Plus - you need to know well your IDE in which you work; do not try to work in notebooks!
In addition to practice, you need to know theory - read McConnell, Fowler, Martin, Beck.
Subscribe to Habré for a couple of dozen hubs and regularly read everything. In a year, your level of understanding of the articles will increase greatly.
I myself teach programming in college, and, unfortunately, there are very few people who want to study there. Write to me if you have any questions.
UPD. An important addition from the discussion in the comments (thanks to @Argentum88 @Deerenaros )
To become a professional and "in demand programmer with a normal salary", you need to understand very well the internal structure of those systems (platforms, frameworks) on which you are working.
For this you need to look deep. Having studied various mainstream tools, look at similar less popular systems. Study the source code of the open-source libraries used. Write your own similar system. For the web, write your own CMS (at least basic.) For desktop programs, try programming without fancy libraries that do routine work for a programmer.For a game developer, make a simple game on the platform's basic tools, where you have to do everything yourself.
All this will make it possible to feel why everything is done the way it is, will give an understanding of the interrelationships of different parts of the program.
And then, realizing this, choose one of the ready-made tools, and continue to write on it, already having a deeper understanding of it.
My five cents:
1. Quit college. If you want to get a formal education, go to college (choose your school and program carefully). Or just quit and educate yourself while looking for your first job.
College is a waste of time. Only a diploma of higher education is valued. For an employer, a college graduate is the same as a person with no formal education at all. I speak as an employer.
2. Learn English. You should be able to read technical books, textbooks, blogs, etc. in the original. Believe me, such abilities will save you a lot of time and money.
3. Install Linux, learn (in general terms) how it works and start learning bash. I don’t advise you to bother with the distribution kit - what you were advised here is a system not for beginners. Spend a lot of time on tertiary issues like sound card settings. Put ubuntu, there will be the least problems (but they will still be).
4. If possible, practice. Ask your friends - maybe someone needs a site. Make it from scratch on some simple CMS (joomla, wordpress). Try to make a simple game or mobile application. Etc. The best way to learn something is to put it into practice.
a programmer is primarily mathematics, algorithms and data structures. in fact - a tower in a university.
and languages, development environments, modules and libraries is the encoder.
a programmer needs an A4 sheet and a pencil in the general case, then the work of encoders.
so decide)
Throw in Java. Learn .NET, it's not so slow and everything is fine with security + full cross-platform and one of the most convenient IDEs.
I would advise you to do what is interesting. Just reading books and doing a little bit of programming is all fine, but almost never stays in the memory. Take any idea and start implementing it. Or study any open source product (large) and finish it.
Since you have decided to become a programmer, I advise you to study after C ++ algorithms and data structures from the book by Robert Sedgwick. If you know English, then here is Sedgwick's video course from coursera
rutracker.org/forum/viewtopic.php?t=4294269
Sedgwick is a cool teacher - he studied with Knuth and was the first to publish the concept of the red-black binary search tree data structure, although someone came up with such trees the other one seems to be.
There is true Java, but the difference between Java and C ++ 11 in terms of syntax capabilities is very small.
The main thing is to understand how it works and how to use it.
If you don’t know English, then there are Russian video courses (I didn’t understand Russian courses, so I won’t tell you which ones to choose).
I also advise you to take up sports programming. At least for a while. For the initial pumping of algorithmic thinking is perfect.
This is for the base.
And to find a job, you need to decide on the field of activity and the programming language. Then you will immediately know what to study. Look at what programmers are in demand, choose what you like best and learn, usually the requirements for the vacancy indicate everything that the applicant should know. In a year or two it is quite possible to finish my studies to junior in some area.
C++
C#
PHP
Java
iOS (iphone programming)
Android
You have in your hand a 10x10 platform of cubes that stand in columns. This structure is lowered into the water and lifted out of the water. Some of the water remained inside this structure. How much water is left if the cube is 1x1x1?
If you can solve this problem in less than O(n*n*n), then you might not learn anything at all.
iOS or Android. A good specialist receives 150,000 rubles, and at the same time there are very few of these good specialists themselves
Find something you like and start doing it if you want to achieve something. No one will pay money just like that :).
And so the most demanded technologies are web and mobile applications.
you can do this:
for software - python (PyQt, PyGTK, etc.) + basics (at least at first) C / C ++
for games - python (PyGame), Lua (Love2D), javascript
for the web - php, python ( django, flask, bottle.py, etc.) or js/nodejs (but you can also chop with rails and sinatra)
for mobile devices - javascript or python, or java/scala
for coding for embedded systems (smart TVs/refrigerators/clocks and other) - Lua or java, although I know that there are a couple of minimalistic python implementations for this business,
so you can reduce everything to a bundle - python + javascript and study this matter thoroughly.
the main thing here is to like the python itself (well, or choose another language that you like and can be in demand in the area of interest in the near future).
ps but the concept of normal earnings is loose) the main thing is that the earnings are satisfying and enough to live on) if a good specialist, then there will be good earnings)
in any programming language, a good programmer receives a salary in the capital for 200k rubles.
so it doesn't matter which of the trending languages you learn
You need to understand what your goal is. "Working as a programmer" does not pull on the goal. If it’s a purely abstract dream, then the advice is simple:
1) find a vacancy of “your dream”
2) see what is required in it
3) start studying it all, both theoretically and in practice (at the same time receiving all sorts of certificates, if this is accepted for data technologies)
P.S. A programming college is a vocational school. Go to college if you have a craving for knowledge. Whatever one may say, it will be another level.
I am also studying to become an information and communication network operator)
I scored for college and am engaged in purely self-education. I myself have already learned HTML, CSS, Javascript, php. I'm learning flash and node.js.
The most important thing in programming is practice!
You need to create a variable 100 times to remember how it is created and how to work with it. Therefore, it is important to practice.
Find some video courses, find people who are also interested in programming and communicate with them.
Do not memorize operators and waste time on this. Instead, stupidly practice, for example, if you need to remember the if statement, then write a program in which you create 10 simple conditions. And so it will be better remembered.
Of the technologies, node.js is now gaining popularity.
You can try to study at the School of Data Analysis from Yandex.
They also provide jobs for those they like.
In terms of demand, prospects and versatility, Scala is the best choice. It is complex, but no more difficult than C++.
If there is a desire to engage in low-level programming (controllers with small memory, etc.), it makes sense to look at Rust right now. While it is not very common, as it appeared recently. But he has a huge potential - either there will be a great demand for him, or big salaries.
If data analysis attracts - R and Julia for the future.
For general development, it is worth getting acquainted with Haskell, Erlang, Scheme (or CLojure) and Prolog.
It is useful to know SQL, and maybe familiarize yourself with RDF + SPARQL.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question