android framework工程师遇到成长瓶颈迷茫怎么办?千里马经验分享

背景

近来有一些framework老司机粉丝朋友发来了一些framework工作中的一些疑问,具体描述如下:
在这里插入图片描述
这个同学遇到的问题,其实就是大部分framework开发者工作比较久后遇到的一个上升瓶颈问题。
在这里插入图片描述

具体总结有以下几个瓶颈问题

1、framework属于系统核心框架部分,整体要求稳定性高,可变性小,aosp本身已经把framework比较完善,所以framework不会像app开发那样,有每半个月一次的迭代周期,所以不断的修改一些交互功能和需求。因为framework需求相对比较少,导致大家心里可能比焦虑,怎么没有和以前一样写很多代码啊?即第一个瓶颈就是:framework需求不那么多,修改代码量不大,认为没有写很多代码就是自己能力不好上升有瓶颈

2、framework因为稳定性要求高,所以经常的工作任务都是解bug大于做需求,这个其实大部分公司都是一样的。但是bug都是一些疑难问题,比如anr,crash,黑屏,闪黑等,还是偶现的,只有日志等分析起来比较困难,所以这类问题的解决效率比较低,bug的收敛速度也慢,再也没有app那种bug多,修复也多。即第二个瓶颈:framework的bug很多是复杂而且低概率的bug,修复起来难度大,所以导致修复率比较低,成就感很低,即有bug修复的瓶颈。

如何突破以上一些瓶颈

1、 针对需求较少这个瓶颈问题,我这边给出以下一些建议:

1 针对自己业务相关的任何需求,自查有没有不理解或不知道原理的,可以去尝试搞懂剖析,这样以后产品或者其他同事提出的任何和自己相关的业务技术问题都可以迅速自信的回答出来

2 自己业务相关的功能,不能只局限于公司的功能,需要自己敏锐的去市场上挖掘竞品相关新功能,调研人家新的功能,看看人家怎么实现,如果自己做这个竞品新是否可以做出来,应该怎么做,可以自己经常去尝试demo新功能开发

3 时刻关注google在自己业务一些更新patch提交,紧跟google的更新节奏等,把握新的动态和发展

总结一下针对需求较少的瓶颈部分解决突破方法就是:不断剖析陌生模块或者功能、调研竞品相关功能实现demo,紧跟google更新提交布局

2、如何突破framework一些bug解决效率问题

1 针对一些不是必现的低概率bug,这个需要评估好这类bug的出现频率和严重程度,比如可以从测试提出问题多少,日志上可以归类是不是一类低概率问题,这样就可以知到频率和严重程度,哪怕低概率也需要认真分析,要自己找测试人员集中进行复现。如果日志不够,或者需要其他的dump等信息,需要自己添加上去,慢慢多个版本追踪,因为有新的日志慢慢缩小bug范围,也可以自己日志中有怀疑点,分析出相关的必现步骤等方式即把偶现变成必现。
总结:认真分析日志,找测试人员多进行复现测试,添加更多辅助日志或dump,复现后有更多证据,可以尝试修改一些代码把偶现变成必现

2 针对一些常见类型偶现bug,只有日志分析可能作用不大,可以自己编写一些工具辅助等工具,在出现问题后的几秒钟可以触发相关按键,比如截图按键等,来触发自己的一些导出相关系统运行的变量或者数据,日志,trace等,这样可以大大提高偶现类问题出现时候老是因为抓取的分析证据不足而导致一直无法推进。也可以多关注google的一些日志工具的改进思路,比如google做出的winscope,proto日志等,这些作为便利的bug分析依据工具,大家是否可以考虑针对自己业务模块也搞出一个类似工具进行提高bug的分析效率。

3、端正态度,不以转出bug为目的

经常在公司里面可能有bug率的指标压力,这种情况下可能会导致很多同学会存在分析问题时候不那么全面,只要发现和自己模块不相关直接就转给相关业务模块,就比如经典问题anr这种,很多同学一看到某个第三方app应用anr,那么故障就直接给第三方应用,其实很多anr都不是app自己问题,很可能系统卡了或者什么的导致的app才anr,这时候如果系统工程师完全不看直接转的话,说实话自己系统应用可能还有负责,第三方应用可能没人负责,那么就会导致错过一些系统存在的bug。
所以,建议大家看到和自己业务模块相关的bug时候,第一时间想到的不是尽快转给下一个模块,而是先分析好,把自己模块的逻辑等整理好,确定自己模块没问题在考虑转出

4、经常学习大神大佬

公司里面总有一些公认大佬或者大神,这个时候大家可能都想和大佬学习,但是也不可能天天去请教人家问题,因为大佬每天也很忙,老是问人家问题也不合适占用人家时间。

所以给出以下几点向大佬学习的方法:
4.1 大佬的名下的故障,你可以尝试也去帮大佬解bug,然后解不出来的看看大佬是怎么解的
4.2 多和大佬讨论技术,努力学习分析一些东西给大佬,让大佬觉得你确确实实很认真的,和你交流技术是真的讨论大佬自己也有进步,而不仅仅是你请教告诉
4.3 问大佬问题一定要多考虑充分,准备充分,思路明确,切勿和人家大佬讨论问题,大佬提到个相关的模块,发现你啥也不懂,这个时候大佬可能就没办法和你再聊了,可能就是让你去看看xxx
4.4 多看看大佬的gerrit代码需求的提交,看看人家是怎么实现一些较难的需求,这里大家注意最好不要让大佬发现你在review人家代码,或者征求人家意见去学习人家代码

