Programs that novice programmers need. Tyzhprogrammer, or What is a special mindset

March 10, 2016 at 09:56 AM

What a programmer must be able to do to get a job in finance

  • ITI Capital blog,
  • Website development

In our blog on Habré, we write a lot about technologies used in the field of finance. The stock exchanges today use the most advanced software and hardware - both for building the trading infrastructure itself and for creating online trading systems.

Today mathematicians, physicists and programmers are in demand here. People are able to create trading algorithms and make high-quality software based on them. Many programmers, in turn, would like to try their hand at the financial industry - it can offer an attractive combination of interesting tasks and high salaries.

Today we'll talk about what skills you need to have to get a job at an HFT firm, investment bank, hedge fund, or brokerage company. When preparing the topic, materials from sites and quantstart.com were used.

Languages

One of the most popular programming languages ​​in finance for many years is C. You need to know it not only to maintain legacy code, but also to organize work with APIs in electronic trading systems and data exchange with providers.

C ++ is called the "main language of Wall Street" because the most important thing for trading systems is speed. No matter how well thought out and debugged a trading program may be, if at some point it spends extra milliseconds on "garbage collection", it can lead to serious losses. The same applies to the exchange infrastructure - all kinds of data transmission gateways and "connectors" to various systems.

As a result, C ++ programmers are in high demand in companies in the financial sector - including on the exchanges themselves. And this situation will continue for many years to come - someone needs to maintain the current infrastructure.

For one of our previous articles, we talked with a Russian expert on the creation of trading systems, who, in situations where maximum speed is needed, use the following technologies:

C ++ and pure C are very suitable for these tasks. It also happens that fast robots are created almost in assembler - here it is worth mentioning the mechanisms of direct reading-writing of data into the memory of a network card, bypassing the standard mechanisms of work through drivers, as well as work with "super-fast programmable hardware" like FPGA.

According to the creator of the resource QuantStart and professional trader Michael Halls-Moore, today a senior programmer with 5-7 years of experience in C ++ can earn £ 500-700 a day in London. C ++ specialists are also in great demand in Russian companies. In addition, these developers are often recruited by professional traders who can create a successful trading strategy, but need the help of someone who could program it.

C # and Java have also been used by various financial institutions for quite some time. Mostly large banks for their trading infrastructure. These languages ​​are used for building frontend interfaces and data processing.

In the Russian financial market, specialists who know C ++ and C # are very much appreciated - in our blog earlier we talked about who, thanks to these tools, was able to find work in financial companies, and then began to create his own trading systems. Here's what the hero of the material advised to study programmers who would like to get a job in the field of finance in the future:

For those who are starting their journey in trading or are somehow interested in this area, I would advise to turn their attention to high-level platforms and languages ​​such as .NET and Java. The latter is very popular in Western stock markets, we have less so far, but there are good prospects for a wider spread of this language. This means that Java programmers will be in demand in financial companies, funds and brokers. After all .NET is a rather closed platform, which also has a number of limitations. It is not very suitable for low-latency and HFT trading.

But both .NET and Java can be used to create complete software products rather quickly. The main disadvantage is that they are not the fastest (if the count is in microseconds).


Banks often use scripting languages ​​like Python, MATLAB, and R to prototype quantum models in hedge funds and quantum traders.

Quantum traders and financial application developers often write their prototype code in scripting languages. Then these prototypes are already described using faster languages ​​like C ++ by developers specializing in this.

Client-server systems

Trading systems are by definition distributed. Almost all companies, from small firms to large investment banks, build their systems using TCP and UDP protocols - sometimes in trading, speed is more important than guaranteeing data delivery.

Therefore, developers of trading applications need to have a good understanding of the socket classes for C: socket (), bind (), poll () and select (). It is almost never necessary to work with them directly, since there are already many ready-made libraries for this, however, it is simply necessary to understand how interaction with them works.

In addition, for developers of financial software, a plus is the knowledge of data transfer protocols used in this area, such as,.

Streams

Building client-server systems and multithreaded programming in finance go hand in hand. All this implies, for example, writing a standard TCP server, a load balancing server, a high performance server - a developer who wants to create software in a financial company must be able to do this. It's also a good idea to understand what the pthreads (), fork (), mutexes, and semaphore concepts are all about. In the case of using Java, you also need to understand the synchronization methods existing for this language.

Database

At the heart of finance systems are databases, so developers need a deep knowledge of SQL. Knowledge of simple selection operators will not be enough - quite often in the course of work you will have to fiddle with creating storage procedures, deal with indexes, etc. You also need to understand the difference between table-level, page-level, and row-level locks.

UNIX
Trading systems usually use the UNIX platform (often Solaris and Linux). For Windows, as a rule, trading terminals with graphical interfaces are created, while UNIX is used to develop the "engine" of trading software.

This means that developers just need to understand what the tail, sed, grep, awk, tr, and top commands are. It is even better if the technician knows how to work with either vi, vim or emacs and is not afraid of problems caused by an incorrect $ LD_LIBRARY_PATH configuration.

Debugging skills

The ability to analyze core files using dbx or gdb will come in handy in a programming career in financial institutions. Such a need arises infrequently, but if it does happen, it is better to be able to do everything yourself.

Conclusion

The stock market is an extremely high-tech industry that is actively developing, which makes working in this area very attractive for IT professionals who want to develop their skills. At the same time, in order to participate in interesting projects, an engineer does not have to travel abroad - new technologies are being actively introduced on the Russian stock market. In one of our previous materials, we talked about the creation of the SmartX terminal and the Matrix broker trading system, in the development of which you can participate.

In conclusion, one more piece of advice: do not worry too much about knowing the inner "kitchen" of trading processes and concepts from the field of finance. Of course, this can be an additional advantage, but the lack of economic and knowledge is unlikely to prevent a good programmer from finding a job in a financial company.

P. S. To the ITinvest development team for project work on

Greetings to all readers and novice programmers who are full of ambitions and strive to learn new things! It can be said without exaggeration that programmers are in demand now more than ever.

Every day, thriving companies need experienced professionals who are fluent in a range of programs and fluent in a variety of programming languages.

As a rule, their wages are at the level of several thousand dollars a month, and this is far from the limit. What do you need to do in order to become a real expert in the field of programming languages ​​and make huge money? Now we will try to answer this question.

Study, study and study again!

A born programmer must love what he does. This means that he must always strive for something more in order to gain access to even more knowledge and opportunities.

If you know Pascal quite well and think that this is enough to attract the attention of famous corporations, then you are wrong. Even if you know one of the most popular JavaScript languages ​​today, no one will talk to you.

What can we say about the knowledge of some Pascal. After all, if a situation arises that requires a non-standard approach to solve a specific problem, then only knowledge of other modern programming languages ​​will make it possible to translate the desired into reality.

