【译文】热闹驱动开发 (www.luanxiang.org)

【简介】

软件开发团队关于软件架构或技术栈的决策,很多并不是基于扎实的研究和对期望效果的认真思考,而是不准确的意见、社交媒体的信息,或者就些是“热门”玩意。这种做派的危害我见过不少,称它为“热闹驱动开发(Hype Driven Development,HDD)”。我赞成的是更专业的做法,称之为“脚踏实地的软件工程”。下面一起看看HDD的来龙去脉,想想我们能怎么改进。
新技术带来新希望
团队把最新最热的技术应用到项目里,这样的景象你见过吗?有人是因为读到了相关的博客,有人是看到Twitter上的潮流,还有人是刚刚在技术大会上听到了关于某门技术的精彩演讲。不久,团队就开始采用这种亮眼的新技术(或者软件架构设计范式),结果他们并不能更快(就像之前说的那样)开发出更优秀的产品,反而身陷囹圄。开发的速度降下来了,信心受挫了,后续版本的交付也出问题了。有些团队甚至干脆专心修bug,而不是开发新功能。他们“只需要多花几天”就能把事情搞定。
热闹驱动开发
热闹驱动开发有很多流派,也有很多渠道介入大家的项目:
Reddit驱动开发——在选择技术、架构、设计时,团队和个人的决策依据是知名博主的文章,或者reddit, hackernews, blogs, twitter, facebook, Github或者其它社交媒体上的热点。
技术会议驱动开发——仔细观察观察,参会回来的家伙们有什么表现。他们备受演讲的鼓舞。这是双刃剑。他们没有足够的研究,就开始使用最新最热的类库/框架/架构范式,而这可能是通往地狱的高速公路。
嗓门驱动开发——有人整天谈论新框架/类库/技术,他自己却没有经验,但是反复念经终于让团队决定采纳它。
Gem/类库/插件驱动开发——在RoR社区里特别流行这种情况,有时候我会发现一个gemfile太长,只有程序启动时的装载时间比它更长。这种流派源自下面的观念:Rails里的每个问题都应当有个gem来解决。有时候只要自己动手写几行代码就能解决,但是我们还是一个劲地添加类库/插件/gem/框架。
我还希望提到热闹驱动开发的一个常见流派,StackOverflow 驱动开发——开发人员从StackOverflow(总之就是互联网上)拷贝代码,而没有真正弄懂它们。
HDD就是开发团队自掘坟墓
凑热闹的问题是:它很容易导致错误决策。无论是糟糕的架构决策,还是糟糕的技术栈决策,给团队的影响都常常持续数月甚至数年。最糟的是它们会造成软件工程上千疮百孔的局面,只能推倒重来。但推倒重来几乎没有成功案例。
一切罪恶的根源似乎都是社交媒体——新观点传播得太快,还没来得及经过检验。大家还来不及细想有哪些利弊,就已经传播开去。

点击查看原文 >>

@技术头条 2017-02-05 14:15 / 0个评论
赞过的人: @技术头条
要不要再学学下面的文章?
写给开发人员的实用密码学(六)—— 对称密钥加密算法 (thiscute.world)
在密码学里面,最容易搞混的词估计就是「密码」了,cipher/password/passphrase 都可以被翻译成「密码」,需要注意下其中区别。
by @技术头条 2024-01-14 19:01 查看详情
nginx 防火墙模块开发总结 (www.addesp.com)
那段时间我的站点有时会打不开,起初以为是网络问题,后来越来越严重,进入后台才发现数据库 IO 拉满了。看了看 nginx 的日志才发现站点被疯扫,于是打算做点什么。

然后在 Github 上看了几个防火墙模块,要不然功能不全,要不然使用复杂,于是萌生了自己写模块的想法。
by @技术头条 2023-12-26 22:24 查看详情
写给开发人员的实用密码学(三)—— MAC 与密钥派生函数 KDF (thiscute.world)
我们都更喜欢使用密码来保护自己的数据而不是二进制的密钥,因为相比之下二进制密钥太难记忆了,字符形式的密码才是符合人类思维习惯的东西。

可对计算机而言就刚好相反了,现代密码学的很多算法都要求输入是一个大的数字,二进制的密钥就是这样一个大的数字。
by @技术头条 2023-11-06 23:05 查看详情
写给开发人员的实用密码学(二)—— 哈希函数 (thiscute.world)
更好的哈希函数可以使用这样的方案:它将第一个字节作为状态,然后转换状态(例如,将它乘以像 31 这样的素数),然后将下一个字节添加到状态,然后再次转换状态并添加下一个字节等。 这样的操作可以显着降低碰撞概率并产生更均匀的分布。
by @技术头条 2023-11-06 23:04 查看详情
写给开发人员的实用密码学(一)—— 概览 (thiscute.world)
从开发人员的角度理解密码学概念不需要你是一个厉害的数学家。 这个系列的文章将尽量以最浅显的方式教你应用密码学的基础知识,而且包含大量循序渐进的代码示例和实践练习——就像你学习 Web 开发、数据库或 APP 开发一样。
by @技术头条 2023-11-06 23:03 查看详情
基于AI+数据驱动的慢查询索引推荐 (tech.meituan.com)
目前,美团内部的日均慢查询数量已经超过上亿条,如何对对这些慢查询进行分析并建立合适的索引,是美团数据库研发中心面临的一项挑战。美团数据库平台研发组与华东师范大学展开了科研合作,通过基于AI+数据驱动的索引推荐,来与基于代价的方法并行地为慢查询推荐索引,以提升推荐效果。
by @技术头条 2023-07-04 23:28 查看详情
关于 MySQL 新版连接驱动时区对齐问题的研究 (www.diguage.com)
在一个项目开量验证过程中,发现 createDate 字段不正确,比正确时间晚了十四个小时。调研发现,这是一个非常典型的问题。现在把定位问题的思路和解决办法给大家做个分享。
by @技术头条 2023-07-04 23:10 查看详情
如何用 ChatGPT 助力开发: 已经有 15 万人看过的经验分享 (luolei.org)
自从年初开始关注这波 AI 浪潮,我将 AI 纳入了自己的工作流程,已经有一段时间了。现在我基本上一有机会就向他人推荐,建议尽快将 AI 引入开发流程。

今天这篇文章,分享一些目前自己利用 AI 服务相关的一些经验、工具和服务。
by @技术头条 2023-06-24 09:04 查看详情
使用契约测试得不偿失?试试契约先行开发 (insights.thoughtworks.cn)
在一定场景下,使用契约先行的合作方式可能更高效,比如契约足够简单直接,开发使用的技术适用于生成的代码,开发过程中已经有足够的集成测试或组件测试时,契约先行可以缩短团队间的反馈闭环,减少等待时间,提升开发效率。
by @Thoughtworks 2023-02-17 09:25 查看详情
实战场景中 Cobaltstrike 的二次开发 (paper.seebug.org)
随着近几年HW实战的开展所有人都对Cobaltstrike不再陌生,相关安防设备一直在思考如何在流量侧/终端侧识别出CS的行踪。攻击者除了使用习惯上基于插件进行开发提效外,还有一些需要关注对抗的点来提升CS的隐藏性,我们会分两篇文章将CS在流量层面、内存层面对抗侧二次开发做出的思考实践与大家分享交流。
by @技术头条 2023-02-12 14:09 查看详情