[Work] sentiment Android developers, system learn how to enhance their competitiveness in the workplace?

Internet status quo

Today, the Internet, and continued the 2018 trend. While in previous years, every end of the year the environment is not good, but still spring next year. But the decline in the second half of 2018, in the spring of 2019 has not been alleviated, so now the Internet environment is really bad.

First major companies competing to optimize employee, small business I will not mention, let's just say big companies. First, Ali, Baidu, Jingdong, Netease, the US group and drabs, and then there are foreign companies Oracle and IBM. A few years ago when major companies to optimize staff are not conceal it, but the wording is very subtle, say this is the normal movement of persons and business restructuring. This year is different, no need to conceal it, and some companies due compensation in place, also cut out a piece of praise.

Initially I thought it was just a bad end mobile environment, and now only to find that the whole Internet environment is not good. So, who nobody could laugh, good environment, who can not run.

Baidu public some time ago earnings, 2019 Q1 loss of 327 million, which is Baidu since August 5, 2005 NASDAQ, quarterly loss for the first time, Baidu shares fell. At the same time, advertising revenue, and Tencent Today's headlines are also affected. The reason is that many advertisers reduced the advertising budget. Behind reduced advertising budget, or because of lack of money. Internet is so wonderful, inter-related, bad environment, companies and employees equally uncomfortable.

So this time, outstanding development capabilities allow you to develop more career so smooth.

Now I would like to combine my experience to tell you the following points:

  • Learn how systematic Android technology? (Android knowledge)
  • Enterprises in the end what kind of Android development talent needs? (Android market)
  • Android way to learn what they are? (Android learning)
  • Some suggestions on the Android learning and improvement. (Android upgrade recommended)

Android knowledge

In the process of the development of Android, you need a lot of knowledge, and some of its knowledge it is difficult to classify, where I put them into the above five parts: UI, architecture, performance, NDK, others, others can be refined the code style, learning ability, and other third-party libraries.

  • UI aspects

The first is the UI, I believe most people are developing Android applications, so the UI knowledge is essential. UI total is divided into three parts: drawing, layout and tactile feedback. To write beautiful UI with animation, it takes a huge amount of time, there may have been a particularly large number of friends, like me, were thrown in a straight line to follow (Kai Zhu) of HenCoder campaigns. If you can write a very nice animation framework and open source control, or out of, I believe, find a good job you have no problem.

UI development knowledge

  • Architecture

This aspect is a thing of the life of the card. With the work required and experience (see codes) grows, we will always be more and more dissatisfied with their own written code modules, such as me, by this distress, I often write code that will appear the first three months he could not stand, obsessive-compulsive disorder, I would definitely put it over written. But if you project period is short, do not do like me.

When you are constantly rewriting their code package, you may have been related to the knowledge of architecture of friends. Knowledge of architecture including the design, and the ability to choose the right architecture, both of which generally speaking are complementary. Each new architecture or design ideas come out is often used to solve practical problems, their problem-solving focus is different, so when using any architecture or design it is the test of the programmer's experience. This knowledge is usually the most difficult part to learn, because he is not just an idea, if your small amount of code, or contact the project is relatively small, you tend to hit a little knowledge of this part of the last natural and Introduction forgot.

So in this regard I suggest that everyone in his spare time, multi-reference a complete open source project on GitHub, but also to write some of their own projects, the amount of code and upgrade their infrastructure capacity.

Mobile architect of knowledge

  • Performance

We believe the development of large-scale performance slightly APP engineer experience, especially strong. With the body of a growing amount of APP project, the development of more and more functions, you will find that a very smooth APP may appear Caton, OOM, ANR and so on, in addition to a memory leak in front of Han God mentioned, you might also lead to other problems because the performance is not good enough. And this is only part of the relatively fragmented, it is difficult to summarize, more is your experience, so many years of experience in the program ape more by enterprises of all ages.

Performance optimization of the system of knowledge

  • NDK方面
    这一方面的知识比较特殊,很多 Android 开发工程师在初中级阶段可能都不会涉及到。在开发中我们可能只会在特定的领域才会用到 NDK 进行开发,由于我也没遇到过,所以暂不多讲。

NDK模块开发知识体系

Android 市场分析

总体上,目前市面上可以将互联网公司分为两类:

  • 没有实体产品的,以软件产品为主的互联网公司(其中相当一部分为外包);

  • 有实体产品的,将硬件和软件结合起来的互联网公司。

我们暂且把它们称呼为 A 类和 B 类。

A 类公司往往偏向于 UI 及其架构,性能稍次,并且大多数中小型企业会要求应聘者能熟练掌握市场上流行的开源库以节约开发成本。这类公司开发的 APP 往往是纯虚拟的产品 —— 社交通讯、各类工具、资源聚合等。这些产品因为竞争激烈,功能需求变化也快,所以版本迭代的速度会非常快。这个时候,一个好的架构就可以节省许多时间,它能快速的响应需求,并迅速添加新的功能模块。UI 也是重点,在两个 APP 功能差不多的情况下,拼的就是用户体验了,其中用户最能感受到的就是两点,首先是界面是否美观,动画是否自然;其次才是 APP 是否流畅。

A 类公司对人才的需求大概是这样。

而对于B 类公司,他们因为有实体产品,因此往往会要求应聘者具有某种特殊的技能,例如蓝牙,WIFI等。

这类公司往往偏向于性能及 NDK,UI 稍次。在目前的大环境下,这类公司多数都在物联网产业链上,以智能硬件、智能家居、机器人居多,而这类公司的话,大部分其实都是传统企业转型而来,因此其开发的产品比较注重功能的完善及响应速度,UI 的话反而会稍微丑陋一些。毕竟消费者买的是实体产品,配套的 APP 就算再丑也得用不是么。

