开发者效率的几个瓶颈点

简介: 开发者效率的几个瓶颈点

我认为开发者效率的模型是这样的:

image.png


我认为目前存在这么几个瓶颈点:

  • 对于 logic programming 而言:从运行时没有提供足够的feedback来更新开发者的认知
  • 对于 machine learning 而言:从运行时没有提供足够的feedback来更新开发者的认知。模型几乎是黑盒,人类难以获得直觉。
  • 难以维护文档:维护测试和文档是两倍工作量,文档总是滞后
  • 开发者从文档和运行时获取信息太慢,而且零散的知识容易遗忘
  • 开发者心中所想和源代码的承载形式有很大Gap,无法直白地表达意图


问题一:logic programming 的 feedback



image.png

这个问题的主要的症状就是出了问题,经常要靠猜。没有人知道在运行时实际的执行情况。


造成问题的主要原因是打日志仍然是一门艺术,而不是科学。对于 observability 的投入不足。什么叫 observability?



monitoring tells you it is not working

observability tells you why it is not working



日志,metrics,错误处理,distributed tracing。这些东西应该有一个更可视化,更少人工干预,代码写起来更漂亮的解决方案。


问题二:machine learning 的 feedback


image.png

machine learning 和 logic programming 是两种完全不同的驱动机器的方式。machine learning 本质上是用数据反向生成可执行的程序。深度神经网络可以理解为基于动态规划的模式匹配程序,只是这个程序不是人手写源代码得来的。


在人类灭亡之前的很长一段时间,machine learning 仍然需要人类的干预。如果我们无法从模型的实际行为获得直觉,这些干预都是盲目的猜测,而不是educated guess。对机器学习的模型进行可视化分析,增强人对其的认知和理解会是一个非常重要的方向。


问题三:文档维护


image.png


我们有大量的单元测试,但是仅仅看测试很难知道测的是什么东西,体现了什么意图。


我们有大量的文档,但是文档的更新总是滞后的。和实际行为不相符的文档更是具有误导性。


测试和文档应该是一个东西。在这个领域应该来一场类似前后端分离那样的革命。


问题四:知识管理


image.png

人类的生理缺陷是固有的,它限制了获取信息的带宽,以及能够存储和检索的知识规模。


如何提高开发者的知识管理能力是一个很大的问题。这不仅仅是提供更多的运行时反馈,提供更多的文档能够解决的。就算提供的再多,再快,开发者消化不了也是信息过载,无济于事。


面向StackOverflow编程,不是一句笑谈,而是科技带来的进步。本质上是用脑内关键字索引,把知识外溢到StackOverflow上做冷加载。


当我们面对一个命令行工具有100多个参数,一个gradle有几十个配置选项的时候,你是感觉非常无力的。很多时候我们宁愿重写,也不去复用。本质上是因为复用的前提是你先去理解复用的东西自身,然后才能游刃有余的调整那么参数。这个理解一个“可复用”的东西的成本的最大障碍,在人类自身。


问题五:所书非所想


image.png

核心的问题在目前主流编程语言的两个缺陷上:

  • 无法直白地表达超过500ms的因果关系。表现形式就是有状态的业务逻辑总是最终变得支离破碎。
  • Nominal Typing 鼓励了面向实现编程,而不是面向接口编程。而且单变量单一分类系统不足以处理真实业务中的“个性化”需求,从而无法“平台化”复用。表现形式就是 if/else 堆砌,咋写咋别扭。


开发者工具


所有编程工具的最大公约数是最终都要被“开发者”所用。所有工具解决的问题,本质上还是人类在环导致的问题。当哪天人类不在环中了,机器能够自举了,也就不再需要开发者工具了。在那天到来之前,如何用工具来武装开发者的大脑、双手和双眼,仍然是一个非常重要的课题。

目录
打赏
0
0
0
0
17
分享
相关文章
优化服务配置:提升效率与用户体验的关键
随着科技的迅猛发展,服务配置已经成为企业和个人生活中不可或缺的一部分。无论是云计算、移动应用、还是物联网设备,都需要良好的服务配置来确保顺畅的运行和卓越的用户体验。本文将探讨服务配置的重要性,以及如何优化配置以提高效率和用户满意度。
Java性能优化实践:提升你的应用效率
【2月更文挑战第12天】 在当今快速发展的软件行业中,性能优化是每个Java开发者都必须面对的挑战。本文将深入探讨Java性能优化的关键策略,从代码层面到架构设计,全方位提升应用的运行效率。我们将通过具体案例,展示如何诊断性能瓶颈、优化内存管理、提高并发处理能力,以及采用最新的Java技术栈改善应用性能。加入我们的旅程,一起探索如何让你的Java应用飞速运行。
229 2
性能优化:提升系统效率的关键
性能优化:提升系统效率的关键
105 1
Java性能优化:提升应用效率与响应速度的全面指南
【10月更文挑战第21】Java性能优化:提升应用效率与响应速度的全面指南
倚天710规模化应用 - 性能优化 - 软件预取分析与优化实践
软件预取技术是编程者结合数据结构和算法知识,将访问内存的指令提前插入到程序,以此获得内存访取的最佳性能。然而,为了获取性能收益,预取数据与load加载数据,比依据指令时延调用减小cachemiss的收益更大。
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
622 0
如何提升写入效率?Schemaless 写入性能优化实践分享
TDengine 是一款时序数据库,其Schemaless模式适应物联网数据动态变化。通过分析火焰图,发现parser和insert操作是性能瓶颈。优化措施包括减少标签解析、排序和子表生成的重复执行,提前判断schema变更,改进数据插入方法,减少内存分配和拷贝。通过这些优化,如在3.0版本中,line协议性能提升了2.5倍,telnet提升2倍,json提升近5倍。使用工具如火焰图和perf进行性能分析,以识别和解决瓶颈,实现性能提升。
56 0
C++性能调优:从代码层面提升程序效率
本文探讨了C++程序性能调优的关键点:选择合适的数据结构和算法,例如用哈希表(如`std::unordered_map`)替换低效的数组或链表;减少不必要的内存分配和释放,利用智能指针和容器如`std::vector`自动管理内存;优化循环和条件语句,例如在循环外存储数组大小;利用编译器优化如`-O2`或`-O3`;以及使用性能分析工具如`gprof`、`callgrind`和`perf`识别并解决性能瓶颈。通过这些方法,可以有效提升C++程序的运行效率。
构建高效Android应用:从优化用户体验到提升性能
【5月更文挑战第15天】 在移动开发领域,构建一个高效的Android应用不仅仅意味着实现功能,还要确保流畅的用户体验和出色的性能。本文将深入探讨如何通过界面优化、代码整洁、资源管理和多线程处理等技术手段来提升Android应用的整体效率。我们将透过实际案例,揭示常见性能瓶颈的成因,并提供相应的解决方案。此外,文章还会涵盖最新的Android Studio工具和Lint检查的使用,帮助开发者早期发现潜在问题。