Recently, I helped a friend of my friend to make a career plan. Combined with some questions and answers on weibo before, I feel that many fresh graduates have a lot of misunderstandings about job hunting, so let me share my experience here. Although the title of this article refers to the north, but only for the industry, the technology of the industry is not familiar with the students of the operation manual. Everyone technical bull may feel shallow, please forgive me.

This article is a bit longer and covers the following issues.

  • It’s never too early to plan your career
  • Be sure to cherish the window of opportunity for school enrollment
  • Job-hunting strategies for fresh graduates
  • Selection of technical positions
  • Language and technology stack selection
  • Optimization of technology stack
  • Resume writing

Let’s talk about it bit by bit.

The author of this article @Easy (weibo.com/easy), the speaker of quanzhanke.com, has years of experience in developing large-scale websites and cloud platforms. He has run an auction platform for programmers with hundreds of thousands of users and found jobs for thousands of programmers. Please keep the above author information and link for reprinting, thank you.

Content Update Notification

You can scan the code on wechat to subscribe to this update.

It’s never too early to plan your career

A career is a very special thing. It is special in two ways. One is “non-repeatable” and the other is “validation time”. Talking to an old friend earlier, he lamented that, looking back, his whole career had turned upside down. By the time I realize that now, it will be too late. Because the average career experience can be as short as one to two years or as long as three to five years. Two companies, ten years would have gone by in a flash. If you haven’t grown in the past decade and have the misfortune to work for a particular company, your thirties could be a time of retirement.

I generally disdain to share with others what life experience, after all, some pit do not jump into their own is not remembered. But professional pits are different, and by the time you find yourself in a pit, it may be too late. So I spent a lot of time working on it. Interested students can read my “programmer job-hopping guide”, specifically about career planning. (in my personal website can read free of sugar balloon 🎈 | programmers job-hopping visitors)

Be sure to cherish the window of opportunity for school enrollment

My college Chinese teacher once warned us that life is like the four seasons, spring should sow, you go to sow, autumn should harvest, you go to harvest, this is the most effortless. You have to come over, is not not good, but will be very tired, will pay more energy and price.

School recruitment is similar. It is a green channel specially prepared by society and enterprises for students who have never entered the workplace. In this channel, we treat the candidate as a blank SLATE, with no experience, no industry knowledge, as long as the enthusiasm for the job and a moderately smart mind, basically qualified. Companies will prepare training for these students and allow enough time to adapt, and some will even arrange a one-to-one senior staff to lead them.

But once you miss it, all bets are off, because you enter the red sea of social moves. Here, everyone who has graduated becomes your competition, not only from people who have worked as long as you, but also from colleagues who have worked longer and with more experience. It is even common for two junior positions to be eliminated due to the recruitment of one mid-level candidate.

So school recruitment is very important, do not miss it.

Job-hunting strategies for fresh graduates

Since school admissions are so important, how can we take advantage of them? Remember two words: “pick the best” and “beat your classmates.”

merit

“I can do this and I can do that. Why shouldn’t they hire me?” is a common question on Weibo. This is a classic sign of not understanding the nature of recruitment. To be clear, job hunting is not the “Hui Kao” but the “college entrance examination”. It is not the factory qualification check of any product, but another competition for high-quality resources in China, a resource-scarce country.

Those well-known enterprises with high salaries and good development space (hereafter referred to as big factories) recruit a certain number of people every year. At the extreme, if all the candidates were lowered by 20% now, they would still have to hire, or they wouldn’t be able to grow (technically there would be some wiggle room, but not for long).

Therefore, especially in school admissions, “absolute ability” is not important, “relative ability” is the most important.

Beat the classmate

I’m going to tell you a very old fairy tale, if you’ve heard of it, please pretend you haven’t. Two people meet a bear in the forest 🐻. Kuma sees them and chases after them. One student turned to run, another asked him, “We can’t run faster than the bear, so what’s the use of running?” The student replied, “I just have to beat you.”

