绵阳新闻网

首页 > 正文

程序员与新技术之间的「爱」与「恨」

www.tgyhc.com2019-07-31

我是一个对产品和运营着迷的技术人员,愿意跨境终身学习者。欢迎关注我

每个星期五早上6点,我会按时发送我的“80”原创标题,5900字,将提供

我们大多数人都在做技术,我们喜欢和讨厌新技术。

爱是他可以重新获得无聊和重复工作的新鲜感。

33013309c49641d391ae7563242b04ab

我讨厌有太多的新技术,我无法学习。

7074e9b7f6ef4da8962d4544a030aa77

在实际使用中,不同的人对新技术的态度差异很大,有些似乎是积极的,有些似乎令人厌恶。

一般来说,技术团队的经理往往是“拒绝者”,团队成员大多是“拥抱”。

看下面的场景不是很熟悉?

程序员小明:老板,XX系统太乱了,需要重构。我推荐使用XX技术,它的优点是XX,XX,XX。我开了一个分支并在项目中介绍了测试,没问题。重建应该是早期的,否则将是一种折磨,转型的成本越高。 SDK正在寻找一个成熟的第三方。有超过一千颗星,作者说它的性能是我们现在使用的X倍。

领导小王:你为什么要介绍它?你现在需要解决什么问题?

程序员小明:这不是我打算重构的。

领导小王:他的缺点是什么?

程序员小明:

小王领导:介绍的过程如何规划?在几个阶段?估计时间节点?

程序员小明:

这时,小明的心里一定有万草泥马奔跑。这不是反对改革派的典型保守派的最佳体现吗?

9fe66b4c48024204897f755d428e705a

事实上,Z兄认为引进新技术是件好事,也是组织寻求专业进步的必然途径。

但是,您是否记得您在工作中使用的新技术,即使它是一个小型类库,它是否“陷入困境”?我估计每个人都被“搞砸”了:D

这些“坑”实际上是由我们之前做出的错误选择引起的。做出错误选择的原因是仅仅通过单侧信息判断新技术是不够的。

当你看到主要技术社区的官方公众号码说新技术是好的时候,你是否观察到他们每年多次说新技术不好?

当您听说新技术正在推动具有N次性能的其他帧时,是否已经考虑过,信息源的测试方法是否严格且客观?

即使github星号在技术圈中被广泛认可,也已经有一种服务可以提供刷子来发送某个宝藏的叉子.

但这并不是最可怕的,最可怕的是粉丝文化。因为XX正在使用中,所以这个东西很好;因为这是XX,所以这个东西很好。

围困中的人总觉得外面的世界是美好的,我们也在做技术。随着时间的推移,旧技术对我们来说变得越来越无聊,我总觉得外面的新技术是如此美丽。

Z哥仔细思考了背后的原因。猜测可能是以下三点。

首先,新闻来源通常是新技术的创造者。

我当然不会拆掉我自己的办公桌,所以你在互联网上看到的大部分信息都是积极的。

其次,即使我们以现实的态度选择,我们也会在不知不觉中验证外部宣传的优势是否真实,作为优先考虑的问题。

这实际上已经引导到新技术方面,并进一步传播新技术优势的传播。

相对而言,缺点和缺陷充满了未知数,创作者知道的信息不一定完整,或者不会产生错误。

第三,经过很多积极的舆论,你会“期待”。此时,心脏的平衡已经倾斜,促使您只看到您想要看到的“有益”信息。

这就像医生被殴打一样,患者说他打得很好,其他医生也非常冤枉说这条线不能做。原因是一样的。

所以一般来说,与新技术的优势相比,事实上,它的缺点或边界是什么,更有价值。

但只有当你真正踩到坑时,才会知道这些缺点。这需要时间练习。此外,“提取他人很短”相当于给自己一个敌人。成本非常高,所以遇到“坑”的人愿意分享。

事实上,并非所有谨慎都等于保守。