“So you have to know almost all programming languages, which will take a lot of time and effort! Is there any way to get around this? "

Unfortunately no. A real programming expert can only be one who communicates with you with any existing language and can perform the same task using different methods.

Such programmers are now worth their weight in gold, so it will be a great success for a developing company to find such a person who will be able to write optimized code in the shortest possible time and will be ready to cope with any possible failures in its work.

Considering the fact that modern technologies are developing at an incredible speed, every programmer is put forward more and more requirements and wishes for his work. If you can't keep up with the current rhythm, then dreams of a first-class job with huge salaries are likely to remain dreams.

Where should you start?

The first thing to note is the love of programming. If you want to be a cool programmer, then learn to love what you do. The second, which is also important, is perseverance and good stress resistance.

Even the most qualified specialist may encounter bugs that still need to be identified, and then fixed as soon as possible. This can take a tremendous amount of time and nerves, so you need to be always prepared for such situations.

And, of course, start developing your talent with simple but very effective courses. There are a lot of them, so you can choose the ones that seem to you the most effective.

So, what will help you become a unique and promising programmer:
Choose the first programming language that interests you the most. It can be simple, but understanding its basics will help in the future to easily pull other languages, which, in turn, will be more advanced.

Complete the required computer science courses, including Coursera and Udacity. They are well known in programmer circles and have already been able to help thousands of young and ambitious newbies. Everything is stated in understandable language, so there will be no difficulties in mastering them.

Testing your code. The sooner you master this and put it into practice, the easier it will be later to understand the basics of many programming languages.

Constantly check yourself up to consolidate new material. Don't think that this is a waste of time. Many years of experience show that the knowledge gained is not always easy to put into practice. It is possible that in the process of practice you will discover completely different ways of solving certain problems, thereby saving a lot of time and making the code much easier than originally planned.

Start building your website. You can start with simple code that will be responsible for a small section of the site, and then you can get to the organization of the whole server. It will be much better if you work on these tasks with a team of programmers like you.

Distribute responsibilities among yourself and determine the deadlines for completing all assigned tasks. This will allow you not only to learn how to work harmoniously in a team, but also to learn from each other's valuable experience.

Take an active part in independent projects of other programmers and share with them the experience that you have already gained in your own projects. Supervise their work and do not forget to support them in difficult times.

In conclusion, I would like to say that becoming a programmer is not as difficult as it seems at first glance. Love for your work, continuous improvement of yourself and your skills, as well as their successful application in practice - this is the main foundation that any beginner will need.

Someone only dreams of the sweet life of a successful programmer, someone thinks that not everyone can do it, and someone just starts small and then goes up rapidly. While some will just brush it off, you will already know some of the basics.

And after a month you will be able to do what others consider impossible, so if you are really eager to learn programming languages ​​and become one of the best specialists in this field, then it's time to put off all your business and start delving into it!

In part, I have already answered this question in the article.

But there it was about programmers with a more or less decent level of training.

Today I will talk about what a beginner programmer should know, that is, a person who is just preparing to become a programmer.

So, let's say that in programming you are a complete zero, but really want to become a programmer. Before you start learning programming, no special training is required. However, there is something you still need to know and be able to do. For example:

  1. Be a confident computer user. It is important. It's just that in my practice, situations periodically arise when a person downloads a book "", and then writes to me in the mail with a claim that along with the book there is no instruction on how to open it. The question is: is it too early for a person to try to learn programming if he does not know how to unzip the archive and open a PDF file?
  2. Understand the difference between an experienced user and a programmer. Based on the example that I gave in paragraph 1, I conclude that many people do not understand at all what programmers are doing and think that a programmer is a person who is well versed in computers. In fact, this is not so - a programmer may not understand computers at all (in some cases, he can do his job without it).
  3. Know mathematics at least at the elementary school level.
  4. It is desirable to know computer science at least in general terms.
  5. To be good at typing on the keyboard (not necessary, but it will save time for learning programming, since you will have to type a lot of text to test examples of different curricula in practice).
  6. Be able to read)))

When you already start learning programming, at the initial stage you will need something like the following:

So, first you need to figure out what programs are in general, what programs are and why they are needed.

You need to know how programs are created (well, at least Windows programs).

You need to understand what variables, data types, subroutines, modules, etc. are.

You must know at least one programming language (if not perfectly, but at least so that you can write a simple program yourself).

All this is in my course for beginners "Fundamentals of Programming", which can be obtained here.

A software developer is involved in writing programs for various types of computers. This largely creative profession requires a lot of skills, knowledge and experience. But the first thing a programmer needs to know is what personal qualities the representatives of this environment have. The field of information technology does not stand still and is developing rapidly. A real specialist should always be aware of all the changes, which means that he needs a lot of interest and a tendency to self-education.

The next thing you need to know English. Every developer knows it at least at a technical level, because it will make it easier to understand the commands of most programming languages ​​with its help. It is foreign countries that are developing the fastest in the field of software development. Therefore, the English language is useful for getting acquainted with the latest news in this area.

Today, many faculties of higher educational institutions not only explain in detail what it takes to become a programmer, but also immediately prepare specialists with the necessary basic skills in the field of mathematics and physics. However, many developers argue that higher education in this area is not the main thing. It is more important to be able to find non-standard and successful solutions in the process of working on tasks.

The following points from what a programmer needs to know will depend on the area of ​​work of the specialist. For example, for a website developer, it is also very important with graphic editors, as well as knowledge of modern web development languages. PHP is one of them.

People who think about it should understand that basic knowledge of the language itself will not be enough. To get a good job and a decent pay, you need to understand OOP, which is used in writing popular frameworks and CMS. Working with is the next step in what a PHP programmer needs to know.

For now, it will be enough to familiarize yourself with the operation of the most common of the databases - MySQL. A real expert is also unlikely to be able to do without HTML and CSS layout languages. Despite the fact that PHP is a server language, it is associated precisely with the assembly of web pages written in HTML. You will also need knowledge of JavaScript syntax and understanding of the work of common frameworks - JQuery or ExtJS. It is now easy to master all these modern tools through numerous blogs and online courses.

Having knowledge of what it takes to become a programmer, as well as owning them, you can choose different areas of activity - writing programs for automating the business of companies, developing and modernizing websites, applications. At the same time, it is not at all necessary to work in a permanent place in any company. There is an opportunity to independently find orders of interest without leaving home, or to organize your own business, which can become a real source of success. However, such an undertaking will require additional knowledge in the field of economics, project management, and jurisprudence.

1.1 Why do you need it

