35 People 10 fishes how to get out of the software workshop and become a regular army developer

Source: Internet
Author: User

35 People 10 fishes how to get out of the software workshop to become a regular Army (reprint)

Since posting a blog post, these days have received a lot of friends letter.

From the advantages and disadvantages of each development language and the application of the field, has been discussed in the design pattern, framework, reconstruction, unit testing, and even agile programming, finally discussed the software development process management, even talked about the profit model and the Chinese software

of Sorrow.

In the end, they found it impossible to improve the current software production situation in mainland China.

Why is it?

I re-turned over the discussion messages of the past few days and found that there is a common phenomenon in all of our software teams.

1 The majority of people in the company, developers only 3-5 people, more than 10 people. Don't look at these guns, also from pre-sales support, software development, testing, packaging release, documentation, implementation installation, training, technical support are done.
It's not much, and almost a person is responsible for a product or a project, a person from the beginning to the end, and responsible for the maintenance of multiple customers.
This is not what, and at any time the boss will find unrelated new life, to the very tight, suddenly to develop, upset all the plans, and finally all lazy according to plan, every day bell, boss orders, nothing on the Internet, not to listen to songs, of course, not let play games. Even don't let read technical books, reprimand not do work. Only on the internet pretending to be at work.

2 boss and staff mutual wits, in the year-end award, reimbursement, travel, peacetime benefits ah, are infighting. Boss Card tight, employees on the project and products on the drug, still do not know who accounted for who is cheap, who gave the workers.

3 employees on the one side in the painstaking study of various development tools, reading the source code, learning to do demo examples, reading UML, design patterns, unit testing, agile programming, and so on, while lazy to modify the company's products, there are problems on the patch, the customer does not yell on the lazy changes, the code is not optimized, the interface is not friendly, Code not encapsulated

However, in the discussion, I always feel strongly that we want to develop the product, the development process management of the orderly, but it is powerless. Read n multi-software engineering books, from heavy-duty methods to light methods are read, but can not put the current development state a little bit to reverse the good.

A lot of people want to revolution the products and teams that have collapsed and then come back, but this is just a dream, say it. Can only hope that the next job-hopping, can find a good company, all his life to learn all play out, but this seems to be just a dream, because the exchange of a bit, we each other's situation is basically the same.

Some extremists have opened their own companies, only to find that not the household does not know that the oil is expensive, and now he and his men into the boss and staff relations, walked the old road.

Some extremists quit their own software, and finally because of life constraints or do find this software is meaningless, discard their dreams, casually find a company began silent Bell.

Some smart guys, some into the foreign companies, some into the big online games company, some into the outsourcing company, some into the big website company, are pay attention to the large-scale development of the company, hoping to find a Chinese-style team to develop product assurance Road


As a small software company, are we really powerless? Have we really become cannon fodder?

However, most of the Chinese software industry is such companies. From an annual CSDN programmer survey, most Chinese software companies are in the size of this development team, and most of the developers are graduating for 1-3 years.

Are we waiting for the time to become mature? Are we waiting for time for people to become more technologically integrated?

According to the author, as China's largest software group of small software companies, the need is not uml/rup/cmm these heavy methods, not a few years ago everyone's attention to the team development method, nor agile programming such a pair method, we can not have such resources to achieve such a method.

But, think, a single spark can be a prairie fire. The Reds can start from climbing the Snowy Mountains and finally liberate the whole of China. We have no way?

Then we need to think about how we can improve a little bit about the power and resources we have right now. What we need is the way from the guerrillas to the brothers, from the brothers to the regulars. We are still in the guerrilla, a team leader led a group of soldiers scattered Yong, some people even do not have a gun still carrying a machete, some people have not killed the devil.

First, we have to turn ourselves into brothers.

I often watch the international famous CS team's game video, how good they cooperate. If they were all fighting, they would have died long ago. This is much like our software development. How we charmed this tacit cooperation, playing how smooth. That's what we want. They don't have a few people.

Let's analyze and analyze it.

We want to develop software well-dedicated, but our time has been implemented installation, training, technical support taken up. Why are we doing this? It is because our software does not have instructions, other departments will not use. And we do not have a training mechanism, other departments are not used. And our software is not stable, other departments have refused to implement. Because of our software is not stable, the old problem, out of the question other departments can not help, only we do technical support.

