2019年我的技术自我救赎之路,2021年Android开发前景如何

笔者也是反复思考才从以前的思维框架跳出来,这个过程很痛苦,自然也受过leader和同事们的启发,跟优秀的人一起共事,慢慢的你也会有这样的思维,环境的重要性就不多说了,希望这部分能对遇到职场瓶颈的同行能有所帮助吧。

人生苦短,我用Python


笔者18年下半年开始接触深度学习,开始尝试转型AI,也是这个时候我用起了Python。19年上半年在项目组也负责数据生产自动化管理平台的建设,Python就是我们的主力开发语言。来回顾下我用Python做了哪些事情:

  • 用Tensorflow搭建过几个NLP模型

  • 用Python写过几个爬虫

  • 用Airflow搭建过自动化任务调度系统

  • 用Python编写过代码框架

解释下,TensorFlow是Google开源的深度学习框架,采用的语言是Python,笔者当时也是感受到AI的浪潮已经来了,所以想去尝试下深度学习去解决业务的一些问题。经过一段时间学习和尝试,发现短时间内想恶补深度学习的领域知识还是有点困难的,数学相关的知识太过薄弱,模型算法基本都是使用现成的,所谓的调参就是AI工程师根据不同规模的数据来训练效果最好的模型的过程。目前数据才是深度学习最重要的输入,只有当数据达到一定的规模,调参才有意义。这也是我当时接触深度学习的一点感受吧。

爬虫就不用多说了,数据的来源之一也是靠爬取网络上的数据,python写爬虫也不是什么新鲜事,笔者当时也只是用Scrapy爬虫框架去解析网页的xpath结构。当时面试过很多Python工程师候选人,发现他们还在手写爬虫,连基本的爬虫框架也没有接触过,基本面试结果就挂了。作为工程师,善于使用工具来提升自己的工作效率,不要只会写胶水代码。

Airflow也是Python写的任务调度框架,因为我们的业务场景跟DAG(有向无环图,Airflow的一个概念)很类似,经过技术选型选定了Airflow来搭建我们的任务调度系统,这个平台还是蛮有意思的,因为可以通过自动化去释放人力,我们的数据生产从按时交付率85%提升到98.5%,把从按月交付的节奏加速到按周到按日交付,并且实现周六日持续运作,在业务量增长3倍的情况下,同时投入人力减少至少10%,将一部分生产管理转向需求管理。 做这个当时还是觉得有点价值的,因为我们把重复的事情真正

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享

的实现自动化,把数据实现全流程串联。

真的是人生苦短,我用Python啊,其实用什么并不重要,重要的是你清楚自己正在解决的问题是什么。不管是用Python还是其他什么语言,都是解决问题的手段罢了

聊聊技术人的工程能力


什么是技术工程能力? 19年我在这方面又有哪些提升呢。

TDD

测试驱动开发,相信很多开发者都听说过,但我重来没见过哪个团队真正的做到测试驱动开发的。很多人以为测试驱动开发就是先写测试,然后再写业务代码。这不叫测试驱动,只是测试先行。

19年尝试过的一件事就是使用TDD去做开发,这是一种反直觉的编码方式,因为你需要针对业务需求,先要想清楚你要做的事情,然后将任务拆解到足够小的粒度,并且要做到可测试,并且能保证一定的代码覆盖率。做到这种程度本不是一件易事,因为这对工程师的要求极高,日常工作光是能将任务拆解到足够小的粒度就很困难,很多人可能前置阶段都没能把需求理解清楚,更加别说他能够按照这种模式去开发了。TDD是外国人提的,由国内的一些行业意见领袖推广,我思考过一个问题,为什么国内没有多少团队能做好TDD,并且能真正落地这件事。我想了一下,这可能跟我们国内的互联网环境有关,因为这些年互联网行业的井喷,我们都太过关注业务的发展,很多团队迫于业务的压力根本没有时间写单元测试,还有很多人的技术素养本身就比较低,连单元测试是什么都没搞清楚,而且写单元测试不是KPI并且费时费力没有直接上手来得更快,这样也就能理解为什么大家都不愿意写单元测试。

