维护一个烂系统是怎样的一种体验?

最近听到不少程序伙伴们都在抱怨+吐槽:自己维护的系统很SB,框架老旧能力薄弱,编程语言语法繁琐,很多 bug......但是公司因为安全和成本考虑,迟迟不更新。

(当然啦,这种情况肯定是不会发生在近乎团队中的,这点我们还是很自信的。)

那么,维护一个烂系统到底是怎样的一种体验?听听他们都是怎么说的:

杜琪,工程师

掉进了屎坑的感觉~
你们是没见过同一个系统数据库设计中,日期有的用字符串有的用date
你们是没见过需要从一个指定的表中获取id值
另外就是需要手工保证数据不重复,用个distinct关键字不可以??!!

燕剑波,长路漫漫.....

恨不得把之前的哥们一家子都埋到他挖的坑里去,不够就把祖辈一起埋进去。

Qian Larry,多年码农

有幸经历过这样的事情。
该系统是一个投资下单系统,客户是全国各大证券公司,在某细分领域里市场占有率有80[[[[[%]]]]]。当初少不更事,一听金融行业好,就来到了这个公司。久了便发现跟想象中完全不是一个事。
当时系统已经上线了约莫八年。烂系统都是如此类似——框架落后,文档缺失,功能冗余,版本管理混乱。最早的一批开发者又走得一个不剩,期间换过4,5批人,思路都不一样。就连代码注释都寥寥无几,或者写得只有当事人自己看得懂。后来的人只敢往里加代码,不敢轻易改代码。一切以稳定第一,性能兼顾,代码优雅易读什么的统统靠边站。
那些说重写项目的人讲得轻松,复杂的项目多了去,不比学生成绩管理系统(许多人的毕业设计)。就该系统来说,其之复杂,规模,都不是一个人可以一肩挑的。修改离职人员的代码更是难上加难。最后光有技术还不够,大量的业务逻辑必须具备一定证券期货知识才能着手(为此我还考了证券从业资格证)。
不光系统烂,公司当时的管理方式也很有问题。公司的销售员毫无业务水平,只知道收钱,不仅承担不起售前的工作,更令人称奇的是把程序员的电话直接留给客户,有需求直接致电程序员帮改。天大的笑话啊!我来给不是软件行业的人解释一下后果:
1.不合理的需求要挡,至少要经过小组分析。许多程序员不论什么需求埋头就做,危害很大。
2.重复造轮子,或者客户要三轮车就照做三轮车,可明明有现成的轿车却不用。
3.打乱开发计划,客户的需求无穷无尽,永远在做手边上嚷嚷最响的需求而不是真正迫切的需求。
4.过多的客制化,导致项目没有办法整合成一套通用版,导致日后维护更加困难。
有个别同事完全没有认清到危害,反而傻X兮兮地以为跟客户混了个脸熟,觉得自己身价倍增。可气可叹。
《软件随想录》和《项目百态》是两本好书,公司的管理方式以及系统缺陷在这两本书里都有体现。我在这家公司干了不到一年就走人了,在阅读这两本书的过程中时常会心一笑,有种怒其不争却又暗暗庆幸的滋味。

ZhangFortune,喜欢代码 软硬兼施 程序猿进行时

见过在model层,拼html 拼javascript的。不能说傻吧,谁没年轻过啊。

Duke,一只水猫

在上一家小公司弄过系统,找的用友折腾了小半年,期间仗着总经理给予支持还算有人配合,但上线以后……
组织培训就来了四个人,两个一直玩手机,一个睡觉,一个进来不久接了个电话就跑了。
生产部的一个负责人在我演示的时候说屏幕太刺眼看不清,我去你妹的中午休息甚至上班时看电视剧斗地主怎么那么聚精会神呢?
库管说懒得挨个往系统里录物料。
领料时候管物资的经理说没有手写的签字他不认。系统是什么他不管。
渐渐地一个我认为还算适用那个公司业务的系统就被各种纸质表格取代了。
最后领导拿着我当初写的项目可行性分析报告怒喷我光花钱不办事。
怪我咯?

