业务要求一大堆,跟老板提建议反被数落,Android开发者到底该怎样自谋出路?

前言

身为一个当代移动应用开发者,真的很想说一句:我太难了!老铁,我最近压力好大。

现在各种花里胡哨的软件层出不穷,各移动端应用竞争是越来越大。资本家们竞争靠的是什么?是产品。产品的要求是越来越高,也就是对我们移动应用开发者的业务要求是越来越高。

场景一:

老板:“诶,昨儿个看到咱对手XX他们的APP更新了个人脸美颜、人脸识别什么的功能,咱是不是也得整一个。”

产品经理:“老总,您放心,这个我们早就在开发了,很快就能上线了”

场景二:

产品经理:“对手这个APP更新功能了啊,老板要求一个星期内要发新版本了哈,他们有的咱也得有,那个UI要做好看点哈。”

程序员:“我tm******* 星星***你m个******”

image

例子可能不太恰当,我想表达的是,如今底层的Android开发者确实是太不容易了,产品经理能跟你battle什么逻辑层、业务层吗?管你能不能实现,实现不了,那就是你技术问题了,回头给你还给你说一句:“看看别人家的程序员”

一年到头加班无数,赶业务、上版本,凌晨一两点下班那是家常便饭。

想跳槽出去面试。简历是第一步吧,学历一般,技术平平,没啥好写的。能约到面试了,工作经验多久啦?做过什么项目呀,没有亮点、没有什么能拿出手吹b的。基本上:回去等通知。

突然下定决心,要搞点牛b的东西出来,咸鱼翻身、入职大厂,又没有方向。好不容易找到一点方向,技术又不到位。然后想学习进阶,又没有人带,自学太耗时费力,最后还是回归平常,艰难度日。

1.想法

程序员:啊,我受够了,我一定要改变自己,我要搞点新东西,于是跟老板提出一系列计划:

1.我们要开始搞flutter、kotlin要搞混合开发,这是未来大趋势

2.技术体系太老了,为了进一步提升开发效率,我们要搞技术重构

3.那里展现速度太慢了,我们要搞性能优化

···

老板往往会回你一系列的灵魂拷问:

1.投入产出比怎么样?

2.有什么业务价值,有什么技术价值?

3.别人都没说要做为什么你要做,为什么要交给你来做?

···

image

如果没有回答好这些问题、说服老板,自然也争取不到什么资源,只能一个人搞搞,一个人搞的往往质量不行、也没有人用,久而久之自己也不维护了,只能又开始埋头在需求中。

干的不开心,也没有成长,最后只能暗淡离职,但换了一个公司就会好吗,很可能又是类似的过程……

如果你也有这样的感受和困境,我想告诉你,这真的太正常了。作为一个八年Android老农,这些痛苦我都是亲身经历过的。这篇文章,我想谈谈自己的一些经验和理解,希望可以帮助到你们。

2.困境

2.1 技术基础薄弱

我相信一线的Android移动应用开发者大多都有这样的弱点。只在学校,或者培训机构接受过快餐式的技术培训。其实以我的理解,学校里学出来的技术水平,可能还没有培训机构学出来的技术水平高。因为学校教的东西,用的教材,可能短则两三年前的技术,长则六七年前用的技术。与互联网这个技术迭代更新超快的行业严重脱节。而培训机构这种快餐式的教学,大多以实战为主,学的都是当下主流技术,以找工作为唯一目的。

但是两者学出来的程序员,都有一个共同的缺陷,就是知识不够系统化。不可能会有哪个老师,把底层的代码拿来教学,大多是直接把一些封装好的工具教会你怎么用,一些功能怎么实现。

我觉得,绝大部分的程序员,在工作两三年后就遭遇技术瓶颈的根本原因就是,在入门的时候,就没有把整个体系搞清楚,底层的实现原理都不懂,你就只是一个代码搬运工。时代需要的是创造者,而不是搬运工

2.2 项目经验零碎,缺乏大项目的开发经验

程序员千千万,大厂就那么些。绝大多数的程序员还是在小厂待着的,在小厂待着,也就免不了需要频繁的跳槽、加薪。接触不了大项目,玩不了牛b的技术。跳来跳去,还是在这么个圈子。

2.3 技术停滞,长期没有突破

有些程序员虽然有3-5年的开发经验,但基本上只是把第一年的的工作做了N年而已,前面两点困境,直接导致了你的技术水平停滞不前,想去大厂,根本没有希望。

image

3.突破

