惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Stack Overflow Blog
Stack Overflow Blog
Forbes - Security
Forbes - Security
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
S
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
N
News | PayPal Newsroom
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
Vercel News
Vercel News
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Google Online Security Blog
Google Online Security Blog
Simon Willison's Weblog
Simon Willison's Weblog
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
T
Tenable Blog
I
InfoQ
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
D
DataBreaches.Net
博客园 - Franky
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
S
Security @ Cisco Blogs
Hacker News: Ask HN
Hacker News: Ask HN
J
Java Code Geeks
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Full Disclosure
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Cloudflare Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
Intezer
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs
Jina AI
Jina AI
V
Visual Studio Blog
L
LINUX DO - 热门话题
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏

Android Performance

SmartPerfetto 架构文章 Q&A:8 个深度技术问答 从 Trace 到洞察:SmartPerfetto AI Agent 的 Harness Engineering 实战 OpenClaw 常见问题解答:Token 消耗、能干什么、本地模型、隐私安全、使用体验 我把 OpenClaw 跑在本地三周后,发现它根本不是聊天机器人 Android Perfetto 系列 10 - Binder 调度与锁竞争 Android Perfetto 系列 9 - CPU 信息解读 Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析 Android Perfetto 系列 7 - MainThread 和 RenderThread 解读 Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战 Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程 Android Perfetto 系列 4:使用命令行在本地打开超大 Trace Android ANR 系列 3 :ANR 案例分享 Android ANR 系列 2 :ANR 分析套路和关键 Log 介绍 Android ANR 系列 1 :理解 Android ANR 设计思想 Android Perfetto 系列 3:熟悉 Perfetto View Android Perfetto 系列 2:Perfetto Trace 抓取 Android Perfetto 系列 1:Perfetto 工具简介 Android Perfetto 系列目录 2023 年的方方面面 关于 The Android Performance 知识星球介绍 The Performance Design Of OS OS 设计之性能设计 当 App 有了系统权限,真的可以为所欲为? The Performance 星球茶话会 - 第一期 Systrace 线程 CPU 运行状态分析技巧 - Sleep 和 Uninterruptible Sleep 篇 Systrace 线程 CPU 运行状态分析技巧 - Running 篇 Systrace 线程 CPU 运行状态分析技巧 - Runnable 篇 Android 性能优化的术、道、器 Techniques, Philosophy, and Tools for Android Performance Optimization 回顾 2021 一本讲 Android 流畅性的书,应该有什么内容? Android 系统开发系列(1):Android 12 源代码下载、编译和刷机 Android Systrace 响应速度实战 3 :响应速度延伸知识 Android Systrace 响应速度实战 2 :响应速度实战分析-以启动速度为例 Android Systrace 响应速度实战 1 :了解响应速度原理 Android Systrace 流畅性实战 3 :卡顿分析过程中的一些疑问 Android Systrace 流畅性实战 2 :案例分析 - MIUI 桌面滑动卡顿分析 Android Systrace 流畅性实战 1 :了解卡顿原理 华为手机刷微博体验更好?技术角度的一些分析和思考 一个「闰」字引发的事故 - 三星系统重启分析 Android App 链式唤醒分析 Android Systrace 基础知识 - SurfaceFlinger 解读 Android 开发者学习路线(2020 版本) 我的 2020 年读书单 Android Systrace 基础知识 - CPU Info 解读 Android Systrace 基础知识 - Triple Buffer 解读 Android Systrace 基础知识 - Binder 和锁竞争解读 「置顶」博客文章目录 Android Systrace 基础知识 - Vsync 解读 Android App 启动优化全记录 Android Systrace 基础知识 - MainThread 和 RenderThread 解读 Android Systrace 基础知识 - Input 解读 Android 中的“后台无效动画“行为分析 Android 基于 Choreographer 的渲染机制详解 Android 中的卡顿丢帧原因概述 - 低内存篇 Android 桌面被杀问题分析案例 Android 中的卡顿丢帧原因概述 - 应用篇 Android 中的卡顿丢帧原因概述 - 系统篇 Android 中的卡顿丢帧原因概述 - 方法论 Android 中的 Activity Launch Mode 详解 Android 中的 Hardware Layer 详解 Android Systrace 基础知识 -- 分析 Systrace 预备知识 Android Systrace 基础知识 - SystemServer 解读 Android Systrace 基础知识 -- Systrace 简介 Android Systrace 基础知识 -- Why 60 fps ? Android Systrace -- 系列文章目录 Android 新的流畅体验,90Hz 漫谈 利器 - 高效工具推荐 Android 无障碍服务导致的整机卡顿案例分析 2018 年度好物推荐 - 给辛勤工作的自己一点奖励 Android 系统开发源码环境搭建 陆奇:除了好代码,工程师怎样才算优秀? 程序员的修炼-08-阅读之美 程序员的修炼-07-游戏与编程 程序员的修炼-06-互联网那些事 程序员的修炼-04-关于测试的一些思考 程序员的修炼-03-Web 设计原则 程序员的修炼-02-编程之道 程序员的修炼-01-绝地反击之术 Android 系统不释放内存吗? 关于 Android 系统流畅性的一些思考 知乎 救救你的 StartingWindow 「置顶」Android 性能优化必知必会 2017 年度好物推荐 - 给辛勤工作的自己一点奖励 2017 Android Bottom navigation 规范二:样式、行为与规格 Android Bottom Navigation 规范一:使用方法 Android 中如何计算 App 的启动时间? Android 应用启动优化:一种 DelayLoad 的实现和原理(下篇) Android 应用启动优化 - 一种 DelayLoad 的实现和原理(上篇) Android hwui 中 RenderThread 工作流程 Java7 HashMap 源码分析 Android 代码内存优化建议 - OnTrimMemory 优化 Android 代码内存优化建议 - Android 资源篇 Android 代码内存优化建议 - Android 官方篇 Android 代码内存优化建议 - Java 官方篇 Nexus6 with Android M 开启多窗口模式 细说 Java 单例模式 Android 性能优化典范 - Profile GPU Rendering Android 性能优化典范 - Understanding VSYNC
程序员的修炼-05-了解你的用户
Gracker · 2018-09-28 · via Android Performance

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第五篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

