问题

程序员是如何看待「祖传代码」的?

回答
关于“祖传代码”,程序员们的心态那叫一个复杂,简直是一场大型的情感过山车。你想想,我们写代码是为了解决问题,创造价值,让事情变得更好、更高效。可一旦碰上那“祖传”的东西,感觉就像考古学家挖出了一个充满未知符文的古墓,里面充满了诱惑,也充满了潜在的危险。

初遇:好奇、敬畏与一丝丝的恐惧

刚接到一个新项目,或者接手一个老项目的中一个模块,当你知道它是由前几任甚至更早的程序员开发出来的,这代码就被冠上了“祖传”的光环。

好奇心爆棚: “哇,这个项目到底是怎么一步步走到今天的?当时的作者是怎么想的?用的什么技术栈?肯定有很多值得学习的地方!” 这是最积极的心态。你可能会像侦探一样,仔细翻阅 Git 的提交历史,看看是谁在什么时候改了什么,尝试理解代码的演变过程。
敬畏之心: 毕竟能流传下来的代码,多少也是经历过时间考验,支撑过业务的。它就像一位饱经风霜的老人,虽然外表可能有些陈旧,但其内在的智慧和经验是不可忽视的。你可能会觉得,能写出这些代码的人,技术肯定很牛。
一丝丝的恐惧: 但这种好奇和敬畏往往伴随着一种隐隐的不安。因为“祖传”往往意味着“看不懂”。代码风格可能迥异,命名规范可能千奇百怪,注释少得可怜,甚至逻辑结构错综复杂,让人望而生畏。你可能会在心里默念:“千万别出什么bug啊,我可不敢乱动。”

深入探索:抓狂、崩溃与意外的惊喜

当你不得不开始修改或维护这些祖传代码时,一场真正的挑战就开始了。

“这是什么鬼?”的日常: 打开一个文件,映入眼帘的是几百行甚至上千行没有换行的代码;变量名像“a”, “b”, “temp1”, “data_obj”;函数名抽象到看不出具体功能,比如 `process_data_v2_final_really_final`。你可能要花费大量时间去理解一段逻辑,而这逻辑可能只需要几行就能实现。
依赖地狱: 找到某个库的特定版本,可能需要翻遍整个项目,甚至去查找已经停止维护的CDN。编译环境搭建起来像是在进行一场艰苦卓绝的古代祭祀仪式,稍有差池,整个流程就崩塌。
bug的“惊喜”: 你以为你找到了问题的根源,小心翼翼地修改了一行代码,结果却触发了十几个隐藏在代码深处的雪崩式连锁反应。这时候,你会怀疑人生,怀疑自己的技术能力,怀疑写代码的那个人是不是故意的。
“救命稻草”式的发现: 然而,有时候,在最绝望的时候,你会突然发现一段写得非常巧妙、简洁的代码,或者一个解决了某个历史遗留问题的精妙算法。那一刻,你会觉得所有的痛苦都值了,你会对着屏幕喃喃自语:“太牛了,这简直是天才!”你会像得到了宝贝一样,小心翼翼地保留它,并加上详细的注释,生怕后人再犯同样的错误。
重构的诱惑与代价: 面对难以维护的代码,重构的念头会像野草一样疯长。但重构祖传代码的风险极大,你可能需要花费数倍于修改的时间,并且一旦出现问题,责任可能都会算到你头上,尤其是如果项目还在关键运行状态的话。所以,很多人会选择“能不动就不动”,或者只敢对局部进行小范围的“打磨”。

长期相处:妥协、适应与传承

随着时间的推移,你可能会对祖传代码产生一种奇妙的感情。