Be a scribe! She will free you from taxes, she will protect you from all kinds of work. She will remove you from the hoe and ... and you will not carry the basket. It will separate you from rowing and paddle, it will remove you from the hassle. You will not be under many rulers and many rulers.
[...]
Become a scribe! Its members are smooth, and your hands will become soft. When you go out, you are dressed up, you are exalted, the courtiers question you. When someone is looking for a skilled person, they find you. Those who know nothing are looking for a scientist. He [is] elevated to the point of receiving him [the title of] sera, praised for his excellent behavior.

Papyrus Apastasi II, Ancient Egypt

Times pass, but nothing changes. The main reason is that programmers are very much needed in the labor market. Demand is the root cause of all other factors. Good working conditions, high salaries, loyal bosses. All this looks very, very attractive. In fact, the profession of a programmer is the only social elevator in our time. You don't need rich parents, extensive connections with all sorts of "the right people", a prestigious higher education and other attributes of successful people in our time. All you need is the ability to create computer programs or websites. You can start programming by living in the farthest and least prestigious province. And achieve fantastic success in life.

Tentatively, in the worst case scenario, your career might look like this. First, half a year or a year of independent study. Those. study without extensive outside help. The maximum that you can, ask something on thematic forums. You will definitely be helped. But 99% will be reading big thick books and doing exercises from there, 3-4 hours every day. Then you can get paid for your knowledge. And it will be real to find such a job. Having worked like this for a year, for the most common salary of $ 300-400. You will have an experience that opens every door in life for you. You will be able to receive from $ 1000 remotely and / or go wherever you like best. Even to another country. And living there is no worse than the locals. I do not support the stupid slogan "get out of ...", but if you really want to change your permanent residence. This profession is the shortest and easiest way.

Once you finish your internship, you will never live worse off. This will be very difficult. Even purely psychologically, the profession is relaxing. You will not be afraid of crises, wars, natural disasters and bad bosses. Because at any time you can move anywhere and change jobs for another. You will always have enough money for a "roll of butter" and even early repayment of the mortgage.

1.2 Who can become a programmer?

Now a little fly in the ointment. Anyone who can work with their heads can become a programmer. In fact, head work is as hard as hard physical labor. During exercise, the brain consumes a lot of nutrients and energy. He must be made to work with an effort of will. Head work lovers can be found no more often than people who enjoy physical activity. We all know how many people can volunteer to exercise in the morning and go to the gym regularly for years. About the same number want to voluntarily load their brain with work. Will take will and patience. If you are ready to solve complex problems, "unsolvable" problems for more than a year, you can become a programmer.

Of course, in this part I had to list what kind of education you should have. What courses, diplomas and competencies you need to have. But all this is secondary. Because diplomas, competencies and courses are profitable. If you are not ready to gnaw on the granite of science, nothing shines for you. Otherwise, you will be able to gain all the necessary knowledge in six months.

It makes sense that the better you know your computer, the easier your path will be. You must be an experienced computer user. Those. know what a file system is, in terms of how to store your files there, how to open them with different programs, how to install programs and use any of them, if this does not require any special knowledge about what these programs do. I think that in six months you can learn to use a computer sufficiently. Even if before, you have never seen him.

Most of those wishing to become programmers, lovers of computer games, whose parents turned off the Internet in order to return to reality. Back in reality, where you have to feed yourself, not a virtual character. Set up by system administrators, the lowest level. They go to work in technical support, because a computer is the only thing they can use well. Such people already have the necessary knowledge base.

If you are having difficulty communicating with a computer, my advice to you is to learn how to use it confidently first. If only because the problems that you will encounter while learning programming require the same approach and skills as when solving problems of a common user. Therefore, inexperienced users need to become experienced. There are tons of free literature, online courses, video tutorials, and power users around to help you. At the very least, the tasks in learning programming are much more difficult than the tasks of an ordinary user. Good computer skills are the responsibility of any programmer!

The rest of the knowledge, such as foreign languages ​​and even mathematics, can be considered insignificant at the initial stage.
Of course, there will be people who will ask: “Wait !!! What if I'm stupid (old, disabled, etc.) ??? What IQ should I have ??? "

In fact, there is no 100% way to define your programming ability by some formal criteria. According to one popular neuroscientist, the human brain is highly variable. If the weight, height, size of the main human organs vary, conventionally + \ - 50% in the bulk of adults, then the size of the lobes of the brain varies tenfold. Therefore, it is very difficult to understand which activity is most suitable for you. For this, it is necessary to make a new type of an already insanely expensive medical device. Then hire rare and expensive specialists who will analyze the readings of the device. And at the same time, it is not a fact that for your money, they simply will not make mistakes. As it happens in all complex and expensive projects, at the initial stage.

Of course, everyone thinks that everything can be reduced to something like an entrance exam for a university, where the main subject will be mathematics. But no! I hasten to upset everyone. On the outside, math is similar to programming, but this is only at first glance. I remember reading an excerpt from a book 10 years ago where the author, an experienced programmer, said that programming is more like linguistics. Yes Yes! In his opinion, professional linguists can be better programmers than professional mathematicians! I cannot agree 100%. But there is a rational grain in this.

Let's take an example. You need to draw up instructions for your child to buy groceries in the store. Like: “You go to the store looking for cane sugar, if you don't have it, you buy regular sugar. Then you buy bread, a loaf of white and black. If there is no black, buy a gray ... ”You will be surprised, but this kind of instructions is pure programming. Moreover, you can write them in foreign languages. Or you can, using the syntax of a programming language in the same way as a foreign one. And another programmer will be able to understand what is written.

For those who don't believe, let's look at simple logic implemented in hundreds of programs. “Request the number of rows selected in the table. If the quantity is greater than zero, make the "Apply" button active. Otherwise passive ... ”You can also write this algorithm in a natural native or foreign language or in a programming language.
You will also be surprised, but translating algorithms from a natural language into a programming language is the most common job. When the programmer is given the task to implement clear logic invented by others. Conversely, translation of the programmed logic into natural language is also needed. When these "others" need to describe how exactly the program works. Yes, that's right, C ++, PHP and other programming languages ​​can be perceived as special foreign ones. Math is also sometimes needed, but, as a rule, when performing some highly specialized tasks that you may never encounter. You can start without any mathematical background.

Programming is a separate branch of science. It is related to mathematics in some way. But it can also be associated with linguistics. Certainly some programming technologies are related to something else. Therefore, it is impossible to say so simply whether you will succeed or not.

1.3 Three stages on the path to the profession

Now that you are tired enough of all sorts of crap stuff and a little surprising facts, it’s time to move on to your studies. Your professional development should take place in three stages:

1) Trial period. You should try this activity.
The fact is that mastering a profession takes six months or even a year of study. And you need to understand as early as possible whether you can or not. Should you invest your time and even money. Or disappointment awaits.

