你瞅着来气不?作为一名安卓技术总监每天有活儿我不干,我就瞎BB,就是玩儿!

你瞅着来气不?作为一名安卓技术总监每天有活儿我不干,我就瞎BB,就是玩儿!_第1张图片

当年多少次做梦都在想以后能不能做到那样的一个程度,可不可以自己不用干活在旁边指挥指挥就好,轻轻松松就拿钱,而且是超高那种。后来发现完全是两码事,如果我们不能在短时间内做调整,我敢保证累不死人。多人的开发班子,多条业务线,反正别人做不了的你都得上,关键是还有人给你挖坑。你不做没人做,你不抗没人抗。以下是个人的一些“套路”,团队人数不一样,公司性质不一样,都可能不一样。套路是这么个套路,仅供参考。

培训

有的时候放权,结果却让人吐血。如果事事都得自己来那么会很累,但是若不自己来心里总觉得不踏实。这个时候我们最好选择培养一到两个人,具体视团队成员而定。给他们洗脑打鸡血,把目前所有的经验和知识分享给他们,最好是要让他们能够超过我,能够取代我甚至可以让我滚蛋。

为什么不是所有人,就像西游记里面师徒四人一样,很多人都是沙和尚,别跟我讲什么价值观什么使命感什么以后,我就喜欢按时上班按时下班按时拿工资,福利可以分我其他什么都别跟我扯。

对于这种你要花很多的时间,他们都有这自己的“经验和习惯”,说什么都是一副“莫挨老子”的气势,短时间内根本没办法“洗脑”成功,但是团队里面少了他们也不行。所以项目不是很急的时候,面试一年的经验和三年的经验对于我来说没什么两样,需要看你的学习方式和态度,你对知识的追求,因为刚开始我也不需要你干什么。

为了提高效率和稳定团队成员,还需要抽出20%的工作时间来作培训和交流,作为码农你给我讲制度,讲惩罚,讲一大堆都代替不了我们一行行去写代码,最直接的方法就是让他们做的更快更好,若是能比IOS开发周期短,程序更稳定,他们会非常高兴,当然这些需要知识和经验的积累。这些时间我们一般会做三件事情:任务完成情况,技术实现方案讨论,学习与讲座。
你瞅着来气不?作为一名安卓技术总监每天有活儿我不干,我就瞎BB,就是玩儿!_第2张图片

开发

只要是作为团队成员那么你就不应该离开代码和文档编写,而只做架构图或者干脆让别人来代替,且不说别人怎么看你,就单单拿系统来说,后面需要救火的时候别人下班走了,请问你怎么救。而作为系统的负责人,必须亲手领导参与建造,才能有足够的能力去担起这个责任。所以刚开始你必须有一半的时间来参与开发工作,所以上班的第一件事应该是把手机放进抽屉做到物理隔绝,然后打开IDE开始撸码。当然没必要什么都写:

1.设计搭建架构

这个是最重要的一步,而且很繁琐,不画设计图上来就写代码的技术员,越到后面越惨,而且惨得不行,当然如果你很喜欢缝缝补补,喜欢天天加班倒没什么,我就不信那么多东西你能全记在脑袋里,奇了怪。对于其他成员来说,架构在分工合作,提高质量,提高开发速度和舒缓开发者心情上面起了决定性的作用。

可以多关注代码架构,很多人喜欢关注运行时架构,当然运行时架构是不可少的。代码架构是更加稳定的设计方案,一旦发生一些小的需求变化,运行架构肯定会有变化,但是大的方向往往不会变化频繁,因此我们可以根据大的方向来组织代码,划分模块。所以这个不能乱,一旦乱了不管你怎么调整还是会问题百出。

2.难点关键开发

对于部分难以实现的代码我们还是得自己来,在一些中小型企业,如果这些让别人来做,到头来还是给自己找麻烦。质量底下的代码会造成故障和Bug,后面一旦出现问题也会消耗更多的时间成本,本来人手又紧后面还要到处救火,会导致天天加班而出不来项目。还有部分成员往往没那个能力,你让他去实现可能导致功能虽说实现了,但是可控性并不高,一旦需求稍有变动会出现各种问题,出问题没什么,关键是他根本不知道怎么解决。在大公司,团队成员普遍素质比较高,这种现象倒是鲜少出现,但是核心代码我们最好还是自己操刀。