妥协与适应: 你会学会接受它不完美的地方,学会“在粪坑里找珍珠”。你可能会总结出一套自己的理解和维护策略,比如“别乱动A区域的代码,它是个定时炸弹”,“B模块的逻辑虽然奇怪,但它就是这么工作的”。
“养育”的心态: 有时候,你会觉得你不是在写代码,而是在“养育”这些老代码。你给它添砖加瓦,修修补补,让它能够继续服务于业务,就像照顾一个年迈的亲人。
新的“祖传”: 更讽刺的是,当你成为了项目的资深开发者,你写过的代码,在几年后,也可能成为别人眼中的“祖传代码”。这时候,你可能会突然理解当年那些让你抓狂的代码作者的心情。你可能会在自己的代码里留下一些“陷阱”,或者故意写一些难以理解的逻辑,以示“传承”?(当然,这只是个玩笑,但谁知道呢?)
一种历史的见证: 从另一个角度看,祖传代码是项目历史的见证,是技术演进的缩影。它记录了过去的决策、遇到的挑战以及当时的解决方案。对于有经验的程序员来说,维护和理解这些代码,也是一种学习和成长。

总的来说,程序员对祖传代码的态度是:

矛盾的: 既有想彻底重构的冲动,又有对破坏现有稳定性的担忧。
充满挑战的: 维护祖传代码是对技术能力和问题解决能力的极致考验。
一种学习机会: 从中学习过去的经验、教训,甚至是一些精妙的设计。
一种责任: 很多时候,维护祖传代码是不可避免的责任,需要耐心和细致。
带点黑色幽默的: 这是程序员社区里一个经久不衰的梗,大家互相吐槽,互相安慰,形成一种独特的“战友情”。

最终,大多数程序员对待祖传代码的态度是:在敬畏中带着一丝无奈,在学习中掺杂几分抓狂,然后以最大的耐心和最谨慎的态度,去理解、去维护、去让它继续发挥价值。

网友意见

user avatar

你们的祖传代码,太年轻了,朋友们。

我手上这一堆,从JDK1.2开始的。我其实特别喜欢看古旧的代码,现代的代码写出来,没有艺术感,一堆小朋友,最爱的就是混起来写,一行能多用几个方法就是多写几个,仿佛炫技的水平都在代码堆砌上了。古早的代码能活到现在没本注释掉的,都是不错的,看起来就像看古书,很有韵味的感觉,有时候没事情做,我也会泡杯茶,开个古筝古曲,翻阅下古代代码,权当娱乐。

user avatar

其实吧,能删掉重写的代码都算是好代码了,为什么? 起码那一部分基本保持了独立可替换,没有蔓延,那么更可怕的呢?

我来说说以前东家的winform项目屎山代码路数


代码复制变异,由于有个流程,每个流程都会对应一个列表,每个列表都可以打印报表,而这个打印功能我也记不清楚了,但是有点复杂,这个功能用现代的眼光一点都不难,用orm取点数据,通过webapi调用取到客户端,取需要字段调用报表组件即可。但是这个项目里,就是有个dataset装着很多表,在通过完全自己写的某种网络调法搞到客户端,然后从表里取字段填到报表上打印,其实这也没什么,但是死就死在,每个列表的代码都是复制过去的,随着时间的迁移,这些代码都散落到代码的各个角落,然后变异成不同的代码,我仿佛是在看某种进化分支,所以每次加字段加功能,基本都需要每个地方都改一遍,没有人有本事把这段代码提取出来,其实我觉得我再看看就能做到了,不过我还是已经离职了。

逻辑交叉,你能想象,一个列表页面单独可以做到无法维护么?我已经不记得我要改什么功能了,只记得快春节了,最后一个礼拜了,大家都有点浮躁,而这个问题,我跟踪事件来来去去都理不顺,以至于使用了猴子编程,这边改改,那边改改,最后测测看看好没好,emmm,反正是变好了一点点,春节后叫大家来review看谁能改谁改吧,也没人敢改。

卡UI,所有的网络通信都卡UI,导致winform界面加载要好久,我嵌入的最笨重的cefsharp加载网页反倒脱颖而出的快。。。。