During this period, it is necessary to master 2-3 technologies of real programming. But they shouldn't take a long time to master. If you manage, it makes sense to spend the promised six months or a year on the next stage.

2) Self-study.
If you have passed the previous stage, you can invest your time in mastering the profession.

3) Internship.
Your first job and your first money.

2 Trial period

2.1 What to do ?!

In fact, there is only one way to know if you can or not. “To start programming, you have to start programming. And to start programming, you have to start programming! "

Many people consider programming to be a difficult occupation, you need to know a lot of things to work as a programmer. And it is true. If it were easy, they wouldn't be paid such big salaries. But on the other hand, there are many books in the public domain. Moreover, most of them are of high quality. Professionals from large companies tend to write huge books or articles describing their invaluable experience to others. Strange people, of course. Instead of getting a lot of money for their work, they are engaged in book writing, for which they pay less, or even nothing at all. These "oddities" will be discussed later. And now we must clearly learn, there are very few secrets in this profession. Most of the questions are solved by searching the Internet. Therefore, despite the complexity, programming is one of the most accessible professions.

During the trial period, you need to decide on the technologies on which you will start. They shouldn't be too complicated and time-consuming to learn. But, on the other hand, they must be in demand by the market so that even those couple of weeks or a month spent on them are not wasted.

Personally, my opinion should be:

2.1.1 HTML
A very simple programming language. To be more precise, this is not even the programming language that everyone is used to. Procedural and object-oriented, like C ++, PHP, Ruby, etc. It is impossible to write "what to do in the store" on it. It is a markup language that you will come across on any web page. The instructions of this language look something like this: “This paragraph should have an italic font”, “Display the picture picture.png here”, “The font size of this piece of text is 12 points. The color is red. "

It is a very useful language for beginners. Even if you are not going to web development, this knowledge will be useful to you. Estimated development time, 2-5 days. However, it is not necessary to memorize extensive reference data. It is enough to learn how to use these same reference books. Among programmers, HTML is not considered to be anything serious or difficult. But ignorance of the basics of HTML, which you can only confess to the closest people. Employers and colleagues will perceive you as mentally retarded.

As you learn HTML, you will constantly come across references to CSS technology. Research is not necessary at this stage. But if you get carried away with CSS, this knowledge will not be superfluous.

2.1.2 JavaScript

This is already a "real" programming language. Its study is closely related to HTML. This is where the first real difficulties await you. Although there is a huge variety of textbooks, video tutorials and all kinds of sites in terms of language, where everything is chewed up to the smallest details. This will be a real challenge.

Surely someone is eager to start learning C, Python and even Haskell. But even if you are going to become a systems programmer. Most likely, sooner or later you will come across HTML and JS.

One of the reasons for choosing JS as the first programming language is its applicability in various fields. Starting with the logic of the client-side web pages. Ending with the JS-like language QML, where the developers of the Qt framework are pulling us by the ears.

If a beginner programmer doesn't know simple things, it doesn't make much difference where to start. The proposed technologies do not require large and heavy development and execution environments. There are many textbooks and reference books in Russian for them. There is no need to get confused with address arithmetic and similar specifics. Your task is to learn how to make basic logical constructions such as loops, branches, etc.

Any tutorial contains exercises. And at the initial stage, you should do these exercises. The bigger, the better!

However, there are two small categories of people who can replace JS with something else:

1) Those who have good mentors in other programming technologies.
For example, a brother / matchmaker who works as a system programmer C. And he is ready to help you. In this case, C may be preferable. But as far as I know, about 30% of programmers are WEB-programmers. So JS is likely to be the right choice.

2) People who need some other language to work right now. System administrators are usually SQL and bash.

In the case of SQL, I would not flatter myself. This is also a "fake" language. Complexity between HTML and JS. It will most likely have to be taught to everyone in any case. But over time, I would advise you to try something like JS that supports the procedural and OOP paradigms anyway. There is still a plus in learning SQL. If you do not master it, there is no point in continuing.

But with bash, it's different. I heard JS allows you to replace bash via a module in node.js. So, if you need to write scripts from scratch, JS will be more interesting. If you correct what was written before you, then there is no other choice. Just like with SQL, JS will remain in your turn.

2.2 Tutorials

A very important question is which tutorials to use. Here are the options in okay which should pass them.
  1. Video lessons. There are a lot of them on any topic. Youtube will definitely give out playlists for any popular technologies. Even in Russian. Everything is clear there, and start sculpting your first "Hello, world!" it is necessary from them. There is only one drawback. They may not cover all the depths of the target language. But you will have enough problems without it.
  2. Multimedia textbooks. Most likely, these are collections of video tutorials plus something else. They are often sold for money.
  3. Books. The most difficult to perceive. They just cover more of the intricacies of various technologies. Leave it for later. When you exhaust the possibilities of the previous options.
But please, hereinafter. You don't have to buy any courses and pay for the miracle textbooks. All the "miracles" have been around for a long time, at most on torrents. In my opinion, rutrracker, banned in Russia, contains the best collection of multimedia textbooks and books.

2.3 Solving technical problems

With willpower and patience, you heroically began your study of the subject. And all kinds of technical problems began to arise in front of you. You can do everything according to the instructions. But your examples may not work. If only because instructions can be written for previous versions of software tools. The hardest step might be with the first run of the source code, which you just rewrote from the tutorial.

The most common mistakes are related to the fact that beginners tend to rush and consider some things optional. You, like any normal person, think there are secondary points in books about programming. You probably want to quickly get the result, in the form of an internship position. And then, surrounded by competent colleagues, you will understand everything and thoroughly study it. So "some tutorial" on JavaScript that won't even be your primary language. It can be perceived as a marathon distance that needs to be overcome as quickly as possible. In fact, any programming textbook should be thought of as a field to be plowed. Anyone who skips the little things ends up facing intractable problems. And instead of a company of competent colleagues, they will be completely alone in studying the material anew.

For example, do you remember a secondary term poorly? And after a couple of days the code interpreter or compiler will give you verbose error output. In which there will be dozens of terms, like those that have been encountered earlier in the textbook, as well as those that have not been encountered. And the mistake you recognize can be the key one. After fixing it, all the others will magically disappear. Most of the reasons for dropping out of school at the initial stage are related precisely to the analysis of errors issued by the interpreter or compiler.

It seems to you, detailed description using quotes with arithmetic operations is some crazy nonsense that you will never use? You may not be. But the author considers it simple. Therefore, further in the textbook, the addition of characters with and without quotes will be found everywhere. But even if you decide that it is better to take a textbook on another programming language that you have high hopes for. He, too, will torment you with lines like "5" + 3. Moreover, with the same "stupid" verbose explanations.

