How to get out of the software workshop and become a regular army for development

Source: Internet
Author: User
[Switch] How can I get out of the software workshop and become a regular army? I sent a blog post from three to five people who have received emails from many friends over the past few days.

From the advantages and disadvantages of various development languages and application fields, we have been discussing design patterns, frameworks, refactoring, unit testing, and even Agile programming. Finally, we have discussed software development process management, I even talked about the profit model and Chinese software.

Sorrow.

Finally, I thought it was impossible to improve the current software production conditions in mainland China.

Why?

I have repeatedly commented on the discussion over the past few days and found that the software team has such a common phenomenon.

1. Most people are in the company, with only 3-5 developers and 10 others. Although there are just a few guns, pre-sales support, software development, testing, packaging and publishing, document writing, implementation and installation, training, and technical support are all done.
This is nothing, and almost one person is responsible for a product or a project. One person is responsible for the maintenance of multiple customers from the beginning to the end.
This is nothing. At any time, the boss will find new jobs that he can't beat at any time. What he wants is quite tight. Suddenly, he wants to develop jobs, disrupt all the plans, and finally he will be lazy and act according to the plan, every day, when the boss hits the clock, he tells me that he has something to do. If he has nothing to do, he will go online, not listen to songs, or even play games. They even refused to read technical books, so they shouted at their work. You can only pretend to be at work online.

2. The boss and employees are brave enough to fight for the year-end bonus, reimbursement, business trip, and welfare at ordinary times. As the boss gets stuck, the employees take medicine on projects and products, but they still don't know who takes advantage of it and who calls the work.

3. The employees work hard to explore various development tools and readSource code, Learn to do demo examples, read UML, design patterns, unit tests, Agile programming, and so on, while lazy modifying the current company's products, patch if there is a problem, the customer will be lazy to modify it if he doesn't yell,CodeNot optimized, the interface is unfriendly, the architecture is not structured, and the code is not encapsulated

However, during the discussion, I have always felt that everyone wants to develop products well and manage the development process in a well-organized manner. I have read more than N Software Engineering books, from heavy methods to light methods, but I cannot reverse the current development status a little.

Many people want to make a revolution and collapse these products and teams, and then come again, but this is just a dream, just to say. I can only hope that I can find a good company and make full use of what I learned in my life for the next job-hopping. However, it seems that it is just a dream. After a conversation, everyone is in the same situation.

Some geeks started their own companies and discovered that they did not know the oil and salt were expensive, but now they and their employees have become the relationship between the boss and the employees, and they have gone through the old path.

Some of the more geeks resigned, made software on their own, and finally lost their dreams because of living difficulties or doing so and found that the software didn't make any sense, so they started to talk to a company and hit the clock.

Some smart guys, some have joined foreign companies, some have joined large online game companies, some have joined outsourcing companies, and some have joined large website companies, all of which focus on large-scale development, hope to find a path for Chinese-style team to develop products

As a small software company, can we really do nothing? Are we actually cannon fodder?

However, most of China's software industry is such a company. From the csdnProgramAccording to the staff survey, most Chinese software companies maintain the development team scale, and most developers have graduated for 1-3 years.

Are we waiting for time to make people mature? Are we waiting for time to make people more technically powerful?

According to my opinion, as the largest small software company in China, what I need is not the heavy-duty methods such as UML, RUP, and CMM, nor the group development methods that people have been concerned about in the past few years, this is not a pairing method like Agile programming. We cannot implement this method with such resources.

But think about it. The Red Army was able to climb the snow mountains and navigate through the grass to liberate China. There is no way?

Then we need to think about how we can improve the power and resources we currently have. What we need is a method from the guerrillas to the brothers and from the brothers to the regular army. We are still in the guerrilla group. A long team leads a group of game soldiers, some of whom have no guns or even big knives, and some have not killed any devils.

First, we must turn ourselves into brothers.

I often watch video recordings of internationally renowned CS teams. How nice they work with each other. If they were all running independently, they would have been too late. How similar This is to our software development. We were so fascinated by the tacit cooperation, and how smooth we were. This is what we want. They don't have a few.

