您好,欢迎来到 艾特企服平台 [登录] [注册]
创业圈
  • 前几天修复了一个历史遗留 Bug,和同事讨论时他提到了一个词——“严丝合缝的设计”。 这个词几乎瞬间击中了我,因为它与我过去坚持的设计理念完全一致,只不过我曾将其称为“设计正确”。 但过往经验也证明,这类“设计正确”反而制造过不少 Bug,彼时我将问题归咎于“抽象不完善”。 支持这一理念的典型论据是:人体的各器官就是严丝合缝合作的。作为万物之灵的人类,值得我们从中汲取灵感。 现在重新审视这个问题时,我发现过去的理解过于片面了。 疫情期间学到的医学常识给了我新视角:人体各器官的合作并非绝对的严丝合缝,而是充满冗余和容错机制。最简单的例子,你把手指上的血管割破了,并不会造成你整个手指的缺血。 同样,若必须依赖“完美抽象”才能避免 Bug,这样的“严丝合缝的设计”真的是理想方案吗? 《程序员修炼之道(第二版)》中反复强调的核心观点是:代码应“易于修改”。 无论是设计模式还是编程准则,终极目标都是应对需求变化。无法灵活调整的设计,终将沦为技术债务。 而我曾经的“设计正确”理念,本质是落入了契约式编程(Design by Contract)的陷阱。 当时的逻辑是:A 模块调用 B 模块时已确保参数合法,因此 B 无需验证输入。 尽管我早年就意识到“设计闭环”的重要性,但在实际编码时,“性能强迫症”仍驱使我走向极端。 近年来随着对性能执念的淡化,我开始反思:这种追求“设计正确”的代码真的易于修改吗?答案显然是否定的。 精密代码如同多米诺骨牌阵列,看似严谨,却可能因一处微小改动引发系统性崩溃。过去踩过的坑已充分印证了这一点。 从“高内聚,低耦合”角度来重新审视这个问题。 若 B 模块要求调用方保证参数合法性,本质上已经形成了隐性耦合。用设计原则来描述,这违背了最少知识原则(Law of Demeter)。 根据多年经验,实现“高内聚,低耦合”的关键只有一条: 设计模块(函数/类/服务)时,永远不要假设调用方会遵守任何约定。 无论外部如何调用,模块内部必须维持自身数据一致性。 这既是我曾提过的“设计闭环”,也可称为防御式编程或容错冗余。 原则看似简单,实践却困难重重。 一个典型的开发场景是:先实现调用方 A,再开发被调用方 B。 当编写 B 时,由于已知 A 的实现细节,开发者会不自觉地利用这些信息优化 B 的性能。 这恰恰是坏的味道的开始——尽管短期运行高效,却埋下长期隐患。 假设需求变更后,需要用新模块 C 替换 A: 由于 C 与 A 的相似性,开发者容易忽略细微差异。若 B 的实现依赖了 A 的某些隐性特征,便可能催生极难发现的边界 Bug。 更棘手的难题在于:容错冗余的粒度如何把握?函数级、类级、模块级还是服务级?这需要开发者基于场景反复权衡,而每个人心中的天平刻度未必相同。 我自己现在的准则是: ​1.模块/类级/服务级:必须严格校验输入边界和状态约束,防止预期之外的调用弄乱内部数据。 2.​函数级:可根据情况相信传入的数据,这也有利于我们放心大胆的对于函数进行抽象,而不必担心性能的销耗。 ps. 函数的抽象绝不仅仅是代码复用,甚至可以说根本不是为了代码复用——抽象的本质是建立认知边界。只有深刻理解这一点,才有可能做出更好的抽象决策。
    2025-07-04
  • 回顾互联网发展的时代沉浮,无数从业者们不断探索追逐新的方法论,试图适应变化的浪潮。但当回望过往时,我们或许会发现,总有一些底层逻辑浮现,它们简单却深刻,无论未来如何充满不确定性,始终被验证有效。你认为这些逻辑是什么?它们如何在未来的挑战中继续引领方向?
    2025-07-04
  • AI 如同放大镜,让每一个选择的后果被数据量化,但也让 “内心真正想要什么” 的问题更加凸显。在算法推荐的 “最优解” 之外,人生选择题的终极答案,依然藏在对自我、对世界的深度认知里 —— 而这,正是 AI 无法替代人类的 “选择内核”。
    2025-07-04
