There are different answers to why you chose a job as a programmer. Some people like the conversational logic of code, some people like the higher salary of programmers. Some chase fame, some chase money, some chase dreams, and some just want to do something practical. What’s your answer?
Writing in the front
I had dinner with two young students the other day, and all three of us chose programmers as our careers. Initial three people about, the back deviation began appearing in more than ten years development, now we enter into the professional important option, the choice of three people appeared larger deviation, fortunately everyone walk in on the road to fit, you need to write an article for programmers to do the job share a personal understanding.
Why did you become a programmer? Let me talk about myself first. I always believe that if you force yourself to do something you don’t like, it’s hard to be motivated to move forward in the future. I chose to become a programmer when I was about 16 or 17, when my parents bought me my first computer (a 586) and planted a seed in my heart. The IT industry is an industry with rapid knowledge update, and other industries are also developing and making progress, but the pace is not so fast. As a person who likes to try new things, I also have good psychological tolerance, so programmer seems to be a good choice. In addition, there are many opportunities in the IT industry, which is also suitable for ordinary children like me. Looking back at the present age, I have made no wrong choice.
Note that in today’s post, I’m just trying to pick out some interesting topics to explain my understanding of the problems programmers face in their job, not to share their career plans. This article is divided into two parts before and after entering the line, respectively.
Into the anterior
Before you get started, it’s all about whether you should choose programmer as your career as a student and how to get it. As a student, you really have to figure out if a job as a programmer is right for you, because it’s too personal to have too many hobbies. As we all know, many programmers will call themselves code farmers. At present, programmer is the easiest job to attack, and code farmers are also the easiest job to attack from the perspective of income. But at the same time, code farmers are also accustomed to self-mockery, so they describe themselves as extremely hard, always think that they should make more money, because they are too tired.
Before you start your career, as students, in addition to normal classes and internships, you can also improve your technical ability through some preparatory work of competitions. In addition, you generally need to enter high-tech companies through school recruitment. In view of these two points, I will talk about my own views respectively.
Understanding of ACM
With personal experience, make the students the problems of ACM, somewhat similar to the high school academic competition, competition need to study for more deep knowledge, have a lot of experience to solve the problem, but the fatal is in top high school contest players and top universities ACMer, all the rest of us to learn knowledge is not too system, especially in math.
Most people’s learning of mathematics is only limited to data structure/discrete mathematics. They may have learned a little bit of number theory and combinatorial mathematics because ACM has to have a number topic, but they will not go into the details. As a result, the mathematical background of ACMer didn’t because of the training to solve the problem of ACM improve much, understanding of algorithm may even be limited to paraphrase algorithm template, is to engage in the study of algorithm for the future, whether in the company for a task to do optimization, or in research papers, there are the basis of the deadly short board.
In addition to the algorithm, the indirect benefit brought by ACM is to improve programming ability, but it is obvious that the main way to improve programming ability is programming, as for what kind of code to write, what language code, the difference is not very big. However, there is no denying that ACM is indeed an opportunity to exercise the ability to write code.
To be fair, ACM is still the fairest and most athletic competition in my college. In my opinion, ACM, a competition with long preparation time, short competition time and objective evaluation system, should be the most capable and persuasive. Therefore, if you want to participate in the competition, ACM should be the first choice for computer majors, but it is not to say that ACM is valuable, but whether ACM is the most valuable thing, should not be, because ACM itself is a game, it can make people obsessed, can let people form a circle that does not allow others to say THAT ACM is bad. In any case, it is certain that the ACM experience makes students more likely to be selected by companies because of the higher “average” level, or at least the more likely to be reliable, especially the actual ability of coding, which is not reflected on the resume.
Attend school recruit
In recent years, I have participated in campus recruitment organized by my company. Every time I go there, I meet a large number of students. I like to communicate with them and observe their words and deeds. These topics include basic programming concepts, algorithmic programming questions, operating systems, database programming, open source code reading, garbage collection mechanism, system architecture description, internship review, setbacks encountered in life, thoughts on working atmosphere, future career development direction, etc.
In fact, most of these questions are open-ended, some have no fixed answers, and some are even completely open-ended, requiring students to ask questions. In this group of questions, only the basic concept of programming may have a fixed standard answer, algorithm programming, database programming have a variety of answers, but each answer is different efficiency, these are semi-open technical questions. Operating system, open source code reading, garbage collection mechanism, system architecture description, these questions belong to the title of their own, why say so? Because I’m going to drill down a little bit and ask a little bit more based on what you know, so this is a completely open-ended technical question and answer. Internship experience review, encountered setbacks in the process of life, for the idea of working environment and future career development direction setting, these four issues in non-technical areas completely open question and answer, the reason why I put forward these problems, is want to be able to more close to the students’ real life and inner thoughts, understand the students’ life experience, through, and the surrounding environment, This can determine whether to hire students and how best to use their abilities.
Let me talk about my school recruitment experience. Many years ago, I went to an interview for a German company, general manager is a Chinese, Dr To 50 years old, he let me talk to know the situation of the company situation, in fact, I have done their homework, put them on the website of English back out, as I was back, he stared, adjusted her glasses, and corrected for the founder of the German name pronunciation errors, Then he said to me, “If you have any requests, you can ask me now.”
In addition to the actual technical basic ability, I think a student needs to have a pattern of life, life is not limited to immediate interests, not too practical, not only consider themselves. I recommend you to be campus ambassadors of large companies. You must do your best to do this job and actively cooperate with HR. In fact, you are also being observed in the process.
The met three distinct ambassador, very seriously, the first two days busy busy, the venue layout, participation announcement, phone contact students, guide students to interview process, etc., also help me find a few good friends, too busy to have no time to attend from, although he is not very good at the weakness of communication, but after I finish the interview at 9 o ‘clock in the evening, I set aside interview time for him alone, and invited him to join HR together. He kept bowing gratefully. If a person can be grateful to those who help him, he will not be bad. Second, on the day of the interview he can sit down to the interview, technology in general, his introduction is a campus ambassador, while I was hesitate to HR little sister and I talked him, “this man is a poor sense of responsibility, please help greeting his students, he didn’t speak, tube themselves to play mobile phone, to have a meal, please contact no to the students call him, he is a face of despise, “Oh, I see, if he doesn’t like me, we don’t have to give him a chance.” He just missed out on a great company. Third, on the day of our interview, she arranged a one-day interview for herself, showed up and then disappeared, and came back to interview after her work was finished. Of course, I ignored her directly.
The understanding of deep thinking after entering the profession
I think technical ability can be developed, and probably can be developed quickly, as long as the person has the ability to think deeply, because the knowledge system must be built on thinking, not spoon-feeding.
It has been a habit over the years, or has been forced to be, of quietly reflecting on the day’s experiences in the dead of night. During the day, most of the time was spent in a great hurry, and there was no time to think. Down the night, everything is quiet, looking out of the window flashing street lamps, you can quietly think about yourself and the world, thinking about all kinds of big or small things that happen in their work, find out the meaningful things, do a little ideological enjoyment. This kind of thinking is beneficial to people.
If one does too many of his professional activities, if not adjusted, he will become monotonous. Thinking is also slowly oriented, there is no open way of thinking, so in the tense brain and body activities, to find new space for thinking. As a software engineer, I spend most of my time in this field, and I also find that almost all the details of life can be found in this field. In addition, programmers also need to think about technology from the aspects of product and operation, so as to constantly broaden their thinking way. The reason why I am willing to “precipitate” these ideas is not because they have special value, but because they are formed in the quiet outside and quiet inner state, quiet and far, for programmers with technical vision, this is a realm worth pursuing.
Understanding of working hours
Time is very valuable, this kind of thing a lot of time must be finished school began to work to understand. One reason is that for most students, after work, they will have less free time, so they will not do things that are less enjoyable in their spare time. This is because your time can be exchanged for income, and the income can be used to exchange more enjoyable leisure time, so you will have more choices. When I was in school, I had so much free time that I could schedule writing jokes and exchanging insults with people online.
I in an article describing self management way accidentally out of working time every day (here say, work time, in fact is also learning time, for programmers, all working time is can be used to study, you will not find method), 10-12 hours, caused a wave of reader comments, I am sure the answer, That’s true. As a programmer, I think you should stick to 60-65 hours a week, because the technology in our industry is changing so fast that all the best people I know have made it through this. No one can learn in a short period of time what someone else has taken a long time to learn. Of course, it is best to work within 75-80 hours a week, after all, a person needs to ensure that sleep, also need some family time, personal entertainment time.
About the choice of company
We grew up three kids, and we went our separate ways after graduation. One has been working as a main programmer in a small company, but he could not bear the management style of a large company, and finally chose to start his own business and open a studio. A military industry into the research institute, work for 15 years, has been used to a fixed pace of development mode, although the income can not be compared with outside enterprises, but also quite comfortable, ready to work until retirement. He is also used to working according to the R&D process and technology management methodology. Although he needs to face the fierce internal and external competition environment, technological change and product-driven pressure every day, he is also used to the pressure and continues his own path. We all have our own strengths and weaknesses. Find our own and try to enlarge it.
If you want to become an expert coder in one or more areas, you should choose a large company with skills and business. At the technical level, we should not only have technical accumulation, but also have high-level colleagues. At the business level, make the business challenging enough for the infrastructure. In fact, there are many more companies satisfying the latter than the former. After all, technology is not decisive for what most Internet companies do, and it is likely to be wasted to reserve too much advanced technology in advance. On the other hand, if a company has accumulated skills and high-level employees, once the business fails to develop, high-level employees will definitely leave, and eventually only those technical personnel with relatively good skills will be left. In the long run, technology will lag behind sooner or later. These reasons lead to the situation that many companies in the industry have fast business development but cannot keep up with the technology. It is also challenging to work in such companies, but the work may not be systematic, and the ability of colleagues may not be guaranteed.
How to see technical personnel discourse power is not high
I had a chat with a friend who used to work in distributed databases and recently moved to a company that makes driverless cars to get his perspective. Compared with software infrastructure, the biggest difference between unmanned vehicles and software infrastructure is that the technical personnel in software infrastructure, especially the programmers in database development, often solve the problem of technical threshold. We think that all the problems of database can be reduced to the problem of “availability” in essence. For the business, it is “availability” that can withstand the pressure of not losing data and not time-out, and all kinds of functions are supported. As for “availability” even in the case of high concurrency, it is “high availability”. Once the technical problem is transformed into the “availability” problem, the technology will become a threshold, if not reached, the business will be affected, after reaching the business is good or bad, in fact, the relationship with technology is not so much. This is also the reason why the voice of technical personnel in many companies is not high.
Why do you do difficult technology
For example, large companies like BAT, Huawei and Xiaomi have relatively high threshold requirements for software infrastructure, so this job is relatively technical, especially more technical than most of the work to achieve business logic and project manager needs. In my friend’s case, driverless cars have greater appeal because they’re harder, and we’re not sure when we’ll actually build them. On the surface, it’s also a threshold — a “usable” driverless technology, but it’s challenging because it’s hard enough to constantly improve the technology and do things that haven’t been done on a global scale yet. Some of the problems you’re dealing with with databases may have been solved by other companies, not by “humans.” A lot of times you need to talk to other companies, learn from each other, or see what a leader like Google is doing.
As the field of unmanned cars is very new and not mature, there is no problem of who follows who, or even strictly speaking, there is no pilot. To a certain extent, their own milestone may be the industry’s milestone. Driverless cars are a necessity. Whoever makes them will make a lot of money. In contrast, there are startups that address a need that doesn’t exist, and there are startups that address a need that does exist but don’t make much money. Unmanned vehicle is the existing demand, the demand of large market size, the demand of high technology content. Driverless cars aren’t new this year, but there aren’t too many people in the business. This time to do, although not what the industry pioneer, but also experienced the industry’s relatively early development. Of course, unmanned car is also a big data industry in nature, and it will inevitably involve data storage, calculation and so on, which is even better.
In addition, the progress of the world, especially the progress of science and technology, must be driven by smart people. Where smart people gather, progress will be fast. During the cold War, there was arms competition and space competition, and the government invested money on a large scale. Naturally, smart people concentrated and developed rapidly. After the end of the Cold War, government spending went down, and there was less progress in the field, because smart people moved to Wall Street and then silicon Valley. It’s always been my opinion that smart people and beautiful people tend to be where there’s money and resources. Whichever company has more smart people or beautiful women, it means that the company pays well and people think the company has a future. Because being smart and pretty is a plus in an interview, they will get a better Offer, and the company that can attract them is the company that has a better Offer.
About the ascent of technicians
Why say technical personnel rise channel limitation is relatively big? I once heard a general manager of Mobile say that all senior managers need a grip, which is the management base point, and he will not let go of this base point, such as operations, products, business logic, or technology. Pm-born managers will continue to consider products, and operational managers will still consider operations, but technical managers do not need to consider technology, especially technical details, when they reach a certain level. Such a person for a long time can not do back code farming, may not even a line of technical managers can not do. A senior coder in a big company can go out and be an architect at the same level if he doesn’t write code and at least knows where the latest technology is going and actually designs and uses it and talks to people. It’s easy for a small CTO to neither write code nor understand the big picture, go out and find someone to take over as CTO and be perceived as incompetent.
About the importance of keeping up with the latest technology
Be sure to follow up on the latest developments in technology. To some extent, this is similar to investing in stocks. For example, when there was just Android ios a few years ago, a lot of people were still developing on Symbian, but they switched to Android and ios at the first time with good vision, because they occupied the first hole in the most scarce time to seize the first opportunity, as the truth of early graduation, people who may be two years later than you have taken the lead everywhere, the gap is getting bigger and bigger. Of course, it’s possible to lose a bet, such as Windows programming.
Every revolution in the industry will make some companies fall and others rise, and so will the code farmers. Every technological change will make some code farmers fall and others rise. Previous work experience isn’t worth nothing when it comes to technology, but it is. In addition, because of the continuous replacement of technology, learning faster than the simple young advantage, if the technology is completely stagnant, dry five years or so technology will no longer grow, then five years after graduation when the grassroots code farmers unemployment risk is growing, this is also a communications factory is rumored the so-called “35 years old layoffs” realistic, I heard that 35 years old is mainly aimed at these grass-roots code farmers, 45 years old is aimed at grass-roots code farmers and technical front-line managers. By constantly looking forward to (or creating) new technologies and keeping learning skills as good as those of young people, the risk of unemployment is reduced.
As to do management, but also a way out, because it is difficult to have a ceiling on the experience of management, there may be a big part of 10 years experience in management is indeed a after five years of accumulation, rather than writing code, but also want to consider to do divorces management and technology, to ensure that the company not to you, is your management experience can be used in other company. In fact, as a technical manager, you still need to master the first technology and apply it to your own business. For example, you said that you know the architecture design of big data and high concurrent access, but the TPS of your previous company only has hundreds. Do you think you have practiced your technology? It might not be the way out for tech-savvy executives of Internet companies to emphasize how many people they are in charge of.
Write in the last
As a programmer, you need to maintain three feelings, hunger, fatigue and loneliness, the purpose of learning is because you want to learn, the process of learning is very monotonous, often need to search for information on the network alone, alone forward, learning for a long time will be very tired. Technical people are easy to look up at the stars, but before looking up at the stars, they need to be down-to-earth, master basic technology, have strong practical ability, three positive views, and have strong ability to deal with people. These four points are the foundation of all sustainable development. Just to the three of us on the road, but also to commemorate our youth, as we enter the middle of our careers, we still have a lot to carry forward.