Ancient Cloud: "Live to old, learn old." "The internet is one of the hardest industries," overtime "for engineers is already" routine ", while the Internet technology is changing rapidly, many engineers are struggling to cope, complain unbearable. It has long been a widespread misconception that 35-year-olds are the end of a programmer's job.
How to do a good job in the busy technology accumulation, the construction of personal core competitiveness, I believe that many engineers are thinking of the problem. This article is a summary of my own, trying to answer from three aspects:
The first part expounds some principles of learning. At any time, following a number of tested principles is an important factor affecting efficiency, and the right approach is the secret to success. Another important factor in improving work and learning efficiency is the release of confusion and a good mindset. The second part analyzes some typical puzzles that I have encountered and seen in my work. Being a good architect is a phased goal of most junior-level engineers. The third part analyzes the architect's ability model, so that we can have a clearer understanding of the ability of the target.
As a developer, there is a learning atmosphere with a communication circle is particularly important, this is a My iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside test, interview experience, discuss technology, we exchange learning and growth! Hope to help developers less detours.
How to learn
In the busy work, perseverance, continuous learning and progress is a difficult task, the need for strong perseverance and determination. If the method is not appropriate, it is less. Fortunately, our Ancients and now philosophers have summed up a number of excellent learning methodologies, which summarize some important principles. Following these methods will certainly be of great benefit to everyone's work and study.
You're sticking to it.
It has been reported that the amount of knowledge over the past few decades exceeds the sum of thousands of years of human knowledge. The computer field is definitely one of the fastest-growing fields in the modern world, so engineers must accept the fact that the deep knowledge system now in hand will soon be eliminated. To continue to be an excellent architect in the field of computer science, we must learn and master the latest technology constantly. In a word, it is not possible to learn.
The so-called "Rome, Cold day, stones, non-day work", the road to the architect is long and arduous, easy to give up, then all the pay instantly wasted. To be an excellent architect, you insist! Although the knowledge is quick to update, but the basic theory changes very slowly. This is the "Tao" and "Elephant" relationship, is the world's Vientiane, Tao but original aim. For those very basic theoretical knowledge, we need to review often, that is, "learning and time learning."
Focus on Practice
The Ancients Cloud: "The paper to get the final feeling shallow, must know this matter to preach." "There are so-called 721 models in the field of study: Personal growth 70% comes from post practice, 20% comes from learning from others, and 10% comes from training. Although this theory is controversial, it is generally good for engineers to prioritize the importance of practice, learning, and training. So attaching importance to practice and growing in practice is the most important learning principle.
There are two kinds of cognition in human beings: perceptual cognition and rational cognition. These two kinds of cognition are irreplaceable to each other. The practice is to a great extent from perceptual learning, reading more like rational learning. As an example of learning to drive a car, it's hard to imagine someone who can drive a car just by learning a book knowledge.
Book knowledge is mainly preaching----------the abstract archetype, and the narration of its specific application is often vague, and the relationship between the abstract prototype is also scratched. Using the same exact language to describe application scenarios and relationships will lose focus and make people feel confused. So it's like walking with one leg just by reading to get growth.
Emphasis on practice, the full use of perceptual cognitive potential, in the project to temper themselves, is the right way to learn. In practice, in some of the key actions of deliberate practice, will also achieve a multiplier effect.
Focus on communication
Newton said: "If I look farther than others, it is because I stand on the shoulders of giants." "We need to learn from others. Learning from teachers, leaders, colleagues, subordinates and even opponents is an important means of rapid growth. Learning from teachers and leaders is already a part of people's living habits. But it's also important to learn from colleagues and even opponents, because these people are more like ourselves. So take a lot of observation, take its director, abandon its short. For the team of younger brothers and subordinates, also want to "fools".
In addition, it is important to be actively involved in specific programme discussions in the project. The participants had a priori perception of the relevant background, and the views and recommendations discussed were also integrated with the speakers ' diverse knowledge and skills. Therefore, the discussion allows participants to understand the book knowledge in a very comprehensive and three-dimensional manner. At the same time, with the expert discussion, their views will be like pruning machine cutting branches, quickly cut off their knowledge in the field of doubt points.
Emphasis on summary and output
Engineers in practice will master a lot of details, but, even if mastered all the details, but not a deep summary and thinking, will also fall into the "learning without thinking" situation. The "quantitative change" of growth comes from the gradual and deep control over details, and the real "qualitative change" comes from a deeper understanding of the Tao.
It is a high-level summary to export experience and accept others ' tests. This kind of output not only helps others, but also is beneficial to themselves. There are many ways to summarize, including organizing and sharing, writing technical articles and so on. Of course, "Day provinces" is also a good way to summarize. In short, a lot of summary, a lot of sharing, good great Yan!
Answering other people's questions is also an important means of personal growth. Sometimes, a problem itself is not very understanding, but in explaining to others, but suddenly enlightened. Therefore, "indefatigable" benefit people.
Those tangled puzzles.
Life is a marathon, in the long journey, there is inevitably a lot of confusion. Confusion is like a yoke that makes us stumble, and confusion is like a deadlock that keeps us stagnant.
Next I'll summarize some of the typical puzzles I've encountered and seen in my work. These puzzles have long plagued the author himself, or troubled my colleagues and friends. When these puzzles are relieved, everyone feels as if they were released, providing a full amount of positive energy for the next stage of the journey. Life is like a journey, do not care about the destination, care, should be the scenery along the way, as well as the mood to see the scenery. A good mindset is the best companion for the technology journey. Hope that through this journey of doubt, let everyone have a happy mood to feel the long learning journey.
A cruel reality must be acknowledged: human life is limited, but knowledge is limitless. To learn infinite knowledge with limited life is impossible to accomplish. In the thought of this, some engineers inevitably produce some pessimism. If the method is proper and diligent enough, it is not necessary to grieve.
Although, the whole knowledge system of mankind has been expanding. But in many important engineering subdivision areas, the basic theory is not advanced. Many important areas of the computer, engineers have the ability to seize the core of the key within a limited time.
For example, cryptography is considered to be a very advanced discipline, but a large class of cryptography is based on a very simple theory of number-factor decomposition: Given two primes, it is easy to work out their product, but in turn given the product of two primes, the computational amount of decomposition is very alarming.
"Consistency" is the most classical problem in the computer field, it is the basis of all distributed systems, from multi-core multi-CPU to multi-threading, from cross-machine to cross-room, ubiquitous, almost all computer practitioners are solving this problem, but Paxos gives a very elegant solution.
Rights Management is a nightmare for many engineers, but if you can handle Attribute Based access control (ABAC) and role-based access Control (RBAC), it can be quite high.
In addition, technical learning is a game, although the study, beyond the majority of opponents is a victory. Therefore, the right way of learning, long-time investment will form a core competitiveness.
There is no absolutely brilliant technology, only the real master
Engineers who are committed to technical success are dreaming of becoming a technology expert someday. But there is a big controversy over the standards of technology gurus. This is a long history of misunderstanding: the mastery of a certain technology as a technical master of the judging criteria. I often encounter situations where some engineers are self-styled as masters of certain technologies, such as spring, Kafka and Elasticsearch. Some engineers admire other teams because the team is using some kind of technology.
There are several reasons for this misunderstanding: first of all, the technology is not pressure, the technical nature is the more mastered the better, mastering a lot of technology is not a rookie. Second, before the advent of the Internet era, access to information was a very expensive thing. This leads to the mastery of a skill that brings an advantage to individuals and even to the entire company. In the internet age, the emergence of various frameworks and the popularity of open source quickly eliminated or reduced the value of many skills, while reducing the learning threshold of many technologies. So, at present, mastering a skill knowledge can only be a short-term goal. Those who are complacent with certain skills need to remember that pride makes a person go backwards.
The so-called perfectly formed. If you were to be the creator, the complexity of designing sparrows and designing elephants did not differ significantly. A seemingly small business need, in order to achieve the ultimate, the required technology and capabilities are very comprehensive and advanced. The real master is not holding the technology to the card customer needs, but to listen to the needs of customers, to provide solutions for excellence. The completion of customer demand is a showdown, the real master, is to meet recruit demolition recruit.
Can't you grow without a project?
Learning in a project is one of the fastest ways to grow, and many engineers enjoy the process. But all the while doing projects, you may be in an outsourced company. For a company to do products, if the year to the end of the project, or else in the initial stage of entrepreneurship, or do a lot of failure of the project, in short, is not considered a particularly ideal state. Normally, there will be some non-project time between projects. In this period of time, some students will be confused, growth is very slow.
Is the project really more the better? The answer is clearly negative. Repetitive projects will not bring new growth to the engineers. Constantly doing projects, thus lack of time to learn new knowledge, will lead to "do without learning is dangerous." What really makes an engineer Excel is the depth of the project, not the constant project. Therefore, in the gap between the project, engineers should cherish the rare respite of the machine, in-depth thinking, the project to do deep, do fine.
How to improve the depth of the project? In general, any project has a goal, when the project is completed, the goal is basically achieved. But is the customer really satisfied? Is the availability, reliability, scalability, and maintainability of the system so extreme? The answers to these questions are always negative. Therefore, any valuable project can be dug in deep. Deep-digging projects, in-depth thinking can also exercise the engineer's creativity. The person who expects to do the project constantly, like a person who is committed to training more maxima, cannot invent a car. Exercising creativity is not an overnight thing, it takes a long time to think. In short, engineers should always feel that time is not enough, after all, time is the most valuable resource.
Is the responsibility really small?
Most of the time, the number of systems an engineer is responsible for and the size of the team is positively correlated with its "lake status". However, the status of lakes and rivers is not necessarily associated with technological growth. The key to improving technical capabilities is the depth of the project and the customer's critical level. The more projects, the less time invested in a single project, and the easier it is to be superficial. In particular, it is necessary to avoid the situation of "not seeking his own political position". The larger the team, the more energy you need to invest in management. In the lack of mature management skills, technical vision is not high enough to force the large team, may lead to personal struggle to cope, the team has no achievements. Eventually "one will be incompetent, exhausted the armed forces", the effect may backfire.
From a technological perspective, technology managers should focus on the number of active projects they can control and work to improve the impact and technical depth of active projects. The number of teams should be matched with personal management ability, planning ability and demand control ability. A job for many people to do, everyone's growth is limited. Everyone does a simple, repetitive job that has no benefit in technology growth. Team management and project management need to be gradual, avoid "destructive enthusiasm".
Must you be the Boss?
Some engineers ' life ideal is to be a team of technology boss, which is certainly a commendable ideal. However, if the entire team technical ability, development potential in general, and you are the most powerful technology, this is not so much luck, rather sad. This scene is called "Fornicated shop". It is not impossible for a team to be a top technology player, but in order to continue to grow, there are a few conditions to meet:
First you have to be the top expert in the industry-it's hard to find someone stronger than you!
Second, you often have to take on the task of challenging your own abilities, but at the same time you have a team of smart and capable teammates. Although you have the highest technical skills, in areas you are unfamiliar with, your teammates can explore and expand the knowledge of the entire team.
Finally, you have to members Doukua, fools.
Otherwise, joining a stronger technical team may be a better choice, at least not something to be proud of.
Platform is considered to be "tall on" synonymous with a lot of engineers to crush the head to and "platform" to touch the edge. However, compared with other business requirements, there is no intrinsic difference in platform requirements. Whether it is platform-based or general business needs, its value comes from customer value. The different points are as follows:
Many of the platform requirements of customers from the technical team, the general needs of customers from the business side.
Product managers are different. The general business needs from the product manager, the platform needs of the product manager may be the engineer himself. Long been the product manager "oppression" of the engineers, in the platform finally found "turn over the serfs to sing" feeling.
Many of the platform's concerns are access capabilities and scalability, while the general business focuses more.
In the final analysis, platform is a kind of common demand. Before implementing the platform, you must avoid the following two myths:
The platform is definitely not a stack of adjectives such as "unified" or "comprehensive". Whether it needs to be platform-based, should be considered comprehensively: the number of customers, to solve the problem for customers, and whether customer value is worth the investment platform.
Platform is not you do platform, let customers to serve you. Some platform designers in the planning and design, the large number of platform access to work, dirty live dirty to the customer, and then focus on the so-called "maximum" function. On the contrary, the platform should be the customer do nothing, all dirty live dirty by the platform to do. Essentially, the value of the platform comes from the depth of technology. The true embodiment of the depth of the technology is precisely the designers can easily put all the dirty work dirty fix.
Therefore, the best practice of platform is: invest the least resources, solve the most problems. platform to solve everything, customers have a ride.
It must be a cow to make basic technology.
Often hear the students to express their admiration of the basic technology department, while the students engaged in business technology show contempt, that the storage, Message Queuing, service governance framework (such as the Octo), Hadoop, etc. can be called real technology. This is not the case, the more basic is not necessarily more advanced.
For example, the following is a long-lasting joke: the more advanced the language is less technical content. But really, for Java and C, this is a completely different language, and the skills required are completely different. C may be closer to the operating system, with more opportunities to deal with CPU and memory. But in order to use Java, programmers must be very proficient in object-oriented, design patterns, and framework technology. It's really not easy for a Java engineer to move to C, but the author has seen a lot of C engineers go to the Java language.
Basic technology and business technology will inevitably have different concerns, no high or low points. There are two reasons why this misunderstanding occurs:
The basic technology is relatively mature, there is a relatively complete system, which gives a person a tall feeling. Business application technology Relatively speaking, because each team uses different, so the maturity is uneven, the influence is not so big.
The threshold of basic technology is relatively high, considering the impact surface, reliability, availability and so on have a relatively high minimum requirements. But the high threshold does not mean high technical content, in addition to mature technology is relatively in the innovation will be very much constrained. But the most advanced technology comes from active innovation.
In contrast, business technology and basic technology are not the same. But the real master is concerned with solving the problem, all the technology is a skill.
Feasibility study of those pits
Feasibility studies have been carried out in the work. Do feasibility studies to avoid the following situations:
Feasibility study is made into feasibility study. This is really bad. The conclusion of the feasibility is that it is not feasible for one reason or another.
Avoid the "mouse to the Cat bells" type of high-risk feasibility plan. "The world's big things will be done in fine," the feasibility study must be meticulous, to avoid carelessness.
Avoid too long research time. If we find that the research progresses into the complexity of the digital scale, that is, twice times the time before the further need, we should stop the investigation decisively.
The conclusion of the feasibility study should be the tradeoff between revenue and cost, which is generally as follows:
First clear the expected results, and according to high school low-income grading.
Describe the measures and programmes that need to be taken to achieve each of the expected outcomes.
Give the cost to implement the various programs.
Are engineers inherently poor communicators?
In actual work, the problems caused by communication are endless. Many of the engineers are more introverted, and are always labeled "poorly communicated". In fact, communication ability is one of the most important skills of engineers, good communication is the basis of efficient work learning, but also through learning can be mastered. Below I speak the engineer's language to say the communication aspect experience.
The first type of common problem is the reliability of communication. From the point of view of reliability, communication is divided into TCP mode and UDP mode. The image representation of the TCP pattern is: I know you know. The image representation of the UDP pattern is: hope you know. TCP mode is certainly more reliable, but the cost is higher, the UDP mode cost is low, but unreliable. In terms of communication reliability, there are two common error types:
Often heard of such a controversy. One side said: "I have told him," the other said: "I do not know this thing ah." The use of UDP mode as a TCP mode is easy to generate wrangling.
Excessive communication. Some students have excessive anxiety about the reliability of communication, and repeated discussions have concluded. Using TCP mode as UDP is inefficient.
The second type of communication problem is timeliness. In terms of timeliness, communication is divided into: synchronous mode and asynchronous mode. Synchronous communication The image is: You now listen to me well. The image expression of asynchronous communication is: Remember to do it for me. In terms of timeliness of communication, there are two common types of errors:
There has been an accident on the line and it is extremely urgent. Everyone you say, I a language, feel that the accident may be related to some people, but also can not be fully determined, so did not notify the relevant personnel. In the end, an ordinary accident turned into a serious incident. For emergencies, it is necessary to communicate synchronously.
At three in the middle of the night you are sleeping, or the weekend is shopping, received a phone: "There is a need, can immediately help to finish." "It would be very depressing, because it's not an emergency. Not all needs need to be solved at once.
An important principle of effective communication is early communication. Communication is the essence of information exchange and processing, can be communicated to the image of the object as a serial information processing CPU. Early communication means that processing requests are placed in the processing queue as early as possible. The following example makes many engineers detest: a requirement was planned for 1 months and the product was designed for 2 weeks. When the development project was first heard of the demand, it was found that the development time was 2 days. The engineer argued, working overtime 1 weeks to fix. The final conclusion is that engineers are very non-force and do not cooperate. Just as engineers hate similar needs. To coordinate a large project, hope to get the cooperation of others, but also need to communicate early.
Another important point of effective communication is "don't digress". Many of the problems that seem to be close are essentially completely different. For example, the theme of a meeting is "how to implement a programme", while others may ask "should the programme be implemented". "How to implement" and "whether should be implemented" are two completely different issues, and many seemingly related issues are actually far off topic. "Off-topic" is an important cause of ineffective communication.
The secret of good communication is the ability to master the essence of TCP mode and UDP mode, correctly judge the urgency of the problem, try to communicate in advance, avoid irrelevant.
Bringing people to the road
Some of the engineers at the beginning of the mentor because of worry about the ability of the graduates is too weak, scheduling tasks inculcation, and finally feel a concern, simply write their own code. The same thing happens to many engineers who have just managed small teams. The end result they: Write all the code, let the subordinates no code writable. "Hands" of course very bad, the end is often the overall performance of the team is not high, the team members grow slowly, but they are very tired.
The ancients said: "People do not suspect, the suspect does not use." "This sentence is not" universal ". In ancient times, it was limited by communication technology, the feedback delay was significant, and the information in the transmission process had a lot of noise and serious deformation. In this case, a quick decision based on a small amount of distorted information gathered in a short period of time can be easily caught up in haste. In the company, this sentence is more appropriate for the selection process, should be replaced by: hiring not suspect, the suspect does not record.
Taking into account the cost of hiring, even at the hiring level, sometimes can not do. As a small team of managers, able to quickly and accurately obtain feedback from the team members, there is no need to "people do not suspect, the suspect do not." The real theoretical basis of employing is derived from "exploration and Utilization" (exploration and exploitation). Can not because subordinates can do what only let him do what, but not because the subordinate once failed to give the opportunity.
According to the classical "exploration and utilization" (exploration and exploitation) theory, a good employment method should be as follows:
The preferred choice is to believe that, in the face of failure, shrink the trust level.
Find the reasons for failure, provide suggestions for improvement, and improve the ability of subordinates.
Always give subordinates the opportunity to give subordinates a higher challenge at the right time. In short, the Tree of heaven from a small seed, to believe in the power of growth.
Efficiency, efficiency, efficiency
Often see some students to their performance score is 100 points-full mark, because in the past a period of time too hard, but the final performance is generally like. Tiandaochouqin is good, but heaven is more rewarding. Engineers have learned the data structure, the time complexity of the different algorithms of the gap, only through a longer working time is difficult to compensate. In order to improve the efficiency of work learning, we should pay attention to the following points:
The main focus is on efficiency improvement. In many cases, the results of longer periods are often not worth mentioning as compared to the benefits of efficiency gains.
Have clear results-oriented thinking. Credit and elbow grease are not the same thing.
Do the right thing, not just do it right. This is a topic that is constantly being talked about, but mistakes are performed every day. In order to complete a large project within the stipulated time, there is always a choice. If there is no focus, evenly exerting force, easy to do. If the "opposite", it is sadly regrettable.
Architect Competency Model
Before we have finished the principles and some confusion, how should the engineers improve themselves?
Being a good architect is a phased goal of most junior-level engineers. Excellent architects often have seven core competencies: programming, debugging, build deployment, performance optimization, business architecture, online operations, project management, and planning.
The relationship between these kinds of abilities is probably like. The ability to program, debug, and compile deployment is the most basic capability. Inability to master these three competencies makes it difficult to achieve performance optimization and business architecture capabilities. With a certain degree of performance optimization and business architecture capabilities, the ability to perform online operations and project management is superior. Team management ability is the highest ability, it is more dependent on project management ability.
For engineers, programming is the most basic ability, the requisite skill. Its essence is a translation capability that translates business requirements into languages that machines can understand.
There are many books to improve the programming ability. Mastering object-oriented and design patterns is the basis for efficient programming. Junior engineers should write more code and read more code. Find a master to do code Review, is also a shortcut to improve the level of programming.
Program code is the static form of the system, and the purpose of debugging is to verify and optimize the system by viewing the program's run-time state. Essentially, engineers can continuously harden their ability to predict running state through static code through constant debugging. So the ability to debug is also a key tool for engineers to improve their programming ability. A long time ago there was a legend: "How strong debugging ability, the ability to program more." "But now many editors are very powerful and the threshold for debugging capabilities has been greatly reduced.
Debugging ability is the key to the timely and high quality submission of the project. Even with a slightly more complex project, most engineers are not able to do it all at once. Large projects are optimized and corrected by constant commissioning. So the ability to debug is indispensable.
Write more programs, solve bugs, more experts are important means to improve debugging ability.
Compile deployment capabilities
Compiling and deploying the running program online is the last step in the system's launch. With the popularity of SOA architecture and the increase of business complexity, most systems are only one part of a complete business, so local compilation and operation does not fully simulate the system running online. To quickly verify the correctness of the program being written, compiling and deploying it online is a necessary step. So compiling the deployment capability is an essential skill.
It is not a small challenge to make many interconnected subsystems run together. Thanks to the popularity of the SOA architecture and the development of a large number of compilation and deployment tools, the threshold for compiling deployment has been greatly reduced. Companies that are based on application-level development have few "build engineers" in their roles. But for junior engineers, compiling a deployment is still not an easy task.
Performance optimization Capabilities
An important indicator of the success of a system is the amount of usage. As usage increases and business complexity increases, most systems eventually run into performance problems. Performance optimization capability is an integrated capability. Because:
Many factors affect system performance, including: data structure, operating system, virtual machine, CPU, storage, network, etc. In order to tune the system performance, architects need to master all the relevant technologies.
Proficiency in performance optimization means a deep understanding of the nature of usability, reliability, consistency, maintainability, scalability, and more.
Performance optimization is strongly coupled with business, and ultimately the means used are often compromised results. Therefore, the performance optimization must be familiar with the art of compromise.
It can be said that performance optimization is a sign that engineers begin to develop a variety of skills in the course of their growth. Refer to the previous blog post, "Summary of Common performance optimization strategies". There are many books on the market that are related to performance optimization, which can be consulted. Reading the documentation and code on performance optimization in the open source framework is also a good way to improve. Solving online performance problems is also key to improving performance. If you have the opportunity to learn with the master, analyze the Performance optimization solution case (Our technology blog has also published a lot of this article), but also quickly improve the performance of the ability to optimize the means.
On-line operation and maintenance capability
If the performance optimization ability embodies the architect's static thinking ability, the online operation and maintenance Ability test is the dynamic response ability. The brutal reality is that, no matter how perfect the program is, Bugs always exist. At the same time, the higher the position and the greater the responsibility, many architects need to be responsible for very important online systems. On-line failures, if not prevented early and quickly resolved, the loss may be disastrous, so the online operation and maintenance capabilities are the necessary skills of a good architect.
Standardization of monitoring, escalation, escalation, and basic coping mechanisms are of course important in order to quickly process online failures. It is also critical to quickly locate, mitigate, and resolve related symptoms through observed phenomena. This requires architects to have a holistic understanding of the business and technology of the fault system. The architect who solves the online failure is like a rider who is F1 in the race. Drivers must be aware of their own, racing, opponents, companions, weather, venues and all other factors, rapid decision-making, and constantly adjust. Architects must be aware of all the technical details, business details, processing specifications, peers and many other factors, quick decision, rapid adjustment.
Online operations are essentially a process of reinforcement learning. Many abilities can be done by reading and checking data, but the ability of online operations often requires a lot of practice to improve.
Business Architecture Capabilities
Engineers complain that the product manager's story is not uncommon, and the main reason for complaining most is the frequent changes in demand. There are two main sources of demand change: The first is market change or strategic adjustment, and the second reason is pseudo demand. For the first reason, whether engineers or product managers, can only be reluctantly accepted. A good architect should have the probability of reducing the change in demand caused by the second cause.
There are two reasons why pseudo-demand is generated:
The first reason is that the demand passes the warp. In terms of information theory, any communication is a process of encoding and decoding. Typical requirements from the demand side to the product manager, eventually to the development engineer, the minimum need to go through three coding and decoding process. And every transmission of information has some loss and some noise, which results in some times the product is completely out of demand. In addition, demand-side and product managers in the requirements of feasibility, system reliability, development cost control of the weak control, will also lead to demand deformation.
The second reason is that the demand side is completely not thinking about its own needs.
A good architect should have the ability to discern the authenticity of a demand. Should take the time to understand the customer's real business scenarios, with strong business abstraction ability, insight into the real needs of customers. The real implementation of the system is the engineer, in order to clarify the real needs of customers, gaoming architects should have accurate judgment of the project on the feasibility, reliability, availability and other aspects of the requirements, and can be cost-conscious. Finally, due to the tight coupling between demand and online systems, mastering the details of online systems is the key to a successful business architecture. As the level increases, the demands that engineers face are becoming more abstract. To undertake abstract requirements and provide abstract architecture is a necessary way for architects to excel.
There are some books on how to become an architect in the market, as you can see. But the improvement of architectural ability, practice may be the more important way. Business architects should focus on the customer's pain points rather than PRD documents, and should focus on real business. Mastering the vast technical and business details of existing systems is also a prerequisite for business architects.
Project Management capability
As a product of the Industrial Age, division of labor into the Internet project gene. Architects also need to be responsible for several major projects in order to justify themselves. Managing a project with an architect role is, of course, an essential skill in business architecture. In addition, people management and cost control awareness is also very important.
Project management also means having a big heart. Major projects involve a number of variables, such as technical research, personnel changes, and changes in demand. Faced with a variety of changes, but also in order to ensure the success of the goal, the need for strong anti-pressure capability.
People management needs to pay attention to include: Know how to use, optimize relationships, simplify communication, adhere to the truth.
Knowing how to use it means that architects need to understand the hard skills and soft qualities of each participant. At the same time, focus on team members in the project process performance, according to the ability to allocate.
Optimizing relationships means managing the emotions of the team, after all, the team is at the heart of the project, and a motivated team can achieve the goal efficiently.
Simplifying communication means making quick decisions that compromise and have a clear mandate.
Sticking to the truth means resisting pressure and never going backwards on principled issues.
Cost control implies fine-grained management of the project, which requires following several principles:
Start with the end and identify milestones. In order to achieve the goal, all plans must be set at the end. By breaking up large projects into small phases, controlling milestones at each stage can greatly reduce the risk of project failure.
Control the critical path and key items. According to the requirements of Critical path management theory (CPM), the architect needs to determine the critical path for each subproject and determine its earliest and latest startup times. At the same time, architects need to focus on the key nodes that could lead to the overall extension of the project and focus on the breach.
Control the relaxation of team members. The duration of a major project will be longer and include different types of jobs. Project implementation is an ever-changing dynamic process, in which the whole cycle is not tense, not all jobs are as busy. A good architect must have the ability to read the whole project in detail, as well as react quickly and adjust in real time. This can not only significantly reduce project costs, but also improve the quality of output and team satisfaction. Generally speaking, "frontload" is an important principle of project management.
There are many books on project management. However, the ability to improve business architecture is equally important. Actively participating in major projects and observing how others manage projects is also a very important means of ascension.
Team management skills
An engineer who doesn't want to be a CTO is not a good architect. Moving towards technical management should be a mainstream career plan for engineers. One of the core competencies of team management is planning capability, which includes project planning and staffing planning. Good planning needs to follow the following principles:
Planning is the game of interest. Good planning above worthy of the boss, the middle worthy of their own, the following worthy of the team. In the three stakeholders to find a balance point, to achieve multi-win test the manager's wisdom and fine-grained ability.
Any planning is better than no plan. A team without a plan is a fly with no head, and it is not in everyone's interest.
Planning is not bookishness. The market is changing, the team is changing, the plan should not be invariable.
Customer first is the starting point of project planning.
In terms of personnel planning, planning needs to consider factors such as the ability, performance, and growth of team members.
There are many books on the market for planning and management, which are worth reading. Although the theory of optimization is a technical book, it is the theoretical basis of planning, so you might as well look at a bit more. Starting from self-planning, learning more about other people's planning is also an important means to improve planning ability.
This article systematically expounds the principles of learning, analyzes common puzzles, and formulates definite learning goals, and expects to help engineers in their work and study. It should be stated that the content of the article exhaustive, the so-called architect Competency model is also the author's personal views. You are welcome to share your experience in the study and growth in the comments.
As a developer, there is a learning atmosphere with a communication circle is particularly important, this is a My iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside test, interview experience, discuss technology, we exchange learning and growth! Hope to help developers less detours.
Original link: 79922326
The article originates from the network, if has the infringement, please contact the small compilation to delete.
How do iOS engineers improve themselves and move to the top of their careers as a career architect?