This interview was conducted by zdnet's Li Ning editor during the 2007.03 month.
[Editor's note]
I recently read a series of articles on the Internet titled "The Immortal wolf-I read The Mythical man-month. Zhou aimin's reading experience on "man-month God. A weighty book in software engineering describes Dr. Brooks's project management experience in the IBM System/360 family and OS/360. In his series of articles, Zhou aimin used his architect's experience as the basis to read the book from his perspective. This also gave me an interview with him, from which we may be able to understand the current situation of Software Architecture Design in Chinese enterprises. Currently, Zhou aimin Is A Shanda network architect. Would you like to share your wisdom with zdnet technical experts? Please contact me leesbfpsj # hotmail.com.
We would like to thank Zhou aimin for taking the time to reply to this interview.
1. Hello, Could you briefly introduce yourself to our netizens?
======================
I have been learning computer since 94, And I have basically learned programming from the very beginning. It has been around eleven years since 96 years of commercial software development. In the meantime, I spent seven years in a software company in Zhengzhou, and after ZTE's death, therefore, we are aware of the value of Engineering and Management in software enterprises, including other types of enterprises. Later, more than a year later than 03 years ago, I was a software department manager in another company in Zhengzhou and began to practice my own engineering and management ideas. Good. Now I have been away from this company for more than a year, and the company is still in good condition. In my opinion, if a team or company does not get worse because of your absence, it is already a benign management performance. Borland Delphi product experts are actually more recognized by a circle than the industry. I have been in the delphibbs.com forum for a long time and have been recognized by some of my friends. When Borland was about to select this expert, I was chosen by everyone, so I got this title. In fact, in my opinion, there are many excellent talents and experts. I am about to be lucky.
I started to work as an architect at Shanda network in September. Borland China also had offer at the time, but I chose the architect role between consultants, software engineers and architects because I was more interested in this role. My current work is mainly about the architecture, design, and implementation of Shanda software platform. Although many people think that Shanda is a game company, I basically do not involve the development of game products.
In terms of development technology, I published "Delphi source code analysis" in 03 years. In terms of engineering, the book "the greatest truths to simplicity-the thoughts of software engineering practitioners" should be published at the beginning of next month. Its first version was published in electronic form. The third book I am writing is about computer language. The subject is "dynamic functional language ".
2. As the architect of Shanda network, please introduce the role of the platform architect in the software project? What are the main tasks?
======================
There are many types of architects. Many people equate system architects with architects. The basic quality requirements of architects are similar, such as analytical capabilities, technical methods of design, and forward-looking design objectives. However, their professional qualities may vary. For example, if I was asked to design the game engine architecture, I would not be able to do well. However, if the game engine needs to be designed as an independent platform layer with language independence, platform integration capabilities, or unified support for different types of games, this is the role of the platform architect.
Specifically, the platform architect determines the relationship between a part and other parts, the interface conventions, and the methods for detecting and evaluating them. If a game engine is designed only for a game, no platform architect is used. But if the engine in game A is to be transplanted to game B, or more games, or even just part of it, as a data interaction layer in a system, therefore, the platform architect is required to consider the technical feasibility and stability as well as the value of the platform architecture for a larger scope-of course, if there is no value, the architect will deny it.
The platform is built for a long time. One of the important responsibilities of platform architects is to carry out long-term planning and continuous promotion. Therefore, the work of the platform architect is always accompanied by the customer's strategic decision-making. If a design only solves short-term technical problems, it does not require a platform architect. However, if it is a general direction for continuous operation over the past few or more years, then, the platform architect should design the Architecture Blueprint around the strategy and decide the implementation steps of the plan. In these aspects, he may need to coordinate many teams to work together. However, this is not to compete with the project manager. Because the project manager focuses on implementation and the architect focuses on planning.
Of course, I actually do some other types of architecture design work. For example, designing a small module or a business workpiece. A good architect will not refuse such work, but will discover the relationship between the whole and the part from more detailed work. Only when the details of specific work are reached can the architect discover potential design risks or deviations from goals earlier.
3. The Mythical man-month book has been regarded as a mandatory book for project managers for more than 30 years. Recently, I have seen a series of related book reviews in your blog. How do you see the relationship between "Project Implementation Rules" and actual project work in the book.
======================
I have mentioned these issues in the article "killing the undead Wolf. In summary, I think there are three points:
I. It is meaningless to discuss the topic "with or without" silver bullet, because the wolf mentioned in the Mythical man-month cannot be killed, and the silver bullet that Brooks imagined is too academic.
2. The Mythical man-month sets this proposition from the perspective of broad engineering. The fundamental and secondary objectives of this proposition are exactly the opposite of specific projects (narrow engineering.
3. I acknowledge that the answers and suggestions described in The Mythical man-month myth are embodied in today's software engineering. However, we should be more conscious about the appearance, answer, and nature, and analyze which are the natural extensions of nature, what is the impact of the mythical man-month-Brooks predicts the future and changes the future, even if it may not.
Unlike most people, I find things more out of the inconsistencies with Brooks predictions. What I see is that it was just when Brooks's proposition was changed or he realized that his "nature" was not necessarily correct that we found some "different successes ". I would like to remind you to pay attention to these cases and their essential differences with traditional and broad engineering.
I am not opposed to most engineering ideas in the Mythical man-month, as well as our practical engineering experience in the software industry. However, narrow-sense projects do not need to pursue silver bullets or things that look like silver bullets. We should be more flexible.
4 what are the key issues that enterprises need to consider when designing the project's software architecture?
======================
The architecture issues during enterprise implementation can be considered in two parts. One is the software enterprise itself, and the other is the target customer of the project (sometimes it is the same as the former ). Basically speaking, architecture design is oriented to customers first, and even the vast majority of the Project is oriented to customers. Because Understanding determines design, it is vital for architects to have an early and in-depth understanding of engineering objectives, application environments, strategic decisions, and development directions as early as possible. Otherwise, architects cannot make effective designs.
Architecture Design focuses on three aspects: stability, continuity, and cost.
Stability is determined by the architect's design capability. The architecture is hard to judge, but the basic rule is "applicable ". If an architecture is not applicable, it will be smaller or more unstable. Therefore, the further inference is that "the architecture must be designed based on the main objectives of the project ". It seems that this is a simple task, but in fact many architectural designs are just working on the edge. For example, it is nice to say one or two so-called "Wonderful parts, regardless of whether the architecture is targeted or not.
Continuity is determined by the architect's position. If you do not know the consistency of design and the authority of architects for such consistency, the best architecture will also face disintegration, and the long-term architecture will be abandoned in the short term. The implementation of the architecture is at the cost of freedom. If the architect does not have enough position (or authority), it is impossible to confront the freedom desires of the implementer. The common failure lies in the good or bad architecture. Instead, the architecture is overhead and virtually empty.
The question of price has been discussed above, but the direction is different. It is noted that, if the architect does not have sufficient experience and cannot accurately assess the resource consumption of the designed architecture, there may be design errors at the beginning of the project; or it may be stuck in the branches of the project, or the key to alienation, which consumes resources in vain. These are all foreseeable and estimated by the architect.
For enterprise design, the above three aspects have not received any attention: delayed projects, half-pull projects, and non-stop additional investment projects. I do not deny the impact of the project manager on these problems, but in fact there may be problems starting from the design, and the project manager is just a waste of time.
Finally, I think most enterprise projects lack architecture considerations. Most software companies only design their architectures for their own needs (such as componentization and scale development. This design is not intended for customers. In fact, this increases the customer's investment and fails to generate value for the customer's projects. This is one of the reasons why I emphasize that the architecture is oriented to customers.
5. What kind of products or methods are your team currently using for Software Architecture Design?
======================
The main output of architecture design is documentation, so there is no special tool to help you design the architecture. Many tools assist in analysis, such as mindmananger. Others may assist your expression, such as together and Rose.
Most technical architects refer only to "software-written things" as tools. In fact, the whiteboard in the meeting room is also one of my tools. Let go of our ideas. Market plans, technical architecture road signs, and features/benefits plans are also our tools. In addition, the model language and modeling language are also the main and formal tools.
I often write documents according to the specifications of the RUP, and occasionally drop some specific formats. These existing document templates are also tools. Of course, there is no doubt that such tools include word and PowerPoint. Many people do not know that 1/4 of my designs are completed with PowerPoint/Visio.
There are a lot of methods, but the application is related to the scenario. However, the first thing to do is layering, which is very similar to top-down structure analysis-in fact, this method is almost necessary in the initial stages of analysis and design.
6. What are the main differences between software architecture design at home and abroad?
======================
As you have shown in this question: we pay too much attention to a certain part of the project.
The foreign software industry has a lot of practical engineering experience, so most programmers, project managers or testers have a much deeper understanding of the project. They are not solely at the current stage, nor do they deny other stages. This means that it is easier for everyone to reach an agreement in the overall implementation. However, software engineering in China seldom emphasizes such cooperation. Project Managers emphasize management, programmers emphasize technology, and architects emphasize consistency and continuity, testers are very happy to see each error and use its quantity as the basis for evaluation.
Obviously, there is a problem: our cooperation is in separate battles. Everyone is emphasizing their importance, so the project cannot be done. The solution also makes everyone aware of the goals and responsibilities of the other party's work, not just the small circle of their own.
7. Can you introduce your current qomo project? How should our netizens participate?
======================
Qomo (Qomolangma openproject) is an open source project on JavaScript. The official version of qomo 1.0 has been released. Qomo V1 expands programming methods such as AOP, oop, IOP, and gp on JavaScript based on its complete implementation, qomo also provides builder and Profiler tools and related libraries.
Qomo V1 is only a small part of the Qomolangma openproject concept-although important. The overall objectives of the qomo project are as follows:
-The qomo kernel is powerful enough to apply general extensions in different JavaScript host environments.
-Qomo has the ability to provide intermediate code for functional requirements in different application environments.
-Qomo can be used as a part of the code package of a customized Host application to improve the application experience or local performance.
Therefore, qomo V1 is incomplete. Even qomo V2 is not complete. V2 plans to provide the component library, database access layer, and graphic presentation layer. In addition, qomo V2 intends to launch several practical projects. On the one hand, it serves as an example of qomo and on the other hand, it also verifies the qomo design.
Qomo has been registered on SourceForge, but it is not active. You can always get the latest qomo news from my blog, including the qomo plan and release of each version. As for participating in this project, please mail me.
My contact info (mail/MSN/Gtalk): aiming@gmail.com
Information related to this interview:
"The path to open source for beginners"
Http://blog.csdn.net/aimingoo/archive/2006/01/27/589274.aspx
Release Notes for Qomolangma. V1.0
Http://blog.csdn.net/aimingoo/archive/2007/02/06/1503015.aspx
The undead wolf-I read The Mythical man-month
Http://blog.csdn.net/aimingoo/archive/2007/03/12/1526396.aspx