横幅

AI浪潮涌动,开发者正迎来技术创新的黄金岁月

18566775553 • 2025-07-04 • 智核 AI 公社

知乎创始人兼首席执行官周源,近日在北京发表了一场引人深思的演讲,阐述了在线问答社区在AI浪潮下扮演的重要角色,以及开发者群体的黄金机遇。

周源强调,随着人工智能技术的迅猛发展,在线问答社区已成为AI内容消费的关键场景,同时也是开发者智慧碰撞、技术交流与开源协作的前沿平台。从科技领域的初步探讨,到如今AI技术的新浪潮,开发者正迎来前所未有的发展机遇。

回顾历史,周源提到,知乎自诞生以来,便伴随着中国开发者的成长,见证了技术浪潮的每一次变迁。目前,知乎上每月有超过5000万活跃用户专注于科技互联网和AI领域的内容,形成了一个由1600万持续学习者、15万生态链接者构成的庞大科技专家网络。这些用户中,不乏高学历的年轻开发者,以及来自企业管理层、CTO等高阶技术人才。

在这些开发者群体中,高学历人才占比显著,硕士和博士学历者超过半数,18至24岁的年轻开发者更是占据了近四成的比例。他们中的许多人,在互联网上完成了从学生到研究员、从程序员到架构师的蜕变,甚至成为了一些公司技术决策的关键人物。
周源深情地表示,知乎有幸在每个重要的技术周期中,都与开发者们并肩作战。开发者是改变世界的力量,开发者生态的繁荣,意味着整个社会创新能力的飞跃。从移动生态到深度学习,从AlphaGo到ChatGPT,互联网一直是重大技术创新的见证者和讨论的发源地。

他进一步指出,开发者是世界的“重写者”,他们以开源模型和开源思维链,默默塑造着未来的技术秩序。尽管AI技术正在迅速颠覆世界,但深度的理解、真实的表达以及人与人之间的真诚连接,始终保持着不可替代的重要性。

周源最后表示,知乎愿持续携手全球开发者、开源社区及每一位梦想者,共同迈向一个更加开放、更具创造力的未来。在这个旅程中,知乎或许不是所有答案的终点,但它始终致力于成为思考和讨论的起点。

谈谈代码中“严丝合缝的设计”

18566775551 • 2025-07-04 • 架构罗盘

前几天修复了一个历史遗留 Bug,和同事讨论时他提到了一个词——“严丝合缝的设计”。

这个词几乎瞬间击中了我,因为它与我过去坚持的设计理念完全一致,只不过我曾将其称为“设计正确”。 但过往经验也证明,这类“设计正确”反而制造过不少 Bug,彼时我将问题归咎于“抽象不完善”。

支持这一理念的典型论据是:人体的各器官就是严丝合缝合作的。作为万物之灵的人类,值得我们从中汲取灵感。

现在重新审视这个问题时,我发现过去的理解过于片面了。

疫情期间学到的医学常识给了我新视角:人体各器官的合作并非绝对的严丝合缝,而是充满冗余和容错机制。最简单的例子,你把手指上的血管割破了,并不会造成你整个手指的缺血。

同样,若必须依赖“完美抽象”才能避免 Bug,这样的“严丝合缝的设计”真的是理想方案吗?

《程序员修炼之道(第二版)》中反复强调的核心观点是:代码应“易于修改”。

