Foreword
This publication does not claim to universal truth, it is nothing more than personal experience, observations and the experience of colleagues. I think that newcomers standing on the threshold of the most interesting world of programming should take a sober look at the real situation and the sooner the illusions recede into the background, the sooner you can get pleasure (and not only) from your developments.
Myths for beginners
Myth 1:
“Now I will learn C # (C ++, assembler, etc.) and become a real programmer”Alas, as practice shows, in addition to knowledge of the language, it is necessary to know a lot of related areas. For example, very often knowledge of keeping any records is needed. The customer does not need a programmer simply because he is good at kodit, the customer is willing to pay money, and sometimes not small, for solving the task, and not a beautiful algorithm.
Myth 2:
“A real programmer writes programs for days”As practice shows, the programmer programs at the best ⅓ of the project time, the rest of the time is spent on setting the tasks, communicating with the customer and other murder of this time. No, of course there are environments where the programmer is exactly kodit for days, for example, as in SAP-e. But it is in SAP that the lowest paid position is a coder who writes strictly according to the provided technical requirements. Step to the right, step to the left - execution. And still, a company that automates an enterprise keeps a huge staff, far from coding for just these ⅔ jobs.
Myth 3:
“Now how will I do the accounting and how it will start to buy everything”Unfortunately, many people amuse themselves with this myth (and I was naive a long time ago). Like, now I will make a program that will be faster and more convenient than the same 1C and everyone will need it. But having made the initial hack the user asks a reasonable question: “1C works for me, it satisfies everything, almost completely supports changes in legislation, allows to pass reg. reporting, and then why is yours, or who does not know the program? ”.
')
Myth 4:
"I would only sell a couple of copies of my product and then surely trample"Well, suppose there is an acquaintance in the influential person who initiates the purchase of this product to start. This often happens (I will not name specific enterprises for obvious reasons). And then it is necessary to maintain the product, so that competitors would look, envy and also wanted to buy it. And here the unpleasant begins - the developer burns out, starts demanding a lot of money, because the client wants to eat something and, seriously thinking, buys 1C, where updates are free or shareware.
Myth 5:
"I will become a specialist and will be rich as Bill Gates"This is the saddest myth of all the rest. First, Bill Gates was and is by nature a manager, not a programmer. He always thought how profitable to sell, and not how best to create a code. Therefore, I assure you, without additional education (for example, financial and economic), it will not be possible to go further than the head of the IT department or project manager.
Myth 6:
"I will create interesting programs"And no. Pay for the work of money only if the result is needed by the customer and as it turns out in the market requires very tedious accounting systems or something like that. If the dream of life was to create games, then there are also many months of boring problem-solving.
I, too, at work, do what I don’t like, the main thing is that the customer likes it, but at home, in the evenings, I launch my favorite TASM and program it for my soul. Absolutely no one needs programs that are created from the heart and for their own satisfaction.
Personal experience or how not to do newcomers
One of the projects recruited young employees who had just graduated from a university with a degree in programming. And one young worker somehow discovered an amazing thing: “I never would have thought that knowledge from the university would have to be dropped and learned anew.” I do not know what hit him, but he is right in everything. We study cool sorting methods, and the customer just needs to see when and where he spends money, when and how much a new bridge will be built, in general, anything but the skill of a programmer. That is why many programmers are disappointed to learn that at the enterprise he is not the first person and even an accountant teaches him life.
This may seem ridiculous, but in real life it is necessary to divide by zero. This is the brightest example I encountered at the beginning of my programmer’s career. The accountant quite seriously operates with such concepts as “well, we divide by zero, which means we get zero as a result ...”. In my stupidity, I began to resent, send a person back to school, demand to give an adequate customer, but instead of all this, the company refused my services and turned to someone who knows how to divide by zero. It is now I know that byrd from my point of view is not necessarily such from the point of view of the customer, and then this was just wildness.
Altruism in the IT sphere is not welcome. Once I decided to help a good person to set up a computer club (15 years ago they were in fashion), which is absolutely free. Yes, a day on my feet without a penny of money, just something to talk with a good person. But then he refused my help, for the reason as he put it: "if a person does not take money for work, then he is not honest." And as practice shows, everything has its price. Money is not only a developer’s motivator, but also a demotivator of the customer, it will once again discard unnecessary functionality indefinitely and the developer will not have to implement someone’s crazy idea.
Allow me to note the most interesting fact of the growth of the programmer as a specialist. While the person is still a novice and only knows the expanses of the IT world, it seems to him that he knows everything. With experience, the programmer understands that he almost does not know anything. And only becoming a professional, the developer understands that he absolutely everything without a difference, the main thing is that the customer would be satisfied. Of course, this anecdote is told as a joke, but the trouble is that this is the real reality.
Recommendations to yourself in your youth
1. Spit on a beautiful code, better learn standard configurations, cell warehouse accounting and budgeting.
2. Forget about good users, they are lazy by definition. They do not need innovations and difficulties, with any innovation, users will somehow sabotage and rebel.
3. Most large executives do not know at all why IT structures are needed. Humble yourselves and do not prove your worth, it is ungrateful and obviously losing. You will nod understandingly, you will be praised, but all the laurels of the implemented system will have a completely different person. By the way, this applies to any project activity.
4. Learn time planning. Straight train right after the university, and better straight learning a programmer. This is very important and precisely because of the lack of this knowledge, many projects fail in the most unpleasant way.
5. Learn to take money. For each sneeze take a certain amount. Yes, it's scary, yes, the customer can be lost, but for the hooked customer you quickly provide work.
6. Do not play comp games and play sports. Funny Many have serious problems. That the first, that the second, strongly influences productivity. That is why in many organizations they focus on gymnasiums, swimming pools and fitness centers, as long as employees work more efficiently.
7. Most importantly - do not forget your family, call your relatives, visit your parents and respect your children. Believe me, these errors are almost impossible to correct.
What would seem to be common in these tips with algorithms in C ++? This is something unusual, that if at least someone had given me such advice before, the cones would fill much less. I hope that after this text in the world there will be a little less cones stuffed with young people.