Well, it’s the same thing. It is not to say that your ability to have how much, in fact, again cattle of the level of fresh students into the industry, are not stream, because a lot of level is by massive user pressure out, you have not encountered these scenes, how can you know how to deal with.

So fresh graduates usually have little chance of winning compared to those social recruitment candidates, but fortunately, we are in a different race. It’s not easy to beat someone who has worked in a core position in a big factory for a year or two, but it’s a lot easier to beat someone like you who only learned a lot of basic theory in college and didn’t even study theory well enough to eat chicken in the dorm every day.

Even so, it is difficult to outperform some of the brightest and most able students. But the race is unfair because it does not stipulate that everyone must start running at the same time. Lu Xun said well, clumsy birds fly first. (Lu Xun: I never said that) If we had realized this earlier and spent more time preparing, the probability of winning would have been multiplied.

I am a very good example myself. Strictly speaking, my ability was a little bit mediocre, although I would never admit it at the time. When I realized this in the second half of my freshman year, I taught myself PHP, wrote a bunch of open source projects that no one else used during my sophomore year, and got a part-time job with a company in the first half of my junior year that already paid for my tuition. When I started to look for an internship in the second half of my junior year, my resume was already better than my classmates and students from small PK first-class universities.

So you think school enrollment is ability, but in fact, for students with moderate executive ability, school enrollment is cognition. The sooner one realizes what it is, the easier it is to win the game. In that sense, you may even have won half the battle by reading this far. So be sure to share this article with your close friends, and don’t let anyone you don’t like know about it.

Selection of technical positions

The general distribution of technical posts is as follows:

Now almost all software has been Internet, if not Internet, it will be Internet, so we are not just talking about the software development industry.

The development work

The first is development, which includes front-end development, back-end development and mobile development.

Front-end development and back-end development, mainly in THE B/S structure. The B/S architecture is browser-server architecture. And the front end refers to the browser end; The backend refers to the server side.

The front end

What the front end mainly does is to show the data read from the server side to the user, and then interact with the user through various UI controls, and then send the new data back to the server side. Specific technologies include HTML, CSS, JavaScript, and possibly components that run in a browser, such as Flash or WebGL.

The back-end

The back end is mainly to send data to the front end, there are generally two ways, used more is that the data in the server side first render, and then send the output results to the front end; Now the more common way is to send pure data to the front end through Json or XML formats, and render it through JS in the browser.

So in the past, many backend engineers often know some front-end knowledge. For example, MANY PHP programmers I know know not only MySQL and Apache, but also HTML, CSS, JS and PS. This kind of engineer who knows both the front and back end is also called the full stack engineer.

The backend can be developed in a variety of languages, including Java and PHP, as well as Python, Ruby and Go, which are relatively minor in China. In fact, C can also be written on the back end, but few companies today write directly on it.

And then with NodeJS, JavaScript went to the back end, so a lot of front-end engineers had back-end development capabilities, and they made up a lot of the full stack engineers.

The client

As opposed to the B/S structure, there’s also the C/S structure, which is client-server. C/S structure does not use a browser to present data and interaction, but uses a client, generally Mac/Win/Linux three platforms.

The mobile terminal

After the mobile phone tide rises, whether B/S structure or C/S structure, all mobile. B/S structure corresponds to mobile web pages adapted to mobile browsers, as well as H5 pages embedded in wechat and Weibo. C/S structure is APP, generally covering iOS and Android two mainstream platforms.

In addition to these standard development positions, there are new or relatively niche development directions, such as AI/algorithm engineers, hardware development engineers who make smart hardware, and enterprise software engineers who make solutions for enterprises.

Other jobs

Software is not finished. We need “test engineers” to test it before it goes live or is released. Once online, an “o&M engineer” is needed to manage and optimize the server cluster. Now that servers are virtualized and containerized, there is a branch of ops engineers that understands development called DevOps.

Middle and senior positions

Whether it is development post or test, operation and maintenance post, there are corresponding middle and senior positions. Developers are generally technical managers; Operations are generally architects; The test is usually the test director. Technical director and CTO are the next level up.

For the above job classification, we refer to the classification of recruitment websites, which may not be accurate. There may be many positions not covered, and many companies will also have their own unique job Settings.