无论是设计模式还是编程准则,终极目标都是应对需求变化。无法灵活调整的设计,终将沦为技术债务。

而我曾经的“设计正确”理念,本质是落入了契约式编程(Design by Contract)的陷阱。

当时的逻辑是:A 模块调用 B 模块时已确保参数合法,因此 B 无需验证输入。

尽管我早年就意识到“设计闭环”的重要性,但在实际编码时,“性能强迫症”仍驱使我走向极端。

近年来随着对性能执念的淡化,我开始反思:这种追求“设计正确”的代码真的易于修改吗?答案显然是否定的。

精密代码如同多米诺骨牌阵列,看似严谨,却可能因一处微小改动引发系统性崩溃。过去踩过的坑已充分印证了这一点。

从“高内聚,低耦合”角度来重新审视这个问题。

若 B 模块要求调用方保证参数合法性,本质上已经形成了隐性耦合。用设计原则来描述,这违背了最少知识原则(Law of Demeter)。

根据多年经验,实现“高内聚,低耦合”的关键只有一条:

设计模块(函数/类/服务)时,永远不要假设调用方会遵守任何约定。

无论外部如何调用,模块内部必须维持自身数据一致性。

这既是我曾提过的“设计闭环”,也可称为防御式编程或容错冗余。

原则看似简单,实践却困难重重。

一个典型的开发场景是:先实现调用方 A,再开发被调用方 B。

当编写 B 时,由于已知 A 的实现细节,开发者会不自觉地利用这些信息优化 B 的性能。

这恰恰是坏的味道的开始——尽管短期运行高效,却埋下长期隐患。

假设需求变更后,需要用新模块 C 替换 A:

由于 C 与 A 的相似性,开发者容易忽略细微差异。若 B 的实现依赖了 A 的某些隐性特征,便可能催生极难发现的边界 Bug。

更棘手的难题在于:容错冗余的粒度如何把握?函数级、类级、模块级还是服务级?这需要开发者基于场景反复权衡,而每个人心中的天平刻度未必相同。

我自己现在的准则是:

​1.模块/类级/服务级:必须严格校验输入边界和状态约束,防止预期之外的调用弄乱内部数据。
2.​函数级:可根据情况相信传入的数据,这也有利于我们放心大胆的对于函数进行抽象,而不必担心性能的销耗。

ps. 函数的抽象绝不仅仅是代码复用,甚至可以说根本不是为了代码复用——抽象的本质是建立认知边界。只有深刻理解这一点,才有可能做出更好的抽象决策。

如何从工作中获得成就感

18566775551 • 2025-07-04 • 架构罗盘

最近收到不少朋友给我留言说,工作越来越卷,升职加薪没有,加班越来越多。领导整天摊派任务,白天不是开会就是整理数据写PPT,只有晚上才有时间干自己的本职工作,越来越觉得上班枯燥,没有成就感。

工作成就感这件事怎么说呢,每个人的感受是不一样的,有人在工作中的成就感来自于解决了很复杂的问题,有人的成就感则是帮助同事后获得认可,各有不同。

大体来说,工作中的成就感主要有两种:一种是自我满足,这是由内而外的自我实现;另一种则是外界群体认可带来的情绪价值,这是由外而内的群体评价体系。但无论哪一种,都需要在实际工作场景中来获得成就感。


一、主动解决问题,一切以结果说话

比如你目前遇到的情况是线上问题频发,你没有太多的线上权限,自己技术能力不够强,排查问题能力一般,那你可以从哪些方面入手呢?

1、加入/组建线上问题反馈群,和一线的客服以及值班的运维开发保持紧密联系,发现问题及时关注。

2、推动线上监控体系的完善,以及线上回归和自动化巡检的落地,你可以暂时技术能力不够,但不能不行动。

3、问题复盘优化,线上问题oncall机制,都可以去推动建立,这些不怎么考验技术,更考验组织协调和沟通能力。