新技术和新想法的出现自然会产生诱惑。技术总是在向前发展,并且拥抱变革本身也没有问题。但是,不成熟技术的引入似乎带来了短期利益,但其潜在风险以及间接成本(组织间影响,长期维护成本等)可能远远超过收益。

因此,为了“面对”新技术,我们仍然必须回归价值本身。

在产品经理会议中,有一个众所周知的公式,由百度贴吧之父俞俊提出:用户价值=(新体验 - 旧体验) - 更换成本。

实际上,它也适用于技术领域。让我们改变它:技术价值=(新福利 - 旧福利) - 重置成本。

有了这样一个思考的公式,我们能清楚地了解这项新技术对您意味着什么吗?

新技术应该使我们的工作更好,而不是相反。

那么,除了看到新技术的好处之外,还有哪些好处呢?想想我们忽略了什么部分?

Z兄弟认为这件事可以从两个角度来考虑。

一种是将尺寸视为“宽”,另一种是“深”。

“光”不仅仅是数量问题,而且我们不能仅仅在技术层面考虑这个问题。

Z兄弟认为需要从至少三个维度考虑,从最高到最低:业务>人>技术。

首先,关于“业务”维度,我们必须首先了解当前的业务问题是什么,最重要的是什么。

我们必须从业务中进行选择,因为在不同的业务阶段有不同的选择方式。

在最初阶段,最重要的是“灵活”和“快速”。在成长期,最重要的是“可靠性”。在维护期间,最重要的是“低成本”。

关于维护期,我想多说几句。我知道很多做技术的人都是“完美主义”。也许你会认为“低成本”不仅仅是关于它。

我理解这种感觉。

但是当一个人过来时,我想说服你回到现实。

代码总是容易混淆,因为功能总是被删除,代码复杂性随着代码行数的增加而增长。

在维护期间,您必须面对各种遗留代码的迁移成本。如果改变技术选择会带来遗留代码重写,那么业务背后的成本将难以承受,那么我们必须考虑现有技术。在选择上,做一些小修理或螺旋上升。

仅仅因为技术选择与业务相关,您会发现您周围的情况符合以下规则:

新兴技术经常被初创企业或大公司用于新兴企业。大中型企业的核心业务更倾向于使用稳定的技术,至少三五年。如果一家公司长期使用某项技术,它将倾向于一直使用它,甚至该版本也不愿意更新。

现在你应该明白这些现象是合理的。

今天的互联网是关于改进,在运营层面,强调用户分层。事实上,当我们做技术时,我们也可以考虑改进和分层。

除了上面提到的“启动期”,“生长期”和“维护期”这三个粗粒度期间,我们还可以在同一时期内完善“横切刀”。

如何削减法律?

实际上,它是做另一种分类。

生命周期短的产品和长寿命产品? Edge产品和核心产品?

Z兄弟认为,只有长寿命和边缘产品才适合引进新技术。

3e9ded0cf44f4e92a7536fa26b87fc60

因为只有这样,你才有足够的时间“踩到坑”,不会中途退出。而且,只有边际产品才能拥有“生命”来支持你折腾。

让我们来谈谈第二个最重要的维度,即“人”。

康威定律深刻影响了许多方面,技术选择也不例外。特别是在选择宏观技术时,必须考虑其在最终技术架构中的地位以及与团队沟通结构的匹配程度。

即使是非常先进的技术,如果它与系统中的其他技术堆栈不匹配,也会导致翻车。

此外,团队中必须有负责人员才能掌握新技术。

那么,什么是持有?

我认为C ++的父亲Bjarne Stroustrup在他的《A tour of C++》中对熟练度分层有很好的描述。

他将程序员掌握新技术的能力分为四个级别(从初级到高级的顺序):

陌生人(陌生人):我听说我从未练过它,但我知道一些术语,名字等。旅游:已经实施了一个完整的功能。居民:了解这项技术可以做什么,不能做什么。建筑师:改进这项技术的能力。

