Shi Haifeng: IT Architects Are Not Managers, but Leaders

原创 精选
Techplur
Every programmer carries an IT architect's baton in his knapsack. Starting a career as an IT developer, many of the community may have a common ideal to become an IT architect. However, on the way to

Every programmer carries an IT architect's baton in his knapsack. Starting a career as an IT developer, many in the community may have a common ideal of becoming an IT architect. However, on the way to realizing it, a technician should have comprehensive abilities that are not limited to high tech skills but must understand what an architect is and master the core skills required so as to mount the steps of this high-level position.

In this article, we invited Mr. Shi Haifeng, former CTO of the SME business of Beike Finance, to explain his path to becoming an IT architect.

Q: In your opinion, what are the professional positioning and core responsibilities of architects?

A: The nature of an architect is that they are senior engineers whose ability requirements are higher than ordinary IT engineers. In many technology giants with clear job classifications, IT architects are on a specified layer, and it's not difficult for their senior engineers, with rich working experience, to work as architects in SMEs. So there is no need to tangle with the actual boundaries of engineers or architects.

I tend to think that an architect plays a role only in some complex, large-scale systems. When the system architecture is not so clear, there must be someone with a higher perspective to oversee the system as a whole. So this is a high-level position that is difficult to fill or train in a short time as it requires rich experience and some soft skills that could be quite personal.

An architect should be the main engineer of system design and implementation.

In my mind, there are seven characteristics that an architect should have:

Understanding business requirements in all respects as an engineer;

Ability to simplify and abstract issues based on models and underlying patterns;

Proposing appropriate and viable solutions to accomplish clear goals within limited resources;

Meeting business requirements and ensuring system quality;

Scalability over a predictable period of time;

Developing over the system's lifecycle continuously.


Q: What are the core skills that architects need to master?

A: The book "Technical Architecture for Large-scale Websites: Central Principles and Case Studies," written by Mr. Li Zhihui, says, and I quote, "the greatest value of an architect lies not in mastering advanced technologies, but in having the ability to break down a large system into low-coupling sub-modules of business and technology. This ability is partly derived from professional technology and experience, and from the architect's understanding of business scenarios, human nature, and even knowledge of the world."

Therefore, the architect is the technical leader and is responsible for the final design and implementation in a team. In most cases, the actual architecture is constructed after various trade-offs, where an architect is the one to tip the balance. We all know what the ideal architecture looks like, but we have to face reality and make compromises to come up with viable solutions. Therefore, an architect could have idealism in mind but be a realist in nature.


In terms of my personal experience, architects need to have five competencies as follows:

1.comprehensive professional ability and experience in both technology and business;

2.self-driven ability;

3.efficient learning ability;

4.staying positive while facing difficulty;

5.excel in communication and collaboration skills.


A qualified architect needs a comprehensive mindset and should avoid having obvious shortcomings. Among them, knowledge of technology and business are hard requirements, which can be obtained through learning and work. The latter four competencies, on the other hand, are more generic or soft skills that are important for teamwork.

Being self-driven, learning efficiently, and staying positive are the internal skills of an architect, while communication and collaboration are the external work of equal importance. As an architect, you are not fighting alone or being a manager. You have to play a leading role and let everyone understand your ideas through communication, as it will require the team to work together to accomplish the goal.


Q: As an architect, what's your view on system architecture?

A: Quoting from Gerald Weinberg's "An Introduction to General Systems Thinking," a system is a view of the world. The world is diverse, organic, imperfect, and changing all the time. By extension of this logic, architecture is actually a view of systems.

For example, we can consider humans as complex systems, and life can be an information processor. However, different disciplines and theoretical systems may have a different understanding of humans. For example, modern western medicine is divided into the nervous system, circulatory system, digestive system, etc., while traditional Chinese medicine talks about yin and yang, the five elements, and the Zang-Fu organs. When we communicate with others, what they say is information, and our responses are output feedback. Architecture is more than a static view that contains the whole system implementation process, and it should be future-oriented with its design being simplified and abstract. Besides, personal understandings of this process are different, making it difficult to summarize in one sentence.

Continue to expand on this idea, whether dealing with software or hardware, we can disassemble them into elements of time and space, and make conversions between the two. Exchanges between space and time are common practices in the design of architecture that do not have strict boundaries. Ultimately, architectural design should be people-oriented, and we need to think about how the system in different scenarios will impact our users and maintainers. Because our time and resources are always limited, optimal solutions for architecture design can only be found with an in-depth understanding of the business.

And then there is the yardstick for system architecture. First, an excellent architecture should be practical and friendly to users, meeting the demand with outstanding performance. Second, it should have a reasonable structure with a simple design and controllable costs that may impact the development efficiency of the system. Finally, good architecture should also be stable and robust enough to be easy to maintain and decompose. For instance, using different naming rules and interface specifications in a system may lead to disastrous consequences.