以上三种方式是针对线上问题频发最常见也最合适的解决方法,根据具体情况选择一种或同时推动多种方法,直至问题得到改善或者解决。这个过程中不仅自身能获得长足的进步,也能通过解决问题获得来自同事和上级的认可。


二、职场不是给你学习的,能快速解决问题才是根本

很多职场新人容易犯的一个错就是,我不会这个技术,公司加班多没时间让我学习提升,这其实是一个误区。公司招聘员工的目的是让他来做事和解决问题,而非学习。

比如你只会拿着别人的测试脚本改改满足日常工作需要,诚然这种方式也能应付工作,但势必会陷入低效区间,可能导致加班更久,也影响自己的心态。对此我有这些建议:

1、了解别人的脚本为什么这么写,你能否借鉴他的思路,实现自己的脚本。

2、自己实现的脚本,有没有其他人也能利用的共性,然后尝试开发一个小工具。

持续循环上面两点,你的技术能力才会得到提升,因为你是实打实的在实战解决问题。同时,如果你做的事情能帮助他人解决类似的问题,既能获得领导的肯定,也能获得同事的认可,何乐而不为。


三、所有的爆发性成长,都来自于长时间的厚积薄发

对于工作年限不长的同学来说,对业务的熟悉程度,技术实践的经验以及技术广度和深度,确实很难超过高级或者资深岗位的同事,但这不是你做不好事情的理由。

对业务的理解需要在日常工作中不断积累,和业务产品多沟通,在测试细节里总结。技术工程能力需要不断的练习,解决各种报错,做各种优化,这也需要时间的积累。

特别是对于初入职场的同学来说,你本身就是初中级的Title,接受自己经验和能力的不足,这是事实。但你可以通过学习的积累,辅以大量的实践,来成为高级、资深甚至专家级的角色。

职场,一定要认清你自己,有明确的定位,找到对的方向,同时辅以勤奋学习和大量思考。这个过程,除了收获技术和业务的成长,更多的,是你能对自己有更多的认同,以此来获得成就感。

质量度量落地的注意事项和思考

18566775551 • 2025-07-04 • 架构罗盘

最近有朋友问了这样一个问题:想在团队内推动质量度量落地,对每版本迭代的交付质量有更好的评估,但没有太多的实践经验,有没有什么落地方法或者注意事项。

首先聊聊质量度量本身,即质量需不需要度量?

答案显而易见:质量需要度量,而且需要持续的度量!为什么呢?

我们所从事的软件测试工作(随着技术不断发展,现在也叫作质量保障),工作对象就是软件系统。经过需求设计、需求评审、技术设计、代码开发、测试验证、上线发布等多个环节,才能保障这些软件的最终交付质量。

这一整套复杂的流程,实际上就是将不确定性(需求)转化为确定性(具有严密逻辑的软件系统)的过程。确定性,需要一定的衡量标准来评估它是否满足预期的设计,因此需要一定的数据来进行度量。

而持续度量的原因,是业务和技术本身就处在一个不断变化发展的状态,需要持续的度量和评估,才能保障软件系统的质量长期处在一定的水准之上,满足用户需要和保障业务目标达成。

质量度量的本质,是具体的定量,而非抽象的定性。


其次聊聊质量度量的注意事项,这些注意事项是我个人结合工作经历和实践总结的经验教训,仅供参考。

质量保障是一个体系化和长期建设的过程,而质量度量作为最重要的一环之一,在落地过程中需要持续跟进和优化。

1.质量保障不仅仅是QA同学的事情,因此质量度量也不能只关注测试维度。
2.度量指标需要根据团队特性和业务具体情况来制定,并且需要评估是否合理,而不是强行制定强行执行。
3.质量度量是为了保障最终交付质量能更好的满足用户需要,进一步达成业务目标,而非为了度量而强行度量。
4.质量度量并非一蹴而就,在软件不同的生命周期和团队成熟度阶段,度量的范围和执行严格程度要灵活变通。


