It takes more than two years to develop programs!
Make a small summary!
Status Quo,
At present, many software companies in China are still working in small workshops!
After receiving a project, let's discuss how to do it. After the boss decides to make a decision, let's split our heads!
As a result, a project started, and everyone was busy in the early stage!
Everyone has their own jobs (some companies are unevenly allocated. If there are idle people, it means there is a problem with management)
Some simply take over a project by one person!
As time changes, more and more code, and more bugs, more terrible customers have to add a function, more terrible is that the customer has to change the function!
After a person takes over the project, they will basically be unable to support it. If they can work overtime, they will burn incense and worship Buddha! The result is that the project fails. The money cannot be received.
After receiving the answer from the team, they basically work overtime! Whining a blockbuster! Basically, the result is that money can be received or only a portion can be received, and the customer complains constantly!
If your company has the above phenomena, it means your company needs to change
Where do I need change? Development process needs to change
I 'd like to discuss with you a question,
What determines the success or failure of the software project and the quality of the software?
Let's just look at the following. Let's take a look at it later and see if it's the same as what I think!
I checked the software examination outline a few days ago and divided it into three advanced levels.
They are project management, system analysts, and software architects.
I am suddenly enlightened here. The Division of the National Syllabus is justified. I have never thought it certificate is useful. (I still don't know how to use it now. I just want to back up what I will do and make a big eye)
Let me talk about my opinion,
The Project Manager determines that the software project is completed on time. The project manager is responsible for the Subcontracting Arrangement of software development tasks, material and manpower scheduling, and other resource allocation. The only purpose is to complete the project as planned!
System analysts should be the first person to take over the project. This person is very important. It is important that it directly determines the success or failure of the project. if the system analyst Analysis is incorrect, an incorrect requirement is analyzed. result ....
System analysts have high requirements and do not need to write programs, but at least they know the solutions and how the software is implemented. system analysts seem to be important, but they are also competent programmers!
But there are several requirements that programmers cannot do.
First, the communication skills should be very good. Otherwise, how can we communicate with the customer?
Second, I have some program experience and can sum up my actual needs! Discover real needs to avoid demand deviation! If this cannot be done, it is better not to be a system analyst!
Third, affinity or leadership are highly persuasive!
What should I determine after the project passes system analyst Analysis?
First, what functions should the system implement? (after confirmation, the customer needs to sign and add or change requirements will be charged !! ^ V ^)
Second, the order of importance for each function
Third, the meaning of each function
Fourth, a detailed description of each function. Is this clear, not that? The most important thing is not that!
Fifth, use case diagram (the first diagram in UML) to determine
Sixth, the software Price is almost fixed.
7. Where the analysis system may change, there will be a "certainly changed" place (killing changes in the system analysis phase. A good system analyst should be able to analyze which requirements will change)
Eighth, cut down unreasonable or unimportant demands.
So far, whether or not our project needs to be answered can be determined. The amount of money is also determined!
You are not sure about the demand. Do not quote the price. Otherwise, you only have to pay the price!
After confirming the project, we recommend that you first ask the customer to pay a demand analysis fee. After the system analysis is made, you can make your own quotation, and the customer can pay for it with confidence!
The communication between system analysts and customers should be based on the use case diagram. the use case diagram is intended for customers.
Here, you should pay attention to it. Don't underestimate the use case diagram. You must save it and everyone will get it later!
The customer is willing to pay when he sees the use case diagram, and will forget what he said! As the saying goes, it's just plain-spoken and black!
The following work focuses on the software architecture engineer.
What does a software architect do?
Determine the adoption of technical frameworks, environments, system frameworks, etc.
What do software architects need to do?
First, the general description of the system is that one-page Word documents are enough.
Second, the operating environment, hardware, and network environment of the system
Third, the overall architecture and deployment scheme of the system (such as MVC structure, layer-5 structure, proxy structure ...)
Fourth, detailed system design scheme. decomposition technology implementation method.
Fifth, the system data format example, interfaces between functional modules or between different levels, Communication Data Format
// This step aims to facilitate program synchronization development and distribution, narrow the technical scope, and reduce the Coupling Degree of the program. Testers can write unit tests based on these interfaces and data formats. of course, the system integration problem is added.
Sixth, if you encounter a very hot technical problem, you need to understand the solution!
It should be noted that, whether it is "document" or "Graph" or "conference video", as long as the concept of the architect enables the team members to fully understand and absorb the content, considering the convenience of future maintenance and the fact that programmers usually do not write documents or draw pictures, it is easier to accept Conference videos. meeting videos do not need to be recorded every time. architects must discuss technical solutions with other programmers when they are unable to determine technical solutions. this does not need to be recorded. you only need to record the Meeting decided by the architect and then announce the decision to everyone.
The following steps are the starting point of waterfall model or agile development.
It is unreasonable for the traditional Waterfall Model to put the above demand analysis into the waterfall.
What should the project manager do after taking over the project?
First, configure resources, including hardware, manpower, financial resources, material resources, and customer resources.
Second, partition modules, module decomposition, and subcontracting. differentiate the first time, specify the development task schedule // we recommend that you use the agile model to arrange the schedule, and submit the product once a week or a month. The time is too long. too short or bad
Third, assign appropriate modules to appropriate employees. When technology cannot be achieved, you need to hire technical experts for technical guidance,
// It should be noted that if the technical problem of the project is more challenging, you should consider hiring professional technical instructors in advance. for decision-making. moreover, technical instructors can resist technical risks. the Technical Instructor provides a good sniper rifle, but it is not omnipotent. Do not use a technician as an assault gun! Technicians are used for cooperation! Used to solve technical difficulties! It also helps software architects make decisions and make product innovations!
Speaking of this, interns may have to cheer, but they won't! Yes. If you follow this process, there will be no technical guidance. new users get training, product development, and quality assurance. our current situation is that every programmer is required to be a master. I don't know if this is a problem. If a master wants to write code, his thoughts will be very disturbing. everyone is a master, and everyone has their own solutions! The result is two words-chaos. A newbie has the benefit of a newbie, and a veteran has the benefit of a veteran! A newbie is a sniper rifle and a veteran is a sniper rifle! Each has its own purposes!
If the arrangement is wrong, it depends on luck!
Fourth, reasonably arrange the test time and release time.
Fifth, manage the project files and project resources. including source code, source code database, database, hardware, network, operating system, file, runtime environment, and various system-related resources should be backed up theoretically!
Sixth, pour tea to employees. ^ V ^
The following project has reached the actual development stage,
Everyone is doing this step. I don't need to say how to do it?
Cough! Cough!
I want to say something more
The interface and data format obtained from the designer can only be vague to tell us what to do!
It is not clear how many buttons are needed, what controls are needed, what interfaces are needed, tree controls, or drop-down lists, which are determined by each programmer!
In my experience, drawing an interface or writing a test program before you start writing a program will effectively improve your development speed! Program Development failure!
The advantage of drawing the interface first is that the interface design can be specially isolated and designed by professional user experience designers. The user evaluation of the software will be greatly improved!
Here we should be very open-minded. Originally, test-driven development was used here, and user experience design was also used here!
According to the arrangement of the project manager, the product is released every week or every month. What are the advantages of the agile mode? I won't talk about it anymore. It's too much .! ^ V ^
After a period of time, the project is gradually improved!
OK, when all the main functions are completed, a milestone is completed. The project manager will back up
After the main functions are completed, do not rush to the development of the remaining, first stop, go too fast and easy to fall.
The introspection conference will be held. Write the instruction documents and let the user test the documents to promptly modify bugs.
Timely reconstruction of the rebuild. Delete the rebuild in time! Patch of the patch
If the user is extremely dissatisfied, the loss will be smaller.
Or try again or give up!
When the demand changes, everyone's bricks are always oriented to system analysts. If you don't dare to take a picture of yourself!
When we found that most of the Code was just a copy, we had to stop and shoot bricks to the software architecture engineer. Now we will not shoot ourselves!
I found that the database couldn't connect, the network couldn't get through, the keyboard was broken, and there was no tea or water... I called the "Administrator"
If the customer finds your bug, it's time for the boss to take a picture of you!
Five companies can basically be officially developed!
Three people can also, just one person and multiple roles!
The software development process and management determine the software quality!
Requirement analysis determines the success or failure of software.
Software Architecture determines Software Performance (various aspects)
Determines that the software exists with the customer
It is your programmer who decides whether the software can run.
The boss decides how much you get,
You decide not to do this job, but yourself.
You are the only one to choose from!
I have to admit that at present, there are many situations in China where one person is working on a project.
However, this is definitely not the right direction of development.
If you want the company to develop steadily for a long time, you must follow this formal cooperation approach!
Some bosses may say that it is hard to take this project for a good meal. What should we do with the cost? You have to lose money!
If we can't deal with customers, we can start with our programmers!
I want to talk about IT companies.
At present, it is a mess in China, and the layers are not neat!
In order to survive, many companies do everything they want, and even use the method of deceiving customers! At the beginning of the year, the salesman blew around the customer. Everything can be done!
After getting the project, you just need to make a fool of him. The customer doesn't understand it anyway!
This kind of untrustworthy and irresponsible attitude determines that your company is not far away!
It is easy to get started, but it doesn't mean people can get started with a little money!
Chinese people have such a habit. They like to stand on their own and become bosses! I admit that I want to be the boss too.
However, the current demand for the IT industry in the country is not steel, and the market is not that big! Don't start your own company without moving it!
Start a company's market research first! It is estimated that the programmers or big brother have to do Google's market research... another topic !!!!
The hard nut to crack, deceiving customers will only make the entire IT industry step behind the insurance industry!
Exercise caution and caution.
For everybody's rice bowl, for your own rice bowl .....