This article was first published on wechat public number — interesting things in the world, handling reprint please indicate the source, otherwise will be held responsible for copyright. Wechat account: A1018998632, QQ group: 859640274

Recently, I published a special topic to write a Douyin App from scratch. Thanks to your attention, I have read a lot. So the comrades in the group “encouraged” me to write an article on growth and technical routes for readers. Note that this article is only a guide for those who are confused on the technical road, Daniel’s words actually need not read 🙂

First, why CAN I write this article

Who is this guy? Why is he guiding me? Is he awesome? So LET me begin by enumerating my current situation, so as to give some guidance to those less able than me. Of course, I’d love to see some guidance in the comments section from someone who’s better than me.

  • 1. It has been four months since I graduated from my bachelor’s degree in Hangzhou, Zhejiang province. I worked as an intern in China Youzan for Java development for half a year in the spring recruitment last year. After missing the autumn recruitment, I applied to several big factories in the spring recruitment this year, and also received offers from several big factories. The salary and welfare of the company I finally chose is quite good.
  • 2. It has been more than two years since I began to write articles, and my achievements are not bad at present. I have written more than 30 articles with a total of 110,000 words. The number of fans on various platforms is close to 3k, the number of upvotes is close to 4K, and the number of readers is about 150,000.
  • 3. There are over 30 Repositories on Github, with a total of 1K of Start. I have been on github developers and Repo hot for several times.
  • 4. Recently, Jane has approached me about publishing a book. I wonder if it will be possible. But it’s also an affirmation of my ability.

Above is my current state, if you feel that ability than I weak so a dudui of words, so can continue to read the article, should be helpful to you.

Ii. Fundamentals

We often see the word fundamentals in the news. In my opinion, fundamentals are his character and habits for a person’s growth. A good fundamentals can keep a person motivated to grow. In this chapter I’ll talk a little bit about that.

  • 1. Start by thinking about the thing you’ve held on to for the longest time. I’ll give it two examples: 1. I’ve been reading ** Sci-fi World (this is where the original three-body trilogy was serialized)** this magazine has been for 9 years. 2. I have been running at night for three to four years, but I abandoned it for half a year after graduation and recently started running again. The purpose of these two examples is to illustrate that sticking to one thing can lead to a subtle change in your personality and spirit that can have a positive impact on all sorts of other things. Last year, for example, I spent more than a month translating the entire Fresco source code, and that’s what persistence did to me. Another example is that I keep blogging because of my previous persistence. And of course the things that you’re affected by persistence become part of persistence later on and then affect more things later on, it’s a positive cycle. That brings me to my first fundamental: persistence.
  • 2. When was the last time you looked up at the stars? We all know that there is a saying: look up at the stars, down to earth. The previous insistence is the grounded part, while the stargazing part I’m talking about here is being curious (intellectual curiosity, exploration spirit, etc.). Maybe it’s because I’m young, or maybe IT’s because I read too much science fiction, all kinds of weird ideas come into my head. In the technical aspect of performance is often to understand a variety of technologies, hoping to understand their internal principles. During the four years of university, I have been exposed to many things out of curiosity: Android, Java background, CV image processing, deep learning, front-end, VR games and so on. I’m certainly not just playing around with Hello World, you can check out my history article, and I’ve blogged about several of these technologies. What I want to express here is that we should keep curious about technology, so that we can make continuous progress. This brings me to my second fundamental: curiosity.

3. Technical route

