Special has broadcast address: live. Juejin. Cn / 4354 / xdc202…

Hello everyone, I am Guo Shuyu, the author of “Detailed Explanation of Flutter Development”. Today, the first three people sharing Flutter are all named Zhang. My name is Guo, and I feel so stressed ~

As the title shows, today’s content to share with you is the programmer career promotion and confrontation, from the title can be seen that today I want to share is a “bright words”, we can bear, but also hope to help you.

1. Fight anxiety

Why do we talk about this topic, because in the Internet large-scale dividend period has passed now, all kinds of “internal volume” around us can be seen everywhere, and under such an environment, we are in the volume to live, who also consider what career promotion and development?

For example this 1024 game activity, true roll up, others dig a score than you share more than 10 times, I believe that everyone has experience.

So fighting anxiety is now a required course, to fight anxiety, it is necessary to find the source of anxiety, the source of anxiety, I mainly summarized as the following three points:

1.1 “We media” brings anxiety

We media render anxiety is believed to be the most common and easiest to distinguish. Because this kind of “anxiety magic” is used too much, we begin to have resistance, generally through:

  • “Other people’s high salaries”;
  • “So-and-so technology to cool”
  • “Certain frame will be popular”

Through contrast and rhythm to create panic, and with the abuse of this routine, although people have begun to immune, but “ants bite elephants”, this kind of content exposure, unconsciously the potential anxiety will be accumulated little by little.

Dealing with these anxieties can be as simple as learning how to assess the level of credibility. For example:

What have I learned after reading this article? Or just plain unhappy after watching it? Because there are a lot of articles where the wind direction might be:

  • “Why do I choose XXXX”
  • “Why did I give up XXXX?”
  • “I got the Offer from the big factory with XXXX.”

This is not to say that these articles or advertorials are not good, but first distinguish the position of the article, because if the advertorials, then the position is generally more extreme, need to do some judgment and screening of the conclusions and data.

There is nothing wrong with this. However, as readers, we should judge whether the opinions of the articles are close to the facts. In particular, we should improve our sensitivity to data and reality, and make more screening by ourselves.

During the period when Flutter was being blown wildly, I was curious about the usage of RN, Weex and Flutter in Big factories, so I made a statistic on my own. Although it was not completely real-time and accurate, when I saw all the data mentioned in some articles later, I can tell from my own experience how reliable it is.

This year, a new statistical data was also updated: “Analysis on the Application of Flutter Framework in Mobile Terminals by Large Domestic Manufacturers”.

Therefore, improving the amount of information and data sensitivity is a good way to effectively combat media anxiety. Through data communication, facts speak for themselves.

1.2. Uncertainty brings anxiety

On this question, I think of a saying: “The more insecure people are, the more they pursue certain things, but there are many uncertainties in life, so they become more and more anxious.”

When we grow up, we really want certain outcomes, like:

-so-and-so frame is cool, is it worth learning; – Learning Go is not the salary will be more than Java; – do the algorithm is not so inner volume;

It is right to pursue technical learning with high returns and high dividends, because the higher the input-output ratio is, the better it will be. However, it is easy to fall into the vortex of anxiety when you pursue cost performance in excessive waiting, because you are always in a waiting state.

Watching because of uncertainty, because watching causes anxiety to build up bit by bit.

So for the anxiety caused by the uncertainty of growing up, I personally recommend working on what you are currently certain of:

Which is better to learn between entanglement Compose and Flutter? It is better to choose one of them to learn first, it may not be the most cost-effective, but it is definitely helpful.

The best way to avoid the anxiety of uncertainty is to take action first. When everything is ready, you want the best conditions and the best returns, but the outcome is just like the stock market.

Therefore, accepting limitations and uncertainty is the key to fighting uncertainty anxiety. Every stage of growth needs to face various uncertainties. So when hesitating and feeling scared, let yourself move first. Learn React Native or Flutter first.

What about people who say, I just don’t know which one to study?

There’s nothing I can do about choice disorder, but from personal experience, learning something isn’t about waiting for everything to be ready.

Because in my historical experience, whenever I define a goal like:

“I have an idea that I must write an article at the end of the week.” Then I have no idea at the end of the week. So now when I have an idea, I will immediately record the download, and then start to write down the rough content, so that I can achieve the goal I want.

Going back to the question of uncertainty, although it is true that technology updates quickly, some scale of technology in the market is not a sudden death, because historical iterations are a long process, you see Weex also exists through uni-app to this day, Even with Flutter, React Native has obvious advantages in many scenarios, such as code-push.

