There is one course that I would add to the curriculum for any engineering specialty, and it is not about compilers or the complexity of algorithms. This is an “Introduction to the reality of the industry”, because this is not talked about and this leads to useless bummer. This article claims to be a README.txt for a young engineer in career building. Her goal is to make you happier by filling in education gaps about how the real world works. I do not urge you to follow what is written as a detailed guide, but I hope that this information will be more valuable to you than the nothing that you have been told about this at the university.
90% of work for a programmer is corporate software
Basic economics: the price of anything (including you) is a function of supply and demand. Let's first look at the demand. Most software is not sold in boxes and is not available for download on the Internet or the App Store. Most software is dreary highly specialized enterprise applications that support the global economy from all imaginable sides. These applications calculate costs, optimize shipping costs, help prepare accounting reports, design new interfaces, calculate insurance prices, tag suspicious orders for manual checks, etc. Software
solves business problems .
Software solves business problems despite its
heartbreaking boredom and
lack of technological complexity . For example, imagine an electronic form of a travel expense report. For a company of 2,000 people, it can save about 5,000 man-hours per year compared to manual processing of papers, which, at an average cost of an hour of work at $ 50, will save $ 250,000. Companies don't care that this is the most primitive CRUD application in the world. The only thing that matters is that it reduces costs or generates profit.
')
There are companies that create software that real people use, and almost everything that comes to your mind when you think about software falls under this description.
It is very unlikely that you will work in such a company , unless you take targeted steps for this. And even if you find yourself in such a company, most programmers still do not work on the user part of the application.
Programmers are hired to benefit the company, not to program
Periodically, companies undertake some of the irrational or political reasons (read below), but mostly their actions are aimed at increasing profits or reducing costs. In a well-established company listed people who are doing just that. (What can, but not necessarily, imply the work actually being done.) Those who decided to hire one or more programmers decided not to do so because they like geeks in the office, but because these geeks allow the project to be completed (or projects) that will increase profits or reduce costs. Creating beautiful software is not the goal, as well as solving complex programming problems or writing trouble-free code. Increasing profits or cutting costs is your only task.
Peter Drucker - you may not have heard about him, but he is respected by people who sign financial documents - suggested defining a profit center and a cost center. Profit centers are the part of an organization that directly makes bread and butter: partners in law firms, sales people in companies, investors on Wall Street, etc. Cost centers are, in fact, everything else.
You need to be part of the profit center , because it will bring you more money, status, and more opportunities in everything that you would like to do. It is not difficult: an intelligent student will easily determine the company's profit center by describing it in one paragraph. If you want to work in this company, aim exactly there. If you cannot, then either a) go to work somewhere else, or b) arrange a translation for yourself after you are hired.
Programmers are especially expensive cost centers, which cause an optimization itch for any MBA graduate. This translates into such wonderful initiatives as outsourcing, which can be understood as “let's replace very expensive cost centers that engage in some kind of magic, the essence of which seems to us not important, but without it in any way, with cheaper cost centers in a country with more low labor cost. ” (Lyrical digression: you can absolutely safely ignore outsourcing as a threat to your career if you read this article to the end.) No one will ever outsource profit centers. Attempting to do so will give birth to many management jokes. It is as if you were offered to replace the version control system with files on diskettes.
Stop calling yourself a programmer
“Programmer” sounds like “an abnormally expensive slave who writes incomprehensible nonsense in another incomprehensible nonsense”. If you call yourself a programmer, know that someone is
already working to fire you. Have you heard of the company Salesforce, Software as Service? Their slogan “No Software” literally informs future customers: “If you used Salesforce, you could dismiss half of the programmers working on your internal software and put the difference in your pocket.” (By the way, there is nothing scary. You are in an industry that deprives people of work. If you think this is wrong, go back to the university and learn something unnecessary.)
Instead, talk about yourself in the context of your achievements in increasing profits and reducing costs for other employers. If you have not yet had the opportunity to achieve something in it, speak about yourself so that it is clear that you are able to increase profits and reduce costs and talk about your ideas on this matter.
There are many highly paid professionals who work with the code, but do not call themselves programmers. Kvonty (
from the “quantitative analyst” - analysts who deal with the algorithmic trading on the stock exchange, risk modeling, etc. - approx. Translator) from Wall Street - the most vivid example of this: they use computers and knowledge of mathematics to make decisions more effectively than a group of people without such support, and as a result, their companies earn millions of dollars. The bonuses of a successful quarter in a good year exceed the earnings of many talented programmers for a dozen years.
Similarly, even if Google seems to be the right company for you, there are programmers there too, and there are people whose work has led to an increase in the clickability of AdWords ads by 1%. (The last ones are worth millions of dollars, is the hint clear?) I recently stumbled upon the site of a guy who wrote in his professional biography: “I created the billing system code through which 97% of Google’s profit passes. He is now engaged in angelic investing (this is a beautiful way to say that he is very rich).
You are not limited to your technology stack.
Recently, I asked Twitter what novice programmers would like to know about how to build a career. Many were interested in which programming language or technology stack to learn. My answer: does not matter.
Do Java programmers earn more than .NET programmers? Everyone who considers himself a Java programmer or a .NET programmer is already in the span, because a) they are programmers (and you, as written above, no) b) they close the opportunity to be hired for most positions. In the real world, learning the basics of a new language takes a couple of weeks, and after 6-12 months, no one will guess that you have not done this your entire career. I was engaged in Enterprise Java development as early as March 2010 (
article written in October 2011 - translator's note). Believe me, nobody cares. If a company engaged in development in Python will look for a techie who can earn them money, the fact that I have never written a single line of Python code in my life will not play against me.
Talented programmers are rarely met, much less often than the need arises for them, therefore now the most favorable situation for candidates in almost all industries. Matasano is written in Ruby. If you don’t know Ruby, but you are a good specialist, they’ll still hire you. (A good specialist has experience in — repeat after me — increasing profits or reducing costs.) FogCreek uses the Microsoft stack. I can't write ASP.NET without error, but they will still hire me.
There are companies with such a crookedly set process of hiring that if you don’t have the search keyword in your resume, you won’t even be invited for an interview. In such companies it is better not to work, but if you really want, then after spending a few evenings and weekends you can add the right words to your resume. But it is even better to influence the choice of technology at your current place of work so that it will advance your career. Want to learn Ruby while working in a .NET company? Make a one-time Ruby project. And oh, you became a professional Ruby programmer, you wrote Ruby and you were paid for it. (It's funny? I did it in a Java company. A one-time Ruby project earned us $ 30,000. My boss was expectedly happy and
never wondered what the project was done on .)
Colleagues and superiors you are not friends
You will spend a lot of time with your colleagues. Sooner or later you can become friends with some of them, but in general you will change jobs for three years and, despite the warm relations,
never invite any of them to visit . And they will treat you the same way. You should treat all people with whom life leads you well - this is just the right thing, and besides it will help the development of connections - but do not be in the illusion that everyone around is your friends.
For example, when, when applying for a job, you talk with a pleasant 28-year-old boy who seems to you to be just an improved copy of yourself from the future,
this does not lead to anything . He does not see you as a friend, you are no more for him than a resource necessary for the company's activities, which he seeks to acquire at the lowest price. Treping about World of Warcraft is no more than making contact, and he will surely (hopefully decently) try to do something that your friends will never allow, for example, to tell you to lose a few thousand a year from your salary, or to manipulate you to stay and work a little longer, when you could spend this time with your real friends. Also, you will have other colleagues who, politely and decently, will offer things that run counter to your interests, from “I will assign myself your merits on this project” (perhaps it will be formulated a little shorter) to “we should do by promoting my professional interests, not yours. ” Do not be surprised when this happens.
You greatly overestimate the average market level of competence of your competitors, focusing on those people who directly surround you
Many of those who are currently working as a senior programmer cannot actually write
FizzBuzz . A curtain. The main conclusion: you are most likely
competent enough to work in a dream company. Let them hire the best of mere mortals, but, nevertheless, they hire mere mortals.
"Announcement. Summary. Interview. Job. ”Is the exception rather than the rule in the hiring process.
Most vacancies will never be announced publicly, just like the best candidates are never openly free (read about it
here ). Vacancy information is distributed at approximately the speed of a glass of beer, and is sometimes blurred by email correspondence. Someone wants to hire a programmer. He reports this to friends and business partners. Some of them know for sure someone suitable - a family member, a roommate from a university hostel who is familiar with the conference, a former colleague, etc. People represent each other, meetings happen, they reach an agreement on employment. And only after that the dances begin with a resume / personnel department / contract and other formalities.
This is especially true of the
most worthwhile vacancies. Being the first employee of a successful startup has a certain veil among IT specialists, and none of these vacancies were closed with a resume sent to the personnel department, partly because a startup of 2 people does not have enough subcutaneous fat to organize the personnel department. (Most likely, you should not strive to become the first employee of a startup, better become the last of the co-founders.) Want to work in Google? They have a formal process to push you a little bit ahead simply for being recommended by another Google employee. (In addition, your sympathetic Google employee has some fairly informal ways to influence this process. One option is to buy the company you work for. When you have a couple billion in your pocket, you have many interesting ways to solve problems.)
There are many reasons why hiring is private. One of them is that in response to a vacancy published, a huge number of unwanted resumes (especially in the current situation) come from outrageously inappropriate people. The other is that in some companies they do not know how to hire that, if no one personally knows the candidate from the employer, they can easily hire someone who cannot write FizzBuzz.
Networking is not just TCP packets.
Developing connections means a) meeting people who might be useful to you one day (and vice versa) and b) make a good impression on them.
There are many places where you can meet. For example, industry events such as conferences or open lectures at universities. User communities are another option. Keep in mind that these events attract different audiences, and adjust accordingly.
Always seek to help. This is a good thing, especially considering that people tend to remember well who helped them or accepted their help. If one day it happens that you yourself can not help a person, but you will know someone who is able to solve his question, introduce them to each other. If everything is done correctly, these two will be happy now and are arranged to help you in the future.
You can meet on the Internet, but something in our monkey-inherited brain attaches especially great importance to face-to-face interaction. I met people on the Internet and then transferred contact to the real world. A physical handshake is a big move in a relationship, even if you have already helped someone make more money while you are chatting online. Write a blog, participate in Hacker News forums or other visible resources in your industry, but don't forget to go to real meetings.
Universities are far from the real world
Your average score does not matter (with rare exceptions, as in one international advertising agency). It only affects whether your resume will be selected for an invitation to an interview. If you read what is written above, then you know that sending a resume is not the only way to get an interview, so do not waste too much time optimizing what works well enough (since with an average score of 3.96 you will be called like this as often as with 3.8), or something that you simply do not need (since you can find work by inviting the right people for coffee).
The specialty and the department where you studied does not matter. Most of the leaders in the industry do not know the difference between computer science and applied mathematics. It was the case, I was ready to burst into tears from the fact that a small puncture with studies put into question my opportunity to get a more prestigious specialty in a diploma. In the scientific community, these little things are important. In the real world, no.
Your teachers may know how the labor market works in the scientific field (in two words: it is wildly inefficient and tangled beyond all human understanding), but at the same time they have quite idealistic ideas about how this happens in the real world. For example, they can convince you to get additional specializations, because it a) seems like a good idea to them b) they always need slaves working for Rollton to do their research work. Remember that the market value of a specialist capable of conducting scientific work is $ 80 - $ 100 thousand per year.
Rollton on the money you can stay.The teacher, with whom I wrote a scientific work, offered me a place in the department, tuition fees and as much as $ 12,000 a year as a scholarship, if I subscribe to work with him for the next 4-6 years. This is an excellent offer in that, and only if you have just immigrated from a country with a lower level of wages and you need support in obtaining a visa.
If you really like the atmosphere at the university, then no problem, throw a backpack over your shoulder and you can enter the building of any university in the United States at any time. Buying a backpack is much cheaper than staying in science. In commercial companies, you will also be able to work with your head, but at the same time there will be less policy and you will be better paid. You can even publish in magazines, if you need it. (After an insane atmosphere of the scientific community allows you to, you can fairly begin to doubt whether a publication in a scientific journal is really something more significant than, for example, publishing a blog article read by smart people.)How much do programmers earn?
Wrong question. The right question is: what job offers do programmers usually agree on? Because salary is just one of the levers that can be used to attract you. And my answer to this question will not help you much: to all sorts.In general, large companies pay more (money, social package, etc.) than start-ups. Programmers who know their worth earn more than those who doubt themselves. Older programmers earn more than younger ones. People working in more cash industries earn more than those who work less cash. People who can negotiate, earn more than those who are not strong in this.We have a cultural taboo never talking about wages. But this is not absolute. In many cultures, it is quite acceptable to talk about money in a professional context. (If you were a middle-class Japanese, you would consider it appropriate to tell everyone about your income at the second meeting, from the guys on your football team to the chef who turns sushi to you. If you were the owner of the company, you would , were more evasive when talking about themselves, but their employees' salaries would be discussed in the same way that programmers discuss compilers — often enough and without a hint of embarrassment.) If I were a Marxist or a conspiracy theorist, I would assume that American culture was specially sharpened under the interests of employers and against the interests of employees. Before discussing salary with a potential employer,It is worth talking to someone who is already working in this company at a similar position and clarifying the plug. In the courtyard <% = Date.today.year%> ;, such a person can be easily found on the network (via LinkedIn, Facebook, Twitter or any other non-graph social network).In one form or another programmers usually offer social. package.
In the United States, it makes sense to worry about health insurance (usually the employer pays most of the cost) and pension savings, which are usually offered in the format “we will deposit in your retirement account an amount equal to the amount that you deposit there yourself, up to a maximum of x% of your annual salary. ” What you get as a result is easy to calculate: x% of annual salary. (This is extra money, so always use the employer's retirement plans to the maximum. Invest this money and forget about it for the next 40 years.)There are other goodies, such as free drinks, meals at the office, paid programming books, etc. This is largely social na. If I propose to buy you drinks, this first of all tells about the procedures in my company and how I will treat those who work for me. (Literally, “I am going to inspire inexperienced young programmers to work hard by putting them in a soda and save tens of thousands of dollars in pay while helping them to destroy their health.” I love soda.) See these social steps and react accordingly. For example, a company that is ready to pay for the training of its employees may be a worthwhile place to work, but do not settle for a significantly lower salary in exchange for the fact that you can easily go and buy yourself.How can I become a better negotiator?
About this you can write a whole separate article. But briefly, then:- Remember that you are selling a solution to business problems (increasing profits and reducing costs), and not your programming skill or intelligent face.
- Negotiate moderately aggressively and confidently as a professional. On the other side will be kept that way. If you strive to come to a mutually beneficial offer, do not settle for anything and everything.
- “How much did you earn in the previous place?” Understand how “tell me a reason to offer you less”. Answer accordingly.
- Always have a counter offer ready. Be prepared to bargain for something other than money. If they can't offer you a big salary, ask for a longer vacation.
- , . , , , . , , , , , , .
- . . « » («Getting to Yes»). , , , , , - .
Roll d100. (You are not one of these? Sorry, rand (100).)0 - 70: Your shares are worth nothing.71 - 94: Your shares are worth an amount approximately equal to the one you did not earn when you went to work in a startup, instead of a large company with a higher salary and social benefits. package.95 - 99: The value of your shares will significantly change your life. However, you will not feel rich, because many of those with whom you have worked closely for the last couple of years are richer than you by definition. But then your family will no longer criticize you for not going to work in $ TA_SAMAYA_KOMPANIYA as good $ NA_KOGO_VAM_PREDLAGAUT_RAVNYATSYA100: You worked for Google Killer and your condition is huge. Congratulations.An inquisitive reader will note that 100 will never be the result of calling d100 or rand (100).Why are you so skeptical about working for stocks?
Because you strongly overestimate the likelihood that the startup in which you work will shoot, and very much overestimate the piece of cake that you will get if this happens. Read about the order of payments to shareholders during the liquidation of the company on Hacker News or Venture Hacks, and then think about what people who write about it there, understand in matters of venture capital transactions no less than you in programming, and how you can conjure in code when there are several million dollars at stake.Should I start a career in a startup?
There is a high probability that you will work very hard for a couple of years, it is often painful to break off, eventually you will be out of work and you will look for a new startup. If you really want to work in a startup, work in a large company, save money, experience and connections and make your own a couple of years after graduation.When you work in a startup, the same startups as yourself do become your social circle. In a few years, most of these people will not be able to hire you. Working in a large company, you are among the people who work in large companies. Many of them in a few years will be able to offer you a job themselves or recommend you to someone.So work in a startup or not?
Work in a startup is certainly a career development path, but to a greater extent it is a way of life. This is somewhat reminiscent of work in the financial industry or in science. These are three very different approaches to life. Many people try to lure you there from their own interests. If you sincerely like to live as a startup, go ahead. If you like only some aspects, then remember that if you really want, then a lot can be arranged for yourself and so. For example, if you want to work with the newest technologies, and at the same time it is important for you to be home by half past five in order to have time to see the children, then you can work with the new technologies in a huge number of large companies.(Aside from jokes. If something generates profit, then companies will invest in it. Of course, in addition to this, they will also make a huge number of CRUD applications, but start-ups do not differ much from large companies, unless they are better able to describe tasty your CRUD application.) The first hour of work on a new social network is an attempt to make a CRUD application interesting, the rest of the time is the drama of divorcing a pair of heterosexual men.)Communication is your core professional skill.
Always remember that programmers are not hired to program, but to benefit the business. The basic quality that influences whether you get a job or not is your ability to convince others that you are useful . It is not necessary to be useful at all.Many of the best programmers that I have met are pathologically unable to keep up the conversation. As a result, other people a) do not want to work with them b) underestimate their contribution, because in order to know something about what they have done, you need to talk about it, and they simply do not implement this protocol. The reverse is also true: people on average think that I am one of the best programmers they have ever met, because I a) obviously can program b) I write and speak very, very well.(There was a time when I considered myself a programmer “slightly below average.” Since then, I realized that I rather distortedly understood the distribution of skills, that programming skills are not something to focus on, and that my modesty plays against me. Today, if you ask me how cool I am as a programmer, I’ll probably start telling you how I wrote a system that helped millions of children learn to read or which helped the company make millions. Where I am with my programming skills in r nobody cares Afik normal distribution, so why should I worry?)Communication is a skill. Exercise, and you will get better and better. One of the important skills of the second order is the ability to quickly, briefly and confidently talk about how you are useful, to someone who does not understand the subject area and who has no reason to be near you. If during this exercise technical terms appear in your speech (“reduced the run time of 99 percent of the queries by optimizing the indexes by 200 ms ...”), try again without them. You should be able to explain what you are doing, to an intelligent eight-year-old, your company's chief accountant, a programmer of another specialty, or see for yourself what kind of abstraction suits you best.You will have to deal with sales and other things that you hoped to avoid by becoming a programmer.
Corporate sales - this is when you come to the company and try to convince them to spend six or seven-digit amount on software, which either increases their profits, liyo will reduce costs. Any interview is a corporate sale. Your political and communication skills, as well as the ability to build relationships, are crucial, while your technical skills are secondary.When you try to convince colleagues to realize your ideas, you also sell. If doing business is your direct responsibility, then being able to convince people is your main professional skill. Spend time and hone it. This means being able to efficiently redistribute information in official letters, by e-mail, in one-on-one conversations, at meetings and with the help of PowerPoint-presentations (where appropriate). It means to be able to write a business case for a technological initiative. This means understanding that sometimes you have to sacrifice technology for the sake of achieving business goals, and rightly so.Your modesty is working against you.
Many programmers have problems with confidence. Many were brought up so much that boasting about their achievements was not encouraged. In American corporate culture, such modesty is not appreciated. A more correct tone for interviews and communication can be described as “confident discreet professionalism”.If you worked in a team and your team achieved success, do not say “this is not my merit, it was the work of the team”, unless you are in such a position that everyone understands that you are lying to seem modest. Try this: “I was happy to make my contribution by coordinating the team’s efforts in $ VASHA_SPETSIALNOST”. Train in front of the mirror until you can say that with a serious face. You may feel that you are exaggerating your contribution. Do not think about it. The one who declares that he coordinates the optimization of production, in reality being a packer of sandwiches, exaggerates his contribution. And you are a programmer. You do your magic things and people's lives get better. If you were responsible for the database on an important project, in which other people besides you were involved, then, damn, yes,you coordinated the efforts of the database team and it was crucial to the success of the project. Such rules of the game. If you are somehow uncomfortable with this, then you are like a baseball player who does not steal the base (base theft - baseball game situation - approx. translator): you are not highly moral, you just do not know how to play.All business decisions are made by the multicellular relatives of chimpanzees, rather than following the rules and algorithms.
People are people. Social dancing is an important skill. People often support the ideas of their friends, although other ideas may be better. People are often more disposed toward those with whom they ate at the same table. (There is such a book, “Never Eat Alone!” (“Never Eat Alone”). Perhaps it is worth reading, the name does not lie.) People prefer people like themselves. (This can be good, neutral, or different. Just accepting this fact is the first step in taking advantage of this state of affairs).Your appearance also at least matters, because people are ridiculousjust pick up the key with such simple tricks as clothing adequate to the circumstances, professional appearance, confident tone of voice, etc. Your costume will cost no less than a new monitor. You will rarely need it, but in these rare moments you will be very, very glad that you have it. Honestly, if I go to a state institution dressed in my everyday clothes, they talk to me like an underprivileged teenager, while when I wear a suit, they treat me like a director of a multinational company. In fact, I am a dysfunctional teenager who is a director of a multinational company, but I myself decide what to focus on when I have to communicate with bureaucrats.(The people I work with may start to object that I am being cunning, speaking of myself as the director of a multinational company, because my company is not very similar to what comes to mind to the majority when it comes to a “multinational company”. Well, excuse me, this is a simple conversational trick. If you think that people don’t like it when they get dusty, I’ll tell you that there are also people who hate people in suits in general, but this doesn’t undude the value of the costume. Just be adequate to the situation. Answers nye only technically - this, incidentally, the best type of response when the migration ministry threatened you with deportation.In the end, your happiness in life does not depend on career success.
Talk to older people or just trust the sociologists who claim family, faith, hobbies, etc. more important for happiness than money and career success. Draw conclusions.
Making a career is important, and right now it may seem like the most important thing in your life, but chances are that over time you will reconsider your views. Work to live, not vice versa.