Selection of position

If you have a choice, it is not recommended to start with o&M or testing. There are two reasons: First, because they are important, but not central to software development. Second, it’s very easy to move from development to either of these positions, and very hard to move from there.

When I was writing “The Little White Book of Programmer Careers” for The Nuggets, I did an email interview with a number of programmers at different stages, in different positions, and in different cities. You can read it and understand it. What is the daily routine of programmers? (Although this booklet is for a fee, the interview chapter is free to read. You don’t need to buy it.)

Language and technology stack selection

Language situation

We generally say, though, out of some political correctness, that language doesn’t matter. But is language really not important? Not so. Each language has its own strengths and weaknesses and scope of application.

Like Japanese and English, one is for watching animation and playing games, the other is for reading materials and writing code. Here is a brief introduction of each language in my eyes.

C/C + + :

A system language for writing underlying operating systems, high-performance middleware, and embedded development.

Python: Good choice for ARTIFICIAL intelligence

For example, if you want to work in artificial intelligence, Python is a great language to work with. Because it is used in various universities and research institutions is very much, there are mature easy to use mathematical library, suitable for scientific calculation. There are plenty of Python frameworks for deep learning, and you can quickly find Python code on GitHub for the latest Paper.

JavaScript: front end and full end

If you want to do the front end, there’s really no alternative to JavaScript right now, because it runs in the browser, and that’s it. There may be other options in two years when WASM matures, but right now, there really isn’t.

On the other hand, if you’ve learned JavaScript and want to build on it, Node.js is a great option. Because it uses a JavaScript interpreter, you can just write in JavaScript. In terms of learning cost, it is very low, you can enter the server side with very low investment.

PHP: still the preferred site

If you’re going to build a website, PHP is the first choice. On the one hand, there is a huge amount of code available. More than 80% of the world’s websites use PHP. On the other hand, PHP7 has improved a lot in performance and is very good for writing apis.

The other thing is that there are so many teams using PHP right now that it’s easy to find a job even in second and third-tier cities, and it’s also relatively easy to build a team.

Java: Big data analytics

If you’re going to do big data analysis, you probably can’t do it without Java. The open-source implementations of Google Big Table, starting with Hadoop, are all In Java, as is the Elastic Stack for searching massive data.

Go: Cloud computing and container management

If you want to do cloud computing now, Go is a great choice.

Because it is designed for large scale computing, concurrency management and performance are very good. And there are a lot of cloud computing software, it is written by Go, if you have to modify it, adjust the implementation logic inside, not Go may be very troublesome. Of course, in theory, you could do it with containers and microservices, but it’s more of a hassle than just changing the code.

In addition, the hot platform of blockchain is realized by the official (most potential) of Taifang, which is also made by Go. The money is big.

Choice of language

Interest in priority

When choosing a language, especially your first language, I always recommend the principle of interest first. Because for beginners, when you encounter difficulties to stick to it, interest will help you. In order to change xianjian in middle school, I even tried to learn an introduction to assembly 🤣

Second market

But in fact, for the vast majority of fresh graduates, there is no particular preference for various languages. And “getting a job” is very important. So instead of blindly choosing a language to study, take a look at how each language is performing in the job market.

I’ve written a script that captures job postings on several major Internet job boards and compiles salaries by job title. Here are the results for the latest week.

Let’s start with what these numbers look like.

Job heat is similar to the number of job openings, and the difference can be seen in other languages. The reason the average salary has two values is that we usually give a salary upper limit and a salary lower limit when hiring. Strictly speaking, this is not the current salary of a programmer in a particular language, but the likely salary of the next time they change jobs. In addition, some companies like to inflate above the upper limit, so it may be more reasonable to multiply the upper limit by 80%. The lower limit is generally more real and has more comparative value.

And then we’ll see what we can find out.

Java data is awesome

First of all, we will find that the job popularity in Java is very high, ranking first in almost all cities. One particular reason for this is that Android jobs are mostly developed in the Java language, so there is some overlap between the two. That said, learning Java well can actually be a cost-effective way to get hired as both a Java engineer and an Android engineer (perhaps with a little extra application development knowledge). In terms of salary, Java is also one of the best.