主要针对已经工作的开发者。Android开发者如何打破困境,成长进阶。

  1. 坚持写博客中级工程师不只是一味的去做事、学习,其实更多的需要对知识的总结与归纳,而写博客是最好的手段,坚持写博客其实就是对你知识体系的回顾与总结,很多时候你对某块领域自认为掌握了,但是能写出来,并且能让别人看懂,那才是真正的熟练掌握呢,不说别的,就说一些IT界业内的大牛一般都有自己的博客,那些博客文章才是你知识沉淀的最好见证。

  2. 在GitHub上参与开源项目我曾无数次提醒大家GitHub堪称程序员必备,聚集了全球各个领域的程序员,在上面你可以直接阅读Google、Facebook顶级公司的开源项目,可以一睹顶尖工程师的风采,在这里你绝对打开了另一扇世界大门,你可以阅读大牛源码,并试着贡献自己的代码,走出第一步,多参与,多交流,那句话怎么说来着:「与优秀的人接触,自己才会变得优秀。」同样的道理,阅读大牛们的代码多了,自己不知不觉中就会成长进步。GitHub并不仅是一个名片,更是进阶必备神器!

  3. 有自己的完整作品也许我们在公司参与不少功能的开发,不管是公司原因还是产品原因,或多或少我们为了赶进度也好,为了盈利也好,总有一些我们觉得不满意的地方,比如设计风格上不够Material Design,产品经理的一些天马行空的垃圾想法,甚至一些KPI导向的功能实现等,我相信这个阶段每个人心中都有这个想法,都觉得自己家的app不够酷,不叫Android,所以这个时候就付出行动吧,利用业余时间开发一款属于自己的完整作品,你可以尝试最新的技术与框架,用你认为最棒的工具,适配你认为的Material Design风格,这个过程不仅亲自实践了你之前想尝鲜的新技能,还完整经历了一个产品的构思与迭代过程,甚至最后把它开源,这个过程是非常宝贵的,其中你会遇到并克服各种问题,不知不觉中就在成长,开源之后你会在潜意识里对自己的代码要求更高,而且这款作品也会成为你之后简历上的加分项。所以如果你还没有过这个阶段,那从现在开始,着手准备并经历这个阶段吧,哪怕你没有什么有创意的idea,甚至高仿下开源社区或者市场上的一些app都可以,毕竟你是用来练手,不是用来商业,idea这个阶段不是特别重要。

  4. 阅读Android源码,理解一些高级概念Java语言进阶了,同样关于Android你也需要进阶,并不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理。

image

4.系统学习

4.1.什么是系统?

为什么我会提系统两个字呢?先说一下新手和专家的区别,大家常常认为新手和专家的区别在于经验上,这样说也不能说是错的。因为确实这个经验是很重要的,但这个经验不是指实施某项技术获得了一个过程和记录,而是指通过实施某项技术促进了思维的改变。

如果思维没有改变,那么一个声称拥有十年经验的开发人员,实际上只是一年的经验重复了九次。

新手往往都不是特别想要学习,也不知道自己的行为是对是错,只是想实现一个立竿见影的目标。如果给新手提供一个与情境无关的规则(或者叫指命)让他们去执行,他们就会变得能干起来。

而专家更关注情境,更关注系统,而且喜欢说“具体情况具体分析”。他们往往更关注事物之间的联系,把自己看做系统的一部份,能分清和认识到系统的边界。

新手往往不把自己看做系统的一部份,所以学习Android开发也变成了一项孤立的事件,学习的模块也变得孤立起来。虽然花时间学习了很多组件或者技巧,但是却没有理清过这些模块或问题之间的关联。

然而,现实中的问题都是不是孤立的,理解系统,学会用系统思维才更有利于你去解决问题。

4.2系统学习Android的资源和方法

架构师必备技能导图
image

大致可分为八个模块

一、JAVA基础

1、深入Java泛型

2、注解深入浅出

3、并发编程

4、数据传输与序列化

5、Java虚拟机原理

6、反射与类加载

7、高效IO

二、Android框架体系架构

1、高级UI晋升

2、Android组件内核

3、大型项目必备IPC

4、数据持久化

5、Framework内核解析

三、360全方面性能调优

1、设计思想与代码质量优化

2、程序性能优化

3、开化效率优化

四、设计思想解读开源框架

1、热修复设计

2、插件化框架解读

3、组件化框架设计

4、图片加载框架

5、网络访问框架设计

6、RXJava响应式编程框架设计

7、IOC架构设计

8、Android架构组件Jetpack

五、NDK模块开发

1、NDK知识体系

2、底层图片处理

3、音视频开发

4、机器学习

六、架构师炼成实战

1、架构设计

2、网上商城项目实战

3、新闻客户端项目实战

4、多格式播放器项目实战

5、Gradle自动化项目

七、微信小程序

1、UI开发

2、API操作

3、微信对接

八、混合开发

1.flutter

2.kotlin

最后

吃瓜群众:说了这么多,也没见什么干货能给我实质性的提升啊

我将自己8年的Android开发经验架构师成长学习笔记,整理在了我的石墨文档、以及我的GitHub中,有兴趣的小伙伴可以点击下面入口获取我的一手架构师学习笔记,以及我整理的历年大厂Android开发岗面试真题合集(皆无偿分享)。
通道

【GitHub】Android架构视频+BATJ面试专题PDF+学习笔记(持续更新中)

【石墨文档】Android架构视频+BATJ面试专题PDF+学习笔记(主更GitHub,精力有限,间断更新)

最后给大家一些建议

1.遇到问题,不要没有进行仔细分析,就直接百度和谷歌

2.学习知识的时候,不要没有自己的思考和理解,死记硬背

3.要记得深入追究一个问题的本质原因

4.一定要有自己知识点总结和梳理

5.学到知识点,没有很好的实践,动手能力不够

6.要有自己的学习的方法

7.确定目标和找到有效的学习方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值