4.5 也可以去互联网寻找一些干货技术文章等,或者付费学习等,这里说实话马哥也有不擅长的技术,也经常会付费学习一些自己陌生的技术,这样最重要可以帮我节省大量时间而且进步很快。

总结

上面提到的几点就是我这边给一些framework的老工程师在公司工作过程中遇到瓶颈如何提高的方法,相信按上面的方法做了以后你一定可以突破瓶颈,找出新的方向,技术上升一个档次哈。

更多framework详细代码和资料参考如下链接

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

参考相关链接:
https://blog.csdn.net/zhimokf/article/details/137958615

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527643.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介 1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置&a…

【MacOS】mac定位服务中删除已经卸载的软件

mac定位服务中删除已经卸载的软件 网上的帖子真不靠谱 直接右键 WeTypeSettings ,查找位置,丢废纸篓即可!会提示你卸载的!

VLAN原理学习笔记

以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。 在这种情况下出现了VLAN (Virtual Local Area Network)技术解决以上问题。 1、VLAN快速配置 Vlan:Virtual Local…

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问…

springboot流浪天使乐园管理系统

基于springbootvue实现的流浪天使乐园管理系统(源码L文ppt)4-039 第4章 系统设计 4.1 总体功能设计 一般个人用户和管理者都需要登录才能进入流浪天使乐园管理系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者…

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…

Qt/C++编写的Onvif调试助手调试神器工具/支持云台控制/预置位设置等/有手机版本

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…

ESP32_获取心知天气

目录 前言 一、获取心知天气API 二、编写代码 1.下载代码 2.代码讲解 1.安装Arduino.Json库 2.输入WIFI名称和密码 3.添加API 4.关于API的补充 三.数据的打印和处理 1.获取的数据 2.数据输出 总结 前言 环境:Arduino 芯片:ESP32 软件&…

基于springboot+vue实现的农家乐管理系统

基于springbootvue实现的山庄农家乐管理系统前后端分离项目(文末查看源码lw)4-10 系统角色: 管理员、用户 主要功能: (1)用户关键功能包含用户注册登陆、个人信息修改、首页、农家乐、美食信息、民宿信息…

【LeetCode】20.有效的括号

题目要求 解题思路 利用栈来解决本道题&#xff0c;左括号进栈&#xff0c;右括号出栈。需要判断第一个字符是右括号的情况 代码实现 class Solution { public:bool isValid(string s) {//利用栈来解决stack<char> st;for(auto& e:s){//是左括号就进if(e(||e[||…

SpringBoot开启多端口探究--基于多ApplicationContext

文章目录 前情提要一、思路概要二、具体实现三、其他问题父子关系部分依赖 总结 前情提要 前面探讨了management端口开启&#xff0c;grpc端口开启&#xff0c;本文继续探讨在SpringApplication中开启多个端口的方式之多ApplicationContext, 相比management端口基于多WebServe…

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能…

基于Spring Boot的火车订票管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JAVA语言 Spring Boot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Tomcat 系统展示 首页 管理…

【动手学深度学习】05 线性代数(个人向笔记)

1. 线性代数 向量的一些公式 ∣ ∣ a ∣ ∣ ||a|| ∣∣a∣∣ 表示向量 a 的范数&#xff0c;课上没有讲范数的概念 其中第一条为求向量的二范数 第四条表示如果a为标量&#xff0c;那么向量 ∣ ∣ a ⋅ b ∣ ∣ ||ab|| ∣∣a⋅b∣∣ 的长度等于 ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣…

Ifream实现微前端效果

记得有人曾问过我&#xff0c;老旧的项目内容很多&#xff0c;项目卡&#xff0c;想要改造成类似微前端&#xff0c;领导想要快速&#xff0c;又不想系统重构、而且是不同子系统的协同&#xff0c;要怎么做&#xff1f;对方不想做太大的改造&#xff0c;所以想用ifream的方式动…

编程效率飙升的秘密武器:Cursor编辑器的AI革命

有没有想过,写代码这件事其实可以更加轻松、高效?尤其是对于那些需要频繁修正、调试和优化的开发者们,Cursor编辑器带来的AI赋能,简直让人眼前一亮。相信很多人一提到AI,第一反应就是:“这真的靠谱吗?”今天,我就带你来揭开Cursor这款AI编辑器的神秘面纱,看看它是如何…

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码&#xff0c;通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前&#xff0c;先了解下一些类的结构图&#xff1a; ①&#xff1a;SecurityManager&#xff1a;安全…

AIGC简化文件管理:Python自动重命名Word和PDF文件

1.背景 大家应该也有遇到&#xff0c;自己电脑有很多文件命名不合理的文件&#xff0c;比如&#xff1a;文件1、想法3 &#xff0c;当你长时间再看到这个文件的时候&#xff0c;已经很难知道文件内容。 今天我们将借助AIGC的编码能力&#xff0c;帮我们生成一个批量改文件名的…

营养作用的对象是有区别的 第八篇

除了7大营养素 还需要补充其他营养素 食品营养学 临床营养学 大众营养学 食品营养学 你要早点就开始预防