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

news2024/9/20 14:37:58

背景

近来有一些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.coloradmin.cn/o/2115143.html

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

相关文章

Qt qrc机制

文章目录 0. 前言1. qrc机制2. qrc使用 0. 前言 要设置窗口图标,就需要有图片及其图片所在路径,在本机上可能没什么问题,但是换了一个机器,路径可能不一致或者图片丢失,这就导致图片显示不出来。 Qt引入qrc机制&…

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

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

Autosar(Davinci) --- 创建一个S/R类型的port(下)

前言: 前面章节我们讲解了S/R类型的Port如何创建,这一章节,我们着重讲一下生成的代码,以及我们如何添加代码让这些门与灯之间的关系产生连接。 一、CtSaDoor.c 在【Rte.c】的【IO_TASK】中我们可以看到,反复的判断Rte_Ev_Cyclic_IO_Task_0_200ms这个条件是否成立,当200…

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRI…

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。…

828华为云征文|部署RedisStack+可视化操作

目录 1.介绍 1.1 什么是华为云Flexus X实例 1.2 什么是Redis Stack ​编辑 2 准备华为云Flexus应用服务器L实例 3 准备docker环境 4 docker 安装 Redis Stack 4.1拉取镜像 4.2 确认镜像 4.3 启动容器 4.4 放行安全组端口 4.5 操作redis 5 docker compose 配置持久 1.…

Vision Transformer(ViT)模型原理及PyTorch逐行实现

Vision Transformer(ViT)模型原理及PyTorch逐行实现 一、TRM模型结构 1.Encoder Position Embedding 注入位置信息Multi-head Self-attention 对各个位置的embedding融合(空间融合)LayerNorm & ResidualFeedforward Neural Network 对每个位置上单…

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式&#x…

SpringSecurity原理解析(二):认证流程

1、SpringSecurity认证流程包含哪几个子流程? 1)账号验证 2)密码验证 3)记住我—>Cookie记录 4)登录成功—>页面跳转 2、UsernamePasswordAuthenticationFilter 在SpringSecurity中处理认证逻辑是在UsernamePas…

iOS——线程安全、线程同步与线程通信

线程安全和线程同步 线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 若每个…

18055 主对角线上的元素之和

### 思路 1. 输入一个3行4列的整数矩阵。 2. 计算主对角线上的元素之和。 3. 输出主对角线上的元素之和。 ### 伪代码 1. 初始化一个3行4列的矩阵 matrix。 2. 输入矩阵的元素。 3. 初始化一个变量 sum 为0,用于存储主对角线元素之和。 4. 遍历矩阵的行&#xff0c…

【Day08-IO-文件字节流】

File 1. 概述 File对象既可以代表文件、也可以代表文件夹。它封装的对象仅仅是一个路径名,这个路径可以存在,也可以不存在 构造器 说明 public File​(String pathname) 根据文件路径创建文件对象 public File​(String parent, String child) 根据…

vscode中使用go环境配置细节

1、在docker容器中下载了go的sdk 2、在/etc/profile.d/go.sh里填入如下内容: #!/bin/bashexport GOROOT=/home/ud_dev/go export PATH=$GOROOT/bin:$PATH 3、设置go env go env -w GOPROXY=https://goproxy.cn,direct go env -w GO111MODULE=on 4、重启这个容器,使得vscod…

DBAPI如何使用内存缓存

背景 在使用DBAPI创建API的时候,有时候SQL查询比较耗时,如果业务上对数据时效性要求不高,这种耗时的SQL可以使用缓存插件来将数据缓存起来,避免重复查询。 一般来说,可以使用redis memcache等缓存服务来存储缓存数据。…

活动|华院计算宣晓华受邀出席“AI引领新工业革命”大会,探讨全球科技的最新趋势

8月31日,“AI引领新工业革命”大会于上海图书馆圆满落幕。本次大会由TAA校联会和台协科创工委会联合主办,得到上海市台办、上海市台联、康师傅的大力支持。大会邀请了NVIDIA全球副总裁、亚太区企业营销负责人刘念宁,元禾厚望资本创始合伙人潘…

ispunct函数讲解 <ctype.h>头文件函数

目录 1.头文件函数 2.ispunct函数使用 小心&#xff01;VS2022不可直接接触&#xff0c;否则..!没有这个必要&#xff0c;方源一把抓住VS2022&#xff0c;顷刻 炼化&#xff01; 1.头文件函数 以上函数都需要包括头文件<ctype.h> &#xff0c;其中包括 ispunct 函数 #…

esp8266+sg90实现远程开关灯(接线问题)

1需要准备的设备 首先需要的设备 硬件&#xff1a;esp8266开发板和sg90舵机&#xff0c;还有公对母的杜邦线&#xff0c;以及一根usb程序下载线。 软件&#xff1a;Arduino IDE 因为sg90舵机接口是三个连着的&#xff0c;只能用公对母的杜邦线把三条信号线接到esp8266的不同引…

Linux驱动.之字符设备驱动框架,新内核框架,设备树(二)

第一篇比较长&#xff0c;第二篇&#xff0c;继续写&#xff0c;内容有重复 一、字符设备驱动框架 在用户空间中调用open&#xff0c;打开一个字符设备&#xff0c;执行流程如下&#xff1a;最终会执行chrdev中的ops对应的open函数。

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法&#xff08;KNN&#xff09;8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特…

面试官:你是怎么处理vue项目中的错误的?

一、错误类型 任何一个框架&#xff0c;对于错误的处理都是一种必备的能力 在Vue 中&#xff0c;则是定义了一套对应的错误处理规则给到使用者&#xff0c;且在源代码级别&#xff0c;对部分必要的过程做了一定的错误处理。 主要的错误来源包括&#xff1a; 后端接口错误代…