3.各种救火

架构部分代码往往是最容易出现问题的代码,随着需求的不断改变有时需要调整,严重的还可能会出现Bug,有时还需要防止成员copy你的代码另起炉灶,当你改代码的时候要改多个地方也比较麻烦。团队其他成员写的代码也时常出现Bug,往往他自己不能解决这个时候你就得帮忙。当然找问题的过程本身也可以提高技术水平,关键是要让自己和团队的成员学会使用各种诊断工具,学习思考和分析问题。
你瞅着来气不?作为一名安卓技术总监每天有活儿我不干,我就瞎BB,就是玩儿!_第3张图片

管理和学习

1.代码审核

需要让团队认识到代码审查是为了提高整个团队的能力,而不是针对个体设置的检查“关卡”。另外,代码审查本身可以提高开发者的能力,让其从自身犯过的错误中学习,从他人的思路中学习。如果开发者对这个流程有抵触或者反感,这个目的就达不到。

在代码审查中如果发现问题,对于被发现者,不主张使用这个方式予以惩罚。软件开发中bug在所 难免,过度苛求本身有悖常理。更糟的是,如果造成参与者怕承担责任,影响积极性,代码审查就没有任何的价值和意义。

2.进度审核和任务分配

任务分配是个大问题,而且又是一个权势的工作,成员面对一个任务时,往往不能正确、合理地安排时间。如果出不来,会给你若干理由,比如很忙,造成任务延期或者加班,最后造成整个项目的延期。怎么避免这种情况不能让班子成员各搞各的,我们自己得有一套任务分解,任务描述和时间分配原则,风险管理和计划余地,首先是自己能够把事情做好,然后可以把他分享给团队成员。

3.面试和各种会议

准备一份有区分度的笔试题目,不靠谱的人多了去,自称多少多少年经验。但你要他写个倒计时往往都写不出来,这么个题目我们送走了很多人。老板不是花钱请我来和他们聊天的,所以我通常会问四个方面的内容,源码、设计模式、优化、NDK。对于应届毕业生,我往往倒不是特别关注技术,也不需要他目前能实现各种功能,很多东西我可以自己来可以写好让你调。所以我比较关心学习态度、上进心、听安排、别惹事,这方面HR往往比我们看得准。

部分会议我们可以抵制,能不去就不去。尤其是部门沟通会能躲就躲,那是扯淡者的天堂,测试、产品、设计比程序员能扯的多了去。如果还有一个功能等着你去写,你会很蛋疼。这个时候你可以派一个人去一下就好,回来让他告诉你发生了什么。

4.学习

学习一停我们基本就死了,把手机放抽屉也是为了让我们在闲下来的时间可以去学。而我一般选择多写文章,多参加技术沙龙多与别人交流,选择周末多看看别人的框架源码等等,反正我的状态大家基本了解,周六日晚都在给大家做直播分享。只有这样自己才能得到提升,项目才能做到可控,只有这样才能去影响团队成员而不是靠说,当然该说的还是要说。

尽管我们现在还没有做到那样的一个程度,但学会像一个技术总监一样去思考问题,积极乐观的心态非常重要,学习、思考、努力、利他,day day up!

你瞅着来气不?作为一名安卓技术总监每天有活儿我不干,我就瞎BB,就是玩儿!_第4张图片

路线和方法

在结尾处我希望分享一些Android开发的学习路线及学习笔记给大家,这也是我这么些年工作中不断试错复盘得来的心得总结,面向有想法向Android中高级进阶的同学,有兴趣的同学,可以再花2分钟的时间往下看看。

  • 架构师筑基必备技能

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

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

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析

Android框架体系架构

  • NDK模块开发(音视频系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

NDK模块开发

  • Flutter学习进阶

2020 年无疑是 Flutter 技术如火如荼发展的一年。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门

Flutter学习

  • 微信小程序开发

微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

微信小程序开发

  • Android相关源码解读
    只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。


由以上完整学习笔记pdf如有需要,请体谅下师兄我归纳不易,点赞+评论 支持下我,然后点击这里免费自取!

你可能感兴趣的:(Android,移动开发,程序人生,移动开发)