Unsolvable problems are part of the life of any programmer. And no matter how diligently you do everything, you will not get away from them. Personally, even though I have 5 years of experience, I also look into books about something obscure and complex. And also sometimes I think: “It’s still some kind of nonsense. How am I going to solve this ?! " And exactly the same as yours. For me, a lot depends on the solution of problems that seem completely dead-end.

If you have problems with which you can contact the forum or thematic group of the social network, then with my problems, it is useless.

In fact, there is a special algorithm for solving them:

1) It is necessary to think very well about the reasons. Parsing compiler, runtime, or interpreter (JavaScript) messages related to the error. You should understand very well that the computer is telling you about the problem. If you don't understand, search the Internet for the text or error code. Very often explanations are found, but in English. Even after translation, little can be understood. But you have to try very hard. It's not really just a situation where you are solving a specific problem. This is a situation where you get new experiences. No less important than the knowledge from the textbook. Along with this, analysis of potentially problematic code is carried out. If you have rewritten or copied code from somewhere, you need to thoroughly understand it.
If in one and a half to two hours you seemed to have researched and understood everything. But they didn’t find a solution. So we must leave the problem until tomorrow. Even if there are more ideas.

2) Do something else that does not depend on your problem and it turns out. You can even continue to study your current tutorial. You will be surprised, but over time, ideas will come up on how to solve the issue. If they are not entirely clear. It is not recommended to rush to the solution right away. Better to write it down and leave it for tomorrow.

3) The next or any other day. We try all new ideas to solve the problem. We repeat the first stage.

4) If everything is still bad, we prepare a question for the mentor or for the forum. You need to be clear about what you wanted to do. And what your code is. Asking to sort out code for you that you haven't even bothered to study well is completely disrespectful.

As a rule, this is enough to solve any problem.

2.4 Working with mentors

A small set of rules for working with various experienced professionals, mentors, mentors, etc.
  • Before asking, you must try to find a solution yourself.
  • Try to ask only what is not described in books, documentation and the Internet. Otherwise, you will be sent there.
  • If you were sent somewhere, you should go there. Otherwise, the mentor will go there himself and find a solution. This will greatly spoil his opinion of you.
  • So that the mentor does not stand at your table for hours and watch your every step, you need to group the questions. Ask them "in bulk", a lot of accumulated at one time. And not as it arises.
  • It is best to ask questions when your forward movement is blocked. If there is anything else to do besides, do it. It can also raise questions. Which are better to ask together.

3 Self-study

Get in your place! The books are already in front of your comrades. Take your dress and take care of your sandals. Read the book diligently. Do not spend your day idly, otherwise woe to your body! Write with your hand, read with your mouth, ask for advice from someone who knows more than you.

Do not spend your days idly, otherwise you will be beaten, for the boy's ear is on his back, and he listens when he is beaten.

Don't be a man without reason, without upbringing! And at night you are taught, and during the day you are brought up, but you do not listen to any instructions and do what you have planned. And the lions are trained, and the horses are tamed - and only you! They do not know your like in the whole country. Note this to yourself!

They tell me that you give up learning, you indulge in pleasures, you wander from street to street, where it smells of beer. And beer seduces people, it upsets your soul. You are like a prayer house without its god, like a house without bread. You are taught to sing to the flute. You are sitting in front of a girl and you are anointed with incense. Your wreath of flowers hangs around your neck.

I will bind your feet if you roam the streets and be beaten with a hippo whip!
Instructions to the scribe. Ancient Egypt

After mastering the basics of JavaScript. You already have a good idea of ​​what it means to write program code.

And you are ready to spend six months or a year mastering the profession. And what is important, for you this is a matter of time.

3.1 What to Learn?

All people striving to master a profession can be divided into two categories: amateurs and professionals.

Lovers people who like this activity. And they are ready to do it even for free. Sacrificing time that can be spent on entertainment, relaxation, etc. Since you have tried it, you know perfectly well whether you like programming or not. Amateurs have one very good quality. They don't need to be motivated. They will work hard, work conscientiously and receive new knowledge with pleasure. Then, they will share this knowledge with colleagues and friends with the same pleasure. But the most amateurs among the amateurs write articles and even entire books about their experiences.

Professionals they are ready to do this only for money. Or for the prospect of obtaining them. Professionals need to be motivated. And they almost always stop in their development as soon as they get a good job. Even an increase in salary. twice may not be enough reason for them to continue their studies. As a rule, only amateurs are suitable for advanced training.

Of course, pure professionals and amateurs are rare. Some people like half or quarter work. Someone, having tried different technologies, finds something to their liking.

Let's say a developer worked for himself for money. He had a chance somehow to go to the customer, to clarify the requirements with the direct users. And the developer understood. Visiting accountants is much more interesting than writing code. As a result, the developer will ride for the entire team. Even after hours. Gradually retrained as a systems analyst or project manager.

But basically, they try different technologies. Some of them are captivating, and some are not. Even one and the same technology can first captivate, and after a year get bored.

It is very important for any person to understand which activity they like more. Because the comfort of life strongly depends on it. There is a common misconception that work is only for making money. Although this is a huge and the best part of life. At work, you can be creative, communicate and much more. If you go to an unloved job for the sake of money, you will have to somehow compensate for it with entertainment, rest. As a result, there may not even be enough money for compensation.

The highest paid professionals are experienced amateurs. They also get the most pleasure from work and life. Therefore, at this stage, you need to decide what you like the most.

The technology (the programming language that you will learn) must be commercially available. From the TOP 10 popular languages. Otherwise, you will not be able to receive money for your work. This means you cannot become a programmer. You will have to earn money separately, program separately. Which, of course, is impossible.

You still have an internship ahead of you. And they willingly take on internships only in scarce specialties. Especially remotely. Therefore, think / decide what you want to devote your life to. What will you study at this stage. JavaScript can be continued. You can try something else. No one bothers to change your mind in the middle of the road. You have already tested yourself and there is a certain field for experimentation.

The only exception I would make is for C ++. This is a difficult language. It probably takes twice as long to master. Than just C or JS. In this case, the salary will be higher by a maximum of 20%. C ++ is the language of C ++ lovers.

If you don't like JS, and you feel like the "professional" described above, Java is probably the best choice. Once I could not even run a program written in this language (jar archive). But on the other hand, Java developers in conjunction with Oracle (PL \ SQL) from large corporations are arguably the highest paid developers in IT. Despite the fact that these are technologies of medium complexity. (I suppose in the Java world they only pay for the ability to run jar files.)

There is also a wonderful Python language. It will be very useful to all kinds of mathematicians, statisticians, because opens the door for them to the world of Data Science. On the other hand, it is the web development language for everyone else.

Studies at this stage are aimed at raising their qualifications to the maximum. In fact, you will increase the market value of your labor. Rest assured, whatever you lose through programming at this stage will return many times over.

