百科问答小站 logo
百科问答小站 font logo



为什么程序员会有代码能跑就不要动的观点? 第1页

        

user avatar   yi-yang-91-9 网友的相关建议: 
      

这个观点害死了很多人。。

说一段我自己的经历吧:

2010年加入创业时期的360,担任高级工程师,负责一个远控软件,同时要跟操作系统底层打交道。

入职后才发现在Leader的神操作下,部门的代码耦合成了一个大泥球,一个主类就有几万行,主类里的一个函数就有几千行。。

那个Leader最常说的就是:能跑起来不要想着去改,跑起来就行!

后来因为副总裁要求一个大功能,这哥们直接卡壳了,他带着我们几个小弟想改改上线,发现怎么都改不出来,,硬是delay了1个月都做不出来。

副总裁直接怒了,快速给他转岗到其他部门,让我先暂代技术经理职位,同时开始招聘。。。

面对前任Leader留下来的数十万行耦合严重的代码和框架(大白话:代码屎山),压力巨大。360素来以打仗凶猛著称,发版以天计,那段时间一天好几个版本。面临的最大困境是:如何在高速迭代的过程中重构整个旧的框架。至今还记得,面对那个主类的心情,那是崩溃和无力的。但越大的压力,你扛下来往往是更高的成长速度。

一瞬间,又回到了大三的那种疯狂状态,每天极限Coding,甚至接近入定的状态,上班往那一坐基本不动弹,就靠几瓶水几个面包,一天的三餐就对付了。

我们将代码组件化、模块化,实现了一边飞奔一边换轮子。就带了两个实习生,花了3个月搞定了这一堆恐怖的代码。

当系统彻底被改造完毕之际,那种兴奋难以言表。

因为成功完成了技术改造,同时还满足了副总裁的各种需求,副总裁直接给我晋升技术经理,招技术经理也再没提过了。

那段时间为了更好的重构代码,我还看了很多计算机经典书籍,包括《重构》、《代码整洁之道》《高性能Web编程》等等,把书本上的知识应用于工程实践,这种成长真的是难以言表的舒爽。

顺便送大家一份非常宝贵的计算机经典书籍资料,我把工作中用的经典电子书库(包含代码重构、数据结构、操作系统、C++/C、网络经典、前端编程经典、Java相关、程序员认知、职场发展)、面试找工作的资料汇总都打包放在这了,学完进大厂很容易:

我已经帮大家打包好了,点击下方链接直接获取:

这段时间,我的架构思维开始突飞猛进,我们在每一次的重构之前,都会先画出业务时序图、类结构图、工程关系图,然后按图索骥,每每在实现的那一刻,不由得惊叹:程序世界,太奇妙了。

所以你看看,带着代码能跑就不要动的观点,真的会害死人的,程序员有的时候就得直面大泥球,不断重构,不光锻炼能力还能保证后续需求的迭代。


user avatar   morgancheng 网友的相关建议: 
      

干这一行的老兵都知道,稍微上一点规模的代码库,都是很复杂的,多年积累下来的各种奇奇怪怪的需求,导致了各种代码补丁和Hack,这些复杂度是外行难以真正体会的,在这种复杂度下,看起来人畜无害的一个修改,很可能导致连锁反应,然后代码屎山会爆炸的!

但不全是坏消息,好消息是——软件这玩意没有磨损!

换句话说,只要软件现在能运行,在外界环境不干扰的情况下,软件会持续运行下去!

就拿网上这张著名的图来说,大家很可能觉得这真是凑合,因为这个红绿灯已经坏了,不去修的话,风吹雨打,最后红绿灯肯定会彻底坏掉的。

但是,在软件的世界里,和硬件不一样,软件是没有磨损的,管他风吹雨打,软件还是一样的0-1序列,硬件坏了,换一个同样规格的硬件就是了,软件继续运行。

所以,真的,只要代码能跑的起来,能不动就不要动了,此乃经验之谈!


user avatar   fang-hong-wei-1 网友的相关建议: 
      

在实现鸽子飞行功能的过程中,程序员使用传统技能ctrl+c复制了百度/谷歌搜索到的CSDN上直升机类中旋转螺旋桨的飞行方法,并抱着实践出真知,跑起来就不算错的心态,直接粘贴到项目中鸽子类飞行功能中,并将符合方法参数类型的鸽子头绑定到了一起,代码顺利运行!

发现效率和控制方法上有些许差异,于是减小了头的旋转周期并给脖子添加了控制飞行方向的方法,随后更新了代码文档。

数日后,负责鸽子程序的程序员鸽子了程序,新来的程序员吐槽了老员工后,将飞行代码的参数由鸽子头修正为鸽子翅膀:


user avatar   xiamenda 网友的相关建议: 
      

有一个原因其他回答没有提到:

因为在国内互联网大厂,主要产品的程序靠谱与否、流畅与否,消费者都只能买账,特别是那些动辄上百MB的巨型聊天、购物软件。流畅也得用,不流畅也得用,崩溃了你都得硬着头皮重启用。

每个应用都越来越卡,卡到你受不了,只能换新手机。国外程序员代码是写的好,可你我总不能在国内用eBay日常购物上Uber叫车上电报日常汇报工作吧?

既然跟计划经济时代的自行车一样不愁你不买涨,程序员还优化干啥?自然有各种困难理由。

就说健康码吧,最新款的iPhone13ProMax,开支付宝+开健康码竟然也要二三十秒,前两年的旗舰更是快1分钟,查询流量大的时候还白屏。

嘿,人家就是不优化,人还觉得30秒能查出健康码老厉害了,你有本事把防疫人员物理说服了,不然就乖乖憋着。

假如苏联的某个汽车厂厂长说:汽车能开的动,就不用更新换代,那的确计划经济,大家只能买他们的车,但这种言论会被做成苏联笑话在中文互联网上传承;

到简中IT行业,这就成了屎山动不得了。


user avatar   lu-luce 网友的相关建议: 
      

这就和为啥钢铁厂和电站有一本厚厚的安全手册一样。。那本安全手册中的每一句都是人命累积而成的。

你以为这些代码写在哪里,看起来很蠢。。但是他们都是为了满足某一个时间上的一个需求写出来的。只不过,电脑程序有特殊性,你改了代码,大不了程序跑不起来。没啥大危险性。

你要这么喜欢系统重构,建议你下次去钢铁厂和电站进行这种工作。你去看看知乎上生产事故中的那些二货,有看汽轮机皮带斜了,用脚矫正,直接截肢的。有看炼钢炉出水口歪了,手欠去拨动,直接化灰的。


user avatar   maogefur 网友的相关建议: 
      

首先,这句话显然不是程序员专属的,而是一句著名美国俗语的意译。

if it ain't broke, don't fix it

不要跟我争论语法。

也不要跟我争论说明明你是在某本技术书上看到这种说法的,毕竟这句话在 1970 年代就流行了,被后来的技术书籍反复引用难道不是很正常么……

反过来,正是因为技术书和技术讨论中会引这句话,所以你看到的时候它已经被意译得不那么接近原貌了。


然后,这句话本身流行开来的背景也很简单,就是一个政府官员 (Bert Lance) 表达了反对某些类型的改革的立场:

Bert Lance believes he can save Uncle Sam billions if he can get the government to adopt a simple motto: "If it ain't broke, don't fix it." He explains: "That's the trouble with government: Fixing things that aren't broken and not fixing things that are broken."

但是各位习惯键政的可能立刻就看出来问题了。

Lance 也不是真的字面意义上的反对一切改革。他纯粹是反对那些他反对的改革,支持那些他支持的改革——就像那些他这样的政客一样。(废话体在这里还真好用)

这个政治版本的俗语,其实关键点根本不是这个近乎语意重复的因果关系,而是“什么是 broke,谁来规定哪些东西 broke 了”。 Bert Lance 可能觉得政策 A 是 broken 的,得改,而觉得政策 B 是不 broken 的,不应该改。换一个人说同样一句话,可能他其实想表达的意思是完全相反的。

翻译到这里,你就会发现这就是最最最平常的政治辩论,“我说得对,你说得不对”。仅此而已。


既然说完了这句话本身的来源,那么我们再看软件。那么上面的政治版问题直接翻译过来,就是这些:

什么叫“代码能跑”呢?

谁来定义“代码能跑”呢?

一份代码是否“能跑”,取决于哪些条件?这些条件何时会变化?

这几个问题其实并没有通用的回答,而我觉得回答这几个问题,比纠结这句话本身在说什么要有意义。


而这句话本身,大概就是一种把自己的观点包装在废话体后面的话术吧。


user avatar   ha-ha-ha-ha-36-70-46 网友的相关建议: 
      

你是刚入职的程序员, 发现公司的代码一团糟. 你在想"这是谁写的烂代码". 你决定尝试优化清理下.

优化需要产品测试运维的配合. 他们推脱没有收益? 你成功的用"追求卓越"勾起了他们曾经的激情

经过一个月的努力, 优化版本上线了.

