死循环

死循环

系统复杂度,是伴随着系统的不断进化逐渐产生的,事情的开始都是美好的。

系统的进化是件很有意思的事,不在这个行业的人不理解他们每天要用的各种软件为何这么复杂,需要这么多的工程师没日没夜的加班。所以在知乎上就有了这种问题:

“为什么很多看起来不是很复杂的网站,比如 Facebook 需要大量顶尖高手来开发?”
参看网址:https://www.zhihu.com/question/20303645

前淘宝员工,《淘宝这十年》的作者子柳还在这个问题后面后面做了挺通俗的解释。在他的答案后还有挺多答案。略过这些长篇文章的专业解释,结论其实就是事情做大了,很多之前你认为不是问题的东西都成了问题。

作为实际参与开发IT系统的人,很多程序员有一种倾向,喜欢一切尽在掌握中的感觉。如果理解不了,参考一下时下流行的工匠精神,百科对其的定义是:

工匠们喜欢不断雕琢自己的产品,不断改善自己的工艺,享受着产品在双手中升华的过程。工匠们对细节有很高要求,追求完美和极致,对精品有着执着的坚持和追求,把品质从99%提高到99.99%,其利虽微,却长久造福于世。

技术人员往往要在实际工作中能否彻底贯彻自己对于标准的要求进行不断地平衡,在各种工期倒排的恶劣情况下,还能不能维持对于高品质代码的追求,还有几天就是deadline了,测试代码还要不要写了,测试的覆盖度能不能达到,用户看不见的地方能不能做到更好。这种问题并不是软件行业的专利,我们每天都会遇到。比如厨房里的员工有没有严格遵守卫生的规章,4S店的维修技师有没有按照厂家的规定完整的做了每一道检查,保洁阿姨有没有清理了所有的卫生死角,以上描述的行为最终都指向专业素质-职业道德,而在中国很多行业监管缺失的情况下演变成了看良心,靠宗教上的理念让人相信下地狱,这里就不展开了,法律与道德还是留给社会学者去研究吧。

让我们回到软件,最初的软件系统开始都没有那么复杂,一开始都是简单的。一个有幸能存活超过一年的系统,如果恰好又迎来用户的爆发性增长,企业经营者与产品经理就会提出更多的想法让软件往预测的道路上走。这时有可能原来为10W用户设计的用户表就不能支撑了,要在业务爆发到500W用户的时候依然能保证不算太差的登录体验,偶尔创业公司并没准备好遇见到这种情况;如果业务线性增长对于技术人员倒是件好事,技术负责人能知道何时能遇到瓶颈,留给自己的时间窗还有多久,并开始进行合理的人才储备和技术储备,好吧,其实还是人才储备,东西都是人做的。

尽管如此,小而美的系统仍然是厌倦了大公司各种复杂系统,流程,部门的开发者的最爱,系统的每一块代码都知道是用来做什么的,出了问题马上就能推测出是在哪里出的问题。这只是个理想情况,当引以为傲的系统运行了以年为单位后,这个循环又开始了,后来者又开始往那个曾经小而美的系统上吐口水了。


文章来自微信平台「麦芽面包」
微信公众号「darkjune_think」转载请注明。
如果觉得有趣,微信扫一扫关注公众号。
图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109067.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 至强系列cpu天梯图_cpu天梯图2018

    至强系列cpu天梯图_cpu天梯图2018Helio,大家好,距离上一次天梯图更新已经过去一个月时间了,伴随着新的月份到来,新的天梯图该进行更新修正了,下面小编带来CPU天梯图2018年11月最新版,希望对大家有所帮助。CPU天梯图2018年11月最新版:CPU天梯图2018年11月最新版十一月电脑CPU天梯图性能排行新增了几款上个月新上市的几款处理器,尤其是Intel九代酷睿处理器的排行情况,通过前面的评测相信大家基本上对九代酷睿处理器…

    2022年9月15日
    5
  • 最详细的Vuex教程

    最详细的Vuex教程最详细的Vuex教程什么是Vuex?vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。引入Vuex(前提是已经用Vue脚手架工具构建好项目)1、利用npm包管理工具,进行安装vuex。在控制命令行中输入下边的命令就可以了。npminstallvuex

    2022年6月9日
    28
  • tkmapper教程_trello怎么用

    tkmapper教程_trello怎么用tkMappertkMapper整合整合mybatis依赖配置类启动类扫描整合tkMapper依赖修改启动类的`@MapperScan`注解的包tkMapper使用创建数据表创建实体类创建Mapper接口测试tkMapper的常用方法增删改添加修改删除查询查询所有根据主键查询条件查询分页查询带条件分页查询基于MyBatis提供了很多第三方插件,这些插件通常可以完成数据操作方法的封装(GeneralDAO)、数据库逆向工程工作(根据数据表生成实体类、生成映射文件)tkMapper就是一个MyBatis

    2022年10月7日
    3
  • zookeeper实现锁(如何实现分布式锁)

    zookeeper分布式锁原理:1大家也许都很熟悉了多个线程或者多个进程间的共享锁的实现方式了,但是在分布式场景中我们会面临多个Server之间的锁的问题,实现的复杂度比较高。利用基于googlechubby原理开发的开源的zookeeper,可以使得这个问题变得简单很多。下面介绍几种可能的实现方式,并且对比每种实现方式的优缺点。1.利用节点名称的唯一性来实现共享锁ZooKee

    2022年4月12日
    59
  • 网络虚拟化和SDN

    1、什么是虚拟化2、服务器虚拟化3、网络虚拟化4、云计算跟网络虚拟化的结合5、SDN在网络虚拟化和云计算中的作用一、什么是虚拟化虚拟化技术,就是将一个物理实体,通过一些复用的技术,克隆出多个虚拟的等价物,这些虚拟的等价物依附于物理的实体之上,共享物理实体的各种资源。类似于进程与线程的关系,在一个进程内可以fork出多个线程,所有线程共享进程的内存资源。提到虚拟化技术,现在通常是指服…

    2022年4月7日
    85
  • JDK下载与安装教程

    JDK下载与安装教程学习JAVA,必须得安装一下JDK(javadevelopmentkitjava开发工具包),配置一下环境就可以学习JAVA了,下面是下载和安装JDK的教程:1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html点开链接你应该看到如下图所示的界面:2.点击上图中箭头所指的地方,会出

    2022年4月26日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号