逻辑人的争议

软件开发者身上的所有的“坏毛病”中,最严重的可能是:我们自以为是典型用户。然而大部分的开发者没有意识到的是,我们其实是异类,我们绝非等闲之辈 — 我们是边缘人。

作者提到了“逻辑人”和“现代智人”的概念

  • 逻辑人:逻辑人渴望控制那些让他们感兴趣的东西,而那些让他们感兴趣的都是些复杂的确定性系统。人是复杂的,但他们不像机器,他们的行为不具有逻辑性和可预见性,最好的机器是数字的,因为这样它就能变得最为复杂、精细,病区能被程序员轻易改变。

  • 现代智人:一般的普通用户,他们只是想简单地使用,而不是去控制。

对于逻辑人来说,控制是他们的目标,而复杂是他们愿意为之付出的代价,对于普通人来说,简单是他们的目标,失去控制权是他们愿意付出的代价。逻辑人被一种对工作原理难以抗拒的认知欲望驱使着,相比之下,现代智人渴望的是成功。

Alan Cooper 列了一些逻辑人的典型特征,你可以对号入座一下:

  1. 不惜牺牲简单以换取控制
  2. 不惜失败以换取认知
  3. 不放过任何一点可能性
  4. 行为像体育特长生

另外一句话软件工程师们需要谨记:任何人都能做出一个没人会用的复杂软件,这其实并不难!把软件做的简单易用才是真本事。你必须停止像逻辑人一样思考,而应该学会像现代智人那样思考。

象牙塔式的开发

象牙塔式的开发指的是:开发团队常年封闭在“高塔”之中,一门心思地做着魔法一般的软件。因为缺乏强有力的证据,开发者都假设其他人都是开发者,这是很危险的。

作者建议:在整个项目周期内,请尽力将你的开发人员暴露在用户面前:参加用户会议,参与可用性测试和验收测试,与用户进行交流,分析用户的数据和行为。

Eric 提出的“互信关系”:当人们从你那里购买软件的时候,他们对眼下和将来有很多期望:

  1. 他们相信,你的产品可以在他们的机器上正常工作
  2. 他们相信,如果他们碰到了问题,你会帮助他们
  3. 他们相信,你会坚持不懈地改进产品
  4. 他们相信,你会一一个公平、合理的价格为他们提供改进后的版本
  5. 他们相信,你的公司不会再短时间内破产

让程序员设计界面的后果

优秀的程序员都有自知之明,知道自己能做什么,不能做什么。他们要么直接拷贝别人的优秀设计;要么本分地只做编码,而把界面设计的工作交给其他专家。

是朋友,就别让你的朋友做出只有程序员才会使用的界面。

保护“中间分子”

专家和小白都只是一小部分人,大部分水平相当的用户都属于“中间分子”,你应该重视这些中间分子,中等水平的用户数量是如此巨大,他们如此具有主导性,以至于你可以放弃新手和专家级别的用户。