关于TDD,我从来都是持认可的态度,但我有以下几个观点:

  1. 团队成员知道并懂得怎么写单元测试,这需要大量的训练和培训

  2. 不要为了TDD而TDD,它只是保证质量的一种手段

  3. 提升你的团队成员工程素养,把质量意识融入到血液中去,而不是靠KPI

CI/CD

持续集成持续交付,如果你还没听说过,说明你已经outer了。得益于我参与过开发者服务的产品和工具研发,这些年我学会了怎么给自己开发提速,CI和CD就是能够让我从繁重和重复的构建工作中脱身出来,从而更关注业务价值的创造。可能大家说,不就是接入持续集成吗,这个我也会用。我这里不是想说怎么用这些工具,而是一种敏捷的思想,这里就不得不谈谈DevOps

DevOps是一种软件工程文化和实践,旨在统一整合软件开发和软件运维。

从集成、测试、发布到部署所有环节,你都能全程自动化。构建自动化、测试自动化,一切皆代码,自动化一切,能够尽早得到反馈。 知道为什么别人能够高效的完成工作了吗,利用工具和平台帮助你解决低效的重复劳动就是你提升工作效率的思路。

也正是这样的思路,今年我帮助团队利用DevOps平台搭建了能给我们构建提速的流水线,将自动化融入到我们日常工作当中,我也从中受益良多。

所以什么是技术工程能力?我个人觉得是你保证研发质量和效率的能力,利用工具和平台赋能于日常开发,将技术和业务价值相结合。

回归客户端开发


19年的其中一个重要的决定就是重新回归客户端开发,毕竟这是我的入行以来的吃饭的行当,而这也是我最擅长做的事情。很多鸡汤文都在说什么“逃离舒适区”,我觉得做擅长的事情并不是让你呆在舒适圈不出来,而是选择适合自己做的事情然后坚持做下去做到最好,比起你每天焦虑的要去追赶什么趋势要更靠谱一些。

18年我做了一次错误的判断就是转型做AI工程师,因为当时我所接触的业务和自己的认知想当然的认为自己可以转型成功,赶上这一波浪潮,从此走上人生巅峰。现在回想起来,我确实也被这团火热的深度学习给带偏了,首先现在所谓的人工智能基本都是数据喂出来的,而AI工程师也不过是调参工程师,并没有什么特别高大上的东西。然而我那薄弱的数学基础和算法能力(这是绝大部分偏软件开发的工程师的通病),我也很难真的在这个领域有很比较深的造诣。根据我以往的工作经验和能力圈来看,我更适合做软件工程方面的事情,客户端开发更能让我发挥自身的价值。

笔者是做APP应用开发出身的,负责过南方周末APP,Bugly 热更新SDK、搜活帮APP的开发,已经足以证明我有比较强的开发商业级APP的能力,加上业界口碑比较的好的开发者服务产品Bugly,我比纯应用开发的工程师更有研发效能的视角,比如研发工具和开发者服务的理解。

回归客户端开发不意味着吃老本走老路,从18年开始说Android凉凉,iOS凉凉的观点就经常听到,而笔者觉得不是行业凉凉,而是觉得以前随便培训几个月就能找到好工作的时代已经过去了再加上资本寒冬,行业进入规范阶段对人的要求变得越来越高,尤其对高端人才的要求,你只会写几个页面是远远达不到一些大厂的要求的。然而AI的火热让很多人都出现淘金热的现象,大家都想赶上这波浪潮,可惜的是AI商用落地仍未成形,市场上的缺口远没有移动端的大。那些放弃客户端转AI的,反倒为客户端打开了缺口,一些大厂和独角兽公司仍在大力招移动开发工程师。所以并不用担心做移动开发找不到工作,只是你没达到别人的要求罢了,好好积累吧。

