一个刚刚起步的创业公司,通常只有几个程序员,甚至连产品经理、项目经理都没有,老板自己就是产品经理,把想法跟开发人员一说,就快速地做出原型。
如果这个阶段对开发的能力不满,那么大概需要的只是一个高级开发人员,他能搞定一般的技术难题,实现复杂功能,思路清晰、干活利索。千万不要去大厂挖个技术总监,你家庙太小,供不起这么大的神,他真来了也发挥不了应有的作用。
我自己的话有过一段创业经历,当时追随我的老领导出来创业,我就是名义上的CTO,带了7、8人的团队,我还同时带了两个项目,每个项目里我都贡献了30%以上的代码量。其实,当时的我,就是个高级程序员而已。
小结一下,高级程序员的主要职责是:
1,实现复杂功能,编写核心代码;
2,处理线上bug,解决技术难题。
第二阶段:技术经理——交付效率提高、质量提升
当公司的业务发展起来后,就需要一支相对完善的技术团队,有了专职产品经理、测试人员等,团队规模在15人左右,专注于一条产品线。
复杂功能、技术难题,高级开发人员可以搞定,但是如果要解决开发团队效率、技术人员能力提升、代码质量和编码规范等,就需要技术经理了。技术经理通常写少量的代码,更多做技术管理、项目团队等工作。
这就是许多创业公司A轮融资前的情况。由技术经理总体负责技术团队,产品经理对接业务需求,做产品规划、竞品分析,而不是抄袭哪个App。
小结一下,技术经理的职责是:
1、开发任务分派。开发工作量评估、分派,最大化资源利用率;
2、代码质量提升。Code Review、编码规范、线上bug分析;
3、项目管理。确保项目的按时交付,建立管理机制;
4、团队管理。团队搭建、人员招聘、人员培养。
第三阶段:技术总监——技术规划、多产品线、项目群管理
当技术团队发展到30人左右,有了多条核心产品线、有了多个技术经理时,就需要一个技术总监了。
技术总监,作为领域专家,站在更高的层面思考技术如何建立壁垒,构建技术竞争力。逐步开始建立公共技术平台,协调多条产品线在统一的技术平台上快速迭代,让产品线跑得快、跑得稳。
技术总监,在领域内有多年沉淀,来自知名互联网企业,能够把技术团队带上一个新的台阶。技术总监,更多是做技术判断了,也有些技术型的技术总监仍然会写些核心代码、做架构设计。
技术总监的职责:
1、搭建公司技术平台部,统一技术栈;
2、建立产品研发体系,让技术团队可持续性地快速交付;
3、管理和协调多条产品线,打造明星产品;
4、建立技术壁垒,形成技术竞争力;
第四阶段,架构师—— 架构设计、架构实现、架构评审
公司如果“跑到”了B轮,技术团队应该要接近百人了,此时的技术团队跟初创时期相比,已经很不错了。
有技术总监协调着各产品线,有开发经理带领技术团队快速迭代产品。代码规范、最佳实践的总结和推广也在逐步开展。
此时,需要把架构规划和架构评审的职能从技术总监和开发经理身上剥离,即分离专业岗和管理岗,专业人做专业事。
这时候就需要设立架构师岗位,专注于技术架构分析、架构设计、架构实现、推动重构、推行架构原则等工作,让技术总监和技术经理侧重在项目管理、团队管理。
架构师的职责是:
1、业务架构设计和实现。根据业务规划和应用场景,设计切合当前业务要求,并且具备一定前瞻性的应用架构、类、接口、业务抽象及业务建模等。
2、架构设计和实现。识别非功能性需求,如性能、可扩展性、安全性、高可用及易部署等。
3、重构计划及执行。关注全链路监控数据、线上bug、系统预警等信息,识别架构缺陷,提出重构建议并推动执行。
第五阶段:CTO——技术产品战略规划,提升技术竞争力
当技术团队有了几名总监、架构师,人数达到几百人,是时候引入真正意义上的CTO了,除非CTO是联合创始人,否则这个CTO会有“虎落平阳”的感觉,公司也会觉得这个人“满嘴跑火车,却落不了地”。
国内的中大型互联网公司,一般有产品VP和技术VP,有的技术VP就是CTO。如果CTO统管技术和产品,那么产品VP就给CTO汇报,否则他们是平级的。
在国外,CTO主要研究3~5年的技术发展趋势,为公司做中长期的技术规划,是具有行业影响力的技术大咖,公司技术领域的精神领袖。CTO较少关注当下的具体事务,这类工作主要由工程副总裁们处理。
以国内互联网公司CTO为例,总结一下CTO的主要职责:
1、技术赋能商业。敏锐的商业洞察、深入的产业研究、参与公司战略规划,技术引领业务增长,通过技术和产品实现战略落地。
2、技术趋势研究。思考未来3~5年的技术发展趋势,以及新技术发展给企业带来的机遇和风险,为企业提前布局。
3、技术治理体系。持续的过程改进、高效的研发流程、稳定的交付质量、高可用的系统。
4、组织与文化。建设学习型组织、自我完善型组织,建立符合企业特色的文化氛围。
结语
最后,不想当CTO的程序员,不是好骑手。从程序员到CTO的成长过程,需要不断提升技术能力、产品能力、项目能力、管理能力、商业视野、个人影响力、行业人脉等等。而在技术能力这一点,如果你是一名Android开发者,我或许能给予你一些建议和帮助。以下是以我8年的开发经验觉得一个成为一名Android高工(架构师勉强)的进阶学习路线及一些技能学习笔记整理,如有需要,可以点击这里免费自取获取!
当然除了自身的奋斗之外,机会和运气同样重要,而且是可遇不可求的。但是,不管你现在身处在哪个阶段,梦想还是要有的,万一见鬼了呢。
- 架构师筑基必备技能
目前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内核解析
- 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、音视频开发