为了迎合为数不多的新手和专家,你在软件开发过程中耗费了大量的时间,最终只是让产品变得更差,结果还冷落了核心用户群。

每个用户都会说谎

用户的愿望与现实几乎总是相悖的,我们提倡要观察用户的实际行为,而不是听他们叙述他们的所作所为,其原因就在于这种背离。观察是一种很强大的技能,要学会通过人民的行为来判断,而不是听他们说什么就是什么。

作者提到了“活跃用户的矛盾体”这个概念:活跃用户的矛盾体是一种自相矛盾,因为如果用户对系统多一些了解,从长远来看,是会节省时间的。但现实世界里,人们的行为模式不是那样的。因此,我们不能忍工程师针对理想化的用户开发产品,因为现实中的人是非理性的,我们必须根据用户的实际行为模式来设计产品。

每个用户都会说谎,预期询问用户是否喜欢你的软件–他们当然会说喜欢,因为当面说你的软件有多么糟糕头型是多么的无理 – 你应该效仿 Gregory House : 去观察他们是否使用了你的软件,以及他们是怎么使用的。基于行为数据去设计你的软件,而不要靠用户说的“谎言”(不管那些谎言带有多大的善意)

别把产品发布当目标

衡量程序员是否成功,有个标准是看他发布了多少代码,但是仅仅发布是不够的,有多少用户正在使用你的软件,这才是衡量成功的终极目标

聪明的软件开发者知道,他们的工作远远不止编写代码和发布产品;他们的工作是开发出人民真正想要的使用的软件。这当然包括编码,但还有大量的全局性的其他的事情,比如撰写技术文档、交互设计、培养社区用户、乃至产品愿景,这些对于软件的全面成功都是很重要的。如果连这一点都没有搞明白,那么你写了什么样的代码就无关紧要了。

别问,需观察

用户口述他们想做的事情,与他们实际的所作所为相比,往往天差地别。从可用性的角度来看,询问用户他们想要什么是徒劳的,原因就在这里 – 你必须观察他们正在做了些什么。在可用性方面,你不能猜测行事,你必须去观察用户如何使用你的软件,除此之外别无他法。

在做设计的时候,如果能基于用户对你的软件的实际使用方式来做决定,岂不是更合理?不管你是在“低保真的可用性测试”转几篇每个观察用户,还是收集用户行为数据、然后在无形之中观察用户,宗旨是一样的:别问,须观察。

功能越多越好吗

软件依靠新功能来推动销售,但久而久之,那些新增的功能恰恰是使得软件越变越糟的罪魁祸首 。那种正在慢慢滋生的微妙的“功能癖” — 他会摧毁人们最喜爱的软件。

一个不好的趋势是:软件公司把现有软件修复 bug 的优先级设得比较低,而把为接下来的版本开发新功能这事看的特别重要。导致的结果就是,软件的质量每况愈下。(就像 Flyme 和 MIUI)

我们也许不该在盲目地把软件当成一堆功能来衡量 – 人们总有“食量”限制,就像在吃自助餐时,那么多事物你吃得完么?我们应该以结果为导向,衡量软件在帮助我们完成任务时的生产力或效力。

生物会为所欲为

作者认为,社会工程充其量是一种不精确的科学,即使在网络空间原型里也是这样。有人曾经说过,“在最精心准备的实验中”,即使条件收到最严格的控制,生物也将为所欲为

在构造社会性软件时,人是所有问题的根源,但解决问题最终还得靠那些人

为了一点绶带

作者总结了自己在 Stack Exchange 的工作内容:我所做的是、我最擅长的是、我最最热爱并且胜过世界上任何其他事情的是,为喜欢相互写几段文字的人们设计大型多人游戏。我吧他们的痴迷,引导到某种积极的事情上面;他们可以从中学习,还可以为整个世界创造一些可以重复利用的美妙作品 — 这依然是我所欲之事,因为我还保留有源源不断的痴迷。

为反社会人群构建社交软件

作者提出了 “10个可怕的想法”:

  1. 从根本降低参与的门槛
  2. 信任用户
  3. 生活就是世界上最大型的多人在线角色扮演游戏
  4. 总有坏事发生
  5. 喜好胜过金钱
  6. 规则可以很有趣,并且具有社交性
  7. 所有的现代网站都按游戏的方式来设计
  8. 考虑周到的游戏设计促成可持续发展的社区
  9. 社区的观点不一定是对的
  10. 需要一定的调解

如果你想在网上学点东西,你必须好好设计你的软件,引导人们与生俱来的社会群体冲动,并使他们重新聚焦在有价值的事情上。


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