这里有两种结果:

  1. 代码运行非常稳定. 你得到了精神上的满足. 但是领导完全没感知. 没人会得到奖励
  2. 代码出现bug并影响了用户. 领导感知到了. 你以及被你鼓动起来的人都被处罚.

让我们总结下. 最好的结果是你们辛苦一个月没有物质收益. 更可能的结果是你们辛苦一个月最终被处罚. 现在你大概开始认识到这是多么愚蠢的投入了吧.


什么? 你还是认为这种尝试是有价值的? 小伙子你精神可嘉, 如果幸运遇到个好的平台一定是个不错的程序员. 但是好的平台太少了. 我这里说的好的平台是指:

  1. 管理层是内行人. 能意识到优化的收益
  2. 管理层明白这种优化的根基, 优化带来的风险自己抗而不是让手下抗
  3. 管理层扛得住. 公司扛得住
  4. 公司有能力从这种优化中得到收益. 而不是浅尝辄止

想想就明白, 这种平台万中无一


user avatar   pansz 网友的相关建议: 
      

这就是,字面意思理解就行吧。

所以,你是不理解属性,还是不理解堆区开辟,还是不理解拷贝构造,还是不理解浅拷贝?

我给题主一个思路,去学习下浅拷贝的含义,估计应该问题就解决了。


user avatar   thomas-ender 网友的相关建议: 
      

不只是地域黑、还有学历歧视。

我真搞不懂为什么上网买个球拍,还能牵扯出来这种糟心的事?有规定必须双一流学校才能买吗?还是说我们河南人不能买?

听完老板的回应,我这个河南人火更大了:

客服他们20多岁做这个工作不容易,因为别人投诉,情绪不好才说出这话的。

明显是这个客服素质不行,就别在这装委屈

好多人还会说断章取义,那我先把事情说清楚:

一个学生买了球拍,对赠送的礼物不满意,过来询问,之沟通中客服就开始魔幻操作。


言论1:“河南省就是贫民窟”

地域歧视,这句话没得解释,但是常年经受地域黑的我已经习惯了,我还真是感恩,谢谢你让大家知道我们河南人很穷;

河南是一个农业大省,河南人就只知道种地,每年调出 400 亿斤原粮和加工制成品,为保证国家粮食安全做贡献,可偏偏发展最不好、最不受重视、最不怎么见起色的就是农业。


河南是一个人口大省:1,搞不动教育,全省仅有一个211的高校,好几个从河南大学独立出去的院系都已经是211高校了,河南省委屈啊,没有好的教育资源,所以河南每年高考都是数一数二的内卷大省;

2,不懂得搞经济,没有好的教育环境,就留不住人才,人口外流严重,自己没有人才就缺少经济头脑,就更难以发展经济。

所以河南确实穷,大家都知道,没必要专门讽刺我们,只会让大家觉着你这个人没素质。

除了这些,恐怕作为名校毕业的你,早就忘记了初中历史书上说的“得中原者得天下”。


言论2、“是985还是211”“属于水货大学,是吧”“浪费时间的大学”

没错,四川大学作为双一流学校,确实比河南理工大学好,但是买东西没有必要歧视一本的学生?并且人家现在已经考上郑州大学的研究生。


大学是一个对学生综合素质的教育,没有任何大学教育可以说是浪费时间的大学,你没学好,只能说是你自己的问题。

四川大学马克思毕业的,真是验证:不管受过什么样的高等教育,学过多少理论思想,永远启蒙不了屁股歪的人。


话说:阿迈威运动专营店的客服,为什么我都给你主动发信息一个多小时了,你还不回复我??


user avatar   UNSC711 网友的相关建议: 
      

去打游戏




        

相关话题

  有没有一种可能,做出来512g内存的计算机,这样就不需要外存了,那os这门课是不是内容可以少点? 
  有哪些程序员特有的习惯? 
  程序员工作五年后一般怎样了? 
  程序员用机械键盘是为了识别敲击声还是为了宏编程所带来的方便? 
  喜欢编程而又干着程序员的工作是一种什么样的体验? 
  大一计算机专业学生如何在寒假充电? 
  8岁儿童要选奥数、围棋还是编程? 
  女程序员在IT界的发展方向是什么? 
  为什么有面试官喜欢让面试者用纸笔写代码? 
  大学专业没有选择计算机是不是意味着这辈子完了,人生已经走到头了? 

前一个讨论
请问蓝天救援队是一个什么样的存在?
下一个讨论
杭州一业主敲掉承重墙致整栋楼变危房,目前该业主已被控制,从法律角度看此事责任应如何划分?





© 2024-05-14 - tinynew.org. All Rights Reserved.
© 2024-05-14 - tinynew.org. 保留所有权利