From the above view, the main contradiction is in: operating instructions, training mechanism, stability. How to guarantee these three points. And from the above analysis, stability is the most important. Unstable, even if you have operating instructions and training mechanism, other departments are hiding the implementation, who want to go to the client there embarrassing humiliation scolded Ah. Therefore, other departments will find various reasons for the boss to sue the development of the form, to avoid implementation, said the software is too bad, can not take out. This is the development department and other departments often bad relations, developers old complaining about their own hard to solve the problem, no one said, but was schemer framed. Forever, the resentment is quite deep. In fact, the roots are still in the development department of their own here.

How to ensure stability?

The first thing people think about is to recruit testers. Of course, some companies ' bosses refuse to raise testers. In addition, if you only want to recruit testers, other methods do not cooperate with testers, even with testers, software stability will not improve. So, there are some jobs, whether or not testers, must be what we developers want to do:

Everyone's skill level is not aligned, everyone is responsible for their own code is not the same, so to improve stability, must be specifically from the team to find a person, he as a public code developer. Each product or project needs to be modified, must first through his thinking, can be made public code, can be encapsulated into functions, he did. Other programmers just call functions to implement customer UI operations and accessibility. This public code developer must have the following capabilities:
A has been involved in the development, implementation and support of several major projects. In this way, he has a comprehensive grasp of customer needs. If there is no such person in the team, only the development manager a person has such a manager, then receives the customer demand, analyzes the customer demand, the resolution is the public code clerk to do or other developers to do.
B Public Code developers have the responsibility for serious work attitude, code careful and meticulous consideration of the abnormal protection done in place memory create release symbolizing, code beautiful, code readable, code refactoring, code performance and stability are high
C Public Code developers have high technical capability and know what kind of function interface to encapsulate, in the flexibility, the change of later modification is best

It should be said that to find a good technical skills, work seriously responsible people, should be not difficult to find. And to do it, to not let him participate in various chores, he should be able to do the good thing, and will do better, this is the technique has specialized.

One thing I said just now is that development managers need to be familiar with their customers ' needs and understand their needs deeply.

Customer needs, customer needs. The word that makes the development department the most headache. Whenever I think of the customer's needs, I think of the following words:
1 The programmer said: This is your family's personality needs, too scary, we do not do. Customer said: "Do not do we find your boss to go, we are spending money to buy your products."
2 Customer said: I will not use the mouse, you give me a voice input bar. We also want a similar QQ thing for our internal communication, you give us a bar. Programmer: I'm dizzy.
3 The programmer said: "After your internal struggle, you have finished the coordination, I will investigate the demand."

It seems that we are powerless in demand, we are always chasing the needs of customers, to meet their current situation, n more than the customer needs are added to the software, as long as it can be achieved, we try to achieve the teeth.

Finally, we find that our software is so complex that no one can use it, and even the development department is not going to use it, and no one knows why the need was. Because of the complexity, so the implementation, training, technical support has become a problem, stability has become a problem. The code crosses each other and is simply unable to clarify how many cross-affecting points there are. Maintenance programmers are almost collapsed, every day in prayer, do not receive customer calls, do not receive customer calls.

This problem is ultimately a problem, but also the biggest problem of software development. Although we have also used this technique:
1 The Customer business unit should not be able to mention the demand. Must be aggregated to the customer IT department, aggregated by the customer IT department, and then centralized to the software company
2 The needs of the customer IT department must be signed by the owner of the IT project in order to be able to report to the software company
3 can not be reported at any time, focus on the report every 3 months
4 can not be reported orally (even if the implementation of support at the scene is not possible), can not call the newspaper, only mail or fax to report
5 must be in accordance with our prescribed format, to strictly write clearly the interface required to implement the function, input data or output data, input and output data format requirements, who operation, how long time to operate once.
6 The software can only be modified 3 times free of charge. In the future, there is a need to sign another contract for additional charges, otherwise it will not be modified.

