A good architect is a kind of dictatorship-Wan Xin

Source: Internet
Author: User

An architect is a desirable role for any software developer. Even Bill Gates, the richest man in the world, stepped down as CEO of the company in 2000 and served as the Honorary "chief software architect" of Microsoft. This title shows the appeal of "architect. Architects are the company's "golden leads" and have a very high income. They seldom need to consider survival issues, so they have more energy to think about key technical issues and form a virtuous circle of "stronger and stronger. After some excellent developers have been working for a certain period of time, they should begin to consider the direction in which their future will develop. If the communication skills of developers are superior to those of technical skills, after a certain amount of project management knowledge is added, they can transform to technical management. If it has been very interested in technology, and its communication skills are not weak, you can try to further strengthen technical cultivation, in order to develop towards the architect, and ultimately "build a positive result ".

So what is an architect? The so-called architect should be the highest technical decision maker of a technology enterprise. He is mainly responsible for the formulation of technical routes and technical frameworks for the company's software products or software projects. A good architect is a kind of dictatorship. He has strong skills, good writing skills, good verbal skills, and can communicate at all levels. The growth from developers to architects should be tiered. Generally, developers can only develop simple independent software modules at the beginning of their work. With the increasing experience, he began to contact some modules with information transfer between them. Later, he would find that the development tasks he received were not independent. These tasks were composed of specialized software components, it may contain database, workflow engine, message service, and other functional modules, which may be distributed on different servers. All the parts work together to complete software functions. At this time, the quality of the system structure will directly determine the system performance and scalability. At this time, this outstanding developer also began to think about the issues that architects should think about, or, he made a huge step towards becoming an architect.

What are the most valuable skills of architects? It is to understand different knowledge and be a "Miscellaneous" or "Knowledgeable ". Of course, if your database technology is great, or you have exclusive expert knowledge in the workflow engine, it is also very good. Many good architects have grown from experts. However, this is not what architects should do. What architects should do is to understand everything, both the macro view of technology and the details of technology. Real architects should not only understand software, but also hardware. Replacing software with appropriate hardware in key parts can multiply or even times to improve the efficiency of the entire system. The following describes the requirements of architects in the Internet industry.

The Internet industry is currently one of the most exciting industries. Many innovations come from this industry. Every large website, such as Google, Yahoo, and MySpace, needs to solve a very complicated problem, is the problem of distributed scale-out of websites. To solve this problem, we need the best architects to analyze the business, reconstruct the website using software and hardware, and even develop the corresponding Distributed Technology Based on the business to solve the complex distributed computing problem of the website.

If you want to become an architect in this industry, you must have at least the knowledge of network, hardware, software, website optimization, and other aspects:
Network Knowledge
The current software is definitely not the isolated application that only runs on a single machine. Software not only in the Internet industry, but also in any industry requires it to have network functions. Therefore, network knowledge is essential to architects. Our network knowledge includes not only common software protocols in the Internet industry, such as TCP/IP and HTTP, but also network planning and, more specifically, plan the network based on the geographical environment of the website application. For example, people often say: "The farthest distance in the world Is not the distance between life and death, but the distance from China Telecom to China Netcom." (Laugh) if the application is in China, it is necessary to consider that the speed at which telecom users and Netcom users access the website should be relatively fast. There may be a variety of solutions at this time, such as using CDN (content delivery network) to publish website content to the server nearest to the user, you can also put servers in some so-called dual-line data centers, or even combine several solutions. These are all integrated into network knowledge. As an architect of the company, it is necessary to have a certain understanding of this knowledge to help find the best answer when encountering problems.
Hardware knowledge
Understanding the limits of hardware is a basic skill for architects. I have met some people who have no limits on software and hardware in their eyes. They need to apply for resources and buy more advanced equipment when the system performance declines. However, a large part of the hardware performance depends on I/O devices. These I/O devices rely on mechanical physical movements, which have limits. Therefore, when the resource access volume increases to a certain extent, this physical movement will become a bottleneck. For example, it is important to record the visitor's status during website development. Generally, you can use httpsession to record the status. The storage of httpsession will be a big challenge, especially when the session is shared by multiple hosts, it is a common solution to save httpsession as a file and solve the distributed problem through multi-host sharing or network backup. However, architects must consider that this solution has limits on I/O, it is difficult to expand to a large network that exceeds a certain scale. At the same time, the architect should know whether the recent hardware development has a certain impact on the software system, for example, whether there are new requirements for software programming under multi-core conditions, whether it will affect programs running on virtual machines and non-virtual machines.
Software Knowledge
The scope of Software Knowledge is wider. For the Internet industry, architects should have knowledge about operating systems, databases, and application servers. For example, if the website uses a Linux operating system, you need to understand the performance and limitations of this Linux version. For example, the maximum size of a single file that can be stored is large. Some databases store data in a single file. Although we seldom see that the data in the database is too large to be placed in a record, as an architect, please pay attention to it at all times, there is a possibility. And if you are lucky enough to be in a fast-growing Internet company and your applications are not optimized, you may soon see this phenomenon. This problem may occur because the operating system does not support large files, or because the database does not support large files. In any case, the architect should prepare everything before such a phenomenon occurs. Splitting tables in the database is another difficulty that architects should encounter. Generally, adding an application server is relatively simple, while adding a database server is complicated. If a site is supported by multiple databases, architects need to consider how to ensure data consistency, let multiple databases share the pressure. Some solutions are to separate the read and write of the database, so that most of the query SQL statements do not pass through the core database, but only access the database copy, but in fact, this method can only maintain a small website. For large websites, it is a reasonable solution to improve website scalability to distribute services to different databases and only share necessary data.
Other knowledge
As a system architect, you may also need to know about distributed systems, Server Load balancer, network security, data monitoring, and so on. It is not only about theoretical knowledge, but also about related products and industry progress. For example, the best Server Load balancer product. What are the most common backup policies and their disadvantages. How to Use caching and log analysis.
I just talked about the knowledge that architects need to master. However, it is not a day's cold. This process requires us to gradually accumulate. If you are already in the company for software development, please always pay attention to the performance and scalability of the software you are developing, not limited to functions, always think about any simple problem: what will happen if I develop a module in a multi-person concurrency environment. If you are still a student, do not think that you are far away from the architect's position. You need to know that the journey to become an architect is long, or even lifelong. Therefore, you should enter the learning state early and continue to cultivate yourself. Learn key courses such as discrete mathematics, data structures, operating systems, compilation principles, architecture, and database principles during the school period, and actively seek opportunities for internships and increase your work experience. If you have the opportunity to work in a technology-led company, you must not give up on this opportunity and grow up. Most importantly, you will develop a good habit of focusing on technology and thinking. One day, when you find yourself aware of any technical problem, you can see its nature at a glance and break it down into easy-to-solve modules, you will feel the joy that knowledge brings to you. Maybe on that day, you are already an architect.

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.