Cultivation of System Architects [reprinted]

Source: Internet
Author: User
Document directory
  • Several books that Java System Architects should read
  • System Architects of enterprise applications should pay attention to several aspects
  • System Architects should have the following qualities:

Recently I have applied for a System Architect. I have answered some questions during the interview. I have searched some articles and found some articles. I feel it is necessary to summarize how to be a successful system architect?

First, what is a System Architect?

IBM engineers:
The primary responsibility of architects is to provide shared communication media between developers and project managers. They are responsible for adapting business rules and requirements to engineering practices and restrictions to ensure success

The description on the Chinese wiki is as follows:
The System Architect is responsible for designing the overall architecture of the system. Every detail from the requirement to the design should be taken into account. The whole project should be grasped to make the design project as efficient as possible, easy to develop, easy to maintain, and easy to upgrade.

The two explanations add up the definition of the System Architect.

Several books that Java System Architects should read

Thinking in Java
Valid Java

UML basics, cases and applications
UML entry-level improvement

Software craftsman
Design Pattern-Basis for reusable Object-Oriented Software

Refactoring-improving the design of existing code
Agile Software Development-principles, models, and practices

Enterprise Application Architecture Model
Expert one-on-one J2EE development without EJB
 
Software Engineering-research methods of practitioners
Software leadership-Guidelines for successful software development

The next two books are actually part of the project manager's scope, but they are not very in-depth. It is very helpful to look at the successful system architects.

System Architects of enterprise applications should pay attention to several aspects

Design of Data Persistence Layer
Before Spring and Hibernate and ibatis came out, almost every company had its own method and architecture, and 50% of the architect's energy was also concentrated on it, EJB only adds the burden on architects. After spring came out, most architects were freed from the useless effort to design the wheel repeatedly. Rod's wheel is so easy to use. Basically, you just need to set it up. Or, the most important thing left is to select an open-source project suitable for the database connection pool.

Specific design of MVC Architecture
MVC is just a summary concept. There are many specific technologies to implement, and the most appropriate architecture is designed according to the project.

High concurrency access
When cache is used, cluster technology is used to prioritize the use of Server clusters when the data volume reaches a certain level, followed by hardware clusters, and finally the application itself is added to the cluster function.

Large data size returned results
Use paging as much as possible, optimize SQL statements, share objects as much as possible when processing data cyclically, retain only key data, and release memory usage in a timely manner

Reading and generating ultra-large files
Read and analyze large files as quickly as possible. How to release memory in time when writing large files. Learn to use the command line resources of the operating system to complete tasks faster.
 
Multi-thread application and management
Thread pool management and monitoring, thread startup (including timed start), end, recycle, and thread resource release
 
User Interface Availability design
Balance speed and availability, use Asynchronous and synchronous technologies appropriately, and focus on displaying key data

Distributed Data exchange and integration
Select an appropriate data interaction method, from the most extensive and inefficient web service to the most practical file sharing

Cluster System Management
How to Ensure cache synchronization? How to Ensure the uniqueness of objects? How can we ensure synchronization between machines?
Is EJB used? How to Use J2EE features (such as JNDI)

Complex Business Rules
Scenarios and Applications of Rule Engine and workflow engine
 
In fact, as a real System Architect, it should not be limited to enterprise application systems. Such systems often have database limitations. Sometimes, we should consider whether they can be horizontally crossed, directly consider the architecture of other systems. Without rich practical experience, you can provide effective design guidance by simply looking at the systems and code of others.

For example, for a software download, consider the following:

1. unchecked and invalid URL verification. allowed for download failure, information record
2. Download an object with multiple threads. Split and splice the object, and splice the lost part of the part.
3. Download thread management
4. communication protocols between servers or P2P machines
5. Speed monitoring and restrictions
6. Monitor and display the download progress

As an online playback software, you can consider the following:

1. Guaranteed playback speed
The machine problem basically does not exist. The key is the network problem. How to detect the network speed and buffer enough content based on the quality of the video to ensure smooth playback.

2. Guaranteed playback Quality
How to Use DirectX and other technologies to achieve the fastest rendering is to write the underlying layer by yourself or use existing APIs

Since I have never done similar projects, there are still a lot of things to write.

System Architects should have the following qualities:

1. practical programming experience
For at least two years, I will not talk about it any more. In fact, if I start to study at the university,

2. written and verbal communication skills
Using structural diagrams, UML diagrams, text and code snippets to express your own design ideas, word or PPT should be a good choice.

Among developers, it is found that the most valuable standard for architects is effective communication. You need skilled and experienced developers who need to have experience communicating with the business issues in the project. Architects often have to predict the gaps in understanding before they can contribute. They must be willing to overcome the difficulties to ensure the integration of technology and business perspectives. They do not have to plan and coordinate the exchange of views; this is still the work of the Project Manager. Their task is to determine the best tools and components for expressing system design to facilitate effective exchange of views. They must be able to determine whether the current method is insufficient and the new method is required. Writing skills are also very important. You also need to be able to make a sketch or use the drawing software.

3. Be proactive and actively solve Design Problems
The architect's daily work objectives are often unclear. Many developers directly refer to the functional specifications to list tasks. Architects usually provide these developers with the structures they need to improve their work efficiency as much as possible. Good candidates not only conduct communication work, but also anticipate various design issues and solve them-they are generally consciously carried out without any specific instructions. Regardless of the assigned responsibilities, developers who actively participate in the project have the opportunity to stand out from those who work together.

4. abstract thinking and Summarization
Architects, as the name implies, must have a sketch in mind before the system is built. If you want to transform the existing system, you can summarize the architecture characteristics of the system after reading the system documents (if any) and code.
Architects must be able to understand vague concepts and turn them into project components that can be understood by relevant parties. They must be able to understand abstract concepts and communicate with them in specific languages. Good candidates among developers often require or actively explain problems that are easy to confuse during the development lifecycle. They can quickly evaluate various ideas and incorporate them into operational recommendations for subsequent work.

Developers often have strong mathematical skills, while good Architects tend to show stronger verbal skills. Managers often say that developers are "engineering aware", which is a very meaningful aspect for evaluating architects. Architects should be able to solve technical problems, but they must be able to obtain more comprehensive information about how people interact with the technology. This requires a certain form of abstract thinking (instead of code details), which may be difficult to form.

5. Comprehensive Technical Information Absorption and selection and identification capabilities
As a developer, the research capability for a specific problem (although many people have summarized it as Google) is quite good. However, the ability to fully accept and selectively gain an in-depth understanding of technical information and make the right judgment. Those technologies are nothing more than manufacturers' gimmicks, and those technologies are actually usable projects, to improve the quality of the project, this capability is indeed crucial.

From: http://www.kuqin.com/pragmatic/20070821/542.html

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.