Having pulled so much from the top, let me begin to talk about my technical route and plan after that. Here’s a mind map I’ve put together to illustrate my own growth plan.

  • 1. First of all, let’s talk about my technical goals. My goals are divided into three levels: near, medium and far.
    • 1. Near: Means within a year. My goal is to do a good job in my own line of work android, at the same time to understand various android related technologies in the company, and then purposefully learn the company’s audio and video technology (I have access to it now).
    • Chinese: In two or three years. My goal is to gradually get in touch with the audio and video development in the company, and at the same time understand the audio and video related technologies in the company, and then learn various algorithms related to image and video in the company with a goal (I have no access to them at present).
    • 3. Far: After three years, IT is estimated that I will change jobs or start a business with a reliable person. At this time, my goal is to grow into a T-type talent, who can act as a technical leader, no longer limited to a certain technology.
  • 2. Let’s talk about my personal positioning. First of all, we often hear people distinguish algorithm from engineering. I think I have a bigger advantage in engineering among the two. At this point, I was positioned as an engineering programmer who understood algorithms, which gave me an edge on both sides.
  • 3. Finally, there is the technical route. My technical goal is described in the front, so that my technical route is easier to understand.
    • 1. There are three levels of routes in mind mapping: red (need to know source principles, or read books closely), blue (need to know how to use), gray (just need to know)
    • 2. First up on Android, which is what I’ve been doing lately:
      • 1. Architecture divided into MVC, MVP and MVVM: MVC is rotten, MVP is the mainstream framework used by major vendors today, but most companies don’t follow MVP’s original design and make appropriate modifications. Databinding in MVVM came out in 2015 but is still off the table. The rest are Google’s recommended architectural frameworks from the past two years. The ones highlighted in red can be integrated into the MVP, so they are worth studying.
      • 2. Databases fall into two broad categories: SQLite and Realm (a high-performance mobile database). Since realm is implemented in c++, you don’t need to know how it works just to use it. There are many orMs in SQLite and greenDao and Room are the best. Room doesn’t seem to be used by many people, so just get to know the principle of greenDao.
      • 3. On the web side: Retrofit + OkHTTP is the absolute king right now so it’s important to understand how it works. Socket is the cornerstone of the network library can be used, of course, this involves the computer network knowledge or need to understand the principle. Volley is a very old project that I think will still be used, so I’m not going to ask for it.
      • 4. Code generation: There are a lot of interesting things you can do with this stuff. Aop on Android can use these techniques, but you don’t need to know how they work.
      • 5. Flutter currently seems to be the king of the dynamic framework, so not only should you be able to use flutter, you also need to understand how it works. But the other two things may not be able to defeat The Flutter.
      • 6. Image Processing framework: Fresco is known for its high performance, versatility and customization. Glide, Picasso, etc., are known for being lightweight and less intrusive. For scenes like short videos, where there’s a lot of need for image manipulation, it’s natural to use Fresco and understand how it works.
      • 7. Serialization and deserialization: JSON is the old king. But Protobuf is extremely powerful and has Google’s endorsement. So you can’t drop either of them.
      • 8. Logging, Kotlin, plugins, push, IM, to name a few, are all things that need to be understood so that you can write your own wheels or customize them based on open source components without making mistakes.
    • 2. Next comes audio and video: MOST of these things are also what I need to learn, so I can grow up with readers
      • 1. The basic principles and concepts of audio and video are the things I must know. Two things are listed here randomly, and more specific ones may be added after I learn them.
      • 2. C++ is a stepping stone to the audio and video field. You can’t even understand the code without understanding it
      • 3. Lei Xiaohua’s blog, Lei Xiaohua is a great figure, but died young. His blog is a must see.
      • 4.FFmpeg is also a hard nut to crack but must crack. Here are two books and a library, priority red.
      • 5. Don’t repeat what protobuf said. OpenGL and OpenSL are two technologies you only need to be able to use.
      • 6. Finally, gpuImage and Grafika. These two is based on OpenGL packaging library, one is Google open source Android graphics image processing project, must go to see the source code to understand the principle.
    • 3. Then back-end technology: Students who are not interested in this can not understand, this is just my personal preference. Because I also practiced Java background for half a year, SO I am familiar with the backend, so I can play around and expand.
      • 1. RPC is the premise of microservice architecture, and various large manufacturers have their own RPC architecture. I have analyzed these things in this article, if you are interested, you can check them out. The red priorities I have listed here are all related to Python, because Python is very useful for deep learning, and it is also very fast to iterate in writing back ends.
      • 2. Databases and message queues are two very common technologies on the back end, and I’ve only listed them here because I haven’t had much time to learn how they work.
      • 3. Understand service governance
    • 4. Next comes the algorithm: In fact, with the development of audio and video, various algorithms are naturally needed, including video effects, video rendering, face recognition, beauty and face thinning, etc.
      • 1. Image processing, which I did in my graduation design, is quite interesting. Opencv can solve most of these needs, if you can read digital image processing again, you will be more perfect :).
      • Deep learning. I also used this section in my final project, but it’s a little bit more math demanding, so if you’re really interested, you can read the first three books in order and then learn python and c++ (which is one of the reasons I learned these two languages earlier). Finally, let’s take a look at the cs231N in action. If this is not enough for you, you can go to the frontier papers. My own goal is to reproduce the paper.
      • 3. If you know about the recommendation algorithm.
    • 5. The last thing is Linux/Unix: this is something I think is important, although you don’t need to know how it works, if you don’t know how to use shell and VIm. You’re going to have a hard time learning many of the things I’ve listed. So take a few weekends to learn it. It’s easier than coding, and the only reason you can’t learn it is because you don’t want to get out of your comfort zone.

Four, tail

These are the things I want to talk about today, I hope you can help. In addition, I hope that you can continue to pay attention to my series of articles about copying a douyin App from scratch, because this project is a place for me to practice after learning all kinds of knowledge, and after paying attention, you can grow up with me :).

No angst peddling, no clickbait. Share some interesting things about the world. Topics include but are not limited to: science fiction, science, technology, the Internet, programmers, computer programming. The following is my wechat public number: Interesting things in the world, dry goods waiting for you to see.