Z Ge个人认为,负责使用这项新技术的人必须至少达到“旅行者”的水平,这是一个相对安全的情况。

如果您的团队中有“占用者”,您可以随时咨询,这甚至更好。

关于“人”的另一个问题是,许多没有做过领导者的小伙伴不是很明智,也就是说,人员流动造成的“单点风险”。

如果引入新技术,引入它的人将不会长时间离开它。根据“劳动法”,这个人最多只能待一个月。如果你遇到另一种职业道德,那将更加麻烦.

想象一下,如果你是一个领导者,这件事发生在你身上,是不是很头疼?虽然可以做出额外的努力,但中间的风险和成本实际上是由整个组织承担的。

最后,第三个维度是“技术”。

Z兄认为,对“技术”的关注主要取决于三个方面。

首先,要注意技术的优缺点,并且要长期避免它。问自己以下问题:

是否有基于当前技术堆栈的解决方案?相比之下,新技术的优势是否显着?是否考虑了所有潜在的解决方案和新技术?这项新技术在所有解决方案中有哪些优势?使用新技术会出现什么新问题?说真的,我们可以解决它们吗? (如运营和维护,培训和学习,潜在风险等)

关于第4点有两个扩展问题:

如果这项新技术能够取代现有的某些解决方案,我们能否保证未来相关的发展将转移到这项新技术?如果无法保证,我们怎样才能确保这项新技术有足够的能量来“填补空白”并在未来进一步深化?

其次,弄清楚技术价值不值得“长期信任”。这要求我们对其发展前景有一定的了解。

我建议你考虑以下6点。

一项卓越的技术,如企业,应该有明确的定位和发展道路。清楚地表明你想做什么,不做什么,以及如何规划未来。

在大多数情况下,说你自己的框架是“一体化”并且它是多么完美是一个“大坑”。

2.是否有人或社区继续投资?开源技术的实质性优势很小,因此开源技术的关键在于了解谁是幕后推手。

这对个人来说非常困难,因此在大多数情况下,知名组织支持背后的技术将更加可靠。例如,主要的互联网巨头,XX基金会等。

3.问题解决的速度有多快。这实际上是对前一点的补充,反映了组织活动和维护这项技术的热情。

想象一下,当你在生产环境中遇到一个棘手的问题时会有多尴尬,提到一个问题,但没有人回应。

4.源代码质量。除了通过阅读代码获得的主观评价之外,还可以通过“单元测试覆盖”来观察源代码质量。因为单元测试反映了维护者的工程意识和能力。

5.文件质量。如果文档很乱,则意味着维护者缺乏支持用户的意愿。未来可能会有很多华丽的功能出现。

6.开源协议。有些协议相对宽松,如BSD,麻省理工学院;有些协议比较严格,比如GPL。在大多数情况下,协议的选择越松散,发展的速度和前景就越好。毕竟,对每个人来说,自由意味着更少的关注和更广泛的空间利用。

第三,永远不要忘记“技术成熟度曲线”的存在。

一些新技术因为大奶牛或大公司的推出而变得流行起来。但是,几乎所有新技术都必须经历以下循环。

409b89c520ed4742b0813cbbb972dde6

▲图片来自网络,版权归原作者所有

因此,我们仍然需要关注技术推出的时间,以及行业中有多少实际使用案例和口碑。通过这种方式,我们可以判断它是处于“稳定爬升期”还是“成熟期”。

真正理解“商业”,“人”和“技术”的上述三个维度,我“得分很高”。

然后,通过几个步骤的完整准备,层是深的。

Z推荐的制备过程分为5个步骤。

cca80a7d620f4069b74e095599e390a4

前四个步骤基本上是一个筛选过程,其余的程序将越来越少。

“研究”的第一步可能是由许多人完成的。本质是收集信息的过程。

最简单的事情之一,只是一个小手指。但恰恰是最能反映新手和大师之间差距的地方。