乐志浩,合伙人交配中心

你们听说过Vision Plus 吗?

OR你们听说过First Data吗?

吴强,安卓程序员

真正牛逼的程序员是凤毛麟角,难得一遇的。但是如果一个项目真的是由一个牛逼的程序员团队打造的,以题主的能力很可能难以在这样一个团队里立足。
所以还是好好提升自己为主。大的框架不好改,就从局部的小模块开始,慢慢改。子子孙孙无穷尽也。

匿名用户

某大企业的内部系统,开发方在业内也很有名,每次升级就是一个干巴巴的word文档,你按照上面走是肯定走不通的,一定要有老司机带你,升级当然都在晚上,提心吊胆的盯着屏幕堪比看恐怖片。各个分公司谁先吃螃蟹谁倒霉,最后升级的也好不到哪里去,依然会出现跑了一晚上停了的问题……于是夜里要经常定闹钟爬起来看。
bug经常有,一项重要的工作就是直接进数据库里改数据,看了都怕。改了以后继续有脏数据涌进来,没完没了。
基于前面朋友说的:“要么忍,要么跑”理论,我跑了。
今年春节给以前的同事打电话,他说前不久升级以后系统出了问题,忍无可忍反编译源代码,找到BUG开发方才肯认帐。
严重怀疑开发方有没有做功能测试,压力测试?那是什么,可以吃吗?

IT浪人

在职的时候怒气值高,各种讽刺挖苦;
走人的时候暗自庆幸;
两年以后忽然从这个傻逼系统得到灵感(或者教训),颇有感慨;
三年后有点后悔维护的时候自己抱怨太多,而行动太少;
五年后意识到自己怒气值高的原因不是因为系统傻逼,而是自己驾驭不了;
八年后再次需要维护“傻逼”系统;
十年后方才领悟,“这个世界的本质是混乱不可知,而非有序可测“;
甚至技术新旧的界限也开始模糊。
其实是,自己不够谦虚敬畏。

高翔,看破不说破

自己都要变成傻逼了

林海云

维护一个傻逼系统是怎么样的一种体验? 就是以前的人挖好了很多坑,埋好各种雷,现在的人挖其他的坑 补旧的坑。将来的人重复着现在的人的动作~

匿名用户

  1. 入职3个月内,喷,这么大的系统,上亿pv的系统居然这么做的,这么做的,我提出那么做,那么做,你们都不鸟我,推翻我,哎 你们都是傻逼。
  2. 入职半年,咦,好像他们说的有道理啊,如果按我那么做,就会出现那些问题,那些问题......
  3. 入职一年,哦,只能这么做,这么做,你一个新来的,知道个屁啊,还那么做那么做。
  4. 入职两年,噢,这么做,这么做有好处,有坏处,可以再此基础上那么做那么做。
    存在都是有道理的,只是我们,太过浮躁。

匿名用户

前一个公司的产品主要是一个WEB和一套存储过程,这是前提
WEB 是ASP.NET 2.0开发的,大概有十几个年头了。。支持的浏览器只有IE8以下.....
新进入公司所有的开发就是照猫画虎开发新模块,拼凑存储过程变成一套新的,所有的工厂源码管理混乱。
然后就是烂系统的通病,只敢加代码,不敢删除代码,可维护性和易读性越来越差.....

kelvin,IT/港漂/果粉

本文来自微信公众号“近乎SNS”,近乎是一款.net领域内领先的的SNS开源社区软件。

时间: 2024-10-13 06:39:10

维护一个烂系统是怎样的一种体验?的相关文章

bzoj 1012 维护一个单调数列

Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. 插入操作.语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾.限制:n是非负整数并且在长整范围内.注意:初始时数列是空的,没有一个数. Input 第一行两个整数,M和D,其中M表示操作

