A project manager's work log:
On this day, our department's R & D manager called me and told me that our team was going to take over a new project. This project has been confirmed by both the customer and the company's leadership, the final time required for completion is two months, that is, it must be completed before January 1, June 5, and all contracts have been signed. Then, the R & D Manager handed over the customer's fax request to me. I took a look at the requirements, which said:
[Xxx set-top box system requirements]
HTML browser, JavaScript and flash
Email supported
Support playing MP3 music files
Supports notepad, time schedule, to-do list, calculator, English-Chinese dictionary, address book, and other PIM applications.
VOD System
The operating system eventually requires 16 m Doc and 32 m Ram.
...
Most of the PIM (Personal Information Manager) programs have already been written, and the VOD system is a partner product. Therefore, I focus on how to build a better desktop system, integrate the application into a framework.
We first asked the customer about the interface requirements. They replied to us and needed a desktop style similar to Windows and emailed us an image. Fortunately, our original interface is of this style and does not need to be modified too much. I think this project is not a problem and is expected to be completed within two months.
I have probably made a recent plan. First, we should have an in-depth discussion on the desktop system and user interaction, and come up with a solution that will make us proud and satisfy our customers; then, consider the technologies used and design the software; and finally implement the code.
Despite the time constraints, I am still preparing ~ Within four weeks, a user interaction design solution was proposed. During this period, we kept holding seminars, and we put forward a lot of good opinions and crazy ideas. During this period, we also referred to some materials, this includes an article about Sui (Social User Interface) in the computer magazine and a book about interaction design ). During this period, we also discussed the applications to be integrated and the solutions to build the UI system. Finally, we decided:
XML is used as the configuration scheme of the desktop system, providing highly customizable and scalable.
Use netscape4.76 as our browser.
Use browser to implement webmail.
Use some sui ideas to add a desktop genie program.
Always on top is supported to support better desktop features and sprite program requirements.
MP3 and VOD programs are used as the plug-ins of Netscape.
Then, I estimated the workload and human resources:
1. XML Parser (sax-based XML parsing): 1 person-month
2. Window Manager (including XML-based configurable, and total support at the beginning): 2 person-months
3. Table genie program: 1 man/month
4. MP3 program: 2 person-weeks
5. System Integration: 1 person-week
6. System test: 1 person week
(Note: In my subconscious, I work seven days a week ).
But now I only have five people for weeks, and my current staff have been assigned to various projects. At the project seminar, I raised my resource and time questions to the business department manager. The reply I got was that the time could not be changed, and I had to work overtime on May 1, so there would be six weeks. Then, I took one of my team members Lee from another project (long cycle) transfer to my project, responsible for the window manager.
In the end, my project team was composed of four members and a part-time student John (Good level. When we were discussing the interaction design, we started preparing for the XML Parser ), lee is responsible for the window management of the desktop system. Huang is responsible for cooperating with partners to develop and integrate the VOD system. I am responsible for the design of the table genie program and the overall system. Then we started working. (John has completed his XML parser .)
First, we examined the implementation technology of these functions and made a general design: the architecture of the desktop system, module division, and the relationship between modules (including desktop configuration and window management, john and Lee are responsible respectively), taking into account the running mode of Netscape, and how to combine MP3, VOD, and Netscape. At this moment, another week has passed, and we still have five full weeks. Rush!
John and Lee worked overtime for one week with me on May Day. During this period, we went to work all night, went to bed during the day, and played billiards for one hour in the afternoon. We also switched to the best display in the company, which is great. Soon, after the May Day holiday, John and LEE completed their respective modules and basically implemented the functions of my desktop genie program.
At this moment, the user took part in an exhibition abroad, and had a new idea for the interface design they proposed, and sent back some pictures at the exhibition. It should be admitted that overseas design is indeed excellent. Our sales staff in charge of this project made a commitment to the customer without negotiation with me. OK, just change the image. In fact, this is not a problem with changing images. You need to make a small number of code changes in the Desktop configuration management section. I want to raise an objection, but it is too late. Well, re-design and coding. Fortunately, because of the high flexibility of the original design, there is no injury. However, it took several days to rework.
At this time, unexpected circumstances occurred. John made adjustments due to the subject assigned by his mentor, and now he must spend more time on his graduation project, only a few hours at night can come and work on Saturday.
At the same time, the desktop system enters the integration stage. First, we found that Lee and John did not fully consider that the modules of the two of them work in one process. The basis of their original design was that the two modules were parallel, it took three days to re-organize the interfaces of two people and finally run the program. However, the desktop system is very unstable, and core dump often occurs. The bug occurs randomly and the location cannot be determined, GDB reported that the error occurred in the memory management section of glibc. This bug has plagued us a lot. We spent a whole day and a whole night for 24 hours of continuous debugging and checking the code and finally found the error (I will talk about it later in the code review ). Unfortunately, when John was preparing to back up (tar gz), due to continuous combat spirit, he mistakenly deleted the newly modified code, it took more than three hours to modify and verify the last backup.
After this bug is fixed, we hope to submit the desktop system to the system testing department for testing. However, the test department rejects our single application test request on the grounds that they only accept the product test. This single application cannot perform system test, and this test should be done by ourselves. This made me very angry and insisted that the System Testing Department should conduct a single program test, so that we can find bugs in time (instead of making them appear together), which will help us save development time. In the end, everyone is not happy.
We integrated Netscape with desktop and genie programs and found a very serious problem. Because of our previous design (to save memory and concurrently execute multiple applications), we do not start multiple Netscape instances, instead, we use external control to notify the running Netscape to create a new window. However, the Netscape program is often frozen due to inaccurate reasons (it is often suspected that the key code areas in the Netscape program are mutually exclusive during network access, and all Netscape windows are block), causing application freezing and Failover failure. In addition, this external control method has been hard-coded in the module. changing this method will lead to a lot of code modifications. We slightly modified the call logic and the situation improved.
During this period, the VOD program of the partner should be in place. However, unfortunately, the delivery time has been greatly postponed due to the merger of the partner's company. Huang found that the VOD Program often crashed on the test board. He kept in touch with the partner company every day and finally solved the problem.
Next is the integration of the entire system, suddenly we found that the original MP3 player provided by another Multimedia Team uses the Widget-XXX1.0, and we use its 2.0 version, in addition, because the two versions have very different architectures, And the MP3 program uses many features that are not publicly available in Version 1.0, it is very difficult to transplant them. The author of this program is also a part-time employee and has left the company. I have been unable to contact him, his code has no comments, and no relevant design documents are left. We had to decide to rewrite it. I spent four days and three nights and finally completed the MP3 program.
At this time, it was June 5. We told the business department manager that the work had already been completed by 99%, and only integration was needed. Some unexpected situations also occurred during integration: the shell of a small system is different from the B shell in a large system, and some scripts need to be adjusted. The program running the genie is too slow, this has a lot to do with system resource shortage. At last, we had to cancel this genie program. In the case of resource shortage and low CPU usage, Netscape became stiff again frequently... ...
Since June 12, integration is still not final. We have a lot of ideas and benefits to make the system basically run normally. Finally, in June 19, we submitted a scarred system to the system testing department.
The System Testing Department conducted a four-day test, and then used two days to make necessary corrections to the detected bug. All the other bugs were used as the restricted bug, the product was submitted to the user on April 9, June 26. We were surprised to find that the customer's response to the failure to deliver in June 5 was not strong, which made us start to doubt how the dead line in June 5 came from?
The customer gave up the product shortly after receiving the product... ...