In addition, the iteration of technology is not a fault. Often, the experience and summary brought by the previous technology can help the next technology to a certain extent, such as the complementarity between Flutter and Compose. Therefore, the key to solving the uncertainty anxiety when you start Flutter is to a large extent because you are in the same place.

1.3. Anxiety caused by effort

Yes, effort can also bring anxiety, because it doesn’t necessarily bring immediate results or rewards, because feedback takes time to accumulate.

Why is gambling addictive? Because the feedback is so fast, every choice you make has immediate consequences. But is gambling good? Obvious is not good.

While learning skills follows hiring, advancing your career isn’t just about catching up:

Because if every skill is superficial learning, it will be more and more tired after learning, the harder you work, the more you feel lucky and bitter, because you are always jumping in different lines repeatedly, which is just like queuing!

I am deeply impressed by a saying that “people tend to overestimate short-term returns and underestimate long-term benefits”. In fact, growth and promotion can not be completed in one or two days or weeks, but requires a long period of learning and experience, which naturally forms a barrier to ability, and this process is continuous.

When I was growing up, I had to lower my expectations. For example, today I wanted to learn React Fiber:

  • React Fiber
  • Tomorrow WHEN I have time, I will look at React Fiber and see what changes I need to make in React 16 and React 17.
  • There will be time next week for an example to try out these changes;
  • Next month you might want to consider why React doesn’t use Vue 3.0 for dynamic/static combination;
  • In the next few minutes, we’ll take a closer look at how React Fiber optimizes the underlying layer.

This process does not require careful paddling and waiting, and we can immediately work at any time to fish:

  • Does not require fast
  • Does not require deep

I only need to lower my goals, keep learning, and let my every behavior generate feedback, so that I can slowly immerse myself in it. Therefore, to fight fast with slow and fight close with far is some summary of my growth under the “inner volume”, to give myself more space for thinking and a happier programming life.

You’re not in a roll with colleagues, competing against who’s faster, but rather, competing against continuous output

So to sum up: fighting anxiety is actually a process of mind cultivation!

  • Increase your information;
  • Get yourself moving;
  • Give yourself time and sustainable motivation to get feedback;

Of course, after all that chicken soup crap, here’s how to do it.

Second, self-improvement

Work is the process of earning by labor in exchange for equal remuneration, and only during this period, there is a new harvest.

2.1 distinguish between effort and repetitive labor

In the Internet industry, there is a tradition of advocating a “Wolf” culture, but often this “Wolf” effort can end up destroying one’s path to promotion, because it often only looks like effort.

It’s an important skill to distinguish between “effort” and “repetition”!

If you find yourself at work every day:

  • Adjustable size;
  • Changing color difference;
  • Adjusted layout;
  • Meeting to change yesterday’s needs;
  • Whether the requirement is a front-end or back-end implementation;
  • Is this a bug or as design;

That’s not progress, it’s just getting paid for your time, because choosing challenging work and choosing challenging physical work are two different things.

Long hours of repetitive and meaningless work don’t really do much other than make you seem busy. For example:

– Learn how to change font size and color quickly, – can achieve colorful black in 5 ways

The improvement of professional ability is not a big deal, but it can take a lot of time. A good job is one that provides professional and correct feedback, as well as certain challenges. For example:

Supernova, I don’t know if you’ve heard about it, it’s a tool for turning design into code, it’s free on Flutter, a lot of people don’t like it, I don’t like it either, because code generation tools have all sorts of problems naturally. However, it has become a bridge of communication between me and the designer: how to do it, whether to do it or not, and how to make it better. It has become a possibility of communication between us, which actually comes from the cooperation and feedback of the team: When I recommend this software to the designer, the designer through the design draft after the original import, he found himself designing the gradient effect of the progress bar does not appear, so later he split into three sections of the design in the design draft level gradient color, after the import effect can also be found out, and I saw the generated code, We also know that this demand needs to be realized through three layers of gradient.

Therefore, it is necessary to judge the value of the work content in the team. Of course, manual work is inevitable in the work, which is a necessary process in exchange for payment. Then learn to make manual work less physical, such as summarizing, templates, scripts and other abilities to reduce the time required to invest.

For example, the PNG and iconfont files needed to be updated frequently before, which often required me to manually import and hand-write Unicode. Therefore, after making certain rules with the design convention, I used the script to automatically parse the directory structure and automatically read the agreed name on iconfont. The corresponding IconData object is automatically generated, which saves a lot of manual labor that I need to implement repeatedly.