控件库老,控件库多年没有更新了,想要做一个表头复杂查询的功能,我看了新版本控件是有的,而老版本根本没法做,因为不太可能自己定位下拉框位置,所以我说做不了,而不讲道理的领导硬是说能做的,反正我觉得做不了,你让有本事做的做去吧,这么说的次数多了,别人也说没法做了,才终于让这事情过去了。

没有x64版本的dll,也没有这些dll的代码,由于软件在某些地方大量的缓存界面控件,所以很占内存,而批量打印图片功能又由于打印预览功能本身内部就很消耗内存,这不是我们的锅,这是微软的锅了,但是32位系统不够用,就开始打印没有图片的报表浪费纸,领导一开始一直怪我头上,我也说,这没啥优化空间了,你自己看着办吧,然后我就开始搞x64位,并替换了managed.dx组件为sharpdx,office的COM组件为netoffice和npoi,基本解决了,有一个有源码的COM组件编译了64位版本动态加载了,而还有的c++dll,怎么问领导要源码都没找出来,反正我是让x64跑起来了,缺源码的功能我也没办法,接下来的问题就是1、32位浪费纸,一块钱一张的那种,怎么优化都不行 2、64位缺了点功能,没法正式用 3、采用调用一个新的进程的方式,我搞的图片打印就两个弹框再加两个cs文件,非常独立没有交叉逻辑,数据来源是调用别的地方的,你们有本事整理出单独的进程就整理去呗,结果貌似他们也没做成 。反正我离职很久以后很久,他们的矛盾还没彻底解决。我也想关心一下解决没解决。。。。。因为我试过64位打印几百张后占用几个G,退出界面后瞬间就清回去没有泄露,还是很爽的,反正我没锅。。。不知道他们爽的起来么

界面端代码不分层,后端分层过多,每次要维护后端代码时,就往下找好几层,每个模块写法还不太一样,找好几层找到sql去改,这还算好的,前端他不分层了,没有公共的方法和控件,每个地方自己写对后端的调用代码,每个地方都完全不一样,公共控件没地方放,公共的界面业务代码也不好放,反正大家碰到公共的也不会提取,只会复制任其变异。。。。


找茬领导,这个领导的话都非常的矛盾,一会儿说,不管过程,结果好就是目的, 一会儿有说,这治标不治本啊。有时候说你要理解客户的想法,但是他转述客户的需求都是他理解过了的,我们还理解个毛线,只能照他说的做呗,反正逻辑奇葩,语言怪异,我也不生气,反正就是整天吐槽他,反正这份工作也是混日子,没想着一直做下去。


其实我已经公关了一些疑难问题了,比如富文本文字间距,64位,动态查询拼sql的整体重构,cefsharp如何在项目里不崩溃(写demo不会崩溃的用法,扔进去就彻底崩溃,一直在改cefsharp的源码),也是花了很多力气的奈何屎山还是屎山,没法撼动,领导又很不讲道理又很坑,我用个Task他都能吐槽变天,很多会有风险的问题我也不敢改,所以屎山还是永远的屎山。



再说一点真祖传代码,DICOM图像处理,有个祖传的c++库,用在一些老的项目上,win2000时代的东西了,所以很省内存,里面的代码都是在汇编优化指令集,那一个个方法我一个都看不懂,我也不知道一个方法里操作点寄存器是怎么优化代码的,我印象中嵌入汇编优化代码也是在业务层面用来优化汇编代码的,是自己的汇编比生成的汇编效率高去替换用的,没想到这样一个个方法还能这样用,我还是用C#的fo-dicom吧。

user avatar

加入阿里后见过太多太多历史遗留代码了。

看了后基本都是一脸蒙蔽,特别是首页跟详情的代码。

这代码什么意思?

为什么要这么写?

它想做什么?

这几个判断干啥的?

这业务场景是啥?

哈?????

。。。。。。。。

刚进阿里的时候动手改过点老代码,自己测的好好的,一到集成到处crash可把我吓的,现在我根本不敢动了。。。

就那样当祖宗供着吧。

