preface

Two years ago, I wrote an article titled “My Three-year Summary of Android Development.” All of a sudden, I’ve been working on Android for more than five years, and I’m glad I’m still working on what I love.

We in technology development have a habit of summarizing things from time to time, and I’m no exception. I have a particular hobby of comparing the code I wrote a year ago to the code I’m writing now to see if I’ve made any progress.

If you look back and see no positive change in who you are now from who you were a year or more ago, then your years have been wasted.

Looking back on my past five years, if the first three years were three years of wild growth, crazy lukecode and relatively impetuous, then the last two years are two years of my mind to sink down and concentrate on cultivation and accumulation of experience.

The working environment has changed

During my first three years of Android development, I only worked in one company. I did almost the same work every day, and the projects I did were relatively simple and small. One or two people could undertake the application development, and I used relatively simple technology with no core competitiveness.

But in the last two years, I’ve been in contact with a lot of companies. They range from reformed state-owned enterprises to fledgling startups to listed companies. Different types, different industries and different sizes of enterprises will inevitably lead to different work contents, teams and corporate cultures.

The latter companies respected my personal opinions more than the first one, which is why I decided to leave. Although I am also very grateful to my first company for giving me more opportunities to grow, we come out to work for economic purposes in essence. Talking about ideals without giving realistic benefits and blindly emphasizing that you are cultivated by the company will not keep people for a long time.

Old state-owned enterprises

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

My first job is the failure, because there is no experience, I had moved to a serious ageing former state-owned company, this is a auto hardware company, the colleagues around the average age of 35 years of age or older, every day they are about their child’s learning education, which makes me this single wang doesn’t even have a girlfriend.

What makes me more unable to adapt to it is the very slow pace of work. I finish the work in half a day a week and have no idea what to do in the rest of the time. There’s really nothing to do.

startup

Then I was seen by a boss who really appreciated me, and I joined his startup and became an entrepreneur. This is a company engaged in children’s wearable devices, as one of the earliest employees, I can be said to have witnessed the whole process of a startup from start to growth and decline, and it only took a year.

There are many pitfalls in startups, but they are very valuable to our personal growth. During this year in the start-up company, I have done a lot of work that ordinary programmers may not be able to touch in their whole life, and ALSO accumulated a lot of life philosophy.

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

In startups, there is no clear division of positions, and many times you need to do a lot of work that has nothing to do with your position. From a good point of view, it can greatly enrich one’s life experience and improve one’s ability to think independently, study independently and solve problems. If you can afford it, it’s great to get your hands on a startup, just in case it turns into a unicorn.

The listed company

Then I came to the company where I am now. Compared to my previous startup where I was the only Android developer, I found a sense of belonging to the team that I had lost for a long time. In large companies, in addition to the large number of people, the intensity and difficulty of the work has greatly increased, of course, overtime has become a common thing, of course, the corresponding benefits are also promoted a lot.

In large companies, skill level is not the decisive factor in determining a person’s potential. You know, a large company is the most lack of talent, can enter a large company, which is not a pair of brush? For large companies, what they need is a strong sense of responsibility and hard-working employees. Whether you can undertake the stability of a certain module function directly determines your future. In addition, the ability to communicate is also very important. Because projects in large companies have relatively complex functions and involve a large number of people, many complex problems can often be solved through communication. Also, expressing your ideas in a timely manner and volunteering to take on urgent tasks is a big plus.

It can be said that during these days in a large company, I have learned and understood many non-technical abilities:

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

That’s why I wrote so many experiential essays last year. And above these abilities, many are only by the code is unable to obtain.

Change in mindset

For the first three years of my Android career, I worked and studied so hard, partly out of interest, and partly out of a desire to prove myself.

  • To the company: I want to prove that I am indispensable to the company.
  • For the leader: I want to prove that my technical level is the first in the group.
  • To my family: I have to prove that I can support myself.
  • For my girlfriend: I need to prove that I can take care of someone alone.

Maslow’s hierarchy of needs tells us that when a person’s needs are met, they seek out higher needs.

When I proved all that, everything changed. To prove oneself has become less important, and to pursue the embodiment of my own value has become my goal at this stage.

Therefore, I left the company, gave up the path planned by my parents, left my girlfriend, and began to follow my heart to find the answer to life…

At this time, I need 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 not affected by external things.

