6 years of iOS development, four routes to the architect, (worthy of collection)

Foreword:

It took me 6 years to get to the present step by step, I also learned about other technologies in the middle, and thought about switching to other languages, but in the end I insisted on the path of iOS, I hope my experience can help later If you think it is helpful to you, you can like and follow.

Guide:

1. Should architects write code?

2. Why other people's systems are always so bad

3. What is the most difficult threshold to become an architect?

4. How to study more efficiently?

As a developer, it is very important to have a learning atmosphere and a communication circle. This is my iOS communication group: 638302184, whether you are a novice or a big cow, welcome to join, share BAT, Ali interview questions, interview experience, and discuss Technology, let's exchange, learn and grow together! Hope to help developers avoid detours.

1. Should architects write code?

Qualified programmers will do well for clearly assigned tasks, but in most cases the word "architecture" means that the architect does not go into too much detail, there is always some distance between the architecture diagram and the code implementation, you There's no guarantee that everyone will understand your design correctly, or that programmers will come up with elegant enough solutions right away when they encounter obstacles while writing code.

In my opinion, the architect who writes the code is more like doing the work of logistics: finding possible problems in the code at the first time, warning others, or giving others suggestions for improvement, when necessary Or demonstrate the correct posture to others.

In most cases, as an architect, I do not need to undertake the development of "core modules". After all, the time I can allocate is too scattered, and the efficiency is difficult to guarantee. Many people do a lot better than me when they are focused. I just need to keep the big picture and engage moderately.

In general, architects and programmers are a bit like product managers and users in some ways. Most programmers don't tell you what they want, where they need optimization, or even know it themselves. One of the shortcuts to making a good product is to do the same thing with users.

2. Why other people's systems are always so bad

Many programmers have a strong ability to solve problems. They say that if they want to solve a problem, they can write hundreds of lines of code in the afternoon to realize the function. But there is a feeling that something is missing from what is made. Most programs can achieve functions, but if you consider "time" as a dimension of consideration, you will realize that a qualified project needs to consider more things: more general usage, easy-to-understand documentation, simple And easily extensible design, and so on.

A lot of companies should have legacy systems that are huge, heavy, difficult to use, and almost impossible to maintain, that everyone is complaining about and trying to replace every day. But after a period of time, you will find that the new people around you start to complain about the system that replaced the legacy system at that time.

"Most of the systems were very good at the beginning, the functions were sufficient at the time, and the scalability seemed to be OK, but these systems were developed after the departure of the people."

3. What is the most difficult threshold to become an architect?

Many people who call themselves architects are eloquent when they tell you about an architecture. All kinds of technical terms come out of his mouth like a cross talk. The three sentences are inseparable from high concurrency and big data, but if you ask a little, you will be It is found that many basic concepts are missing. For example, the person who claims to be proficient in high concurrency can't tell where the bottleneck of his so-called high concurrency system is, and the person who claims to be proficient in architecture design can't understand how his system can ensure high availability. The system actually has less than 1 million pieces of data, etc.

Although architects sound very high, they are still engineers, not scientists, or charlatans. No matter how much you learn, you also need to practice. Designing an architecture scheme is more about doing some abstractions and trade-offs: abstracting complex requirements into simple models, planning how to build a system in terms of functions, performance, availability, R&D costs, etc. These contents require more practical exercises .

4. How to study more efficiently?

Most people have limited time for learning every day, and how to improve learning efficiency at this stage has become the focus of the solution.

Talking about your experience in improving learning efficiency is actually very simple: systematic learning.

After repeating the painful learning-combing process several times, it is often more effective to read some independent articles or materials, because the corresponding knowledge can be found in the system, and sometimes even a page of a book only needs to read a sentence If you break the window paper, you can master new knowledge.

Like many people, when I first graduated, I felt that as a programmer, as long as I worked hard and added a little talent, I could get some results.

After working for a period of time, my understanding of myself and others became clearer and clearer, and I gradually discovered that the gap between programmers may be bigger than the gap between humans and monkeys. Accepting this fact made me depressed for a long time.

After a while, I found myself able to objectively evaluate my abilities and realized that distance is not so important, as long as I find a way to run faster, it is enough.

With the development of software and Internet technology systems, the position of architect can be divided into many subdivisions, such as system architect, application architect, test architect, and infrastructure architect. In addition, there will be various specific distributions in different companies, which will not be expanded here. Here, we combine the most conventional application architects and system architects to make a description.

5. Let’s talk about the definition of the architect’s duties and responsibilities:

Application Architect (  Application  Architect) is responsible for building the internal combination structure of a software application aiming at solving a specific problem, generally meeting various functional requirements and maintenance requirements as the design consideration goal;

System Architect provides the structural design of information systems that operate and support software applications, generally meeting various non-functional requirements or operational requirements as design goals (such as security, scalability, interoperability, etc. Wait).

1 Design ability - good at integrated analysis

Architecture is a process, not a result.

Architecture is the process by which architects gain insight into the internal structure, principles, laws and logic. Architects must understand the system clearly and describe it concisely, which is the ability of analysis and integration.

An architect must have excellent analytical skills. He must understand the product business clearly according to the product requirements and goals, and then integrate and utilize the existing technical fields to find the best solution and realize the product concept.

2 Technical strength - landing through code

The architect must first write the code clearly and understandably, to be able to implement functions, and to be free of bugs. This requires that the architect must be proficient in at least one language.

This is the most important thing, a good architect, basically a good programmer in the past. Architects are not purely management positions, so they need to go deep into the front line to sort out the code. It's hard to do a good job if you just draw flowcharts, get out of code, and just talk and don't do it.

On the other hand, improving programming skills is very important to an architect's career. In any case, you can't put the cart before the horse. If you want to realize your career plan, you can't waste your own skills. Technology is the most important thing for architects to survive. basic ability.

Therefore, it is not recommended for people who do not love programming to become architects, which will have bad consequences for team work and personal development.

3 Learning Ability - Mastering the Development Direction of Technology

As an architect, a positive and open mind is the most important, because people with such a mind can learn new technologies efficiently.

New technologies are emerging one after another, and architects need to constantly understand their strengths and weaknesses, master them, and use them for me. More importantly, the real principles behind each technique need to be learned and mastered. Therefore, continuously expanding the depth and breadth of technology is the growth trajectory of an excellent architect.

The Internet is an industry with very frequent technological updates. Only those who are truly enthusiastic and have mastered good learning methods can go for a long time.

4 Communication skills - able to communicate horizontally

The architect must participate in the whole process of project development, including confirming requirements, system decomposition, architecture design, technology selection, formulating technical specifications, system implementation, integration testing and deployment. Department communication.

In the development of a product, there will be multi-department cooperation, and the communication between architects is extremely important, which directly affects the progress and quality of research and development. Architects should communicate not only with developers, but also with project managers, product managers and even users to sort out the various possibilities of the product.

Therefore, for architects, not only solid technology, but also the ability to communicate horizontally.

 

Summarize:

The above is the knowledge route I summed up. I also learned about other technologies in the middle, but in the end I insisted on taking the iOS road. I hope these knowledge points can help friends and partners who are developing in this industry. There are few forums, blogs and other places. Take the time to find information, and put your limited time into really learning and moving forward.

As a developer, it is very important to have a learning atmosphere and a communication circle. This is my iOS communication group: 638302184, whether you are a novice or a big cow, welcome to join, share BAT, interview questions, interview experience, discuss technology, Let's learn and grow together!

 

The article comes from the Internet. If there is any infringement, please contact the editor to delete it.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325688808&siteId=291194637