Programmer - Expectation and Reality
This publication does not pretend to be universal truth, it is nothing more than personal experience, observations and the experience of colleagues. I think that newcomers who are on the verge of an interesting world of programming should look soberly at the real state of things and the faster the illusions fade into the background, the faster you can enjoy (and not only) 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 knowing the language, you need to know a lot of related areas. For example, very often you need knowledge of any kind of accounting. The customer does not need a programmer simply because he code well, the customer is willing to pay money, and sometimes not small, for solving the task, and not a beautiful algorithm.
Myth 2: “A true programmer writes programs for days”
As practice shows, the programmer programs in the best case ⅓ the time of the project, the rest of the time is spent on setting tasks, communicating with the customer and other killing of this time. No, of course there are environments where the programmer precisely codes for days, for example, as in SAP. But it is in SAP that the lowest-paid position is the encoder, who writes strictly according to the given terms of reference. Step to the right, step to the left - shooting. And still, the company automating the enterprise keeps a huge staff of employees, far from coding for just these ⅔ works.
Myth 3: “Now how do I do the bookkeeping and how will everyone start buying it”
Unfortunately, many amuse themselves with this myth (and I was naive a long time ago). Like, now I’ll make a program that will be faster and more convenient than the same 1C and everyone will need it. But after making the initial work, the user asks a reasonable question: “1C works for me, it satisfies everyone, almost completely supports changes in the legislation, allows me to take reg. reporting and then why is your program unknown to anyone? ”
Myth 4: “I would only have to sell a couple of copies of my product and then certainly trample”
Well, suppose an acquaintance has an 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 you need to support the product, so that competitors look, envy and also want to buy it. And here the unpleasant thing starts - the developer burns out, starts demanding a lot of money, because you want to eat and the client, having seriously thought, buys 1C, where updates are free or shareware.
Myth 5: “I will become a specialist and be rich as Bill Gates”
This is the saddest myth of all the rest. First, Bill Gates was and is a manager by nature, not a programmer. He always thought how to sell more profitably, and not how to create the code better. Therefore, I assure you, without further education (for example, financial and economic), it will not be possible to go beyond the head of the IT department or the project manager.
Myth 6: “I will create interesting programs.”
But no. They pay money for work only if the customer needs the result, and as it turns out on the market, very tedious accounting systems or something like that are required. If the dream of life was to create games, then there are also many months of tedious solutions to problems.
At work, I also do what I don’t like, the main thing is that the customer would like it, but at home, in the evenings, I launch my favorite TASM and program for the soul. Absolutely no one needs programs are created from the heart and for their own satisfaction.
Personal experience or how not to beginners
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 a striking thing: “I would never have thought that I would have to drop knowledge from the university and study again”. I don’t know what exactly struck him, but he is right in everything. We study cool sorting methods, and the customer just needs to see when and where he will spend the money, when and how much he will build a new bridge, in general, anything but the skill of a programmer. That is why many programmers are disappointed to learn that at the enterprise he is far from the first person and even an accountant teaches him life.
It may seem ridiculous, but in real life you have to divide by zero. This is the most striking example that I met at the beginning of a career as a programmer. The accountant quite seriously operates with such concepts as “well, we divide by zero, which means that as a result we get zero ...”. Because of my stupidity, I began to be indignant, 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. Now I know that the bird from my point of view is not necessarily such from the point of view of the customer, and then this was just wildness.
Altruism is in the IT field is not welcome. Once I decided to help a good person in setting up a computer club (they were in fashion about 15 years ago), and it’s absolutely free. Yes, a day on their feet without a penny of money, just something to talk to a good person. But then he refused my help, for the reason he put it: "if a person does not take money for work, then he is not honest." And as practice shows, everything has its own price. Money is not only the motivator of the developer, but also the demotivator of the customer, he will once again discard unnecessary functionality in the long box and the developer will not have to implement someone else's crazy idea.
I also allow myself to note the most interesting fact of the growth of a programmer as a specialist. While a person is still a beginner and only learns the vastness of the it world, he thinks he knows everything. With experience, the programmer understands that he knows almost nothing. And only after becoming a professional, the developer understands that he absolutely does not matter, the main thing is that the customer would be satisfied. Of course, this joke is told as a joke, but the trouble is that this is a real reality.
Recommendations to yourself in your youth
1. Spit on a beautiful code, better study standard configurations, cell inventory and budgeting.
2. Forget about good users, they are lazy by definition. They do not need innovations and difficulties, with any innovation, users will sabotage and rebel in one way or another.
3. Most of the large leaders do not know why it structures are needed. Humble yourself and do not prove your worth, it is ungrateful and obviously losing. You will be nodded knowingly, you will be praised, but a completely different person will have all the laurels from the implemented system. By the way, this applies to any project activity.
4. Learn time planning. Directly train right after the university, and it is better to study directly as 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, you can lose the customer, but for that a hooked client will quickly provide you with work.
6. Do not play computer games and play sports. Is funny Many have serious problems. That the first, that the second, strongly influences productivity. That is why in many organizations they focus on gyms, swimming pools and fitness centers, if only employees work more efficiently.
7. The most important thing - do not forget your family, call your family, visit your parents and respect your children. Believe me, these errors are almost impossible to fix.
What would seem to be common in these tips with C ++ algorithms? This is what is unusual, that if at least someone had given me such advice before, then I would have filled much less cones. I hope that after this text in the world there will be a little less cones stuffed by young people.