Secret programmer "outsourcing", "technology-oriented" and "business-driven" company's daily life

table of Contents

First, writing background

Second, the various types of companies ambience

Third, the various types of the company's development process specifications

Fourth, how to improve the core competitiveness of the company

Fifth, some pertinent suggestions

A writing background

I have had three sections internship during college, in an outsourcing company sophomore, junior went to technology-based companies, and now stay in a business-driven company. I know relatively long time readers should know, I experienced a good intern, advance to positive twice, most recently this work was originally six months of internship trial period, only practice a month in advance to positive.

Writing this article has three objectives:
  1. Purely to share experience of the three.
  2. Share the same time, to the students and not working in these companies the students some reference. After all, they did not really experienced before, others are just mouth said, is the so-called "Siege."
  3. Because I have a habit of re-set the stage, the performance of the work of these three sections can also think, will be here to share some of improving the core competitiveness of experience for different types of companies.

Second, the various types of companies ambience

① Outsourcing

We had a team of 10 people, assigned to state-owned enterprises which develop, we only assigned to a small room, but before the room or warehouse, in most corners of the company.

The atmosphere inside the room " is in line with the" development atmosphere, only to the point of the meal to eat only someone shouting voices, other times it was quiet.

This state-owned enterprises have their own canteen, their employees are catered, staffing card. But this enterprise for our team to just one card, that is, our team share a card, so we get to the cafeteria after a row with rotation brush. After the meal, everyone on the team needs to turn 12 yuan as CTO noon meal, CTO harvested after transferred to the unified corporate finance, that is, we do not pack meal.

Turn card, do not pack these meals are good, after all outsourcing team Well, can understand. But sometimes in the cafeteria holidays specially cooked soup or whatever, we see a team come, they just say we did not. Once Mid-Autumn Festival, the Ministry of Personnel issued in the cafeteria door gift, a team of older employees to go collar, the Ministry of Personnel of people because of our relatively new, so ask about the basic information, we heard the technical department, and quickly waved He waved and said no.

While this outsourcing 996, 800 a month only made me pay, but also the transfer of Alipay, but I was very grateful for giving me this opportunity for me to learn, there is no " sense of belonging " and " identity " also told me only just practice, the two friends feel believe in outsourcing all too well.

② technology-oriented

The company is a technology-based company in the true sense, the core competitiveness of our products is the technology to address other competing products on the market can not be resolved.

The company's founder and management of all technical background, the enterprise has set up a university, there is compulsory and elective courses above, then after class to take the exam, test scores as one of the year-end performance indicators. On the HR, R & D personnel down to the bottom of a large data had to be baptized knowledge, casually is a variety of Hadoop, Spark. In addition, the company will often external to the company to share technology, the enterprise will do regular share.

This technology is the atmosphere each technical people aspire to, encounter any difficulties, internal staff to brainstorm what can be resolved.

This enterprise technical staff is with the core of the core sector must also be development department, and for different technology, in the part of the union points relatively small, which module, which functions specific to.

③ business-driven

In this company, the normal development department is not core departments, but they are also indispensable. Take my current electricity supplier companies, the data sector is intended to provide some data to allow them to better pricing, custom activities to the Operations Department.

The company's core competence should be the product, followed by mode, and the mode contains the operations, sales and so on. Technology is only established as a secondary part of this model, build a platform, or some indicator data, all in order to better service business.

Most Internet companies are market-driven business companies, these companies will outsource part of the edge, we do focus on the core business, the core business of technology for technology-based companies, like as not any harsh, seeking the best value for money.

Third, the various types of the company's development process specifications

① Outsourcing

Whether bad code or redundant code, the code is good as long as the function can be achieved . Most of the outsourcing company or substantially all of the outsourcing company will not do code review, as long as the function can realize to the customer on the line.

Sophomore year, although our team stationed in the state-owned enterprises there, but really do the business project I was the only person, other people are doing different projects. I was both proud and feel almost proudly told the students say that I am a person to engage in a state-owned project, feeling the company really big heart, a state-owned project to put one of my interns to do.

Then do not know what applauded the code, functions are directed to implement various transfer package, copy & paster, if else while for often write triangle of death , no one criticized me write the code ugly, let no one I package all boast fast my function to achieve that bug a little too much.

Product Manager from time to time come to me, he told me what features to add and what not, the business logic is freestyle, scene painting logic diagram. At first do not understand, listened product manager said, and then take a small note books. Then my leader said to me: Do not listen to the product manager, there do not understand ask me on the line , and later state-owned enterprises Operations also needs to come to me to mention, really everyone is a product manager ah!

The team is no specific test colleagues are on the line that day to work overtime together, people SOE Operations help test, we have developed to solve test out the problem in real time in the next, well, then released the same day, if there is encountered not solve the bug is over overtime, continue tomorrow.

This project after my handwriting is large, soft, and now I could not stand that code, this project after I have gone down.

In this company, I was product manager with tear forced from the game with the Party, to the, to the front-end back-end database server, all out again. I have to say this is a rare opportunity to learn, but I tasted this company gives me a pain in the next company.

② technology-based companies

A year later to the company, the company is the number of positions the industry benchmark, the product is To B, and customers are KOL various fields, but also China's first top-level Apache open source project, whether technical or specification development process He said the leader should unduly.

Take a look at our development process and specifications:

1. PRD / issue
if the new feature, and relatively large, the product manager need be described in detail and shown in FIG apparent prototype; bug or if it is relatively small features, on the need to clear the github issue. Oral say never valid, if the product manager told us verbally, we will ask him to document, e-mail or clarity on the issue, but also the preservation of evidence, to prevent rejection of the pot each other.

