After working on Android for five years, I had an epiphany...

Preface

Two years ago, I wrote a ``Summary of My Three-Year Android Development''. Time has passed. In a blink of an eye, I have been engaged in Android development for more than five years, and I am fortunate that I am still engaged in Android development that I love.

Those of us who do technology development have a habit, that is, we like to summarize from time to time, of course I am no exception. I have a special hobby, that is to take out my code a year ago and the code I write now Make a comparison to see if you have improved.

If you look back at the past, if you find that there is no positive change between your current self and your self a year ago or more, then you will be wasting your time all these years.

Looking back on my past five years, if the first three years I grew up savagely, frantically, and more impetuous three years, then these two years have been two years of sinking my heart and practicing and accumulating experience.

Changes in the work environment

I only worked in one company for the first three years of Android development. I did almost the same work every day. The projects I did were also relatively simple small projects. The application development that one or two people can undertake is relatively simple. There is no core competence technology.

But in the past two years, I have come into contact with many companies. They include reformed old state-owned enterprises, newly established startup companies, and also listed companies. Companies of different types, industries, and sizes will inevitably lead to work content and teams. , The difference in corporate culture.

Compared with the first company I worked with, the following companies respected my personal views more, which is why I decided to switch jobs. Although I am also very grateful to my first company for giving me more opportunities to go. Growth, but we came out to work for economic purposes in essence, just talk about ideals without giving the bounty of reality, blindly emphasizing that you are cultivated by the company, and after a long time, you can't retain people.

Old state-owned enterprise

As the saying goes, job-hopping is costly. Due to changes in the work content and team, I need to relearn the professional knowledge of a specific industry and re-establish my colleague relationship, which requires me to need a very strong learning ability and adaptability.

My first job hopping was relatively unsuccessful. Because I had no experience, I actually jumped to a severely aging former state-owned enterprise. This is a company engaged in automotive hardware. The average age of my colleagues is 35 years old and above. The topics they discussed were all about the learning and education of their own children, which makes me a single person who doesn't even have a girlfriend.

What makes me unable to adapt is the very slow pace of work. One week's work is completed in half a day, and I don't know what to do in the rest of the time... There is really nothing to do.

Start-up companies

Later, I was taken by a boss who appreciated me very much, joined his startup company and became an entrepreneur. This is a company engaged in children's wearable devices. As one of the first employees to join, I can be described as a witness The whole process of a startup company from inception to development to decline, and it only takes one year.

Although there are many pits in startups, they are still very valuable to our personal growth. In this year of startups, I have done a lot of work content that ordinary programmers may not be able to touch in my life, and I have also accumulated a lot. Philosophy of life.

  • 1. Construction of application development framework.
  • 2. Discussion of product requirements.
  • 3. Corporate culture construction.
  • 4. Corporate tax treatment.
  • 5. App launch and operation.
  • 6.Product production, assembly, sales and after-sales maintenance.
  • 7. Enterprise trademark and patent registration.

In a startup company, there is no obvious division of positions. Many times you need to do a lot of work that has nothing to do with your position. From a good point of view, this can greatly enrich one's life experience and improve one's independent thinking, independent learning and solving The ability of the problem. If your financial ability is supported to a certain extent, then it is also very good to go to a startup company to experience it. What if it develops into a unicorn in the future?

Listed company

After that, I came to the company I am currently working for. Compared to the startup company I worked for before, I am an Android developer. Here I have found a sense of belonging to the team that has been lost for a long time. In addition to the large number of people, the intensity of work and the The difficulty has also greatly increased.Of course, working overtime has become a commonplace meal, and of course the corresponding benefits have also improved a lot.

In large companies, the level of technology is not the decisive factor in determining the development potential of this person. You must know that the most indispensable thing for large companies is talent. Who can enter a large company, which one has two brushes? For large companies, they What is needed are employees who have a strong sense of responsibility and hard work. Whether you can take on the stability of a certain module function directly determines your stay. In addition, communication skills are also very important capabilities. Because of the projects of large companies The functions are relatively complex, with a large number of people involved, and many complex problems can often be solved through communication. Also, expressing your ideas in time and taking the initiative to take on some urgent tasks can give you a lot of extra points.

It can be said that in these days of large companies, I have learned and realized many non-technical capabilities:

  • Language skills (big companies often need to speak in front of many people).
  • The ability to communicate with different people.
  • The ability to locate and solve complex problems.
  • team work.
  • The ability to help (mentor) others.
  • Team building and management ability.

This is also the reason why I wrote so many articles about experience and perception last year. Many of the above abilities can not be obtained by just pressing codes.

Change in mentality

In the first three years of Android development, the reason why I worked so hard and studied so hard was partly out of interest, while the other part was to prove myself.

  • For the company: I want to prove that I am an indispensable talent for the company.
  • For the leader: I want to prove that my skill level is the first in the group.
  • For my family: I want to prove that I can support myself.
  • For girlfriend: I want to prove that I have the ability to take care of someone alone.

Maslow's hierarchy of needs theory tells us that when a person's needs are met, he will pursue higher-level needs.

