I graduated in 2008, as a software development programmer, began to formally enter the software development industry, a blink of an eye has been nine years. Junior software engineer, senior software engineer, project manager, technical manager, project manager. Led development teams and participated in recruitment interviews in recent years. Today, I share my personal experience or viewpoint in these years, which only represents my personal viewpoint.

First, the characteristics of programmers

The characteristics of professionals with technical backgrounds are obvious, and the difference between them and those with marketing and business backgrounds is particularly obvious. Some common roles in IT industry: boss, project manager, product manager, Requirements Analyst, designer, development engineer, operations engineer, etc. Development engineers have the following characteristics:

1. Logical thinking is clear, rigorous and delicate; But sometimes it is not easy to turn, some programmers tend to struggle, turn a corner.

2. Introverted, not good at communication, expression and communication; But some of them are humorous and chatty on the Internet.

Being honest, sincere, straight to straight; But sometimes it’s a little stiff.

4, poor written expression ability, even reject the work of writing documents.

2. Domestic software development environment

Domestic software development environment, mainly discusses the application system development (excluding game development, I do not know about game development), general software company nature & characteristics:

1. Types of Internet platforms: Enterprises build product platforms for operation, ranging from BAT to start-up Internet platform enterprises.

(1) Technology: the contents and technologies developed by technicians are single; Due to the large amount of data and page views of the platform, it is more conducive to in-depth skills mastery in the process of solving problems. More use of new technology.

(2) Welfare: The salary and welfare are good, especially for large and mature Internet platforms. However, for start-up companies, they need to attract talents, and they usually attract talents with high salaries.

(3) Job: It is difficult to get promoted, management posts are limited, and competition is also fierce.

(4) Ownership: have a sense of accomplishment and pride, and have a sense of belonging in the enterprise.

2. Software project outsourcing type — enterprises undertake project research and development or implementation, and deliver the project after acceptance. Some projects require on-site implementation by project members.

(1) Technical aspects: technical personnel have more time to act as generalists, oriented to complete project delivery; Most of the technologies used are old technologies, and the development efficiency is not controllable due to technical problems encountered by new technologies. General technical competence is not applied in depth.

(2) Welfare: The salary and welfare are relatively general, completely inferior to the Type of Internet platform. Some enterprises will supplement the salary with project bonus system. If the company has core employees, the company will give relatively reasonable compensation and welfare to retain talents.

(3) Positions: Junior development, senior development, technical manager, project manager, etc. There are many opportunities to exercise comprehensive ability.

(4) Attribution: it may be the relaxation after the delivery and acceptance of the project, or the awarding of project bonuses, but it is definitely better than the outsourcing of human resources.

3. Type of human resource outsourcing — After recruitment, human resource enterprises will outsource employees to work at the customer site. The activities and welfare of the customer company have nothing to do with the stationed personnel, so they have no sense of belonging. Some even worked for more than a year without knowing the specific situation of the company they signed the contract with.

(1) Technical aspects: follow the requirements of service units.

(2) Welfare: This is the only advantage, is the high salary, low welfare.

(3) Position: No need to think about it.

(4) Attribution: almost zero.

The above divides the common software companies into three categories based on my understanding, and there are some that have multiple types at once. For software development students, first of all, to objectively understand their own situation, think about what they want now, then, what they want in the future, do a good job in career planning. Choose different types of businesses. For example, if you are in poor health and in urgent need of employment and have average technical ability, you can choose human resources outsourcing for temporary transition; Like technical research, have a strong interest in technology, hope to become a technical genius in a certain field in the future, can choose the Type of Internet platform; With a certain technical foundation, if you want to develop into a technical manager or project manager, you can choose the project outsourcing type. Programmers need to map out their career paths.

3. Career route selection

Programmers generally have a relatively simple career path and don’t have a lot of options, unless a career changer says otherwise. Here are some of my personal views.

1, programmer, if you think you like code, like development work, then always doing development is also a good thing, but consider that when you do development 10 years later, you do the work, a two or three years out of college developers can do, your value is going downhill, less and less valuable. So keep learning and delving into the technology.

The architect is a career line to develop in the direction of real technical bull. If you want to be an architect in the future, you will need to continue to specialize in technology and gain r&d experience now. No casual developer can become an architect with 10 years of experience. To become an architect, we need to have a sound and solid technical system, good system analysis and design capabilities, and rich experience in project research and development. It is suggested to go to the project outsourcing type first, and then to the Internet platform type.

3, technical manager, is to the direction of technology and team management of the career line. Students who want to develop in this line need certain technical ability and team management ability. Management is related to personality. First of all, we have to analyze whether our personality is suitable for management work, which is also the biggest challenge for many technicians in transition. There are technical manager positions, generally with partial needs, products of the project manager to carry out the project implementation. The technical manager’s skills may not be studied in depth, but it needs to have a certain breadth and project development experience.

4. Project manager is a career line developing in the direction of management. General project manager mainly focuses on project management, and the key ability of project manager is the ability to plan, communicate and organize. Communication and expression is the short shank of developers, so students who want to develop in this line should gradually strengthen their ability to exercise this aspect from daily work and life, and then learn some knowledge of project management, such as: PMP, CMMI, agile development management and so on.

What kind of career line to choose, need to objectively understand their own, according to their own characteristics of planning, selected to develop an orderly learning plan. Career opportunities are also reserved for those who are prepared.

Four, conclusion


Want to work on it or are genuinely interested in it. You can ask me for some basic learning videos, Q number: 3300863615, this is free, I hope students don’t take it for granted when looking for me, after all, it is my efforts, I hope you really want to learn Java heart, I will do my best to help you become an excellent programmer. There are learning groups to exchange learning to help each other solve various problems Java Web problems, there are specially-assigned to explain the class. As long as they are serious, in addition to communication, you will learn a lot of Java Web in other places to learn the latest technology and knowledge as well as project combat!

Q plus I have the following requirements, do not disturb the substandard:

1. I majored in Java in college, but I was frustrated in the interview after graduation and could not find a suitable job

2. I have been in the company for a long time and now I am comfortable, but I hit a wall in the interview when I change my job. In a short period of time,

Job-hopping for a high salary

3. After attending the offline training, I have not mastered the knowledge deeply enough, and it is difficult to find employment. I want to further my study

4, already in the Java related departments work on the job, on their own career planning is not clear, dawdle

5, have a certain C language foundation, contact with Java development, want to change careers

Do not disturb the trumpet, do not like to add