2. Local Reproduce local reproducible bug. That is when the bug appeared, we have developed to reproduce locally, only to resurface solve the problem fundamentally. This step is the most difficult, but also the longest. If even reproduce the bug locally reproduced also does not come out, follow the basic work difficult.

3. Locate Root cause for the Bug, we must first find the root causes, this most comprehensive ability test. mentor gave me the motto is: "a bold hypothesis, A careful." All possibilities listed, then one by one to confirm. Only the positioning of the Root cause, you can begin to write code.

4. Design review This is a review on the code architecture, is identified with the mentor or leader butt, before writing the code is complete, to avoid design does not work, they have all been overturned. Github also write this piece in the issue, on the one hand for future generations to leave a trail behind the ease of maintenance or iterative recovery disk. And executives have often read issue, design review do not, it will be alleged, timely detection of problems.

The code is written (Ali Baba manual, UT, IT) to write code that is the basic requirement novice, do not write low quality code. According to claim restrained side effect java Alibaba codes and manuals, as well as each of the code must be covered by a finished UT or IT.

6. Test plan when you write code, you need to develop a test plan, test cases is, bug before going to solve the same operations occur or verify your new features.

7. Test evidence that is performed after the Test plan developed and implemented complete, will be retained to verify a successful shot, stick to the issue, as evidence of your completion.

CI 8. the Continuous Integration- continuous integration service, it will run its own built and tested, whether there are other problems Bug or feedback process to see if it is consistent with the results we expected. We are done on Jenkins, when a little change your code you need to run CI, to avoid affecting the other modules in the system.

9. Code review when you write the code and then pass the test, by the way give pr tutor review, mentor after completion of review submitted to the leader, for some of the more important of the module, but also further submitted to the CTO leader after reading the code . After reading this you would be willing to submit bad code? Do not say bad code, had a bad variable names defined beaten back.

At first the entry of annoying that these operations, changing a line of code you have to write a bunch issue above, but also to run CI a few hours. Later, when eating a few losses, delicious. Do not look in addition to writing code, there are many other operations, other operations but also to make you better to write code, to help you sort out the entire development process, not consciously improve the rigor of your work. So now, let me first company to solve a bug, I also know that Root cause, as well as other details. Other people also know, because I have posted on the above issue.

Since I developed a lot of bad habits in the first stage of work, such as writing the code quickly and rotten, debug various log Cookin, in order to realize the function destroys the design patterns and so on. So be scolded discredited by a few, Day 7 days saw in the second paragraph of work experience in four books on code design and make a summary of the project source code in-depth reading, learn some design patterns and so on.

In the second company, although a lot of hate, but the harvest is very large, you can look at my performance in the third house.

③ business-driven

Business-driven companies is between outsourcing and technology-based, but also to achieve the main function, but also focus on post-maintenance, to regulate in a neutral state, no digging, not hypocritical.

Since I came out from the second company, has some over the top of the code, so to third companies whenever you have a remodeling project code, leader also agree with my behavior, I often find chat code design and specifications. I also take the initiative to develop the application process specifications supplement department, field specifications of the database, and the full complement UT project code, IT and so on. It is also positive that I can advance one of the reasons.

Fourth, how to improve the core competitiveness of different types of companies

In outsourcing company, we can not be confined to one point for development , outsourcing companies need is a versatile talent, where where the lack of make up . In technology outsourcing company does not need you more powerful, but you'll need to use available resources as quickly as complete project development. The more you respect will, the company needed more you place, you get a greater extent.

In technology-based companies, you will not need to how wide, you only need to understand a point for the company's products, continue to optimize this point is your core competencies. And then cut by the relevant module to this point, technical depth is king.

In the business-driven company, can not be technical, when other developers will only speak with the boss technology, and you can implement specific technologies to business, and from the operational level to push the anti-technology, the boss can not like it? However, we should remember that technology is to survive, not a loss, get smart.

The core competence of technical staff after all, is technology, but technology has the ability to divide the breadth, depth, and the business combination, in different circumstances, should learn to choose.

Fifth, some pertinent suggestions

1. outsourcing company can not go?

In the absence of better options, you can go, better than nothing. So companies are not outsourcing a look, maybe good for your leader, the service is good and money Party, Chihaohehao good hospitality. But most of the outsourcing is not ye, good background investigation on the line here.

2. The technology-based companies where to find?

All open source project behind the companies are technology-based companies. For example, the open source Kylin Kyligence, open source Dubbo, RocketMQ Ali, open source Flutter of Google, and so on. And like Ali, Tencent such a large company, each BU is a type of small companies, some in charge of technology, responsible for some business, some outsourcing.

3. For the final year students of choice?

Recommendations to technology-based companies or the core technology sector. You can see from my case, I technology companies to help create an overall maximum, may implement career. When you get used to low standard stuff for a long time, it is difficult to generate interest in a high standard.

4. My views on these three companies?

For outsourcing companies, I think it will be missing " sense of belonging " and " identity ", after all, do not own the product, we had to go to the customer site presence, but also for outsourcing of technology is not very good.

For technology-based companies, for personal growth definitely help a lot, but in this company due to the surrounding level higher than you are the person to solve the problem are also more difficult, so there will be pressure and produces virtually anxiety.

For service companies, it is best to choose your good at and have relevant work experience in the business. I did the first paragraph internship project is the electricity supplier, so I work now is to find the electricity business, after all, the business logic is the same, even before he jumped, will choose the electricity supplier industry, after all, in addition to technology, industry knowledge is also competition one force.

Choose what type of company, eyes of the beholder, you can make choices based on their interests and local expertise.

Guess you like

Origin juejin.im/post/5d02fd1be51d4577531381b3