Let's analyze it.

We wanted to develop software on a full-time basis, but our time was occupied by installation, training, and technical support. Why are we doing this? This is because our software has no operation instructions and other departments will not use it. In addition, we do not have a training mechanism, and other departments will not use it. In addition, our software is unstable, and other departments refuse to implement it. Due to our unstable software and problems, other departments could not help us. We could only provide technical support on our own.

From the above, the main contradictions are: operation instructions, training mechanisms, and stability. How to ensure these three points. From the above analysis, stability is the most important. Unstable. Even if you have operation instructions and training mechanisms, other departments are hiding from implementation. Therefore, other departments will find various reasons to inform the boss of the Development Department to avoid implementation, saying that the software is too bad to be taken out. This means that the Development Department often has a bad relationship with other departments. Developers complain that they have worked hard to solve the problem. No one has said yes, but they have been framed by hackers. It has been a long time and a lot of complaints. In fact, the root cause is still in the Development Department itself.

How to ensure stability?

The first thing we think of is recruiting testers. Of course, some bosses refuse to raise testers. In addition, if you only want to recruit testers and other methods do not work with testers, the software stability will not be improved even if you have testers. Therefore, some work, whether or not there are testers, must be done by our developers:

Everyone's technical skills are different, and everyone's responsibility for their own code is also different. Therefore, to improve stability, you must find a person from the team who serves as a public code developer. To modify a product or project, you must first make public code and encapsulate it as a function. Other programmers only call functions to implement UI operations and auxiliary functions. This public code developer must have the following capabilities:
A has participated 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, and only the development manager has such a manager, then the customer needs are met, analyzed, and resolved to identify whether it is a public code engineer or other developers.
B. The public code developer is responsible for a serious work attitude. The Code carefully considers the exception protection in place. The memory creation and release have the beginning and end, the code is beautiful, the code can be read, and the code is restructured, high code performance and stability
C public code developers have high technical capabilities and know what function interfaces are encapsulated. They are the best in terms of flexibility and change in the future.

It should be said that it is not difficult to find a person with good technical skills and serious responsibilities. In addition, he should be able to do this well without letting him participate in all kinds of chores, and he will be able to do it better and better. This is a specialized skill.

One thing I mentioned just now is that the development manager must be familiar with the customer's needs and have a profound understanding of the customer's needs.

Customer requirements. This is the biggest headache for the Development Department. Every time you think of the customer's needs, you think of the following:
1. the programmer said: This is your family's personal needs. It is too bad. We will not do it. The customer said: if we don't ask your boss, we spent money to buy your products.
2. The customer said: I won't use the mouse. Please give me a voice input. We also want something similar to QQ for our internal communication. Please do it for us. Programmer: I'm dizzy.
3. the programmer said: after your internal struggle is over, you have finished coordination and I will investigate the demand.

It seems that we can't do anything about our needs. We will always catch up with customers' needs, meet their current situation, and add more than N customer needs to the software, we tried our best to achieve it.

Finally, we found that our software was extremely complex, and no one would use it. Even the development department would have used it, and no one knew why the demand was like this. Because of the complexity, implementation, training, and technical support become problems, and stability becomes a problem. Code crossover does not clarify how many crossover influences there are. Maintenance programmers are crashing. Every day, they pray, never receive calls from customers, never receive calls from customers.

This problem is ultimately a problem and the biggest problem in software development. Although we have also used this technique:
1. The customer's business department cannot submit any demand. The information must be centrally summarized to the customer's IT department, filtered out by the customer's IT department, and then reported to the software company.
2. The customer's IT department's requirements must be signed by the customer's IT project owner to take effect before it can be reported to the software company.
3. Messages cannot be reported at any time. They are reported once every three months.
4. You cannot give a verbal report (even if you provide on-site support), call a phone report, or mail or fax the report.
5. The report must be in the format specified by us. The interface of the function to be implemented should be clearly written, and the format requirements of input or output data and input and output data should be specified. Who will perform the operation, how long is the operation performed.
6. After the software is released, it can only be modified three times for free. If you have other requirements in the future, you must sign another contract and pay for the fee. Otherwise, the fee will not be modified.

