One and a half months of software development experience
-- Review the past to help you understand the future.
Nine days Yan Ling
For programmers (themselves)
C ++ experience:
1. Virtual analysis is required for the base class.
2. The method of separating C ++ interfaces through header files and CPP files is not perfect, but adding pure virtual interfaces is almost perfect.
3. When the function is called, the original function information is pushed into the stack, ESP is assigned to EBP, and EBP is pushed into the stack. (Do not remember correctly) a sequence of original function calls will be formed in the final stack. It can be traced back to the main function.
4. Always know that Unicode and ANSI cannot be confused, or even passing a parameter will cause problems. Debugging and release cannot be mixed. Otherwise, problems may occur.
Windows experience
1. Exception Handling in Windows C ++ actually calls the structured (SHE) exception implementation.
2. In Windows, you have a set of API functions that call functions when a program exception occurs. You can specify the processing method when an exception occurs.
3. Dump can be implemented using the writeminidump function. The dump file can be used to open debug directly with vs2005.
4. Windows has a family of functions that obtain the system status when the program is running, including CPU information, memory information, and user computer information.
5. network communication is very advanced when you are not familiar with it. There are only a few steps.
Others:
1. The file is nothing more than binary code, whether it is one byte processing or serialized. As long as you know that it is only a binary code and know the meaning of each byte, it can be processed in the same way.
2. What is important for software development is to see the requirements clearly. You can use case analysis to find out the use cases and use case-driven development. Unclear requirements can only lead to poor design, resulting in the final large-scale modification.
3. Poor design may be caused by unclear demands, and poor design may be caused by lack of overall control over implementation. For example, I set the Unit for reading and writing files to a DWORD.
4. File packaging is nothing more than recording document information in the document header, finding the index table, recording the file information in the index table, and finding the file. No matter how many files are put together, the effect is the same. The files read from many packaged files are the same as those of a single file. They are nothing more than binary code.
5. The file must be opened in binary format during serialization, otherwise it will appear in 0x. 0a (A carriage return character) when a 0x0d is added to the front, you do not know why when debugging reaches you. Even if you give 0x as an integer 0a To serialize, Windows will add 0x0d to you.
6. When a design is fixed, it is not a major problem and should not be changed at will, because the people below may change a lot because of a seemingly small change.
7. The document is not for you but for others. Good documentation can save you time explaining to others. Good documentation should be available in a few months and several years later, so that you can quickly learn what you are doing.
8. outline the design of distinguishing the module relationship and interface, and design the class relationship and implementation process in detail.
9. Find out what you need to do before you start.
10. Do not blindly encode the Code if the implementation process is unclear.
11. I would rather have assertions than inexplicable errors. Rather than compile-time errors. When an error occurs during running, you can easily know what the problem is. (Error code)
12. There is a man named Steven in the world. I should read all the books he wrote as a development server.
13. although I had a predicate about Hou Jie after reading his own article about high price, I should not deny that his translation and his book are both good, it should be viewed.
For project managers (directors)
1. A good project manager can take the initiative to take responsibility rather than shirk responsibility when training the boss. In this way, subordinates will follow you with all their hearts.
2. When assigning tasks, let the subordinates understand what they should do and what they should not do. At this time, they should spend 1 minute to save their subordinates a day.
3. Understand the capabilities of subordinates, know what they do, and what they cannot do. The part that cannot be done well cannot be forced, and it is impossible to initiate a cross-stage even if it is trained.
4. For a complex system, you can first implement a simple but passthrough system, and then consider further optimization and function improvement. (For example, when reading and writing files, you can first read and write files, and then consider multipart operations)
5. Only rational assignment of tasks can mobilize the enthusiasm of subordinates, rather than cracking down on enthusiasm.
Boss
The boss has two methods:
Easy: Believe in the project manager and focus only on guiding the project manager's work and what it should do.
Tired: Instruct the project manager and everyone in charge of the project manager.
It is easy and natural, but requires sufficient trust in the capabilities of the project manager, and the Project Manager does need enough capabilities. The advantage is that the roles and responsibilities of the subordinates are clear. The subordinates only have direct superiors, their tasks are clear, and their instructions are clear. There will be no inconsistency between the boss's instructions and the project manager's instructions, confusion caused by approval on both sides. The disadvantage is that you cannot understand and guide each implementation and grasp the development progress and implementation details. It is out of touch with indirect subordinates and cannot understand them.
Tired, the technical strength is required to be very strong, not only to have a general picture of the entire large project, but also to have a general view of each small module in the large project, in addition, you can have a sufficient understanding of its implementation details and opinions on its advantages and disadvantages. The advantage is that it can ensure the overall performance of the project, master the development progress, and understand the capabilities of each subordinate and what they are doing. When subordinates do not consider the overall situation, they can correct the situation in time, which is also conducive to their own knowledge, views, and views. The project manager directly transmits the views to the subordinates at the next level, it is beneficial to cultivate employees' working abilities. The disadvantage is that it is easy to confuse the instructions of its subordinates when there is insufficient communication with the project manager. It is also too tired to make wrong decisions when there is no clear understanding of the details.