So I chose to become a creator and evangelist of open source projects. By sharing all my technical experience, I aim to help all the people who love technology all over the world, 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, published some relevant technical articles on various technical communities and forums, and operated my own wechat official account. Recently, I’ve been actively creating videos about open source technologies. The purpose of doing this, on the one hand, is to share my experience and technology with more people in need, so that knowledge can play a greater role (knowledge lies in inheritance), on the other hand, it also satisfies my vanity, so that my own value can be reflected.

The way of thinking has changed

For the first three years on Android, MY thinking was relatively radical. At that time, I was a big fan of all the new technologies, and turned my nose up at the relatively old ones. I naively believed that the new technologies were revolutionary and needed to be mastered, learned and applied to practical work, while the old technologies were the ones that needed to be replaced.

Therefore, I was ready to replace all the old technologies used by the company in a big way, regardless of the cost. In my opinion, the obstruction of the leader at that time was the failure to make progress in technology, and there were a lot of contradictions, which became one of the reasons why I left the company later. Now come to think, at that time my idea is really very naive!

Technology is not the only productive force

Technology is a productive force, but it is not the only one.

That year in the startup made it clear to me that technology is not the only productivity. The development of a company depends more on strong financing ability (capital) and strong channel promotion ability (marketing). In many cases, technology is only a part of it, serving as a tool.

In those days, the youth who strongly advocated the supremacy of technology was severely educated by reality. At that time, I thought that only those who did pure technology could be respected, and those who did business, test, or market in the product line were not worth mentioning. But it was the people I looked down on that led to the downfall of the startup I was working for.

There is no good or bad technology

There is no good or bad technology, there is no high or low technology, there is only appropriate and inappropriate technology.

Is the new technology necessarily better than the old? If I had been asked this question two years ago, the answer would have been yes! But if you asked me now, I’d say something different.

Any new technology must be an improvement on an old one, otherwise it is not new technology. So why don’t we just use it? Because we’re thinking more about cost here:

  • New technologies will inevitably bring higher learning costs.
  • The introduction of new technologies inevitably brings more replacement costs.
  • If the new technology is not yet mature, when a pit is encountered, the cost of solving it will inevitably be greater.
  • There is a risk cost if there are problems that cannot be solved with the new technology.

When the benefits of using a technology far outweigh the costs, this is the time to consider adopting the technology.

As you can see, the costs I’ve listed above are quite large for large companies:

  • Big companies have a lot of people, and the cost of learning new technologies is very high.
  • Large companies’ projects are often large and replacement costs are relatively high.
  • Big company products have more complex functions, and it’s common to encounter some pits that no one has ever encountered.
  • Large companies generally have zero tolerance for project risk: it’s better to do nothing than risk it.

This is why many large companies are reluctant to adopt new technologies, preferring to stick with previously proven ones.

So when we think about whether a technology can be adopted by us, we don’t even consider whether the technology is old or new or whether it is high or low. As for the people who are tweeting about tech anxiety in the tech community, I think the community should block them so as not to mislead the new kids.

To check

When you go beyond the surface of things and look for their essence, you will find that a lot of things are connected.

When I was learning and using technology two years ago, I was more of a catch-all and pragmatic person, naively assuming that the fact that I could use the technology meant that I had mastered it.

The reason why I think so, the main reason is to see the world too small. In the small company I worked for before, the business was not so complex, the use cases were not so many, and the situations I encountered were relatively simple, so simple use was basically done.

However, when you get to a large company, the complexity of the business and the scenarios covered by the use cases are far beyond what you can imagine. A lot of times, there are problems that you can’t solve with simple use. Especially when something weird happens, you can’t explain it without reading the source code and understanding how it works.

For example, we do Android have used RecyclerView, but you have read the RecyclerView source code, understand its cache mechanism? Believe you read the RecyclerView source code, you will know, in fact, your so-called master RecyclerView, is just the tip of the iceberg of RecyclerView.

Learning a technology is only the first step if you just know how to use it. It is more important to go back to the source and explore the underlying implementation principles. Then you will find that many technologies are the same.

The last

As a fan of Android development, I will continue to develop for as long as Android doesn’t die. Regardless of the future twists and turns, I believe that Android will become better!

I am Xuexiangjys, a technical up master who loves learning, programming, thinking, and is committed to Android architecture research and open source project experience sharing. For more information, welcome to wechat search official account: [My Android Open Source Journey]