The goal is to achieve long-term physical liberation with short-term workload.

2.2. Make useful communication

This is also important because it’s easy to get lost in useless communication.

The Internet is a place of things and things. You can see a variety of active opinions every day. Communicating on this basis can help us learn a lot of things that we don’t know, although not necessarily useful, but it is very helpful to broaden our knowledge:

For example, do you know what Github Git LFS is? Every Git Large File Storage account gets 1 GB of free Storage and 1 GB of free bandwidth per month: If you push a 500 MB file to Git LFS, you will use 500 MB of allocated storage and will not use any bandwidth, while downloading will take up the band frame.

The problem is that a friend suddenly receives a notification from Github that his Github LFS bandwidth has run out and needs to recharge if he wants to continue using it.

That’s the message of simple, useful communication. A programmer’s career isn’t just about working in isolation, it’s about working out.

If this content is just idle chatter, let’s take another example: For example, the privacy and approval of android in China:

In my group is a group of fishing every day of the dragon king, through their output, all kinds of problems about auditing on let I harvest a lot, such as which SDK, need how to deal with, in view of the information gathered can go a lot less detours, even some can be a compliance report of the third party platform of compliance.

This information may not be immediately useful, but it can always play a surprising role when needed. Although you can solve them by yourself, you can avoid a lot of detours by obtaining this information.

Of course, the premise of communication is effective and healthy. For example, the most ineffective communication is: network quarrel, distinguish what is discussion and what is bickering, avoid wasting time in useless places, such as:

– Flutter seems to have no advantage in image loading compared to native – Flutter is garbage;

"> < p style =" max-width: 100%; clear: both; min-height: 1em;Copy the code

Sometimes you’ll see arguments in the group:

  • Who is better, Kotlin or Java?
  • Dart is garbage;
  • Which one is Google’s real son, Flutter or Compose

Everyone is expressing their opinions, but most of the time some of the quarrel is just to prove themselves right, sometimes just to show the superiority of the stampede, simply put: “they are really free”.

And such quarrels are similar in the end, because this time we discuss not for itself, but to show you are right, want to let the other side to accept their point of view, the two sides is spending time for more emotional, then bring emotional imbalance, it is worth spending time.

I try to stick to one principle in my communications: even if you are right, there is no need to prove others wrong, and there is no need to assume intellectual superiority.

In the process of communication, we still need to abide by some basic interests, and there is no need or obligation to force others to accept your point of view. We should communicate with this perspective, withdraw at appropriate times, and learn to distinguish between discussion and quarrel. I particularly like this sentence of “Zhang SAN” : You can’t win an argument because there is no logic in it. He starts by disagreeing with your argument.

So engaging in friendly discussions and getting out of the “battlefield” in time is the key to self-improvement.

2.3. Precipitation of work

If work and communication are the means of ascension, precipitation is the final element.

I believe that we have solved all kinds of strange bugs in our work, and the exploration, recording and precipitation of these bugs are the best nutrients for growth.

I believe that most of the students who have read my articles should know that a large part of my articles are derived from some very small questions, such as:

“Flutter on iOS will cause the font display to be abnormal when the system language is Korean and appears with Chinese.” This problem may be rare and you may not encounter it if it is not for work requirements:

PingFang SC: “Heiti SC” : “PingFang SC” : “Heiti SC” : “PingFang SC” : “Heiti SC” :

Of course not. Why is this a problem?

After searching the data, it is found that The Korean font used in Apple SD Gothic Neo should be a superset font library. Then, by comparison, it is found that the [broad] character does not exist in this font set, so it becomes Chinese [broad].

So that’s it?

  • What font does Flutter normally use on Apple and Android? What font sets are used in Chinese and English, and what are their names?

  • Then think about why the fonts are so large. What is the design logic behind Flutter’s rendering of fonts? How is the weight of the font itself calculated? How does the baseline apply to that? What parameters can be adjusted? What do they adjust on the drawing font?

It can be seen that there are many contents that can be deeply dug and settled from a niche problem. The key lies in whether you have such thirst for knowledge. In fact, problems at work are the best starting point to expand your ability. Such as:

Why not try catch the Future of a Flutter? Async /await is Futrue is syntactic sugar, what kind of code is Futrue compiled into?

These are some of the problems that you will encounter in development, and by digging into simple problems, you can find ways to improve. All precipitation is exploration, and then layer by layer answers, and finally records.

That’s where the gold digger platform comes in, recording your questions, exploring what you’ve learned, and then communicating by showing it to others as well.

Three, outside work