Self-study takes precedence over internships. You can get more fundamental knowledge. In fact, most programmers are professionals. They have learned a little. We got to work. And they exploit their little knowledge. Most of what they read are small articles on how to cook something fast. Or shut up any problem. They really lack fundamental knowledge. You will be surprised, but not everything is possible
"Google". Something you need to know and be able to initially. If only because you have to deal with what you "google". The code you find can be written by a very good person. With a lack of fundamental knowledge, you simply will not understand it.

You should choose a large, fundamental book on a programming language for yourself. And study it to the end. Together with all study assignments.

Completing educational tasks at this stage is a hard, dreary task! You will be bored, uninteresting, you will want to give up everything. Most do so. Motivate yourself, come up with interesting tasks, keep learning. And you will not be that majority.

In addition to the main programming language like C, Java, JS, etc., you need to learn the following:

English language
As you know, programmers are the kind of people who can read English, but cannot speak. This is the language in which you will look for solutions to your problems, communicate with customers. Conversational English greatly expands the range of job search. This is very good for the salary. Although, admittedly, you can spend as much time on it as on a programming language.

Technical English, easier to learn. Just translate the materials you need in various translators. Memorize unfamiliar words.

SQL
In most cases, you will need this technology sooner or later. It is not necessary to learn PL \ SQL add-ins (other than learning Java). But it is very desirable to master the creation of tables, joins and unions. The most useful, perhaps, will be the study on the example of PostgreSQL.

SQL has another aspect. This language is perhaps the hardest thing to ask when hiring a tester. Therefore, if you only learn it, there is a chance to get a job very close to programming. In such a job, it will be a little easier to learn programming itself. And you will be very easily transferred from testers to developers. Once you show that you can write good code.

Master the "blind" ten-finger method of typing on the keyboard
There is a lot to print. Therefore, be sure to master. There are enough free online simulators on the web. You can try to master it before the first, "test" stage. If you do not have the patience for even this, there is no point in moving on.

Version control systems
This will of course be Git. Be sure to learn the basics and give it a try on your learning projects. But last but not least. At first it will be difficult to understand what it is, what advantages it gives.

These subjects are good because they allow you to keep pace with your studies. Even when stuck with learning the main language. You will probably have the described "unsolvable" problems. Switch here and slowly look for a solution.

3.2 Common ways of acquiring knowledge

University
I can tell you a lot about higher education. But this has no practical value. In short. It is better to be an intern after a year of independent study than after four years of attending a university. Those who start studying according to my recommendations now, in 4 years, will conduct technical tests when hiring those who are now entering universities.

Paid programmer training courses
Everything is very complicated here. Demand creates supply. But this offer is often of very poor quality. You can try any of them. But please don't have any hopes. Try to take the first lessons for free. And run from there if you don't understand anything in the classroom. None of the brands these courses are made under will add to your understanding of the subject. "Guarantee of employment" there, as a rule, is a deception.

Courses and schools run by large companies for their future employees
The most famous case, perhaps, is the "School of Data Analysis" by Yandex.

Here you will be taught by really expensive specialists. And they will do it for their internal needs. As a rule, such courses have some kind of requirements for candidates. Yandex required mathematical training. EPAM required basic programming knowledge. You just can't get there. But if there is an opportunity to attend these courses, it is definitely worth striving there! Even if you stay in "slavery" by these companies for some $ 400-500 per month for a whole year. A big plus of such courses. They don't require any education.

3.3 Learning strategy

Most students expect to learn programming just by learning. Like I sat down at a textbook without knowing the subject, but I finished teaching it and began to understand everything. The whole process is linear for beginners. Moving from chapter to chapter, passing educational tasks, a person gains knowledge. People do not represent other models. Because we have never done complex and lengthy projects. But in reality, everything is not so simple. Any programmer knows that in the course of a project, new details are inevitably discovered that hinder or, on the contrary, help in its implementation. As a rule, the larger the project, the less it resembles what was originally conceived.

A simple example. You have ordered a suit from a tailor shop. We agreed on all the details. A week later, the master calls with the news, the agreed shape of the seams looks very bad on the suit, it must be changed. Then it turns out that part of the material needs to be changed. No need. You change and change. In the end, you get about 2/3 of what you originally intended. In the case of software development. In the project of a business suit, you can get a swimsuit. And for the price of the suit. If you think this is unbelievable, ask a smart project manager afterwards. In the meantime, you have one thing to learn, there will be many unexpected things in your study project. And you must be able to deal with these surprises.

If you do not delve into the jungle of project management, you should not develop in IT linearly, as described in the beginning. And "in a spiral". It looks something like this. If you don't know the computer well. No need to think that in a year you will be a C ++ or PHP programmer. First, you study the computer. New opportunities and obstacles are opening up for you. For example, they became more aware of what you want to do in the end, websites or desktop applications. Then, during the trial period, you will try to program for the web (html, js). You will learn even more about programming. After the trial period, you can already guess your main direction. What language will you learn. Someone at the very beginning of the journey may not have suspected about system programming. That there is a separate area where developers write programs invisible to the average user. And perhaps it will be more interesting for you than what you dreamed about in the beginning.

In the learning process, there will definitely be reading textbooks and solving problems from there. But the sequence itself and the order of passing the textbooks must obey the "spiral" cycle. So that each stage provides a good foundation for the next.

You must be your own manager and plan achievable goals, stages. Right now, many young people dream of how they will be the creators of a top website or operating system. And someone wants to write a calculator and get an internship position with it. I hope you can guess who will be a successful programmer in a year. It is very important that your projects and ideas have their successful implementation. A bird in the hand is worth two in the bush.

In addition, "managerial" qualities are very useful to those who consider themselves "dumb". In IT it is very easy to be smart and very hard on the contrary. A smart one can easily take a textbook, read it and immediately do something useful. Those who are stupid will read the same textbook and understand nothing. So you need to break the training material into parts and train more (write code) based on these parts. You can break the material down into parts so that anyone can get it. For those who know how to plan their educational process and solve "insoluble problems" (2.3) there are no insurmountable obstacles. You will master absolutely everything, regardless of intelligence. Let it take considerably longer. But it is much more important for you to have holistic and tested knowledge / experience than the speed of their acquisition.

Of course, it will be very difficult for you to understand and, most importantly, apply in practice such a model. But those who succeed will have a nice bonus in the form of the prospect of becoming a "project manager". If now you just want to get a programmer's salary, then you will want a project manager's salary so much that you will not be able to sleep. There is only one minus here. Still, first you need to become a good programmer.

3.4 When to look for a job

It is very difficult to say when to look for your first job in this specialty. In fact, you can start your job search right after the first stage. I suspect many will. If you are under 23 - 25 years old and you live in a well-developed software development industry, you can do it. You may not be a good professional. But you will definitely earn a living.

