当前位置: 首页 > backend >正文

从Android开发聊技术

聊技术聊什么

  • 技术点
    Android的技术点太多了, 10年是肯定没办法遍历所有的Android客户端技术的, 如果有人说别人技术不行, 那么他也有可能没做过别人做过的技术, 拿一个对他来说的新的技术点很容易就能触碰他无知区域. Android同胞要避免自以为是, 因为Android的技术栈的广度几乎是远远超过ios, web前端, web后端, windows开发, 等等
  • 技术问题
    每次在一个技术领域都不是懂得某些技术点就能实现需求的, 即便实现需求,也会遇到需求实现的效果不理想, 这在web前端眼中几乎是难以想象的, 因为他们在chrome里面体验不到在小型设备编程会遇到的卡顿问题, Android手机比iOS便宜这么多, 用1-2年卡很正常, 很多Android需求要尽可能的避免bitmap的滥用, 就是因为Android开发者眼中的安卓应用很容易卡, 所以需要小心处理
    为什么同样是Android工程师, 有的Android工程师写出来的bug就少, 有的写出来的就多, 同样大家都是实现了需求, 但是"保证需求在各个情况下均能运行"就很困难了, 需要抽象各个情况, 写出很碎的代码, 然后再将很碎的代码抽象出简洁的代码. 话又说回来, 如果考虑1种情况需要2天, 考虑10种情况下能运行, 可能就是2个星期了, 这里面的时间消耗如果不是站在测试角度是很难让产品理解的, 这对于把产品理解为"UI产品"的产品经理来说, 他们几乎没有耐心梳理一个需求的10个功能点对应的100个测试case, 所以很普通的产品经理是远远无法理解正常水平的Android程序员

Android开发需要什么能力

  • 基本的编程语言能力, 比如int类型集合类型要会
  • UI编写能力, 传统的UI组件以及每隔几年层出不穷的新的UI组件和框架
  • 理解需求的能力, 开发眼中的理解需求是包括对需求的程序方案的理解, 所以不会像产品那样采用"记忆"的方式去理解需求, 而是带有思考, 这种思考还会带有停顿, 因为可能在听需求的时候不会立即想到方案. 假如程序不去在理解需求的时候去想程序方案, 后续当这个需求需要多方面协调的时候, 需要产品经理或者项目经理去理解为什么会出现他们想不到的情况的时候, 产品和项目就会责备程序"你为什么不早说", 所以程序在理解需求的时候是要想很多事情的. 侧面也足以说明, 产品经理和项目经理在没有程序告知他们的情况下, 他们对产品的了解和理解都是非常差的. 甚至程序就算告诉他们, 他们可能也不会当回事, 因为想象力是有限的, 理解不了程序遇到的复杂情况.
  • 对于需求的全面思考的能力, 产品眼中的需求只包括需求的正常情况, 实际上需求的异常情况可能远远超过正常情况, 比如做直播和连麦, 仅仅因为网络断开导致的异常就很多种, 当然所有人都很难做到全面到100%, 能全面到80%就已经超过很多很多人了
  • 既然需要"全面思考", 假如考虑到了100个测试case, 那么每个测试case对应10行代码, 那就是1000行代码, 实际上如果程序真的写的这么碎, 维护成本几乎是难以想象的, 所以程序非常需要"抽象和重构"的能力, 抽象容易很容易理解, 但是除非是非常熟悉的领域, 比如2年都在干这一种类型的工作, 很难一次性就写出易懂的代码, 这就需要花2-3次去重构以前的代码, 比如这次做了Google内购, 如果后续没有重构, 直接做Google订阅, 就会发现为了快速迭代需求, 写了很多和内购一样的代码, 后续改bug也是改两套, 效率可想而知, 效率低不仅仅是加需求效率低, 如果出现一个bug, 改bug的时间取决于自己对这块逻辑忘的快慢, 2个月就足以忘记需求的80%, 后续改一个bug就得2个小时去回忆代码, 1个小时改和测试. 重构代码的能力几乎被所有人忽略, 传统意义上对程序员的要求是"实现需求"
http://www.xdnf.cn/news/8504.html

相关文章:

  • Python打卡5.23(day24)
  • 【和春笋一起学C++】(十五)字符串作为函数参数
  • 快速开发平台如何选择?技术选型避坑指南与实践洞察
  • el-select中自定义 两组el-option,但是key不一样,并且点击需获取当前整个项的所有属性
  • 前端地图数据格式标准及应用
  • 基于若依的人脸识别(2)——后端实现步骤
  • 开源工具自建AI大模型底座:打造你的专属智能助理
  • GPU训练和call方法
  • 2025电工杯数学建模竞赛A题 问题2 建立基于历史功率的光伏电站日前发电功率预测模型(线性回归,随机森林,SVR模型,集成模型)- 完整代码与结果
  • Linux 进程控制总结
  • 香港维尔利健康科技集团全面推进AI医疗落地,构建智慧健康管理新模式
  • Claude 4 发布:编码 AI 新纪元的开启
  • 人工智能100问☞第30问:什么是损失函数?
  • Express 框架
  • YOLOv12 目标检测算法深度解析
  • 热点│衰老过程中的表观遗传调控
  • 机器学习数学基础
  • linux ptrace 图文详解(九) gdb如何判断被tracee唤醒的原因
  • 一文详解生成式 AI:李宏毅《生成式 AI 导论》学习笔记
  • Spring Boot项目配置核心 - pom.xml的依赖管理与构建优化
  • 第六章:事件风暴 · 用户的意志
  • VKontakte(VK)注册教程
  • 什么是图神经网络?它用来解决什么问题?它有什么优势?
  • ROS合集(六)SVIn2 点云地图与 3D Tiles 可视化【预览版】
  • [原理理解] 基于diffusion的超分任务时候遇到的CLIPTokenizer和CLIPTextModel
  • facebook开源Triton编写GPU内核的编程模型速读:KernelLLM
  • Python 中的多线程与多进程:真假并行的直观对比
  • synchronized 实现原理
  • 20250523-关于Unity中的GUID简介(未完待续)
  • Ntfs!FindFirstIndexEntry函数中ReadIndexBuffer函数的作用是新建一个Ntfs!_INDEX_LOOKUP_STACK结构