After such a few strokes, the customer is also exhausted. Demand is not mentioned, the development department cheered. But are we really doing it? Is the customer really satisfied? Why do customers use our software? Just to get them to do it by hand, and then go to the computer to do it. Let the computer query statistical calculation speed instead of manual?

Why do customers want to ask such a demand? What problems does the customer have to solve at all? Who will think about these problems, and who will solve them?

Oh,my god! We can do nothing, because we are technical personnel, we do not understand the business.

Who's going to solve this problem?

The programmer wry smile: No one solves, no one can solve. The client is going to call the boss if you don't do it.

Oh, let the programmer's nightmare continue. No one can save you, only you.

To save ourselves, we must walk out of ourselves. Who let us be in this situation? We all think well, we can only save ourselves ourselves.

Then we have the courage to come out, from our design patterns, OO, software engineering, virtual interface, reflection, persistence, the framework to come out. Development Manager to undertake customer industry research to:
1 customer industry How big is this group? Big Small and medium size each has how many families, each distributes in what province? What is the size of the best customer we are facing and what is the degree of informatization? What is the size of our second-best customer?
2 What is the current product of our top competitors, our competitors and our lower tier competitors? What are the advantages of each of them? What are their respective shortcomings? What are the advantages we should highlight? What are our shortcomings?
3 customer industry in the past 5 years, now 2 years, the next 3 years of development history and trends is what? What are the challenges and opportunities they face?
4 We are now doing the typical customer, their organizational structure, the size of the staff, the daily business process of each post, the daily Weekly Monthly quarterly exception handling business process for each position, the input form of each weekly monthly quarter of each post each month, the daily monthly quarter of each post every month of the year the usual data query, Weekly Monthly quarterly statistical report per post
5 for the above understanding, customers face the future challenges and opportunities, the future should be how to change their roles and responsibilities and processes, as far as possible, high efficiency, fast running?

In fact, the development manager is equivalent to the business architect (because we are still guerrillas, there is no full-time business architect), the public code developer is equivalent to the technical architect.

Liu said very well: team, set strategy, with the team. You're not a team. Requirements management software, version management software, project progress management software, automated testing, automatic integration of software, can not be executed on the ground.

With a solid business + technology, functional and practical, function in line with customer operation, stable function. This is the most basic software requirements, can be satisfied. At this time again recruit test personnel, can put quality again tamping.

Moreover, because the testers know the products, they can also do technical support, so that more developers to full-time development, the development of professional can be more and more improved.

Good products, but also need to have good documentation and training, or other departments will not take the development department's products.

Then recruit a copy staff, write help instructions, production operation video, production of learning database, participate in the auxiliary testing (this is very important, otherwise the copywriter is not familiar with the product, can not write quality copy). With these copy of the foundation, the most familiar with the product of non-developers have two positions: testing and technical support, then the copy of the training work (because he wrote himself with his own copy of the training, in the training will have a variety of questions, will enhance his understanding of the copy and product, can write better copy.) And he is not a developer, he can stand on the user's point of view to write, and he belongs to the development department, he will give product development to bring more and better product usability recommendations.

Well, the development Department of the four carriages finally got up, this is what I want to talk about the development model: from the guerrillas to brothers, from the software workshop toward

Remember: Business architecture, technical architecture, testing and technical support, copywriting and training, four sets of carriages.

We have been using it, the effect is very good, build Team easy, progressive and not revolutionary.

With such a good team, can be better than the past output of software, software quality, software progress, software competitiveness is up, and then a variety of management software: such as project management software, version management software, bug management software, automated test software, it will be the case.

Other departments are willing to pick up the software, and the implementation and training of the software and technical support have been passed by other departments. Development Department also finally full-time professional up, the whole company is very coordinated, the Department also does not frame each other to complain. Company development speed RUB rub.

The boss looked at the form so well that it was not stingy. Bonus benefits come with it. The boss looked at the company's product sales so good, no longer worry about the company's survival, do not have to find a list to feed, to the development department has brought a professional rationalization of the

Development. The boss also began to attach importance to the research and development department, the Research and Development department in the company's position is much higher, to the Research and development Department of Resources and support more.

Oh,my god!

35 10 fishes gun How to get out of the software workshop to become the regular army of development

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.