The current situation of IOS development seems to be a commonplace issue. But today, I don’t want to write about the current situation of IOS development, what is the prospect of IOS, cool IOS and other topics that have been written rotten by others.
Today, let’s talk about ourselves, the current situation of our IOS programmers.
All friends came in from the starting point of the title. Indeed, the title is heartbreaking and true. An architect is the culmination of programmer promotion. Who doesn’t want to be an architect? Why are most programmers still a coder from beginning to end? Let’s look at it with thinking.
Most programmers start from small companies and small teams. Especially for programmers with non professional background, unless they are skilled, it is difficult to enter large companies or big factories such as bat. There are usually about 10 people in a small team, of which the best technology is often the architect (or CTO). Therefore, the average proportion of architects in the majority of coders is less than 10%.
Architects can also be divided into primary, intermediate and advanced. There are fewer really high-level software architects in the Jianghu.
Therefore, it can be said that more than 90% of them have been working as architects for several years, or even more than ten years. What is the reason for this?
What is an architect?
The word architecture comes from the field of architecture. We often compare programming to building. The division of labor on the construction site is clear and each has its own level. According to the process of a building:
The first is the demand put forward by the developer (company customer)
Stop the project from the contractor (the company itself)
The chief engineer draws the architectural drawings, which is the most critical step. The overall framework of the house, the model, what it looks like after construction, and the materials for the decoration of reinforced cement tile floor should be given clear processes and steps (architect)
Foreman leader construction (TL)
And cement, bricklayer, bricklayer, etc. (code farmer, business code)
It can be said that the process of building a house and programming development fit perfectly.
Insert a little story of yourself
One thing to understand:Writing business code and doing architecture are two completely different things.
When I first entered the university to start IOS development, I didn’t have much concept of the word architect, so I thought it must be very good 13. I must be an architect when I work in the future.
Later, I began to write code, starting from Symbian, then C, write c + +, then learn OC, learn swift, etc.
After graduating from school, I have been able to independently develop my own app, although it is just some book borrowing app and wallpaper downloading app. But I still feel great 13. But with this qualification and my professional background, I easily got an offer from a small company after graduation. After working for one year, I can basically solve the problems of my own development post independently.
I’m a thief. But I won’t say it verbally. I want to change jobs. The stage of this small company is not enough for me to play, but I won’t say it. First find a good home and then resign. I have such foresight and admire myself when I just entered the society.
So I took my resume with one year’s work experience and submitted it to Alibaba, IOS R & D Engineer. Gan, I didn’t get the interview.
Then I threw in the sky at that time, known as the world of young people. Gan, I didn’t get an interview again.
Am I seeing too much? Invested in a listed company, the financial industry, the most profitable industry for programmers, I * * and didn’t give an interview.
Finally, I met a large and medium-sized enterprise, um Intermediate IOS engineer.
After introducing myself and talking about the projects I have done, the leader looked like this? That’s it? Your expression.
Of course, as an adult, he still has the proper self-restraint and politeness, and didn’t interrupt me.
Then go to the interview questions
As soon as the leader came up, he asked: look at your resume. It says that you are familiar with Aidl. Tell me about oneway
Me: ah? What is oneway? It has nothing to do with Aidl. I am familiar with Aidl, which refers to cross process communication using Aidl interface.
Aha, for the next 15 minutes, I’m so ashamed that I want to break out of the door immediately! What is the principle of binder communication? I can’t tell. Can a child thread create a handler? Hen. Can you always tell me about the activity startup process? Hahaha, forget
For the first time in my life, the humiliation ended…….
After this, I woke up like a dream. Just being able to build bricks (write business code) wants to be a chief Foreman (architect)? It’s impossible.
This is one reason why most coders cannot become architects. Always stay at the business level. No matter how good the brick is, it is only a bricklayer after all.
How can I become an architect?
We still compare it to building a house, that is, how can a bricklayer become a chief foreman step by step?
1、 Put the bricks together
Code is written for others. Writing business code is the first step to become an architect.
No architect has not grown up from writing business code. There is no architect who does not understand the business. All architectures depend on the business. All architects must also write business code and do not use their own design in real projects. I’m afraid they will not know the rationality of this architecture design.
The code quality optimization I want to express here does not just refer to daily programming.
What I want to express is an architectural idea: future oriented programming
A good engineer can judge which of these requirements are likely to change and which are unlikely to change according to his business ability when he hears the requirements.
For the contents of these changes, they will not be written dead in the process of writing, but repeatedly confirm the requirements that cannot change. They will be written simply to prevent the complexity caused by over design.
In short, when he gets the requirements, he not only considers how to realize the requirements, but also considers the architecture and scalability of his own design. In his eyes, the requirements he sees will be decomposed and broken down, and then his own technical solutions will be decomposed and distributed one by one.
After completing the design, he will clearly know what changes are supported in the system he designs. You can change them. I only need to change a very simple content, and what you absolutely can’t change. If you want to change it, I must spend a lot of money, especially when the data is already wired.
Moreover, they will communicate with PM with their own architecture system and make it clear.
If you already have this idea when programming, you have the basic quality of an architect.
2、 Understand the composition of brick reinforcement and cement
To build a house, we must choose good materials. These are the bottom and foundation of the house.
In programming, the language we use is brick, all kinds of tools are cement, and all kinds of frames are steel bars.
Of course, it’s not enough just to be able to use it. We must “know what it is and why it is.” why is “is the underlying source code and implementation principle of various methods, tool classes and application frameworks.
For the vast majority of programmers, there is a common problem:It is difficult to balance breadth and depth.
The business direction of each enterprise is different, and the technology used is also different. Fortunately, during the interview, the technology used by Party A’s company was just the same as what you learned. As a result, when asked about the technology, you only answered which of the four components, and the life cycle was hesitant. The drawing process of view was ambiguous, the garbage collection algorithm was half understood, and the performance optimization was ignorant. If you can find an offer, hell.
Many people just float on the surface in the development process, ignoring the underlying source code analysis, and the resume of job interview has not been repaired and highlighted. Naturally, job search is not smooth and there is no hope of salary increase.
So the best way to solve this problem is:Grasp invariants.You know, the underlying knowledge is never outdated. Algorithmic data structures are never outdated. The basic programming theory is never out of date. Good coding habits are never out of date. The ability to analyze and solve problems is never outdated. Strong learning ability and strong thirst for knowledge will never be out of date. The way your brain thinks will never be out of date.
Take a chestnut
You should know and understand the importance of performance optimization, but you don’t have your own understanding of performance optimization because you don’t master the whole knowledge at work. For example, glide is a technology we often use. I believe everyone will use it:
Glide. with(context). Load ("picture URL") into(imageView)
But who knows there are performance pits in this?
If we can’t systematically grasp the life cycle of activity, fragment and application, and we don’t know the glide source code, so we may pass this directly in the context, or directly to the context of application, then the glide life cycle is bound to this or application, and you can imagine the results, In the code structure of nested fragment + viewpager, if the life cycle management is not in place, it will lead to memory fragmentation of life cycle problems. Naturally, we all know that if there are many similar situations, the performance will be lost bit by bit, and finally lead to the occasional oom in the running process of the app. The results can be imagined.
The knowledge at the bottom is solid, and the things at the top are as changeable as kites. You are the one pulling the line at the bottom. Pull down the line and you can easily see what the kite looks like.
3、 The house must be beautiful and decorated
I believe you can easily think of what I’m going to say next. Yes, performance optimization is indispensable for Android development.
Performance optimization is definitely a required subject for old Android. Without performance optimization experience, you can’t avoid hitting a wall wherever you go to find a job.
An Android architect must control the overall composition of the whole app, and the user experience is the most important point.
As an Android Developer, most of my friends may be familiar with the topic of performance optimization. Google officially had “Android performance best practices series” a few years ago（Android Performance Patterns）Of course, most of the tips are specifications that need to be followed, but no matter what we say in theory, the work we do ultimately needs to serve the business. Whether you want to improve the download volume, optimize user evaluation, or improve the conversion rate of the business, you need to give the ROI of performance optimization.
After nearly a decade of development, Android technology optimization changes with each passing day. Now Android 10.0 has been released, and the Android system performance has been very smooth, which can be completely comparable to IOS in experience. In the hands of major manufacturers, change the source code and customize the system, making the Android native system mixed, and then in the hands of development engineers at different levels. Because of the uneven technical level, even if many mobile phones have very high software performance, there is still a Caton phenomenon when opening applications.
App performance optimization has become a comprehensive quality that developers should have, and it is also the guarantee that developers can complete high-quality application works.
What is the career plan from Android Xiaobai to architect?
We are new to this business because of interest and prospect.
Entering this profession means that you need to keep learning, learning, advanced and advanced.
At the beginning of our career, in order to obtain employment, we had to make our knowledge system more competitive“Breadth”
After you enter the job, you find that not all the knowledge you have learned before needs to be used. You start to need to upgrade a certain knowledge moduleDepth
At this point, you have the basic development skills:Knowledge points
After working for several years, you find that you need a bigger stage, and you need in-depth study of several connected modules.
At this point, you have the skills of an intermediate Engineer:width of knowledge
After a few years, you are an old bird in the workplace. You can solve almost all the daily problems at work. You have many aspects of knowledge. You connect all your aspects of knowledge to form a complete knowledge system.
At this time, you are a senior engineer:Knowledge system
However, you have reached the age of 30 + and are about to retire. There are countless senior engineers behind you who can replace you at any time.
At this point, you need to explore the deeper mysteries of the code. You are no longer a “bricklayer” who can only build houses
You know the composition and structure of each brick. You know where a house needs this “brick” and where it is suitable for another “brick”. You know how the house needs to be built and designed to be stronger, more reasonable and more beautiful.
At this point, you are an architect.
Why can’t many programmers be architects.
1. Good and healthy career planning is important, but most people ignore it
2. The habit of learning is very important. Perseverance is the right solution.
3. Programming thinking failed to improve to a higher level, limited to coding and business, and did not consider selection and expansion
4. There is no good architect to guide and cultivate. The circle has a great impact on the growth of programmers.