除了对行业形势的思考,我更看好的是大前端的技术发展趋势,以前分Android和iOS两端,分别要花比较大的人力成本去做研发,而且研发效率也大打折扣,未来多端融合开发一定是趋势。也意味着,你不能只掌握一端的开发能力了,包括iOS,跨端开发能力将会更能让你更吃香。虽然大前端都喊了很多年了,类似RN、Weex的跨端解决方案仍然不能很好解决平台的差异性,然而今年的Flutter将以一个全新的思路来解决跨端UI渲染的问题,各大前端的大会都在推广Flutter的行业实践,我觉得2020年这将会是井喷的技术领域,也正是客户端开发转型大前端的一个契机。 正是因为这个,我选择继续在客户端领域继续深耕来让自己更好将技术和业务结合,创造更多的价值。

上班如上坟,定位有多重要?


前面讲了19年我尝试过Python解决业务上的一些问题,一些技术工程能力的思考,重回客户端开发的决定。这些都不是最想要说的东西,我最想说的还是困扰我许久的职业定位。

相信大家跟我一样,都是怀揣着梦想进入互联网行业,想开发一款产品来改变世界。但真正进入这个社会,这个行业之后,你会发现往往我们才是那个被世界改变的人,认清楚自己真的只是个普通人。

前段我在公司参加了一门叫做职业画布设计的培训,我觉得非常有价值,大家感兴趣的在网上可以搜一下兴远咨询。为什么它非常有价值,因为它让我更系统的思考了自己为什么选择做在线教育,让我了解了工作和职业两种的职业画布是不一样的。

工作 VS 职业

什么是工作,需要你付出劳动时间换取报酬的事情。那么什么是职业,是能够实现自我价值的事业。所以你选择了哪种性质的工作,就是选择哪种生活。 附上当时上课的一张图:

2019年我的技术自我救赎之路,2021年Android开发前景如何

这里面让你思考几件事情:

  1. 谁是你的客户

  2. 你的角色/你和客户的关系

  3. 客户如何了解你/你如何交付

  4. 你如何帮助客户

  5. 你做什么活动

  6. 你是谁/你拥有什么

  7. 谁能帮助你

  8. 你付出了什么

  9. 你得到了什么

所以你思考下,你目前所做的事情让你付出了什么,而你从中又得到了什么。我觉得这比你看多少书,学多少新技术会更有价值。因为你只要想清楚,你未来所做的事情都是围绕着你的价值主张所做的决定。

我分享下笔者的价值主张是什么吧,我是希望知识和技能能够做到更好的传播,让教育资源变得更加公平,帮助有需要的同学更好的得到成长,提升他们的职业竞争力。关于其他的,就需要你们自己根据自己的情况去完成思考,什么才是你最想去做的,而你愿意付出什么,最终又想得到些什么。想清楚这些,或许这些年回头看才不会觉得白过。

2020年展望


19年回头想想会比18年过得更加自在一点吧,至少让我想清楚了一些事情,尽管走了一些弯路,但也有它的价值,人总得有些契机去做一些事情。19年是我的技术自我救赎之路,安心回去做好自己擅长的事情,也能让自己活得更加自在一点。不管是工作还是生活,开心才是最重要的,每天工作的时间很长,我也不想每天上班跟上坟一样。

最后说说2020年的展望吧:

继续提升工程素养

最后

在这里小编整理了一份Android大厂常见面试题,和一些Android架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。

2019年我的技术自我救赎之路,2021年Android开发前景如何

2019年我的技术自我救赎之路,2021年Android开发前景如何

喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗

最后

在这里小编整理了一份Android大厂常见面试题,和一些Android架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。

[外链图片转存中…(img-syvIWDBe-1640750726054)]

[外链图片转存中…(img-RCMuOIlo-1640750726100)]

喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

上一篇:学习markdown语法


下一篇:2019届应届毕业生Android秋招总结,已成功入职网易云音乐