On the other side. There are people living where no one is involved in software development. And there are people who are well over 25. Such people should study longer. To turn from low-skilled to high-skilled. For the sake of getting highly qualified programmers into its ranks, the employer is ready for a lot. You may be offered relocation assistance. Or even remote work. Age in your 30s or 40s won't matter much. The main thing is to show your high level of experience.

It makes sense to start looking for a job as early as possible if you already work at a job with a high workload. Where you don't read programming books. In this case, it makes no difference to you after what work in the evening to study the subject. A current or post-trainee trainee.

Early searches have a big drawback. After the interview, the employer will have an opinion of you. Which you don't want to change over time, if you once showed a low level of knowledge. In six months, when you know a lot more, your resume may not even be considered. Because the opinion of you will remain the same. One can only hope that the first interview will eventually be forgotten. But this is at least six months. It may be that the employer maintains a database of candidates. In order not to interview them twice. In this case, everything will be very sad.

3.5 "What do I need to know to be hired as a Junior?"

Newbies often ask this question. There is no definite answer. This question can only be answered by a specific employer at a specific point in time. It is impossible to be responsible for the entire labor market at all times. Your chance of getting a job as a “Junior” or, as I say, an “intern” varies over time, depending on several processes and factors.

Your self-study process makes you more attractive to employers. At this time, vacancies suitable for you appear. Closely related to the programming language you are learning. You send your resume there. And the employer chooses the most suitable candidate from the respondents. The qualifications of candidates are limited from above by the salary of the vacancy. Perhaps you will be the best for this salary. Or maybe not. So, over time, you learn and become more expensive. And at some point, anyway, you will be the best of all those who responded.

There is also the factor of the candidate's age. Which diminishes your attractiveness a little. The greater the age, the greater the decline. There is a factor of having a good portfolio that boosts. Experience, recommendations and much more.

You can be worth a lot as a C ++ programmer, but very little as a PHP programmer.
The most "free" factor is your popularity with employers. When you are known to more employers. More chances that you will be taken somewhere.

"Patience and work will grind everything!" Continuous self-education is your guarantee of getting a job!

4 First job as an intern

4.1 How to look for your first job?

4.1.1 Portfolio

First, write a portfolio. It should be a small program or script for the site that does a job that looks like it is useful. The assignment must be clear to your potential employer. For example, an address book. If you make a calculator for calculating the trajectories of the Earth satellites, it will certainly be cool. But your future employer is hardly in the subject. Therefore, he will not be able to evaluate the result. It is desirable that the program somehow stores the settings and user data. There should be some small and coherent piece of code. For example, if you send your patch to some free project, the employer may be too lazy to delve into the source code of the entire project. And evaluate what you changed there in this context. It is good if the application will use the SQL database where it makes sense.

And the most important thing, of course. How it will be written. It should be well-formatted and structured code. Be ready, the employer will take a line from this code and enter it into a search engine.

In order for the code in the portfolio to be good, it needs to be allowed to "rest" for a week. Those. write and leave for a week. Then revise the entire code. After fixing the errors, upload it to some temporary ball and create a topic on the forum with a request to see the source code of more experienced programmers. With the obligatory indication that this is your portfolio.

After correcting the errors that will be pointed out to you. Perhaps it will even be a global rework of your work. Upload the code to one of the source code hosting. Delete the topic where you were told about your mistakes. The future employer does not need to know about mistakes.

Ultimately, it is very important to understand every line you write. Most likely, you will be dragged around it and asked all sorts of tricky questions.

Believe me, creating a portfolio and code review (code review) by more experienced colleagues will add + 30% to your experience. It also allows you to adequately assess your current qualifications. Your code will certainly not be perfect. Get ready, they will find errors there (for free!) It's not so bad. But when you do not know why you wrote the code like this, and not in another way, the real trouble. It means that it’s just that you didn’t write the code! In this case, they will kick off with the wish to come back in six months with their own code.

4.1.2 Summary

In general, a resume can tell a lot about a person. For example, a poorly structured resume. Most likely it will be written by a developer who doesn't care much about the structure of the source code.
A section copied from the network, for example, "Professional qualities". Says that the candidate is inclined to lie. Lack of achievements, which are not remembered even at the interview, says that the person is "professional". And much more.

There was a funny story once. Undertook to criticize the resume of one colleague. The findings were disappointing. I say: “You have such a bad resume that I would hire you! You're a good specialist. But with your resume you will not find a good job. Therefore, you can be kept on a small salary. And you're not going anywhere! "

So that this does not happen. It is also advisable to give your resume to HR specialists and programmers for evaluation.

Naturally, there is no need to lie or provide dubious facts in the resume. It will be read very carefully by people with extensive life experience. Any attempt to hide or embellish something will be regarded as extremely negative.

Better to have a humble resume. But be sure to answer for any word in it.
If you have already gained some work experience and you have something to brag about. You can add a "Portfolio" section at the very end. Describe in detail the projects in which you participated. Interesting technical solutions, achievements (in detail). At least 10 pages. But precisely at the end.
Be sure to indicate that you are ready for relocation (moving) and business trips.
A completed profile on LinkedIn, HeadHunter and other job search sites will also help you.

4.1.3 Job search

Now on to the fun part.
You need to understand clearly, trainees and inexperienced developers are rarely needed by anyone. Employers are looking primarily for experienced ones. But their salaries don't always allow them to hire the right people. Therefore, your resume with zero experience will be considered sooner or later. And the code from your portfolio will help a lot with this.

Therefore, you should send resumes to all vacancies that fit your profile. For example, we studied JavaScript. Submit your resume wherever this JavaScript was required. Regardless of the minimum required length of service, the presence of specialized higher education, the fact that the vacancy has already been closed and much more. The “other end of the line” knows better what to do with it. Also send to all firms that theoretically have or may have specialists in your profile. The mail is usually sorted out by secretaries. It's no big deal if they send your email to the trash. The opinion of these employers about you does not matter. Even if these are the most prestigious firms.

The job search itself takes from a month to two. Usually, if you apply for a vacancy, you will be contacted in 2-3 days. Then, within a week, an interview and / or test task. And then, within a month, the employer will think about the results. Direct refusals are usually not sent. They just forget about you and that's it. So get ready for tons of interviews that leave you forgetting about them. There is no need to pin hopes on any options. Pass your interview and dive back into learning programming.

4.1.4 "Karma" of the programmer

There is one very curious moment when looking for a job. Let's say you've learned JavaScript. Learned and studied conscientiously. Then looking for a job as a JavaScript programmer. And suddenly you are offered to become, for example, a systems programmer. The employer might say your JavaScript is good. But he only has trainee vacancies for system programmers C. Therefore, you can go for trainee S.