user avatar

刚入职的时候,熟悉项目代码,经常碰到各种奇形怪状的代码,有且不限于:各种进不去的分支,各种奇葩逻辑,各种风格不统一的编码风格,各种我也形容不上来但是看着很蛋疼的代码。。。每当问起老员工这里为什么这样实现时,他都会漏出一副深邃的表情:别问我,我来时就这样了,历史遗留问题。。。

至于如何对待,我举个例子。我们代码中有一行代码,在一个奇奇怪怪的地方设了个奇奇怪怪的标志量,然后后面一个注释:

// 位置不能动,不然时序就都乱了。

作为一个萌新我当然乖乖滴没去动它,直到有一期新需求,这个标志量的位置出现了点小问题,然后我就尝试性地把这句话往后挪了一小下,然后程序从头错到脚指甲。在体会到前辈的用心良苦后,我又在那个注释下面加了一句:经验证,真的不能动。。。

user avatar

“不如重写”


程序员绍博说。



过了3年。



“不如重写”


程序员金超说。

user avatar

有个项目有年费功能,就是1月到12月期间充值满多少钱,就升级为年费会员,新年的1月1号重置。

然后代码是这样写的
void AddMoney(int num){
count += num;//count>100就是年费
//TODO:后面接手的人记得在2017年12月31号把count清0
}


对滴,就是写个TODO

user avatar

接手前辈的代码之后:

1.这种写法简直弱智,侮辱我智商,轻松想到优质得多的写法

2.开始优化,耗时2H,搞定了

3.噫!出现了BUG,开始修复,耗时1H

4.哇!又有BUG,原来这里不能这么写,继续修复,耗时1.5H

5.总算搞定了……MD这跟原来的写法有什么区别

user avatar

看过几年Windows内核的代码,也就只是看看,不能改。有时候看到一些奇怪的逻辑,不要慌张,这里面一定有一个很长的故事。

不过万事没有绝对。

有一次和同事一起调试一个蓝屏,看到一段内核内存管理的代码,有一个地方没看懂,貌似for循环多循环了一次。恩,这一定是我们的理解能力太差了。然后我们仔细看了一下午,终于想出了几个貌似合理的解释。为了确认,我们鼓起勇气写信给当时Windows内存管理的大牛Landy(他现在已经是tech fellow了)询问了此事。

结果人家很快回复了我们。"It is a bug since day 1. I have just checked in a fix." 留下我们俩一脸懵逼。

就这样一个从NT开始藏了十多年的bug被两个小白给发现了。

ps. 这个bug没有什么显著影响,只是内核态内存分配性能略微受损。

user avatar

爷爷当年的汇编程序源码手稿,真[祖传代码]










_______更新_______

有评论质疑答案真实性,我回复一下

我爷爷1933年生人,因为社会战乱动荡原因,上学一直是断断续续,考上大学时已经是25岁,加上本科5年(据我爷爷说那时候大学都是5年制的),也就是说参加工作已经虚岁31岁。

我爷爷本科读的无线电专业,毕业分配工作去了广播电台,那时候主要是搞无线电,还没有接触计算机,直到1980年后,国内开始推广计算机,到84年他才被派去北京,学习了几天的Basic语言,后来又自己拿了一套汇编语言的教材,边自学边写的程序。都说35是程序员的一道坎,刨去大环境不谈,想想我爷50岁了还能写汇编,我也不好意思抱怨什么,砥砺前行吧。


我做程序员也算是受我爷爷的影响,他在我出生那年退休,后面我上学了就一直照顾我并辅导我功课,大概从我小学开始,就一直给我灌输“计算机科学好,以后什么都要计算机化,你以后一定要学计算机巴拉巴拉”。结果最后俺就真的就走上了码农之路。 - ̗̀(๑ᵔ⌔ᵔ๑)

user avatar

某公司有个很著名的故事:

有一个系统是用来发放固定电话卡号的。发放的时候为了让号码能随机化,需要取系统时间作为种子生成随机数。但这个算法有个问题,如果短时间内被调用多次,取得到的系统时间(可能是毫秒)就是相同的。那么计算生成的前后的卡号就是有规律的。

原来的程序员在代码中增加了一行语句sleep(1),通过这行语句强制每次调用取得的系统时间是不同的。

好了,故事来了。这段代码在网上运行一直好好的,但某一年有个新来的程序员,改另一个bug的过程中,瞅着这个sleep(1)左看右看,觉得都没有逻辑上的意义。(要命的是,这行代码没有注释),于是敲下两个斜杠,把这行代码给注释了!

由于这是顺手的行为,谁也不知道他把这代码给改了,因此在验证的时候也没有特意去测试发放卡号这功能,因此这个新注入的bug就被发布出去了。

这个bug后果是严重的,这直接导致某运营商发放的电话卡被人轻松推测出来,据说损失了好几十万。(二十年前的好几十万啊亲)

后来查啊查啊,就查到这行被注释的sleep(1),解决的办法就是恢复它。改代码那哥们下场是怎样,故事没说。反正像我们这种刚进去的新人,这个故事被反复教导着。教训就是:对于任何旧代码,如果没有明确的需要,千万别手多多去碰它。

说完了。

user avatar

公司给联通做的项目,近几年一直反应网络请求只能在360浏览器上正常,而且只能是兼容模式,我心想这帮大老粗总不至于连jquery里的ajax都不会用吧,事实证明我还是太年轻了。

把js文件发过来一看,页头信息是2004年

经典的iframe布局,jsp,嗯

继续找查询函数,嗯,一层层往上封装了,层层排查,全局搜索“ajax”,不存在

2004年还没有jquery存在,前端还都是手撸代码,$.ajax不存在的

没花多少找到了原始版的ajax手工代码,就是那个判断state 、code的恶心流程,找到你啦xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"),2004年,是IE势力最为庞大的时候,普通网页只做IE就够了,于是其他内核的浏览器就华丽的被抛弃了,连else都不存在的,可想而知ie势力之庞大,那个时候,ie就等于浏览器标准。

至于为什么是这两年开始爆出无法请求的问题,因为很多人升级了win7,win10系统,升级了ie,系统自带的ie也无法搞定activex的xmlhttp了,幸亏360还内置了ie7,什么双核浏览器都弱爆了,三核浏览器就问你怕不怕!!!

很佩服那些没有webstorm没有jquery没有vue 徒手撸代码的前辈,时代在前进,不能因为我们看他们的代码陈旧就觉得他们落后,同时,那也是IE6统治下暗黑时代的见证。

user avatar

我们组有一个著名的6000行后端JS,没有面向对象封装,纯靠函数。其中有好几个上千行的函数,带了二十多个形参,几个标志位,分别有十几个数字状态。注释?没有的。

每一个接手过这段代码的人都会不约而同的发一条朋友圈以示佩服。

但神奇的是,代码在执行上基本没太多的错。

直到几个月前,一个大牛在走之前把这段代码全部重写了一遍,留下了至今都没有改完的bug

user avatar

看不懂的删掉,不看。