What do you — what do you have left after you leave the company? This is probably one of the most common phrases in your career. It’s a very unpleasant phrase to hear, and it’s often used by people who “sell” anxiety in the past, but for programmers, what’s left over from the company’s projects and business?

Github and blogs are essential!

Whether it’s open source or writing articles, you need to have the time first, because building your own content is also a very important operation. If you have the time outside of work, then Github and writing can bring you new gains:

  • The first goal is to increase their popularity and influence
  • The second purpose is to increase their communication and learning channels
  • The third goal is to continuously promote your growth through feedback

3.1, making

Let’s start with Github. In fact, to do open source is generally to do services. Most open source projects solve the inertia of programmers: “Why should I write by hand when there are wheels and solutions?”

So a lot of times Github projects don’t have to be technically awesome, but they do have to help developers solve all sorts of messy tasks, like:

I used to open source GSYVideoPlayer. This project has been going on for 5 years, and now it has a star of 16K +. Do you think it has a large amount of code? Yes and no, it is just an integration of common scenarios for various players, and then step by step, so that users can write less code and understand less basic knowledge when developing player functions on the Android platform.

So where does GSYVideoPlayer come from?

Fact at first I have to find others’ open source players, but use after period of time, found some problems, and are not satisfied with I need, so you are based on the original project made some reconstruction and repair, then in the process of open source, because the issue and the upgrading of usage scenarios, the reconstruction of the repeated and adjust the project, And you have GSYVideoPlayer.

Therefore, if you do not know what open source project to do, you can do optimization and upgrade based on the original open source project, you can raise PR or implement an advanced version of the project, so as to start your own journey of open source. My first open source project was the optimization of an old project.

And open source don’t worry about open source projects too “weak chicken”, GSYVideoPlayer is very rough from the beginning, there are a lot of problems, and solving these problems is a learning and growth process.

Another key point about open source is that in general, don’t expect too much from a project you’ve just opened. Github projects tend to accumulate a lot of attention, and occasional bursts of attention require your own running and long-term maintenance.

You see GSYVideoPlayer at the beginning of open source, daily increase is only a few single digit, but the subsequent adherence slowly has continued to increase or decrease very attention.

Of course, it is not to say that there is no need to do anything. After the project is created, it is ok to wait. To continue to increase, it needs continuous maintenance and promotion, and the most direct way to promote is to achieve through continuous article creation.

Generate knowledge through articles and then present the results through open source projects.

This is the most common way, a good article can bring good attention to your project, and a good project can bring more traffic to your article, it is mutually reinforcing.

# # writing

Writing is also a very important ability, but also a precipitation of knowledge, writing is not just “you understand” so simple, but to “you understand” knowledge into “others can understand” content.

In my years of writing, especially in my books, I have often found it difficult to put my ideas into words that are easy to understand, especially if they are coherent.

So I often ask myself when I write, “Why?”

For example, when I wrote about the mixed development of Flutter:

The new Flutter Hybrid development mode can be used with the Hybrid Composition configuration. This way, the original Android controls can be integrated with better performance and with fewer problems.

        <meta-data
            android:name="io.flutter.embedded_views_preview"
            android:value="true" />
Copy the code

So why does Hybrid Composition improve performance? What’s the difference between the PlatformView implementation and the previous one? What are the advantages of its implementation? Are there any other problems?

By thinking about the questions I might ask as a reader, I can update and sort out what NEEDS to be expressed in the process of writing.

This is one of the ways I usually write, of course, some people will say, I don’t know what to rewrite, I think a lot of things have been written, this time from my personal advice, such as audio and video development, I believe that most of the time we will be more or less involved in audio and video development:

  • We all know MP4. Do you know what an MP4 is?
  • MP4 If it’s a container protocol, what’s in it?
  • What is video encoding and what is audio encoding?
  • What is M3U8?
  • What can RTSP and RTMP be used for?
  • Double speed playback by what synchronization?
  • How does encryption work in HLS?
  • What is the difference between hard decoding and soft decoding?

These are problems that we don’t normally encounter, or we don’t know, because normally we just play an MP4 URL, the SDK does a lot of things for us, the streaming service providers do a lot of things for us, and when it doesn’t work, we say the SDK doesn’t support it. Just make an issue.

However, because of this state, we miss many opportunities to improve ourselves. I even had an interesting issue like this on Github:

Therefore, when you don’t know what to write, you can gradually explore the problems encountered in the work, turn the learning and exploration process into articles or projects, and these things will also become the promotion and embodiment of your personal value outside of work.

To sum up: