前言

两年前, 我写过一篇《我的三年Android开发总结》,时光流逝, 转眼间我已经从事Android开发已五年有余,很庆幸我依然从事着我热爱的Android开发.

我们做技术开发的人都有个习惯,那就是喜欢不定期地进行总结,当然我也不例外.我有个特别的爱好,那就是把我一年前的代码拿出来和我现在写的代码进行对比,看是否有所长进.

一个人回首过去,如果发现现在的自己和一年前或者更久前的自己没有任何积极的变化的话,那么你这些年就算是虚度光阴了.

回首我这五年, 如果说前三年我是野蛮生长,疯狂撸码,较为浮躁的三年,那么这两年我就是沉下心来,潜心修炼积累经验的两年.

工作环境发生变化

我从事Android开发的前三年只在一家公司待过,每天都做着几乎相同的工作,做的项目也是较为简单的小项目,一两个人就能承担的应用开发,用的也是相对简单,没有什么核心竞争力的技术.

但是这两年来,我接触到了不少的公司.它们有改革的老国企,有刚刚成立的创业公司,也有已经上市的公司.不同类型、不同行业、不同规模的企业,必然导致工作内容、团队、企业文化的不同.

相比较我待的第一家公司来说,后面的几家公司更加尊重我的个人看法,这也是我决定跳槽的原因.虽然我也非常感谢我的第一家公司给予我更多的机会去成长,但是我们出来工作本质上是出于经济目的的,光谈理想而不给予现实的恩惠,一味强调你是公司培养出来的,时间长了是留不住人的.

老旧国企

俗话说,跳槽是有成本的.由于工作内容、团队的变化,我需要重新学习特定行业的专业知识,重新建立自己的同事关系,这就要求我需要非常强大的学习能力和适应能力.

我的第一次跳槽相对来说是比较失败的,因为没有经验,我居然跳槽到了一个严重老龄化的前国企公司,这是一家做汽车硬件的企业,周围的同事平均年龄35岁以上,每天他们讨论的话题都是自己家小孩的学习教育,这让我这个连女朋友都没有的单身汪情何以堪.

更让我无法适应的是它那非常慢的工作节奏,一周的工作半天就完成了,剩下的时间完全不知道做什么…真的是无事可做.

创业公司

后来我被一位非常赏识我的老板看中,加入到他的创业公司,成为了一名创业者.这是一家从事儿童可穿戴设备的公司,作为最早加入的员工之一,我可谓是见证了一家创业公司从起步到发展再到衰落的全过程,而这仅仅只需要一年的时间.

创业公司的坑虽然不少,不过这对我们个人的成长还是非常有价值的.在创业公司的这一年,我做了很多普通程序员这一辈子可能都无法触及的工作内容,也积累了很多人生哲学.

  • 1.应用开发框架的搭建.
  • 2.产品需求讨论.
  • 3.企业文化建设.
  • 4.企业税务处理.
  • 5.应用的上架和运营.
  • 6.产品生产、组装、销售和售后维护.
  • 7.企业商标、专利注册.

在创业公司,职位没有明显的划分,很多时候你需要做很多与你岗位无关的工作.从好的角度来说,这可以极大地丰富个人的人生阅历,提升一个人独立思考、自主学习和解决问题的能力.如果你的经济能力有一定的支持,那么去创业公司历练一把也是非常不错的,万一它日后发展成为一家独角兽呢?

上市公司

之后我来到了我现在待的这家公司.比起我之前待的创业公司就我一个Android开发,在这里我算是找到了失去很久的团队归宿感.大公司除了人多以外,工作的强度和难度也大大地增加,加班当然也成为了家常便饭,当然与之相对应的福利也是提升了不少.

在大公司,技术水平并不是决定这个人发展潜力的决定性因素.要知道大公司最不缺的就是人才,能进大公司的,哪个不是有两把刷子的呢?对于大公司而言,他们需要的是拥有极强责任心以及任劳任怨的员工,能否承担某一模块功能的稳定性就直接决定了你的去留.除此之外,沟通能力也是非常重要的能力.因为大公司的项目功能相对复杂,参与的人员众多,很多复杂的问题往往可以通过沟通予以解决.而且及时表达出你的想法,主动承担一些紧急的任务都能给你很多的加分.

可以说在大公司的这些日子里,让我学习和领悟到了很多非技术方面的能力:

  • 语言表达能力(大公司经常需要在很多人面前发言).
  • 与不同人沟通的能力.
  • 复杂问题的定位和解决能力.
  • 团队协作能力.
  • 帮助(指导)他人的能力.
  • 团队建设和管理的能力.

这也是为什么我去年写了那么多经验感悟文章的原因.而上面的这些能力,很多是仅仅靠撸码是无法获取到的.

心态上发生变化

我从事Android开发的前三年,之所以那么拼命地工作和学习,一部分是出于兴趣,而另一部则是想要证明自己.

  • 对于公司而言: 我要证明自己是公司不可或缺的人才.
  • 对于领导而言: 我要证明自己的技术水平是组内第一.
  • 对于家人而言: 我要证明自己有能力养活自己.
  • 对于女友而言: 我要证明自己有能力独自照顾一个人.

马斯洛需求层次理论告诉我们, 当一个人的需求得到满足之后,他会追寻更高层次的需求.

当这些都被我一一证明了之后,一切都变了.证明自己已经显得不那么的重要,追求自身价值的体现成为了我现阶段的目标.

于是,我离开了当年的那家公司,放弃了父母规划的道路,离开了女友,开始遵从着自己的内心,寻找人生的答案…

此时的我,需要的并不是别人的肯定.我并不会在意别人的赞赏或者是诋毁,我所做的都是发自内心的事情,而不随外物而影响.

于是,我选择成为了一名开源项目的创作者和布道者.将我平时积累的技术经验全部分享出来,目的就是帮助全世界所有热爱技术的人士,同时让我的价值在别人身上得到体现.

在这两年内,我积极维护我开源的项目,同时还在各大技术社区和论坛上发布一些相关的技术文章,同时还运营了自己的微信公众号.近期,我还积极创作一些开源技术相关的视频.这样做的目的,一方面是可以把自己的经验和技术分享给更多需要的人,让知识发挥它更大的作用(知识在于传承), 另一方面也是满足了自己的虚荣心,让自己的价值得以体现.

思维方式发生变化

从事Android的前三年,我的想法是相对激进的.那时的我,对所有的新技术都是那么的趋之若鹜,而对于那些相对陈旧的技术是嗤之以鼻.我天真地认为那些新技术都是革命性的,都需要去掌握、学习并运用到实际的工作中去,而那些旧技术就是需要替代的对象.

于是,我就不计代价,大张旗鼓地把公司之前使用的旧技术一股脑地都准备换了,而当时领导的处处阻挠在我看来就是技术上的不思进取,中间还闹了不少矛盾,这也成为了我后来离开公司的原因之一.现在想来,当时的我想法真的是非常的幼稚!

技术不是唯一的生产力

技术是生产力,但并不是唯一的生产力.

在创业公司的那一年里,让我彻彻底底地明白了,技术并不是唯一的生产力.一家公司的发展,更多靠的是强力的融资能力(资本),强大的渠道推广能力(营销),很多时候技术只是其中的一部分,充当的仅仅是工具人的角色.

当年那个极力崇尚技术至高无上的青年被现实狠狠地教育了一把.那时的我认为只有纯做技术的才能被人尊重,而那些在产品线做业务、测试,或者跑业务跑市场的人都是不值一提的.然而也正是我那时瞧不起的那些人,直接导致了我待的那家创业公司的衰败.

技术没有好坏

技术没有好坏,更没有高低贵贱,有的只是合适与不合适.

新技术一定比旧技术好吗? 如果这个问题在两年前问我,那么我的回答一定是肯定的! 但如果你现在问我,我的回答就不一样了.

任何的新技术一定是在旧技术上有了一些改进,否则它就不为是一项新技术.那么我们为何不直接使用它呢?因为这里我们考虑的更多是成本的问题:

  • 新技术必然带来更高的学习成本.
  • 新技术的引入必然带来更多的替代成本.
  • 新技术如果尚未成熟,当遇到一个坑时必然带来更大的解决成本.
  • 如果使用新技术遇到一些无法解决的问题,会带来一些风险成本.

当一项技术的使用所带来的收益要远远大于它带来的成本时,这个时候我们才会考虑采用这项技术.

可以看到上述我列举的成本对于大公司来说是相当巨大的:

  • 大公司的人员较多,新技术的学习成本非常高(不可能全裁了重招吧)
  • 大公司的项目通常偏大,替换的成本相对较高.
  • 大公司产品的功能较为复杂,碰到一些没人遇到过坑也是常有的事.
  • 大公司对项目的风险一般是零容忍的:宁可不做也不能冒风险.

这也是为什么很多大公司不愿意采用新技术,而是选择沿用之前成熟的技术的原因.

所以我们在思考一项技术能否被我们采用的时候,压根就没有考虑过这项技术的新旧以及高低贵贱.至于那些成天在技术社区里发一些技术焦虑文章的人,我觉得社区就应该屏蔽他们,以免误导那些刚入门的小朋友.

追本溯源

当你抛开事物的表面,去追寻其本质之后,你会发现很多东西都是相通的.

两年前我在学习和使用技术的时候,更多的是遵循拿来主义和实用主义,天真地认为我会用这项技术就等于我掌握了这项技术.

之所以这么想,归结原因还是见的世面太小了.之前待的小公司,业务并没有那么复杂,用例也没那么多,遇到的情况也相对简单单一,所以简单地使用基本就完事了.

然而,到了大公司之后,那业务的复杂程度以及用例覆盖到的场景远远是你所想象不到的.很多时候,一些问题你是不能通过简单的使用就能解决的.尤其是发生一些诡异的问题时,你不阅读源码了解其实现原理,是无法进行解释的.

举个例子,我们做Android的都用过RecyclerView,可你有阅读过RecyclerView的源码,了解其缓存机制吗?相信你看完RecyclerView的源码之后,你就会知道,其实你所谓的掌握RecyclerView,只不过是RecyclerView的冰山一角.

学习一项技术,如果你只是掌握了如何去使用,那么这只是你迈出去的第一步,后面更重要的是要追本溯源,深究其底层实现原理,这个时候你才会发现,很多技术原来是相通的.

最后

作为一名Android开发的热爱者,只要Android不死,我就会一直在Android开发的道路上前行.无论前途如何曲折,我相信Android会变得更加美好!

我是xuexiangjys,一枚热爱学习,爱好编程,勤于思考,致力于Android架构研究以及开源项目经验分享的技术up主。获取更多资讯,欢迎微信搜索公众号:【我的Android开源之旅】

做了五年Android,我顿悟了...相关推荐

  1. 做了五年Android开发,有些话想对大家说…,vue数据双向绑定

    可以说在大公司的这些日子里,让我学习和领悟到了很多非技术方面的能力: 语言表达能力(大公司经常需要在很多人面前发言). 与不同人沟通的能力. 复杂问题的定位和解决能力. 团队协作能力. 帮助(指导)他 ...

  2. 4月17日云栖精选夜读 | 在阿里做了五年技术主管,我有话想说

    [点击订阅云栖夜读周刊] 在历史文章<如何成为优秀的技术主管?>中,阿里巴巴高级技术专家云狄从开发规范.开发流程.技术规划与管理三个角度,分享对技术 TL 的理解与思考. 热点热议 在阿里 ...

  3. Android 渗透测试学习手册 第五章 Android 取证

    第五章 Android 取证 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 5.1 取证类型 取证是使用不同的手动和自动方法从设备中提取和分析数据.它可以大致分为两 ...

  4. PackageManagerService启动详解(五)之Android包信息体和解析器(中)

        PKMS启动详解(五)之Android包信息体和包解析器(中) Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKMS启动详解(一)之 ...

  5. 诺基亚7plus更新android10,诺基亚发布第五次Android 10更新 诺基亚7+可升级

    1月8日消息,诺基亚发布第五次Android 10系统更新.虽然目前还不清楚谷歌将来是否会在全球推广Android 10系统,但有一点很明显,此次推出Android 10的速度要比几个主要智能手机厂商 ...

  6. 浅入浅出 Android 安全:第五章 Android 应用层安全

    第五章 Android 应用层安全 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 虽然在这一节中我们描述了应用层的安全性, ...

  7. 诺基亚升级Android10,诺基亚发布第五次Android 10更新 ,诺基亚7+可升级

    1月8日消息,诺基亚发布第五次Android 10系统更新.虽然目前还不清楚谷歌将来是否会在全球推广Android 10系统,但有一点很明显,此次推出Android 10的速度要比几个主要智能手机厂商 ...

  8. 大学两年的经历感受——大学应做的五件事

    大学两年的经历感受--大学应做的五件事 1.      锻炼好身体 都说身体是革命的本钱!这话,每个人都知道.的确,一切都是基于健康的身体之上,有了健康的体魄,就算其它什么也没有,都可以重新再来.但如 ...

  9. 服务器固件升级需要重装系统吗,重装系统以后必须要做的五件非常重要的大事...

    重装系统以后必须要做的五件非常重要的大事 发布时间:2012-09-20 16:13:44   作者:佚名   我要评论 系统重装以后.以下五件事是必须要做的 从XP到WIN8系统升级,要重装;一个系 ...

最新文章

  1. 敏感数据,“一键脱敏”,Sharding Sphere 完美搞定
  2. 三层架构和MVC一样吗?(区别)
  3. Jenkins 设置镜像_Windows Docker Agent 镜像可以常规使用了
  4. Java虚拟机运行时的数据区域
  5. python k线顶分型_【缠论】分型、笔的定义及其程序化
  6. 第一节、Alex 讲解 python+mysql 交互;
  7. double类型最大值_Java后端精选基础教程:Java 中的基本数据类型「连载 6」
  8. 【超人】社区二手小程序v6.15.2+前端
  9. 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?
  10. AR/VR工作原理及目前存在的技术问题
  11. 内连接(inner join)与外连接(outer join)小结
  12. 邮件服务器的渗透,渗透基础——从Exchange服务器上搜索和导出邮件
  13. 多台路由器连接,实现全网可达
  14. 前端面试总结2020年9月12家面试
  15. chrome点击书签栏书签_如何充分利用Chrome书签栏
  16. 影像测量—摄影测量和RTK原理
  17. 解决:远程连接mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database ‘xxxxxx‘
  18. 网络流量监控器mrtg全攻略
  19. react 关于iconfont图标应用和动态图标
  20. 数据可视化之矢量库 Pygal

热门文章

  1. 想用自己电脑做服务器并且绑定域名建一个个人网站应该怎么做
  2. SpringCloud微服务项目实战 - 6.延迟任务
  3. 杂谈:区块链是否值得投资
  4. Acala TC4 糖果节历程总结
  5. 2023年EasyRecovery数据恢复还会收费吗?
  6. 小功能_httpPacket解码
  7. go环境编译singularity失败报错:checking: host Go compiler (at least version 1.13或17)... not found!
  8. 题目 1018: 有规律的数列求和
  9. 图表制作中需要注意哪些问题:认识图表、选择图表
  10. VMware Fusion自动调整分辨率的问题