运维一个应用系统不容易

关于项目,有一个定义是:项目是创造独特产品.服务或其他成果的一次性工作任务. 项目并非实现产品经理的需求就完事了. 当项目投产后,在用户使用的过程中,会遇到千姿百态的问题.相当长的一段时间里,开发人员可能会疲于应付处理这样的问题. 运维一个应用系统不容易呀,那么,为什么会投入这么多时间呢?可能包括用户对业务逻辑的不够清楚,包括程序实现的bug,包括逻辑的复杂,包括线上运行过程中突发的事故. 而这些,往往并不在产品经理的需求范畴里, 所以,在系统实现方面,还应考虑应用系统的运维功能,包括: 监控

如何设计一个秒杀系统----学习总结

第一章学习总结--概览https://time.geekbang.org/column/article/40153 1.秒杀主要解决问题--并发读和并发写.并发读的核心优化理念是尽量减少用户到服务端来读取数据,或者让他们读更少的数据.并发写的处理原则是在数据库层面独立出一个库,做特殊的处理.另外针对秒杀系统做一些保护,针对意料之外的情况设计兜底方案,以防止最坏的情况发生. 2.从一个架构师的角度来看,要想打造并维护一个超大流量并发读写.高性能.高可用的系统,在整个用户请求路径上从浏览器到服务端我

关于构建一个高可用性系统的一些措施

1.何为高可用性系统 高可用性系统是指一个系统经过专门的设计,从而达到最长使用时间,最少停机时间,保持其高度可用性.一般的标准有几个九来表示.当九越多,系统的高可用性系统越高. 2.如何去建设一个高可用性系统 建设高可用性系统主要分为两个方面考虑,第一,提高系统自身的性能(内功):第二提高系统的防御能力.            内功:            1)主要有防止缓存穿透或者雪崩. 2)然后编写代码时提高编码质量,减少bug:并且提高测试质量,压测.自动化测试等. 3)最后发布时采用灰度

一个Windows 系统究竟有多复杂?

一个Windows 系统究竟有多复杂? 来源:开发者WEB Microsoft Windows问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统. 下面我们从代码行数.开发难度,参与人员的数量,开发的时间长度等角度来说说,一个windows系统有多复杂. Windows XP 大约40,000,000行代码. Windows Vista 大约50,000,000行代码. Windows 7 大约

【入门】在虚拟机上安装一个linux系统

根据计划,需要在虚拟机上安装一个linux系统,用作web架构学习的服务器. 公司项目的服务器用的是linux系统,具体版本未知.虽然我们开发不用关注最后的部署,但多少也接触了一些,算是有一定的了解,而java web通常也是部署在linux上,所以还是选择了linux.至于具体的版本,最终选择了centos. 虚拟机的选择,主要是VMware和VirtualBox了.由于VMware要收费,于是下载了VirtualBox.没想到创建系统时,没有linux64的选项.网上一查,需要打开bios的

写出一个缓存系统的伪代码001

/** * 写出一个缓存系统的伪代码 * @author ysloong * */ public class CacheDemo { private Map<String, Object> map = new HashMap<String, Object>(); public static void main(String[] args) { // TODO Auto-generated method stub } public synchronized Object getDat

基于宿主机制作一个小系统

一.Linux系统的启动流程 1.启动程序 Linux系统的启动流程为:POST-->BIOS(BootSequence)-->MBR(bootloader,446)--> Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab). 首先上电自检POST:它负责完成对CPU.主板.内存.软硬盘子系统.显示子系统(包括显示缓存).串并行接口.键盘.CD-ROM光驱等的检测.主要检查硬件的好坏. 紧接着就是BIOS进行硬件相关初始化,之

HDU 5945 维护一个单调队列 dp

Fxx and game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 688    Accepted Submission(s): 162 Problem Description Young theoretical computer scientist Fxx designed a game for his students. In