最后,分享一些我对于软件质量度量的一些思考。

1、不要为了度量而度量,找到合适的度量对象很重要。

比如听一些同学说他们的质量度量指标,就有首次测试用例执行通过率,以及累积测试用例执行通过率。

这两个指标是为了解决什么问题?如果只是看到别人有,那我也要做,只是浪费时间和资源。而且你花大力气去做,大概率也得不到整个技术团队的认可。

2、度量指标一定要和具体的问题挂钩,否则指标没有意义。

最常见的,测试用例覆盖率,测试用例通过率。这个度量指标的作用是什么,要解决什么问题。

比如提测冒烟通过率必须100%,否则证明了主流程存在block,影响测试进度。这个度量指标要解决的是可测性和测试进度,提高从编码到测试环节的交付产出物质量。

3、度量的指标和数值一定要和直接干系人达成一致。

还是以冒烟提测通过率为例,如果研发团队不认可,怎么办?

很多时候测试团队没有太大话语权,没办法影响到研发团队。这个时候要学会迂回策略。即如果冒烟提测通过率不达标,导致了什么结果,这个结果的风险是什么,会带来什么不好的影响。然后向更上一层汇报,暴露风险。

4、度量指标和数值不能解决问题,只能证明发生了什么。

设置度量指标和衡量的数值后,要明确一点:度量产生的数据不能直接解决问题,而是证明产生了什么结果。

要分析数据背后的原因,什么原因导致了这个结果,这个原因的风险和对交付质量有什么不好的影响,然后才是拿着数据和分析的结果去推动改进。

5、落地质量度量有很多前置条件,质量度量不是单一存在的。

举个例子,通过度量缺陷数量和用例数量以及对应的百分比,来评估每版本的编码质量。

这个逻辑没问题,但不是单单搞个对比数据就可以的。缺陷&用例需要和对应的代码分支关联,代码又要和需求关联。否则只有数据,没有因果关系,证明不了问题,也解决不了最本质的需求不完善和代码质量不高的问题。

6、质量度量是一个复杂的技术工程,更需要大量的沟通和协作。

工作真正要解决的是人的问题,技术不存在难点,难点在于思路,以及说服其他人配合你行动。

想清楚再行动,先从小范围试点,从最痛的点开始,这样推进的动力更大。

2025年外卖大战

18566775553 • 2025-07-04 • 网上那些大小事

2025年外卖行业中发生的事件
2025年起,“外卖大战”口舌不断。自从京东高调入局外卖,和美团、饿了么开始展开正面竞争,外卖行业这一战就不可避免。 [1]
先是京东率先从外卖市场点燃战火,宣布为全职外卖骑手缴纳五险一金,美团也宣布要为全职及稳定兼职骑手缴纳社保;京东接着官宣承担外卖骑手五险一金的所有成本,美团也宣布要为骑手补贴50%的养老保险。 [1]
2025年4月21日,京东集团再次“放大招”,发布公开信称,近期竞对平台对兼职外卖骑手强迫“二选一”的行为,事发突然,导致京东平台部分外卖订单延迟,造成了不良用户体验。自21日起,所有超时20分钟以上的外卖订单,京东全部免单。 [1]同日,针对要求骑手“二选一”传言,美团再次发布说明回应称,没有任何平台有动力、有能力去约束外卖骑手的接单选择。 [7]4月30日,饿了么宣布开启“超百亿”补贴 [12];同日,淘宝宣布加入外卖大战,“小时达”升级为“闪购” 5月6日全国铺开。 [14]2025年5月13日消息,市场监管总局会同中央社会工作部、中央网信办、人力资源社会保障部、商务部,针对当前外卖行业竞争中存在的突出问题,约谈京东、美团、饿了么等平台企业。

首页八格图片广告位

热门晒单

热门回复

左侧广告