因为,尽管每个人都输入相同的信息,但专家通常可以看到更多复杂性并识别更有价值的信息。

事实上,做好“研究”工作的关键是先弄清楚你想知道哪些信息并有目的地收集。

上一节中的内容“思考范围广泛”是一些普遍有价值的信息。您可以按照这些要点收集信息。

第二步是“候选人比较”。在大多数情况下,问题有多种解决方案。因此,此步骤是将您从外部收集的信息组织成方便的比较格式,如下图所示。

833125d6dfd847afbee13d187ac124b0

我已经看到了很多准备工作,当这一步结束时,我决定使用哪一个。

毛主席说,“实践是检查和巩固的唯一标准。”所以我们需要继续做第三步,“关键技术验证”。

通过实际操作,验证每个选项中看起来最有利的点是否正确,并找出其背后的原理和同时存在的副作用。这是了解原因的唯一方法。

此外,如果您注意性能,必须自己进行测试。特别红色亮点:D

如果它是“长寿命周期和核心”产品的技术选择,请考虑第四步,“场景验证”。

找到项目中最重要的场景,将可预测的极值构建到原型演示中,验证它们,并在多个场景中进行比较。

例如,将它们置于真实的海量数据场景中,以查看哪些数据量更好。

此时,您终于获得了经过质量认证的解决方案。从申请开始,只有最后一项准备工作,“制定实施计划”。

实施计划会有很大差异,但一个好的实施计划肯定会满足以下两个要素。

始终把“如何降低风险”放在首位。接地气体,一步一步,而不是“一刀切”。

完成上述所有工作后,我们将形成一个类似《引入XX类新技术方案》的文档。

dd813c58aad7449ead96136b0e69b362

▲获取模板的公众号后台回复“新技术SOP的介绍”

你完成了!

如今,软件开发行业的开源能力越来越强。在这个诱惑和选择的时代,保持理性和客观性尤为重要。

最害怕学习这项新技术的人会有一种“拿锤子找钉子”的感觉,而新技术将在各种项目中被滥用。

鞋子很好,只有脚知道。

但是当你的脚感到不舒服时,已经很晚了。你必须再忍住一点。

经济学也可以解释新技术的引入。经济学中一个非常重要的观点是选择成本,而你放弃的最大价值就是做出这种选择的成本。

例如,当您选择引入新技术时,您放弃的是过去积累的稳定性。您能否控制在放弃价值下可能承受的风险?

当然,也没有提倡过度的保守主义。因为经济学还有另一个重点:沉没成本不是成本。

当您为优化旧解决方案付出了很多努力,但仍然无法满足您的要求时,不要勉强,您应该选择果断地替换它。

因为旧方案的未来价值很小,为了坚持今天拿着这个“芝麻”,你可能会放弃后天的“西瓜”。

就像码头工人选择拥抱k8s并放弃他的“亲子”Swarm一样,这也是为了避免将来在1号集装箱领域失去他的位置。

好的,让我们总结一下。

这次,Z兄弟首先帮助你分析了引入新技术时常见的误解,以及如何科学地看待这个问题。

其次,我建议从“商业”,“人”和“技术”三个维度扩大思维的“广泛”程度,并通过五个步骤使准备工作更加深入。

最后,在经济观点的帮助下,您会有更理性的理解。

以上,我希望能帮到你。

209a8eec36394d27ad9ed476a0ddfcbd

推荐阅读:

我有一个为期8个月的5年10倍速读取方法,以及为程序员提供的分布式系统集合

如果您认为这篇文章不错,只需给它一个“喜欢”或“分享”。

鼓励我的创作:)

你也可以“跟我来”,用技术思维向你展示世界

我想和我一起玩。欢迎来到“搜索微信公众号:跨界建筑师”。

内容包括:架构设计,分布式系统,产品,操作,个人深层思考。

更多原创精品店,欢迎加入小圈子,请戳[了解更多]

热门浏览
热门排行榜
热门标签
日期归档