开发者效率的几个瓶颈点

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

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

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 堆砌,咋写咋别扭。


开发者工具


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

相关文章
|
数据可视化 数据挖掘 C++
一文入门数分三剑客--Numpy、Pandas、Matplotlib
一文入门数分三剑客--Numpy、Pandas、Matplotlib
510 0
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。
|
网络协议 应用服务中间件 nginx
Nginx的http块sendfile,keepalive_timeout的配置指令说明
Nginx的http块sendfile,keepalive_timeout的配置指令说明
|
人工智能 自然语言处理 搜索推荐
AI与心理健康:情感支持的新形式
【10月更文挑战第31天】在快节奏的现代生活中,心理健康问题日益突出。AI技术的发展为情感支持提供了新形式,包括心理评估、情感监测、危机干预和个性化咨询。本文探讨了AI在心理健康领域的应用及其对个人和社会的深远影响。
1609 0
|
存储 数据安全/隐私保护
[GESP样题 三级] 进制转换、春游、密码合规
[GESP样题 三级] 进制转换、春游、密码合规
587 0
|
算法 C语言
通过指针引用字符串
通过指针引用字符串
259 1
|
SQL 分布式计算 NoSQL
大数据相关常用软件下载地址集锦
大数据相关常用软件下载地址集锦
|
Ubuntu Linux 编译器
用户态协议栈学习,DKDK基本用法介绍
用户态协议栈学习,DKDK基本用法介绍
948 0
|
NoSQL Java 关系型数据库
java 反射详解
java 反射详解
92 0
|
移动开发 前端开发 JavaScript
js 前端密码强度检测zxcvbn的使用(含react示例)
js 前端密码强度检测zxcvbn的使用(含react示例)
js 前端密码强度检测zxcvbn的使用(含react示例)