The trick here is after this first job. Returning to work with JavaScript will be problematic. And this is not some kind of magic there. Just as a C programmer you will be experienced. As a JavaScript programmer, inexperienced. Those. reverting to JavaScript lowers your salary. Perhaps even twice. Therefore, you will remain a system C programmer for the rest of your life. I don't think this is a bad option. But you need to be aware of such restrictions.

4.1.5 Interview

You'd be surprised, but most interviews for programmers take place remotely. Therefore, even if you want to get a job in the city, hundreds of kilometers away from you, it's okay that you are now in a different place. An employer can remotely check your competencies and decide whether you should go to a face-to-face interview or go straight to work in his city.

If the interview is in absentia, everything is simple. You will need a good connection, internet and telephone. And one and a half to two hours of time, when no one will interfere. If silence and good internet at your home is impossible. Arrange with your friends that they will give you their computer room or apartment for the interview. Video communication is usually not required. Most likely you need Skype and TeamViewer. Heavy development environments, compilers, editors are usually not needed. A simple code editor like Sublime or Notepad ++ is enough. The employer himself will write what you need to have for the interview.

Much has been written about face-to-face interviews. I see no reason to repeat myself. In any case, having received an invitation, they should learn as much as possible about the inviting company. See reviews about her as an employer. And decide if you want to work there. If you want, be sure to come up with a reason why exactly there. Why did you send your resume there ?! After all, it may not fit the formal requirements.

In any case, you should want, first of all, an interesting job and professional growth. Like we tried to program, you really liked it. And now you are looking for an interesting job in this direction. First of all, you expect interesting tasks from your future employment. The ability to communicate with like-minded colleagues. And, of course, polish your professional skills. This is the kind of question you should ask at the beginning. You should be interested in what kind of experience your future colleagues will have. What technologies are used in the project for which they are looking for an employee.

Of course, let's be frank. For the majority, the main question, about salary, is itching. This should be clarified last. These questions are usually asked by "professionals" at first. The bosses are looking for amateurs.

Usually, the salary of an intern, with some knowledge of the topic, is the salary of an ordinary office hamster in the same city. But if the offer is less, my advice is to agree anyway. Let's say you work as a system administrator. You get $ 500. I think $ 500 for a system administrator in central Russia is the ceiling. And now you are offered the position of a programmer (actually a trainee) for $ 300. If that sucks for you. Don't even start learning anything. Close this article. And forget about programming as a future profession.

Your first developer salary must be sufficient to survive. The fact is that together with $ 300 you will receive $ 1000 worth of experience and knowledge. Get a collaborative development experience. Your work will be judged by more experienced colleagues. Get unlimited access to their experience. Most likely your portfolio will grow with real projects. All this will make you a real and sought-after specialist. If you are not lazy and take advantage of all this. In six months, catch up with your $ 500. And this will only be the beginning of your career.

Of course, it can happen, "Experience and knowledge for $ 1000" will not get. In this case, just look for another job.

During the interview, you shouldn't be afraid of anything. You have to behave naturally, but have a working attitude. Interviews are usually conducted politely. The task of your future boss is to understand what kind of person and specialist you are. They will rather watch you very closely.
No one will ever tell you a true opinion about you. A bad opinion can turn you against. Which doesn't make any sense. What if you still come in handy. A good one can be the reason for requests for a higher salary.

An interview is like a first date with a girl. Everything is always polite, cultured and good. Only the next one may not take place.

4.2 Internship

The task of the internship is to polish the acquired knowledge.

4.2.1 Freelance

Novice programmers can read articles from the Internet that tell how great it is to be a “freelancer”. Sitting under palm trees, taking one-time orders and “not working for my uncle”.

To understand the advantages and disadvantages of freelancing, you need to understand that the employer is ready to invest in your training, only seeing a long-term perspective. Otherwise, it is easier for him to overpay a ready-made specialist than to wait for beginners to solve complex problems. Therefore, freelancing does not provide experience in depth. Nobody simply will give you orders if you do not have the necessary competencies. On the other hand, freelancing is the first interesting practice and the first money. And for the customer's money, you can create a portfolio for yourself at the same time.

There is no need to place high hopes. Just try to find orders at the end of the self-study. It will be great if you succeed. But do not assume that you have completed an internship and become a real programmer. This is a good activity only when you are not yet taken on by serious companies. Or you have already worked there for 3-5 years.

4.2.2 Companies

Once I heard about an economic law. The larger the union of workers, the more income this union receives for each employee. Accordingly, in large firms, workers' wages are usually higher. Than some "freelancers". At least in IT. It is the well-known industry giants who pay the top salaries and buy up the best minds. Therefore, the "uncle" who gathers specialists into a handful and gives work must be loved. Because together you can earn much more than separately.

And if so. You need to learn how to work as a team. Use collective development tools. Colleagues will share their experience with you, help you correct mistakes. You yourself will be surprised how much new there is in the profession that you have not encountered before.

As stated earlier, most people are "professionals." When they get to their first job, they “calm down”. And their strategy is survival. They will only master the knowledge necessary here and now. Let's say you need to write SQL queries for the code. They will quickly look on the Internet how to make a request for a specific task. And they will write the code on this basis. Then the code is sent to an experienced colleague for code review. It turns out that instead of two requests and a bunch of code, you can write one request, but with "joins". And then the intern climbs into the Internet. He reads a piece of some material about "joins" there. Reworks the code. So every day. This is how most trainees gain knowledge.

It would be correct, after 3-4 similar questions related to the database, to take the manual on this DBMS and study it completely. This is usually done only by "amateurs". Which becomes curious what, besides the "joins", there is still.

It should be noted that reading any manuals at this stage is much more interesting. You are already familiar with the technology. And good knowledge can make the job much easier. This is much more attractive than just the abstract examples from the books in the previous step.

The internship flows smoothly into regular work. It's hard to pinpoint the moment when you can consider yourself a full-fledged developer. Probably when your questions to colleagues run out of simple answers. And you understand, most of the problems will have to be solved by ourselves. Usually this period is six months. If you did a good job at the previous stage. If you were in a hurry, you settled down, having finished reading the book on the main language by half. So keep on mastering the book and additional technologies.

After your internship, you are free to do whatever you want. Freelance. Do independent projects and more. But my advice to you. Sometimes read literature related to your work. For advanced training. If you've read how to write code before. Now you can read how to do it very well and correctly. Rest assured, you will always see new horizons in professional training. Don't be lazy! Especially if you want a big salary.

5 Conclusion

I hope this article will help everyone who wants to master our wonderful profession.
If you like this work. I have an idea to talk about the pros and cons of higher education in IT.

Tags:

Add tags

Comments 179