After so many moves, the customer is also exhausted. The Development Department is excited. But are we doing it? Are customers really satisfied? Why Should customers use our software? Is it just to transfer what they do manually to a computer. How can we replace the speed of computer query statistics with that of manual computing?

Why do customers need such a request? What problems do customers have to solve? Who will think about these problems and how to solve them?

Oh, my God! We can't do anything, because we are technical staff and we don't understand business.

Who will solve this problem?

The programmer smiled bitterly: no one can solve the problem, and no one can solve it. The customer needs to call the boss if you don't do it.

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

To save ourselves, we must walk ourselves out of ourselves. Who puts us in this situation? We all thought about how to save ourselves.

Then we have the courage to come out from our design patterns, Oo, software engineering, virtual interfaces, reflection, persistence, and frameworks. The Development Manager is responsible for the customer Industry Research:
1. How big is the customer industry? How many provinces are there in large, medium, and small scales? What kind of information is the best customer we face? What is the scale and informatization level of our second-class customers?
2. What are the current products of our top-level competitors, local competitors, and lower-level competitors? What are their respective advantages? What are their respective weaknesses? What advantages should we highlight? What are our shortcomings?
3. What are the development history and trends of the customer industry over the past five years, two years, and the next three years? What challenges and opportunities are they facing?
4. We are now working on typical customers, including their organizational structure, staff size, daily business processes for each position, and annual exception handling business processes for each month and every month for each position on a daily basis, the input table for each position per day per month for each position. Common data for each position per day per month is queried. The annual statistical report for each position per day per month
5. Based on the above understanding, how can customers change their positions, responsibilities, and processes in the future in the face of future challenges and opportunities? How can we minimize the number of processes, improve efficiency, and run fast?

In fact, the development manager is equivalent to a business Architect (because we are still a guerrilla group and cannot have a full-time business architect), and the public code developer is equivalent to a technical architect.

Liu Chuanzhi said very well: building teams, setting strategies, and bringing teams. Your team cannot implement any requirement management software, version management software, project progress management software, automatic testing, and automatic integration software.

With a solid business + technology, the function is practical, the function conforms to the customer's operation, and the function is stable. This is the most basic requirement of the software. At this time, we will recruit testers to consolidate the quality.

In addition, testers are familiar with the product and can also provide technical support. In this way, more developers can come to full-time development, and the development professionalism will be improved.

Good products also require good documentation and training. Otherwise, other departments will not receive the products of the Development Department.

Ask a copywriter to write help instructions, create operation videos, create a learning version database, and participate in auxiliary testing (this is very important; otherwise, the copywriter is not familiar with the product, can not write quality text ). With the foundation of these documents, non-developers who are most familiar with the product have two positions: Testing and technical support, therefore, the text should start training at the same time (because he writes his own text and uses his own text for training, There will be various questions during the training, which will further enhance his understanding of the text and products, can write better text. Besides, he is not a developer. He can write it from the user's point of view, and he belongs to the Development Department. He will provide more and better product usability suggestions for product development ).

Now, the Development Department's four carriages have finally arrived. This is the development model I want to talk about: switching from a guerrilla group to a brothers, and moving from a software Workshop

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

We have been using it for a long time. It works very well. It is easy to build a team and it is not revolutionary.

With such a good team, we will be able to produce better software, the quality of software, the progress of software, and the competitiveness of software. Then we will discuss various management software: such as project management software, version management software, Bug management software, and automatic testing software.

Other departments are willing to accept the software, and the implementation and training and technical support of the software have been accepted by other departments. The Development Department has finally become a full-time professional, and the entire company has been very coordinated, and the departments have not framed and complained about each other. The company's development speed is rampant.

The boss looked at the form so well, it was no longer tricky. Bonus benefits follow. The boss looks at the company's product sales so well that he does not have to worry about the company's survival, and does not have to look for orders everywhere to Support the Development Department.

Development. The boss also began to attach importance to the R & D department. The R & D department has a higher position in the company and has more resources and support for the R & D department.

Oh, my God!

Guanyi Technology
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.