College students may have this question during their time at school: What should I do for a job in the future?


If you study computer science and want to enter the software and Internet industry in the future, congratulations. This is a good industry with high salaries. You don't need to rely on connections; everything is decided by ability, and you don't need to have a well-connected father.


The downside is that this industry requires extremely heavy mental and physical labor, and working overtime is a common occurrence.


The next question is: What directions are there in software and the Internet today? See the explanation below:


1. First, where do requirements come from?


1.1 Client projects


If you are working on a client project, the requirements naturally come from the client. Of course, clients are typically complete novices in software development (though it's not absolutely true — I have seen a very small number of clients who are excellent software talents). They often find it hard to clearly describe their real business requirements. At this point, someone needs to make a grand appearance: the business analyst. In large companies, the business analyst is a dedicated role; in small companies, the project manager or a key developer has to bite the bullet and take it on. The business analyst needs to sort out the requirements clearly and hand them over to the architects for design.


If a business analyst works in a particular industry for a long time, they become a business expert. For example, if you have worked on core system projects for all the major domestic banks, your familiarity with banking business may even surpass that of certain bank staff. By then, you are extremely valuable — not only can you analyze business, but you can also help banks optimize their business. Isn't that awesome?


Q: Does a business analyst need to understand technology?


A: It's best to know a little. The things you analyze are to be implemented by coders. If you don't consider existing technology and just blindly cater to users, you will definitely be cursed to death by the coders.


If you are a business expert who grew out of being a programmer and have superb technical skills, then you can just sit back and count money.


1.2 Company products


If you are working on a product, such as WeChat, QQ, Taobao, World of Warcraft, ZT Online, or Fantasy Westward Journey, the requirements are actually defined by people within your own company.


There is now a trendy profession for defining these requirements: product manager. For example, Zhang Xiaolong is the super product manager of WeChat, and Shi Yuzhu is the veteran product manager of ZT Online.


Product managers mainly design products based on user psychology and experience, so that everyone enjoys using them. Good product managers are currently in high demand and are also considered scarce talent.


Q: Does a product manager need to understand technology?


A: Yes. It's best to have grown up from being a programmer, knowing the difficulty of product design and implementation. Otherwise, if you only care about your own satisfaction, you will also be cursed to death by the coders.


2. Design and development


2.1 Architect


It sounds like a very impressive position, but it requires strong technical strength and deep technical accumulation.
The growth of an architect requires experience, breadth of technology, and appropriate depth.


Designing elegant, flexible, and scalable architectures is the architect's main job.


One cannot just pursue the newest or hottest technologies; you also need to consider the existing team's capabilities and the maturity of the technologies.


Personnel demand: ★
Difficulty index: ★★★★★


2.2 Web back-end coder


Back-end coders mainly implement business logic and provide APIs for the front end to use.


Java is certainly the most used, but there are also relatively niche ones like Python, Ruby on Rails, etc. There is also PHP, which is simple and straightforward, commonly used by small and medium-sized websites. Whichever one you choose, it is not too hard to learn.


The demand for personnel in this area is relatively large.


Personnel demand: ★★★★★
Difficulty index: ★★★


2.3 Web front-end coder


Mainly JavaScript, CSS, jQuery, etc. In recent years, people have paid more attention to browser-side user experience, and the browser side has become increasingly flashy, so it is also very popular.


Personnel demand: ★★★★★
Difficulty index: ★★★


2.4 Mobile coder


Mainly Android and iOS. Due to the development of the mobile Internet, this field is very hot right now with huge demand. Relatively speaking, iOS has a higher threshold, with fewer programmers, but salaries are a bit higher.


Personnel demand: ★★★★
Difficulty index: ★★★★


2.5 Systems programmer


Some requirements are simple; some are very complex, requiring support for massive numbers of users and massive concurrency, such as Taobao's Double 11 and WeChat's Spring Festival red envelope grabbing.


It requires cloud computing, virtualization, distributed processing, and support for horizontal scaling of systems.


For massive data, you also need to perform big data analysis to extract valuable information, for example with Hadoop.


Because it requires custom development of operating systems, databases, and server-side systems, and even building your own stack, small companies generally do not have such technical capability. It is mainly companies like BAT that do this.


Personnel demand is not very large. For coders, it is necessary to study a field very deeply, and the technology is relatively stable.


Personnel demand: ★★
Difficulty index: ★★★★★


2.6 Security


In the Internet era, your information can be stolen if you're not careful, so security is becoming increasingly important.
Therefore, simply implementing features and meeting performance requirements is not enough. Many companies, especially BAT, attach great importance to security.
This direction also requires deep study of technology.


Personnel demand: ★★
Difficulty index: ★★★★★


3. Testing


This does not require very high technical skills, but you still need testing-related knowledge, the ability to design test cases, prepare test data, and execute tests.


Now that agile development is popular, testers are also expected to understand development knowledge, or at least be able to write some automated scripts.


Many women later move to testing positions. I think it is mainly because women are more careful.


At IBM, I saw a very excellent tester: she not only completed the work mentioned above brilliantly, but also participated in design and development discussions. She often raised issues from a testing perspective that even developers hadn't thought of, greatly helping to improve software quality.


4. Database administrator


Almost all projects require database support. For large or ultra-large projects, there is a position called DBA. This person is extremely proficient in database knowledge, manages the database on a daily basis, helps the development team design databases during development, identifies performance bottlenecks, and performs performance tuning.


5. Graphic design / Documentation


Graphic designer:This means beautifying the interface. Usually, the graphic designer first produces interface prototypes, everyone discusses and revises them, and after confirmation, the graphic designer generates various UI elements such as icons, buttons, etc.


Now there are certain technical requirements for graphic designers. They not only design interfaces, but also produce HTML templates. Therefore, graphic designers need to know HTML, CSS, and even some JavaScript.


After programmers get the HTML template, they just add business code on top of it.


Documentation writer:For small projects, someone usually does this part-time; for large projects or products, someone is dedicated to writing documentation full-time. In 2003, I participated in a project for the Shanghai Stock Exchange and saw a Word document written by a dedicated documentation writer. It was so professional, so exquisite, that it was entirely at a publishable standard.


I copied it down and wanted to make a knockoff myself, but I couldn't even reproduce it by following the example.


6. Project management


The project has already started, and a group of people—business analysts, architects, developers, testers, and so on—are like hungry wolves pouncing on food, determined to tear the project apart.


But how can so many people collaborate? How do you manage them? Can the schedule be completed as required? This is when the project manager steps in.


A project manager, to put it bluntly, leads everyone in doing the project. It mainly involves dealing with people, coordinating relationships across all aspects, and ensuring the project progresses smoothly.


Q: Does a project manager need to understand technology?


A: Of course. It's best to have a development background; otherwise, you won't understand what those coders are talking about. You would only stay on the surface, unable to go deep into the project, and others won't respect you. You definitely won't lead the team well.


7. Operations


If you are developing your own product, right after development is completed, you will immediately encounter a problem: how to promote it?


In the Internet era, the world is fair and competition is extremely fierce. A good piece of software, an app, or a website—without operations, no matter how good your technology is, it won't work.


Operations is essentially finding ways to make your product known and used by people. There is a lot of depth to it. For example, how do you write an advertorial? How do you market on social networks, WeChat, and Weibo? How do you perform statistics, analysis, and precise targeting?


In this regard, Xiaomi before 2014 was definitely a model. Lei Jun's seven-character formula — focus, extreme, word-of-mouth, speed — and Li Wanqiang's "Participation" are all classics.


Good Internet operations talent is extremely scarce, and naturally in very high demand.
If you are not interested in programming, you might as well take a look at this direction.


After saying so much about career directions, you'll find that the vast majority require some understanding of technology, so what I actually want to say is:
When you first start working, you might as well begin as a programmer, and then gradually look for a direction you're interested in.


From: Code Farmer Rising (WeChat ID: coderising)
Author: Liu Xin