他们对人才的需求往往是这样的:

明确自己想去什么样的公司,或者对哪一类的业务更感兴趣,会有助于你更有的放矢地学习技能。

Android 学习方式?

我认为最主要的一点就是主观能动性,或者说兴趣,如果你对 Android 开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,自然是确立一个比较正确的学习路线。据说我们参会的还有一些应届毕业生或者还没开始工作的朋友。可能还在学习中很迷茫,我这里先给大家说一下我的学习经历。

学习 Android 无非几种方式:

  • 看书类

此类可能比较全面,但也意味着过时的问题,我不是非常提倡,但书籍是人类进步的阶梯,你们可以考虑。其实我也买了挺多相关书籍,但自从习惯在网络上学习后就不看了。

  • 线上课程直播或者录播

这个可能是初学者当下比较受欢迎的学习方式了,但所讲知识通常比较基础,而且学习速度慢,但效率确实挺高的。这也是我在入门 Android 的时候用的最多的方式。采用这种方式学习的时候通常会有一个毛病,就是喜欢边看边写,这是我不提倡的,我提倡看一段写一段。在前期你可以不用一整段都看完,以小节的方式学习后再写代码。前期可能你会觉得自己像在背代码一样,但我不可否认,这确实是效率挺高的方法。但真的太费时了,至少我在工作后没用过这种方案。

  • 看博文、看别人的开源项目、看官方文档、官方例子代码

这是我现在用的最多的一种学习提升方式。一般可以通过上面的看书或者看录播的方式学习到完整的基础组件和代码编写,但这时候你用基础的组件实现出来的东西美观度通常比较局限。但当你加入公司后,产品会设计出各种新颖的效果,而这些效果并不能通过原生控件实现,这时候,网上超大量的资源就涌现出来了。掌握 GitHub 正确的搜索姿势,通常能让你事半功倍。而这个时候,一个熟悉的英文阅读能力和理解能力将展现的淋漓尽致。随着开发经验的积累,你会发现你的开发速度直线飙升。

Android 提升建议

成为一名Android开发者很容易,但是要成为一名成功的、突出的Android开发者却不那么容易。这需要付出很多的努力,耐心,奉献和毅力才能做到。

我并没有什么捷径或者简单的方法来告诉你让你成为一名成功的开发者。但如果你愿意全身心投入并付出努力的话,你肯定会得到你应得的成功的。

应大家的请求,我这里给大家提供一些提升建议,仅供参考。

  • 开始阅读更多的代码

大部分的开发者都不会抽时间去阅读其他开发者所写的代码,他们大多数时间只是花在写他们已经知道的事情上。但那并不利于你成长为一名优秀的开发者,也不会增长你的见识。我建议大家阅读同事的代码,让你对你们的项目更加了解,当你对公司的产品代码足够了解后,你给老板提加薪的时候才更有底气。
有的人会说,咱们公司就我一个 Android 开发者,我看谁的代码呢?GitHub 上那么多优秀的开源应用和类库,我建议你们去阅读并开始学习它们,每天 30 分钟的代码阅读量是个非常好的开始。你将会惊讶的发现,还有如此多美妙的东西是你没见过的。

  • 克服对未知的害怕

Android 系统很大,非常大。你不可能在一两个月内完全掌握它。随着学习越深入,你会发现越多的内容需要学习。作为一名初学者,很容易也很正常地出现这种对未知恐惧的害怕。我也不例外,曾经我学习 RxJava 的时候,我看了很多很多的博文但持续了整整一个周,依然不懂,这时候觉得 RxJava 真是太难了。在这种时候,不妨先放下它一段时间,过些日子再去学习你会觉得如鱼得水的。比如我,前面就在GitHub 上开源了RxJava2Examples尝试去克服对未知的恐惧吧,学习那些你确实需要用到的东西,能够让你开始手头正在构建的应用,然后慢慢地开拓你的视野。

  • 尝试开始写博客

写博客或许是一件相当费时的事,或许你写的博客只是阅览了多篇文章后的总结而以,或许你写的博客一点都不深入,但但是!!!别人的永远是别人的,作为一个已经写了很多博文的我来说,我所收获到的东西,不是这点时间能比拟的。因为只有你足够懂了,你才能讲给别人听。

  • 开始贡献开源库

GitHub上有很多很棒的开源库,但由于一些特殊的原因可能作者并没有时间维护它。尝试去为开源库贡献你的源码,你会得到非常非常非常大的反馈的。

除了为别人开源库贡献,你也可以开源自己的代码。图片压缩在项目中挺常用的,在编写我们公司的项目的时候,我自己写了图片压缩,后面觉得挺好用的,所以直接把它开源到了GitHub上。这个过程非常的 nice,不仅学习到了特别多的知识,而且通过大家的测试,我的开源库的伸展性更佳。开源的过程有很多的东西是需要你学习的,而且这有助于你成为一名优秀的开发者。

  • 花一些时间来学习 Android 最佳实践

要使自己比其他开发者更加出众,并能构建出整洁美观而又功能完善的应用,你需要开始学习一些 Android 开发最佳实践。除此之外,你还应该多去关注市场发展,看看最近流行的库都是怎么用,并尝试阅读它们。

写在最后

本次我的分享也接近尾声了,感谢你们在百忙中花上一下午来这里聆听我的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!

最后这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

发布了212 篇原创文章 · 获赞 783 · 访问量 12万+

Guess you like

Origin blog.csdn.net/weixin_44339238/article/details/104482549