On "business" Factors in software projects

Source: Internet
Author: User

The original intention of writing this article comes from what I saw on a blog. on his blog, he firmly said this sentence: business is always more important than technology. In reality, I have always heard this voice, that is, the biggest factor that determines the success or failure of a software project is not a technical problem, but more a business problem. Sometimes we often see people telling the future as "people who come over": do not be obsessed with technical details, but learn more about various businesses.

 

 

First, I would like to summarize my point of view in a few words:

If a software project succeeds, both technical and business factors are essential.

N an important cause of software project failure. Many people simply fail to find out what the business is, but the problem is that the method is incorrect when people are trying to figure out the problem.

N field knowledge, that is, the "business" in the mouth of many people, cannot make your ability develop greatly.

N methodology is always more important than pure knowledge

 

 

What kind of software project can be successful? In my opinion, a successful software project has the following features:

N good user feedback. The user thinks that the software meets their needs correctly and can be conveniently used.

N cost control is appropriate, software enterprises get the profit they need, and users are satisfied with their spending

N delivery on time, or the delivery time is within the user's acceptable range

To succeed in a software project, efforts at all levels are required. The following are important:

N fully explores user needs

N high-quality development talents

N good implementation solutions and Technical Architecture

N suitable Team Management and Development Modes

These factors are all factors that can play a decisive role in implementing software development for a software team. These factors are indispensable in medium-sized or large software development teams. If there is no clear definition of user requirements, software development is nothing but lack of talent and technology. There is no way to continue with a software project: people will find that there are so many things they cannot do. In a software team of dozens or even hundreds of people, effective collaboration has become a headache. To solve this problem, we need to clearly define and correctly manage the development process.

 

 

Think that some factors are less important than other factors and will put your software team in trouble. Because these factors are indispensable,Just like a person who wants to walk requires two legs, is the left leg important or the right leg important? The conclusion is that no matter which leg you are missing, you cannot walk smoothly.

 

 

For the entire term "business", I have divided my understanding into two aspects: domain knowledge and user needs. Domain knowledge is the industry in which you are located, and some common characteristics of these customers in this region. I don't need to explain what the user needs are.

 

 

A software project may fail in many forms. However, if we look at the failed software projects, we can find that many of them are in a rush for development because the user's needs are not clearly identified, as a result, the customer is dissatisfied, the software is forced to be modified, and the construction period is extended. During the extension process, bugs are endless and the last project fails. This is why many people think that "business" is more important than "technology.

 

 

However, we need to make a closer look: What causes us to be unable to clearly explore user needs? I believe there will be many different answers. I will write another article to address this issue. Here I just want to express my own point of view: there is no good definition requirement, there can be two reasons in general: 1. There is no correct way to explore user needs. 2. There is no good mechanism for timely feedback on changes in user requirements.

 

 

There is no proper way to explore user needs, which means that in the software team, the demand-defining personnel, usually the system analyst's work, are not fully done, and even lack of "will" Exploration needs. There is no good mechanism to provide feedback on user requirements, indicating that the definition of the software development process lacks flexibility. From the perspective of software engineering, we have a good development model, how should we respond to user demand feedback in advance? If not, it is not a good model and cannot meet the needs of large-scale software development in a modern and ever-changing society, A complete set of methods and systems are required.

 

 

If we look at the role of system analyst in our software development team, we will find that in China, many software teams do not have the right candidates and are more specific, no one has the ability to assume this role. In this case, it is usually the second step, where developers or domain experts define user requirements.

 

 

What are the disadvantages? The capabilities required by software developers and demand analysts are different. One is the ability to resolve and solve problems, and the other is the ability to summarize and explore problems. Therefore, the essence of the problem is often invisible when software developers or designers act as system analysts. So there is a second option, that is, a field expert acts as a system analyst, but the problem with the field expert is that although he is familiar with the field, however, he is familiar with the past and the status quo of this field, and the software system should solve the problem of how to change the status quo. If the ability to predict and analyze and judge the status quo is lacking, it is also difficult for field experts to replace the role of system analysts.

 

 

System Analysis is a kind of capability that requires the support of methodology, wisdom, communication, and rapid comprehension. However, system analysts do not have to be field experts. They can consult with other field experts and discuss with them to find out the problem.

 

 

Domain knowledge is necessary for system analysis, but what I want to say is that your analysis method is more important than domain knowledge, that is, the "Business" that many people often talk about, it is your method to acquire and analyze domain knowledge.There is no way to acquire knowledge. You cannot face new transactions without being overwhelmed or analyzing problems. You cannot see the things that follow your meaningful or meaningless descriptions, you cannot understand their hearts.

 

 

As a system analyst, never be intimidated by the terminology in the user's or expert's mouth, because you have a wise mind that can quickly understand the meaning of these rankings, you have a set of scientific methodologies as a tool to analyze whether their statements make sense. You have a keen observation to let you see what they think.

 

 

Many software companies are engaged in applications in one or several specific industries. Many software engineers or people who are just starting to engage in system analysis will hear such advice from others: our business in this industry is as complicated as Niu Mao. You must learn more and do not stick to technology. These statements are correct, but they ignore one point: domain knowledge is important, but the most important thing is the method of discovery and analysis. If you simply learn the knowledge in these fields, rather than exploring and analyzing the knowledge, and more importantly, do not master the methods to explore the knowledge, the knowledge you have mastered will soon be eliminated. The knowledge you have mastered will not play a major role in your development in other fields, it does not allow you to develop your capabilities. The methodology is universal. This is like a programmer. If he is obsessed with some elements of a programming language, such as how to print the file, how to connect the socket, and not thinking about the programming ideas hidden behind it, without thinking about something common in a language, the language he is familiar with will be eliminated one day. At this time, he will find that learning new technologies is so time-consuming, because he is only pursuing some one-sided things.

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.