类似的话题

  • 回答
    关于“祖传代码”,程序员们的心态那叫一个复杂,简直是一场大型的情感过山车。你想想,我们写代码是为了解决问题,创造价值,让事情变得更好、更高效。可一旦碰上那“祖传”的东西,感觉就像考古学家挖出了一个充满未知符文的古墓,里面充满了诱惑,也充满了潜在的危险。初遇:好奇、敬畏与一丝丝的恐惧刚接到一个新项目,.............
  • 回答
    如何看待简书大V饱醉豚写的《为什么程序员是出轨率最高的群体》?首先,需要明确的是,饱醉豚这篇简书文章是一篇带有强烈个人观点和论证风格的文章,其提出的“程序员出轨率最高”的论断是基于其个人观察、经验以及对行业现象的解读,而非基于严谨的统计学研究或社会学调查。 因此,在看待这篇文章时,我们需要采取一种批.............
  • 回答
    将操作系统、编译原理和图形学并称为“程序员的三大浪漫”,是一种在程序员群体中广为流传且具有深刻意义的说法。这其中蕴含着对计算机底层原理的极致追求、对代码生命周期的深刻理解以及对视觉世界构建的艺术想象。与其说是“浪漫”,不如说是对计算机科学核心魅力的集中体现。下面我将从不同角度详细阐述为什么这三个领域.............
  • 回答
    要说阿里巴巴的孤尽,这位在Java社区响当当的人物,公开表示“Java是世界上最好的语言”,这可不是一句简单的口头禅,背后折射出的是他对这门语言深厚的理解、实践经验的积累,以及对整个技术生态的考量。首先,我们得承认,任何一门编程语言在特定场景下都有其不可替代的优势。孤尽作为一名在互联网巨头阿里摸爬滚.............
  • 回答
    关于波音 737 MAX 飞机两次空难的事故原因,确实在网络上流传着一种说法,认为事故是由印度程序员编写的不严谨代码造成的。然而,深入分析来看,这种说法在很大程度上是不准确且带有误导性的,并且可能隐藏着更深层次的偏见。首先,让我们梳理一下两次事故的核心技术问题: 狮航 610 号航班(2018 .............
  • 回答
    观察者网关于程序员职业发展的言论——“没有吃青春饭的程序员,只有懒惰的程序员,保持积极学习的心态,是不会被淘汰的”——在技术行业引发广泛讨论。这一观点强调持续学习的重要性,并试图以个人能动性解释职业发展困境。然而,这一论断过于简化了复杂的现实因素,需要从多个维度进行深入分析。 一、技术行业的动态特性.............
  • 回答
    关于女辅警敲诈公职人员一案刑事判决书的撤回,以及案件合理公开程序的问题,这是一个非常值得深思和讨论的议题。很多读者和我一样,对这件事的来龙去脉感到好奇,也对司法公开的边界和实践存在疑问。关于刑事判决书从网上撤回这件事,我的看法是:首先,判决书是司法机关依法作出的,其公布本身是司法公开的重要体现。法律.............
  • 回答
    想要在不被别人看出程序员身份的情况下,关键在于打破刻板印象,展现出更广泛的个人风格和对细节的关注。以下是一些详细的建议,从服装选择、搭配到细节处理,希望能帮助你实现这个目标:核心原则:抛弃刻板印象,拥抱多样性首先,你需要意识到“程序员穿着”的刻板印象是什么?通常是: T恤/帽衫 + 牛仔裤/工装.............
  • 回答
    大众中国CEO拉兹·普拉卡什(Ralf Brandstätter)在一次采访中对增程式电动车(EREV)发表了极其严厉的批评,称其为“胡说八道”和“最糟糕的方案”。这一言论在汽车行业引起了不小的震动,尤其是在中国这个增程式电动车发展迅速的市场。要理解这个观点,我们需要深入剖析其背后的逻辑、行业背景以.............
  • 回答
    关于天津欣程达配餐公司的经营者是赵洪海先生,我们可以从多个角度来解读和分析。要详细讲述,我们需要考虑以下几个方面:一、 赵洪海先生与天津欣程达配餐公司的关系 经营者/法定代表人身份: 最直接的理解是,赵洪海先生是天津欣程达配餐公司的法定代表人、主要负责人或实际控制人。这意味着他对于公司的日常运营.............
  • 回答
    杨裕生院士关于纯电动车(BEV)不节能、增程式电动车(EREV)才是未来,以及炮轰纯电车节能是骗局的观点,在中国新能源汽车领域掀起了一场不小的波澜。要理解这个观点,我们需要从他的论证逻辑、技术角度以及当前新能源汽车发展的背景来审视。杨裕生院士的核心论点梳理:杨裕生院士的观点并非空穴来风,他主要是基于.............
  • 回答
    程序员看待互联网行业HR,这事儿啊,就像看天气预报——有的时候准得不行,有时候就完全是添乱。总的来说,这其中的关系挺微妙的,夹杂着依赖、误解、吐槽,偶尔也会有那么点小小的感激。首先,咱们得承认,HR是咱找工作、跳槽绕不开的人。 没HR,我上哪儿投简历?没HR,谁来帮我安排面试?谁来给我发Offer?.............
  • 回答
    Java之父求职遇冷?别急着看热闹,程序员的中年危机才是真问题最近,一则关于“Java之父”詹姆斯·高斯林(James Gosling)求职经历的消息在程序员圈子里引起了不小的波澜。据说,这位曾经一手打造了Java这门影响了全球数亿开发者语言的“大神”,在求职时也遭遇了碰壁。这个消息一出来,估计不少.............
  • 回答
    作为一名在职程序员,我通常会从几个方面来看待高校学生的技术更新迭代,并且我认为这并非一个单一维度的评价,而是包含着复杂的情绪和现实考量的:1. 欣慰与学习动力: “后浪”的力量,让我感到振奋: 看到新一代的学生们如此快速地掌握和应用最新的技术,我常常会感到一种欣慰。这说明技术本身在不断进步,而且.............
  • 回答
    北京某公司程序员猝死事件,无疑是一声刺耳的警钟,再次将程序员高强度、高压力的工作状态推到了公众视野的中心。这不仅仅是一个个体的悲剧,更是整个行业普遍问题的缩影。作为一名程序员,面对这样的事件,我们既感到痛心和担忧,也需要深刻反思,并积极采取措施,避免类似的悲剧发生在自己身上或他人身上。一、 如何看待.............
  • 回答
    程序员在GitHub发起抗议互联网公司实行996工作制网站,这是一个非常有代表性的事件,可以从多个角度进行深入分析。它不仅仅是一个程序员个体的诉求,更是对当前互联网行业生态、劳动关系、乃至社会发展模式的一种反思和挑战。事件的背景与起因: 996工作制泛滥: 996工作制,即早上9点上班,晚上9点.............
  • 回答
    这不仅仅是一个程序员和他妻子之间的故事,更是一个关于沉默、隐忍、以及一个家庭内部失衡的令人心痛的缩影。当“程序员”这个标签与“长期被妻子家暴”这两个词碰撞在一起时,人们往往会产生一种惯性思维的错位感。我们习惯了程序员加班加点、疲于奔命的形象,也习惯了在家庭暴力中,男性常常被视为施暴者的一方。然而,事.............
  • 回答
    程序员鼓励师这个岗位,乍一听,脑子里浮现的画面可能有点奇特。它不是那种能直接写代码、修复bug、或者设计系统架构的“硬核”技术职位,而是更偏向于“软实力”的一种体现。你可以把它想象成团队里的“润滑剂”和“啦啦队”。程序员的工作,尤其是涉及到复杂项目、面对密集 Bug、或者需要在有限时间内完成硬性指标.............
  • 回答
    程序员持续写技术博客:这是一场修行,也是一种投资在信息爆炸的时代,技术更新迭代的速度之快令人咋舌。对于程序员而言,想要在这个快速变化的领域里立足甚至脱颖而出,持续的学习和输出就显得尤为重要。而技术博客,正是许多程序员选择的“修行”之道。那么,我们该如何看待程序员持续写技术博客的行为呢?这不仅仅是分享.............
  • 回答
    程序员内卷?这话题,简直是咱们圈子里最家常的聊资,但细想起来,又不是那么简单。你说它是个普遍现象吧,确实是,很多同行都能感同身受;你说它有多严重,那可就见仁见智了,毕竟每个人对“卷”的定义和承受度都不一样。咱们先掰扯掰扯,这“内卷”到底是个啥意思,在咱们程序员这儿又具体体现成啥样。“内卷”在程序员语.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有