When I proved these one by one, everything changed. Proving that I have become less important, and pursuing the reflection of my own value has become my goal at this stage.

So, I left the company that year, gave up the path planned by my parents, left my girlfriend, and started to follow my heart and look for the answer to life...

What I need at this time is not the affirmation of others. I don't care about other people's praise or slander. What I do is from the heart, and is not affected by foreign objects.

Therefore, I chose to become a creator and evangelist of an open source project. I will share all the technical experience I have accumulated at ordinary times. The purpose is to help all people in the world who love technology, and at the same time let my value be reflected in others.

In the past two years, I have actively maintained my open source projects, and at the same time published some related technical articles on major technical communities and forums, and also operated my own WeChat public account. Recently, I have also actively created some open source technology related The purpose of this is to share your experience and technology with more people in need, so that knowledge can play a greater role (knowledge lies in inheritance), and on the other hand, it also satisfies one's own vanity , Let your value be reflected.

Changes in thinking

In the first three years of working on Android, my ideas were relatively radical. At that time, I was so eager for all new technologies, but I sneered at those relatively old technologies. I naively thought that those new technologies were all Revolutionary ones need to be mastered, learned, and applied to actual work, and those old technologies are the objects that need to be replaced.

Therefore, regardless of the cost, I blatantly changed the old technology used by the company before, and the obstruction of the leadership at that time seemed to me to be technical inconvenience, and there were a lot of contradictions in the middle. It also became one of the reasons why I left the company later. Thinking about it now, my thoughts at the time were really naive!

Technology is not the only productivity

Technology is productivity, but it is not the only productivity.

In the year of the start-up company, I thoroughly understood that technology is not the only productivity. The development of a company depends more on strong financing capabilities (capital) and strong channel promotion capabilities (marketing). ), many times technology is only a part of it, and it only acts as a tool person.

The young man who strongly advocated the supremacy of technology was greatly educated by reality. At that time, I think that only those who are purely technical can be respected, and those who do business in the product line, test, or run the business to run the market. It's not worth mentioning. However, it was the people I looked down on at the time that directly contributed to the decline of the startup company I was working with.

Technology is not good or bad

The technology is not good or bad, and there is no high or low, and some are just suitable and inappropriate.

Is the new technology better than the old technology? If this question was asked to me two years ago, then my answer must be yes! But if you ask me now, my answer will be different.

Any new technology must have some improvements on the old technology, otherwise it is not a new technology. Then why don't we use it directly? Because here we are thinking more about the issue of cost:

  • New technologies will inevitably bring higher learning costs.
  • The introduction of new technologies will inevitably bring more replacement costs.
  • If the new technology is not yet mature, it will inevitably bring greater solution costs when encountering a pit.
  • If you encounter some unsolvable problems with the new technology, it will bring some risks and costs.

When the benefits of the use of a technology are far greater than the costs it brings, we will consider adopting this technology at this time.

It can be seen that the costs I listed above are quite huge for large companies:

  • There are many people in large companies, and the cost of learning new technologies is very high (it is impossible to retire and recruit again)
  • The projects of large companies are usually large, and the cost of replacement is relatively high.
  • The functions of the products of large companies are more complicated, and it is common to encounter some pits that no one has encountered.
  • Large companies generally have zero tolerance for project risks: they would rather not do it than take the risk.

This is why many large companies are reluctant to adopt new technologies, but choose to continue to use previously mature technologies.

So when we are thinking about whether a technology can be adopted by us, we have not considered the old and new and the high and low of the technology at all. As for those who publish some technical anxiety articles in the technical community all day long, I think the community should block They, so as not to mislead those children who are just getting started.

Tracing to the source

When you put aside the surface of things and pursue their essence, you will find that many things are connected.

When I was learning and using technology two years ago, I followed more of utilitarianism and pragmatism, naively thinking that I would use this technology is equivalent to mastering this technology.

The reason for thinking so is that the world is too small to see. The small company I used to have business is not that complicated, and there are not so many use cases. The situation encountered is relatively simple and single, so simply use it and basically it is over. .

However, after arriving at a large company, the complexity of the business and the scenarios covered by the use cases are far beyond your imagination. In many cases, you can't solve some problems with simple use. Especially when something strange happens. When you don't read the source code to understand its implementation principle, it is impossible to explain it.

For example, we have used RecyclerView in Android, but have you read the source code of RecyclerView and understand its caching mechanism? I believe that after reading the source code of RecyclerView, you will know that, in fact, what you call master RecyclerView, only It's just the tip of the iceberg of RecyclerView.

To learn a technology, if you only master how to use it, then this is only the first step for you. The more important thing is to trace the source and go deep into its underlying implementation principles. At this time, you will find that there are many The technology turns out to be interlinked.

At last

As a lover of Android development, as long as Android is not dead, I will always be on the road of Android development. No matter how tortuous the future, I believe that Android will become even better!

I am xuexiangjys, a technical up master who loves learning, programming, thinking hard, and dedicated to Android architecture research and open source project experience sharing. For more information, welcome to search the official account on WeChat: [My Android Open Source Journey]

Guess you like

Origin blog.csdn.net/xuexiangjys/article/details/114242914