Front end close behind

It was followed by front-end positions. The front end is an interesting feature, and that is — almost all companies hire a front end. In contrast to Java, there are probably a lot of big companies that don’t use Java on the back end, so they don’t need to hire Java engineers. If you really want to work for this company, but you speak Java, you might miss out. In front end positions, the opportunity may be much greater. It’s kind of like type O in blood type, you can use it anywhere. Even blockchain companies that despise the “classical Internet” and think they are at the top of the food chain have to hire a front end, which is also a very good choice.

In addition to the popularity, we should also consider the competition, such as Java is a “traditional” position, many software industry engineers also know Java. And the “front end” is a new Internet post, professional front end is not too much (and Java than), so the difficulty may be lower.

Other languages

The numbers for other languages vary from city to city, so you can pick the ones you’re interested in. For example, Go language is several times hotter in Beijing than other cities. Blockchain may look hot, but there are only a little over half as many jobs as PHP; Ruby pays well, but there are very few jobs…

In a word, the choice of language varies from person to person. Please choose a suitable one from a variety of perspectives.

Learning roadmap

After choosing a job and language, it’s time to find a learning roadmap. Github-goodjack/developer-road-Chinese: Roadmap for becoming a Web developer in 2018

It’s not exhaustive, but the details are good.

  • Front-end Roadmap
  • Back-end roadmap
  • The conversation roadmap

Optimization of technology stack

When we analyzed the Java data, we found an interesting problem, that is, the Java technology stack can cover two popular positions at the same time — Java and Android, which makes our job competition doubled. Is this true for other languages and jobs?

There is, for example, front-end jobs, whose back-end solution, NodeJS, is becoming increasingly popular. At the time of writing this article, the number of NodeJS jobs on Lago.com, an Internet recruitment site, is 181 in Beijing, 114 in Shanghai and 65 in Shenzhen. So it’s a good idea to make up for NodeJS’s benefits after learning the front-end.

However, this technology stack can be further optimized. For an accidental reason, I counted the technical keywords in the PHP job Posting and the front-end job Posting, and found that the coincidence rate was even higher than 60%. For specific technical keywords and heat, see here “PHP& Front-end Post (1-3 Years) Analysis Report on Core Technical Points”.

Looking back, it is also very easy to understand, after all, recruit PHP is to do the website, HTML CSS JS must know some of the line. This means that PHP students only need some front-end knowledge, such as mainstream frameworks like React/Vue/Angular and SPA development, to apply for both PHP and front-end positions.

How competitive is that? More than one in ten companies mentions PHP in their front-end job postings. That’s not all. React Native has a hybrid APP solution that allows you to develop mobile apps directly using the React stack. What is the demand for this technology? There are currently 84 React Native related jobs in Beijing.

Therefore, we can choose PHP + React + React Native technology stack. Just by learning more knowledge, the number of posts that can be delivered will change from 364 to 364 + 373 + 84.

This is the strategy for stack optimization. For the optimized structure of this technology stack, you can see here “Sugar Cube Full Stack Learning Roadmap”, this stack also incidentally covers blockchain application development. You can optimize your chosen technology stack by drawing inferences.

Resume writing

Don’t write your resume at the end of your job search. Start writing now, even if you don’t know anything. So that you can really feel your own shortcomings and weaknesses. Then keep learning and adding new content to your resume until it looks like you can compete.

I wrote an article detailing resume writing tips and tools earlier, but you can read here how to Write a Professional Technical Resume (the article itself is still free and you don’t have to buy a booklet to read it)

Write in the last

Unconsciously have written so much, in fact there are some content to say, but for the time being will not write here. I’ll put together a brochure when I have time. I also posted the article to GitHub at the same time. Future updates will be made through GitHub. Welcome watch and Star. https://github.com/easychen/career-guide-for-cs-graduate

PS: If you don’t know how to use GitHub, it’s a must-have tool for programmers.