Q: As an architect, are there any memorable cases?

A: There are two cases that I still remember. The first is my job interview to join Dangdang, a Chinese e-commerce platform. At that time, I neither knew exactly what an Internet company was like nor had a clear idea of what an architect should do. However, when I was asked how to solve order error problems, I didn't dwell too much on the technical stack but gave a proper and practical solution from the perspective of the system as a whole, from my experience in dealing with similar scenarios in AsiaInfo. That inspired me a lot and gave me a deeper knowledge of architecture and the responsibilities of an architect.

The second one happened a year later, after my joining the company. I worked with another architect, Zhao Zhenlin, to complete a diagram of the overall architecture of Dangdang, linking all the 100+ systems in our mindsets. There must be some missing parts and even mistakes, but I managed to validate my understanding of the overall architecture of the company with this diagram. This made me realize that being an architect you need to “output” and that self-perception is not always reliable. You need to express your personal understanding with words and patterns and then make corrections to your understanding from time to time.


Q: How can architects ensure the quality of development and design in a world of agile development?

A:I used to think about the issue of whether architects are needed in agile models because agile development seems to solve one problem at a time. If we only look at the current issues and ignore the consequences in the long term, we may have bigger problems inevitably. After all, architecture will evolve from time to time, and the goals to be achieved are not up to a specific person. The faster a system changes, the faster it will crumble, which may need to be reconstructed in the short term.

Meanwhile, the original system has to be iterated, parallelized, and then switched off after the reconstruction. That requires doing architectural design. The design has to be forward-looking, so the team can get rid of technical debt and avoid being limited again. Even if the development is agile, you should do a series of reviews, including programs and codes, and conduct performance testing and monitoring to guarantee the quality. Agile development requires strong teamwork where each member should have full knowledge of business goals, architecture principles, development process, and collaboration mechanisms in order to run it stable and fast in practice.


Q: Can you give some advice to aspiring developers who want to be architects?

A: I think architectural design is an art that requires four skills: bearing ancillary work, keeping colleagues friendly, willing to take the blame, and daring to face complaints.

There is no perfect architecture, only the right one. IT staff are easy to be idealistic about at work, as they do not take the ROI into too much consideration and will burn the midnight oil. But what we do is engineering with limited resources, and we should deliver products that meet the expectations before the deadline. Therefore, how we simplify the complex system and find the most effective solution should be given more attention by the IT team. Ultimately, our experience should come from practice.


Q: How to choose the framework for architectural design?

A: There are many frameworks for architectural design. In the introduction part of Enterprise Business Architecture Design, Mr. Fu Xiaoyan, who is the author and has been an architect in the financial industry for over 20 years, has listed a few for readers. But no matter what the system is, it is just a method to achieve goals, and we should not be limited by the system's classification. Instead, we should learn more about the inside thinking patterns first, as it may help us choose a more applicable architecture system and dive deeper into it.


Q: Do architects need to have experience as product managers?

A: It's not a determining factor if you do not have experience as a product manager. From the perspective of personal development, you just need to care about your personal work at the beginning of your career. After three or five years, you may need to consider differentiation and expertise, which require a deep dive into a certain field and becoming an expert. Later, it is necessary for you to deal with more people and have the ability to think from others' perspectives.

You need to have sensitivity to the input and output of different roles, so as to create more value for the team. An architect should know the tasks of each team member, and not be limited to their own areas of expertise. You have to have the whole team understand your thoughts on the architectural design and then enable them to cooperate in an efficient manner.


About the Guest

Shi Haifeng, former CTO of the SME business of Beike Finance, was in charge of product planning, technical team management, and system construction.

After his graduation from Beijing University of Chemical Technology in 2001, Shi worked on the integration of business support systems in the telecom industry. His former employers include Digital China and AsiaInfo. He also participated in various projects for China Mobile and China Unicom, with rich experience in the development and implementation of large-scale business systems.

During his time in Dangdang since 2012, Shi was responsible for the overall architectural planning, technical specification formulation, and technical pre-research promotion. Shi is an expert at understanding complex business requirements and proposing innovative solutions. He has designed solutions for many key projects while transforming and optimizing system architectures. Shi was in charge of the organization and management of the technical committee, which discovered best practices, promoted technical innovation and open source products, and organized exchanges among technicians both internally and externally.

In 2017, Mr. Shi joined a leading online food delivery service platform in China, Ele.me. He was the leader of product development in the technological innovation team and completed a range of inspiring products.

He became the CTO of the SME business of Beike Finance and was in charge of product planning, technical team management, and system construction for the company’s financial services.

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2022-08-30 22:45:36

gamesmetaverseAR

2019-07-25 11:26:37

Micro FocusGartner应用安全测试

2023-01-05 15:57:02

Gartner阿里云云数据库

2018-04-09 22:23:25

Aruba有线无线局域网
点赞
收藏

51CTO技术栈公众号