There is a course that I would add to the curriculum for every engineering field, and he was not about compilers or the complexity of algorithms. This is the "Introduction to the reality of the industry," because this is not mentioned, and it leads to useless bummer. This article claims to be README.txt for a young engineer in building a career. Its purpose - to make you happier, filling gaps in education about how the real world works. I do not call to follow written as a detailed guide, but I hope that this information will help you to more valuable than anything that you told it to the university.
90% of the work for the programmer - it's enterprise software h4> Basic economics: the price of anything you want (including you) - is a function of supply and demand. Let's first look at the demand. Most software is not sold in boxes and not available for download on the Internet or App Store. Most of the software - it's dreary highly specialized enterprise applications that support the global economy from all imaginable directions. These applications calculate costs, optimize shipping costs, help prepare accounting reports, designing new interfaces, to calculate the price of insurance, flag suspicious orders for manual checking, etc. ON solves business problems em>.
Software solves business problems despite its heartbreaking boredom i> and lack of technological complexity i>. For example, imagine an electronic report form komandirovochyh costs. For a company the size of 2000 people, it can save about 5,000 man-hours per year in comparison with the manual paper handling that with the average cost of an hour of work at $ 50 would save $ 250, 000. The company is still that it is the most primitive in the world CRUD-application. The only thing that matters is that it reduces the costs or generate profits.
There are companies that create the software that is used by real people, and this description misses almost everything that comes to your mind when you think of the software. It is very unlikely that you will be working in a company em>, unless you are doing to this targeted steps. And even if you still find yourself in such a company, most programmers still do not work on the user's part of the application.
programmers are hired to ensure that they benefit the company and not to ensure that they have programmed h4> Periodically company taking something out of the irrational or political reasons (see below), but most of their actions are aimed at increasing profit or cost reduction. In a well-organized company listed people who do just that. (Which may, but not necessarily imply actual work performed.) Anyone who has decided to hire one or more programmers decided to do so, not because he likes the geeks in the office, but because these geeks will allow to complete the project (or projects) that will increase profits or reduce costs. Creating beautiful software is not the goal, as well as the solution of complex problems of programming or writing code-free. Increase profits or reduce costs - your only problem.
Peter Drucker - perhaps you have not heard of him, but he is well respected among the people who sign the financial documents - proposed to determine the center of the profit (profit center) and cost center (cost center). Profit centers - is that part of an organization that directly earn their bread and butter: partners in law firms, salespeople in companies, investors on Wall Street, etc. Cost centers - is, in fact, all the rest. < You need to be a part of the profit center , because it will bring you more money, status, and more opportunities in everything you could want to do. It is not difficult: the explanatory schoolboy easily determine the center of the company's profits from its description in one paragraph long. If you want to work in this company, aim it there. If you can not, then either a) go to work somewhere else, or b) organizes itself translation after will be hired.
Programmers - especially the expensive cost centers, which causes itching in the optimization of any of the graduate MBA. This results in such wonderful initiatives like outsourcing, which can be understood as "let's replace the very expensive cost centers that are engaged in some kind of magic, the essence of which we like as not important, but it does not, the cheaper the cost centers in the country with more low cost of labor. " (Digression: you can absolutely safely ignore outsourcing as a threat to his career, if you read this article till the end.) No one will ever give to outsourcing profit centers. Attempting to do so will give birth to many managerial jokes. It's as if you were offered a version control system to replace the files on the diskettes.
Stop calling yourself a programmer h4> "Programmer" sounds like "abnormally expensive slave writing incomprehensible nonsense in another incomprehensible nonsense." If you call yourself a programmer, you know that someone is already em> is working to fire you. Heard of Salesforce, Software as Service company? Their slogan "No software" ("No Software") literally tells future customers, "If you have used Salesforce, you could lay off half the programmers working on your internal software, and put the difference in his pocket." (This, by the way There is nothing to worry about. You are in the industry, which robs people of work. If you think that this is wrong, go back to university and train anything unnecessary.)
Instead, talk about themselves in the context of their achievements to increase profits and reduce costs for other employers. If you have not yet had an opportunity for something to achieve this, talking about yourself so that it is clear that you are able to increase profits and reduce costs and talk about their ideas on this subject.
There mnozhectsvo highly paid professionals who work with the code, but do not call themselves programmers. Quant ( from "quantitative analyst" - analysts in Algorithmization trade on the exchange, risk modeling, etc. I> - approx. Interpreter) from Wall Street - the most striking example: they use computers and the knowledge mathematics to make decisions more effectively than a group of people without a Bolster, and as a result of their companies earn millions of dollars. Bonuses successful Quant in a good year exceed the earnings of many talented programmers for decades.
Similarly, even if Google seems appropriate to you now, that there too, programmers, and there are people whose work has led to an increase in CTR AdWords-ads at 1%. (The latter are worth millions of dollars, clear hint?) I recently stumbled upon a website for a Man, whose professional biography was written: "Generates code billing system, through which 97% of the profits Google". Now he is engaged in angel investment (it's a beautiful way to say that he is very rich).
You are not limited to their technology stack h4> I recently asked on Twitter, that novice programmers would want to know about how to build a career. Many wondered what programming language or technology stack study. My answer: it does not matter.
Java-programmers earn more than .NET-programmer? Anyone who considers himself a programmer or a Java-.NET-programmer already in flight, because a) they are programmers (and you, as described above, no) b) they close for yourself the opportunity to be hired at most positions. In the real world, learning the basics of a new language takes a couple of weeks, and 6-12 months, no one would guess that you're not doing it his whole career. I did Enterprise Java development in March 2010 ( article was written in October 2011 i> - approx. Interpreter). Believe me, everything is still. If a company developing on Python, will search geek, able to earn them money, the fact that I had never written a single line of code in Python will not play against me.
Talented programmers are rare, much rarer than they are needed, so now the most favorable conditions for the competitors in almost all sectors. In Matasano written in Ruby. If you do not know Ruby, but you are a good specialist, you still will hire. (A good expert has experience in - repeat after me - increasing profits or reducing costs.) In FogCreek use the stack Microsoft. I can not write ASP.NET without errors, but they still hire me.
There are companies with a wry put the recruitment process, if your resume is no desired keyword, you do not even invited for an interview. In such companies, it is better not to work, but if you really want, then spend a few evenings and weekends, you can add to your resume right words. But even better influence the choice of technology to its current place of work so that it promotes your career. Want to learn Ruby, .NET-working company? Make a one-time project in Ruby. And, oh, na, you become a professional Ruby-programmer, you have written in Ruby, and you pay for it. (Funny? I cranked it in a company engaged in Java. One-time project in Ruby earned us $ 30, 000. My boss was happy to be expected and never interested on what the project was made em>.)
colleagues and superiors are not your friend h4> You'll spend with colleagues a lot of time. Sooner or later some of them you can become friends, but in the general case for three years you have to change jobs and, despite the warm relations, never invite any of them to visit em>. And they will treat you the same way. Well you should treat all people with whom you brings life - it's just right, and in addition will help the development of ties - but not under the illusion that everything around your friends.
For example, when a job you chat with a pleasant 28-year-old guy who seems you just improved copy yourself from the future, is nowhere leads He does not see you buddy, you are for him no more than the resources necessary for the company, which he seeks to buy at the lowest price. General Discussion about the World of Warcraft - it is nothing more than establishing contact, and he probably (hopefully decent) will try to do something, then your friends will never allow, for example, you lose uboltat few thousand a year from your paycheck, or smanipulirovat you that you were late and work longer when you could spend that time with my real friends. Also, you will have other colleagues who are courteous and decent, will offer things that are contrary to your interests, from "I APPROPRIATE your contribution to the project" (maybe it will be worded slightly shorter) to "we should do that promotes my professional interests, not yours. " Do not be surprised when it happens.
You greatly overestimate the market average level of competence of your competitors, focusing on the people who surround you directly h4> Many of those who now works as a senior programmer, in fact, can not write FizzBuzz . Curtain. The main conclusion: you most likely, competent enough em> in order to work in the company of dreams. Let them hire the best of mortals, but, nevertheless, they hire mere mortals.
"ad. Summary. Interview. Work. "- Exception rather than the rule in the hiring process h4> On most jobs will never be publicly announced, in the same way as the best candidates are never openly available (see this here ). Information about vacancies distributed at approximately glasses of beer, and sometimes smeared email-correspondence. Someone wants to hire a programmer. He reports this to friends and business partners. One of them knows someone suitable - a family member, a roommate from a university hostel, familiar with the conference, a former colleague, etc. People are to each other, the case of meetings, they reach an agreement in principle on the hiring. And only after that start dancing with resume / Personnel / contract and other formalities.
This is particularly true with respect to the most challenges em> jobs. Be the first employee of a successful startup has some fleur among IT people, and none of these positions had been closed by a summary sent to the personnel department, partly because the startup of 2 people until enough fat to organize the personnel department. (Most likely, you should not seek to become the first employee of a startup, better become the last of the co-founders.) Want to work at Google? They have a formal process to slightly push you forward just because you recommend another employee Google. (Also, you sympathizing Google employee there is still quite informal ways to influence this process. One of the options - buy a company in which you work. When you have a couple billion in the pocket, you have a lot of interesting ways to solve problems.)
There are many reasons to why hiring happens privately. One of them - is that in response to the published vacancy comes a huge amount of unsolicited resumes (especially in the current conjuncture) from blatantly wrong people. Others - that some companies are not able to hire so that if no one from the employer not personally familiar with the candidate, they can easily recruit someone who is unable to write FizzBuzz.
Networking - is not only TCP packets h4> Develop communication means a) to meet people who might one day be useful to you (and vice versa) and b) to make a good impression.
There are many places where you can meet. For example, industry events, such as conferences and public lectures at universities. User communities (user groups) - is another option. Keep in mind that these events attract different audiences, and adjusts sootvetvenno.
Always eager to help. This is the right thing, especially given that people tend to remember the good, who helped them or accept their help. If one day it happens that you are not able to help the person, but will know someone who is able to solve his problem, introduce them to each other. If done correctly, these two are happy now and positioned to help you in the future.
You can get acquainted and on the Internet, but something in our legacy from the monkey brain attaches particularly great znachenie face to face interaction. I am familiar with the people on the internet and then translated into the real world contact. Physical handshake - is a big progress in the relationship, even if at the time of communication in the network with their advice you've helped someone earn more. Write a blog, participate in forums on Hacker News or on other significant resources in your industry, but do not forget to go to the actual meeting.
Universities are far from the real world h4> Your average score does not matter (with a few exceptions, as in one international advertising agency). It only affects you, whether your resume is selected for the invitation to the interview. If you read what is written above, then you know that sending out resumes - not the only way to get to the interview, so do not waste too much time optimizing something that works so well enough (as with the average score at 3.96 so you will call as often as with 3.8), or that you simply do not need (because you know how to find work, inviting the right people at the coffee).
Occupation and chair on which you learned of no importance. 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 cry from what a small puncture with study questioned my opportunity to get more prestigious specialty diploma. In the scientific community, these little things are important. In the real world - no.
Your teachers may know how the labor market in the scientific field (in a nutshell: it is wildly inefficient and confusing beyond all human understanding), but are rather idealistic view of how this happens in the real world. For example, they may try to convince you to get additional specialization, because it a) it seems a good idea b) they always need slaves working for Rollton, to conduct their research. Remember that the market value of a specialist who can conduct scientific work $ 80 - $ 100 thousand per year. Rollton the money can uest. Em>
The teacher, with whom I wrote a scientific work offered me a place in the department, and as much tuition $ 12, 000 a year as a scholarship if I sign up to work with him the next 4-6 years.