The original intention of writing this article comes from what I saw from a blog. He said in blog and firmly said such a sentence: business is always more important than technology. In reality, I always hear such a voice, that is, the biggest factor in determining a software project is not a technical problem, but more business problems. Sometimes we often see that someone warned the identity of "Come": Don't be in the technical details, more about understanding various business.
First of all, I want to summarize my point of view: ie
n If you can succeed, technical factors and business factors are essential
N software project failure, many people are simply summed up for business, but they don't see the problem behind it is that people are trying to figure out this problem.
N-domain knowledge, that is, "business" in many people's mouth is not able to make your ability to grow
n methodology is always more important than simple knowledge
What kind of software project can be successful, in my opinion, a successful software project has the following features:
n Good user feedback, users think this software correctly implements their needs, and can easily use this software
N cost control is appropriate, the software company has obtained the profits required, and users are satisfied with their own expenses.
n Delivered on time, or delivered within the range of users can accept
A software project If you want to succeed, you need all levels of efforts, which is especially important:
N full discourse to user needs
N high quality development talents
N good implementation plan and technology architecture
n suitable team management and development model
These points are the factors that can play a decisive role in implementing software development in implementing software development, which is not possible in a medium or large software development team. If there is no clear definition of user needs, then the development of software is in the north, but lacks talent and technology, a software project is not a way to continue: people will find that there are so many things you can't do. In the software teams of dozens or even hundreds, how effective collaboration has become a headache, solve this problem, and the development process is clearly defined and correct management.
It is important to think that some factors is not as important as other factors, and you will let your software team caught in trouble. Because these factors are not possible, it is better than people who need to walk, is it important to be the left leg is important or the right leg is important? The conclusion is that no matter which leg you miss, you can't walk smoothly.
For "business", I divide it into two aspects: domain knowledge and user needs. The domain knowledge is your industry, this region, some of these customers. And what is user demand, I don't have to explain it.
A software project fails, there may be a variety of expressions, but if we examine those failed software projects, you can find a lot because there is no need to make the user's demand, and the result is inseparable from the user, the software is Forced to modify, the construction period is extended, and the bug layer has an endless final project failure during the process. This is also a more important reason why many people think that they are more important than "technology".
But we have to explore it carefully: What is the reason for us to clearly discover users? I believe there will be a lot of different answers. About this, I will write another article to explain this problem. Here I only want to express my own point of view: there is no good definition requirement, which can generally have two reasons: 1, there is no correct way to explore the user's needs. 2. There is no good mechanism to feedback in time for changes in user needs.
There is no correct way to explore the needs of users, meaning in the software team, demand definition personnel, usually the system analyst's work is not done, and even lacks "will" explore demand. There is no good mechanism to feedback to the needs of users, indicating that the definition of software development processes lacks flexibility, and we look from a software engineering point of view, a good development model, how to deal with user demand feedback, if not, it It is not a good model that does not meet the needs of large software development in modern instantaneous society, and this requires a complete set of methods and systems to protect. If we examine the role of the system analyst in our software development team, we will find that there is no suitable candidate in China, many software teams, more clear, no one has enough ability to give this Character. In this case, it is usually necessary to return, and the development designer or domain expert will work for the definition of user needs.
What have this hazard? The capabilities needed by software developers and demand analysts are different, one is to make decomposition problems, solve the problem, one is the ability to summarize the problem and explore the problem. Therefore, the software development or designer is a system analyst, and it is often unable to see the substance of the problem. So the second option, that is, a field expert to charge the system analyst, but the problem of experts is that he is familiar with the fields of the location, but he is familiar with the past and current situation in this field, and software system What is going to solve how to change the status quo, if the abilities of the predictability and analysis of the integrated judgment, the field experts are also difficult to replace the role of the system analyst.
System analysis is a capability, it requires support of methodology, requires wisdom, the ability to communicate, and quickly understand the ability. However, system analysts do not necessarily have to be an expert, he can consult with other field experts, and to find out the problem.
The domain knowledge is necessary for system analysis, but I want to say is that the "business" than the domain is often hanging on the mouth is more important to analyze your analysis. It is your acquisition and analysis. Knowledge method. There is no way to get knowledge, you can't make it breathless in the face of new matters, there is no way to analyze the problem, you can't see the things behind the users, you can't understand their hearts.
As a system analyst, do not be intimidated by the proprietary noun in the user or expert mouth, because you have a wise mind that can quickly understand the meaning of these rankings, you have a scientific methodology as a tool to analyze them The saying is not meaningful, you have a keen observation, let you see what they think in their hearts.