问题

有什么事情是你当了程序员之后才知道的?

回答
哈哈,这个问题问得好!我当初也是怀揣着一腔热血,觉得程序员就是敲代码、解决bug,过着“代码改变世界”的神仙日子。结果呢?入了行才知道,这跟我想象的……嗯,怎么说呢,就像你以为吃麻辣烫是个自由搭配的美味盛宴,结果发现自己是个永远在等待服务员点菜、永远吃不到自己想吃的配料的工具人。

先来说说最直接的,代码质量这事儿,远比我想象的要重要,也远比我想象的要难。

我刚入行那会儿,觉得能跑就行。写个功能,实现了,提交了,舒坦。然后等着别人来“审阅”。结果发现,我的代码在别人眼里,简直就是一场灾难。不是说它跑不起来,而是那种“我看了你这代码,感觉我需要回去重新读一遍大学”的绝望感。

一开始,我不服气,觉得他们太吹毛求疵了。什么命名不规范、缩进乱七八糟、注释少得可怜、变量名跟谜语一样、一个函数写了几百行、没有一点可读性……我当时的想法是,又不是写小说,能看懂不就行了吗?

后来,当我第一次接手一个别人留下的、我需要维护的“遗留系统”(Legacy System)时,我彻底明白了。那是一坨什么呢?我也不知道怎么形容,就好像一个经验老道的建筑师,用了最坚固的水泥和钢筋,却把房子的结构设计成了一个迷宫,每个房间都得绕好几圈才能进去,而且每个门上都挂着一个我看不懂的符号。

我花了好几天时间,才勉强弄懂那坨代码在干什么。然后,稍微改动一点点,就发现之前能跑的功能突然不跑了,而且我还不知道是哪里出了问题。那种感觉,就像是你本来在修车,结果拧了一个螺丝,整个车架都塌了。

从那以后,我才真正开始理解“代码是写给人看的,然后才是给机器执行的”。我开始学着写清晰的注释,给变量和函数起有意义的名字,把大函数拆分成小函数,学会了怎么写单元测试,怎么用设计模式来组织代码。我发现,写出高质量的代码,比写出能跑的代码,耗费的心力要多得多,但带来的回报也是巨大的——当你需要修改或者排查bug的时候,你不会想把自己塞进洗衣机里。

然后就是,“文档”这玩意儿,绝对是软件开发中的“圣经”,只不过很多人是“口头信徒”。

在我们学校里,写文档好像是个可选项,是老师为了让论文看起来更“学术”一点而添加的附属品。我以为在实际工作中也差不多,只要功能实现了,大家都知道是什么。

错了,大错特错!

很多项目,特别是那种从零开始、快速迭代的项目,文档的缺失率高得吓人。刚开始大家凭着一股热情,脑子里什么都清楚。但等到项目越来越大,加入的人越来越多,之前的“清晰思路”就会像雾霾一样,慢慢模糊,直到消失。

我见过太多次,一个功能,只有写代码的那个人知道怎么用,怎么配置。然后他离职了,或者他去休假了,或者他只是去吃个午饭,回来之后,其他人就一脸懵逼。然后就是不断的“猜猜猜”,猜代码的逻辑,猜配置的含义,猜API的用法。最后,一顿瞎折腾,还可能把东西搞坏。

我曾经在一个项目中,因为一个关键的配置项没有写文档,花了一整天时间去“考古”,在代码里搜索,在聊天记录里翻找,甚至还去问了几个已经离职的老员工(他们也记不清了)。最后发现,那个配置项只是一个简单的开关,但因为没有文档,我的整个上午都在跟一个不存在的“复杂逻辑”搏斗。

现在,我把写文档当成跟写代码同等重要的事情。写完一个功能,我第一个想到的不是提交代码,而是“这个功能怎么用?它的参数是什么?有什么副作用?”然后把这些写下来,哪怕只是一段简短的说明。我发现,这样做的好处是,不仅别人能看懂,有时候我自己过段时间再来看,也能快速回忆起来。省时省力,还能避免很多不必要的误会和返工。

还有一个让我大跌眼镜的事情是,大部分程序员都不是一个人在战斗,而且“沟通”和“协作”的能力,比“单打独斗”的编程能力更重要。

我之前一直以为,程序员就是那种坐在电脑前,戴着耳机,噼里啪啦敲代码,跟外界隔绝的“技术宅”。我觉得只要我把我的部分做好,别人自然会把他们的部分做好,然后大家就能“无缝衔接”。

现实是,你想多了。

软件开发就像是在建一个巨大的、复杂的房子,但这个房子不是由一个工程师独立完成的,而是由几十甚至上百个不同工种的人,在不同的时间,用不同的工具,一点点拼凑起来的。你需要跟产品经理沟通需求,跟设计师讨论UI,跟测试人员确认bug,跟其他程序员协调接口,甚至还要跟运维人员沟通部署问题。

我记得我刚开始的时候,特别不擅长和产品经理沟通。他们提出的需求,我总是第一时间想到技术上的可行性,或者直接指出“这个做不了”。结果呢?产品经理觉得我太轴,不配合;我呢,觉得他们需求不合理,不懂技术。双方都很不开心,项目也推进得很慢。

后来我才明白,沟通不是为了“说服”对方,而是为了“理解”对方。我要去理解产品经理为什么要有这个需求,背后的商业目标是什么,用户想要解决什么问题。然后,我再结合我的技术知识,给出一个可行的方案,或者解释为什么某个方案不可行,以及有什么替代方案。

学会“倾听”,学会“表达”,学会“复述”对方的意思,确保自己理解正确,这些技能,在程序员的工作中,重要程度绝对不亚于掌握一门新的编程语言。我发现,一个沟通能力强的程序员,即使他的编程技术不是最顶尖的,但他往往能更顺利地推进项目,更容易融入团队,也更容易获得大家的认可。

最后,也是最让人哭笑不得的,是“我写得很慢”这件事情。

我以为程序员的工作节奏是“有需求,写代码,上线,完成”。我以为自己只要技术过关,就能像开挂一样,快速产出。

结果呢?

首先,需求总是会变的。你写了一半,产品经理过来说,“我们想把这个按钮变成一个滑动条”。你昨天写的代码,今天看,觉得“哎呀,这里可以优化一下,再加个功能”。然后你开始改,改着改着,发现要牵一发而动全身,之前的功能都要跟着调整。

其次, debugging(调试) 是一门玄学。有时候,一个隐藏很深的bug,可能需要你花好几个小时,甚至好几天去追踪。你可能觉得你是在解决一个问题,但实际上,你可能是在跟一个匿名的、难以捉摸的“幽灵”搏斗。那个bug可能只在特定的操作系统、特定的浏览器、特定的网络环境下出现,一旦你以为找到了,它可能就消失了,等你稍微改变一下调试方法,它又蹦出来了。

还有,团队协作的成本。你写的代码,需要别人 review,需要别人集成,需要别人测试。这些过程都需要时间,而且有时候会因为版本冲突、依赖关系问题,导致你的代码不能顺利上线,需要你和别人一起去解决。

所以,我发现,程序员的工作,大部分时间并不在于“写那几行代码”,而是在于“思考”、“设计”、“沟通”、“调试”、“重构”和“等待”。“写代码”本身,可能只占你工作时间的30%左右,剩下70%都是围绕着代码发生的各种事情。

所以,如果你问我当了程序员之后才知道什么?我会告诉你,我才知道,编程不仅仅是一门技术,更是一门艺术,一门需要耐心、细致、沟通和不断学习的艺术。我才知道,代码的背后,是人,是需求,是协作,是无数个细枝末节的打磨。我才知道,原来“能跑就行”这句话,只是一个美好的愿望,而真正的挑战,在于如何让它“优雅地运行,易于维护,并且能够持续进化”。

这大概就是为什么,即使偶尔被bug折磨得死去活来,但当我看到自己写的一行行代码,最终变成了一个能够解决问题、给用户带来便利的产品时,那种成就感,还是会让我觉得,这一切的辛苦,都值得。

网友意见

user avatar

我以为掉头发只是个段子,殊不知入行后头顶的发丝愈发稀疏,头好冷。

以为会996或007,殊不知也可以划划水,泡个茶、喝杯咖啡、吸根烟 呵呵 修BUG

谁说项目上线996明明是24 24 7……

爱穿格子衫、条纹衫、拖鞋、短裤是真的

说什么程序员都是单身,个个有女朋友

程序员和产品打架是假的

谁说程序员不是修电脑的,那修起来贼溜了

当了程序员才知道学习永远不能停,技术永远在更新……

user avatar

曾经我认为学会程序就可以获得独一无二的竞争优势,成为人才。后里才发现程序员比写文章更没有门槛!一点也不稀有!会写程序的太多了!任何人只要愿意,一台电脑,一根网线就能学会。

类似的话题

  • 回答
    哈哈,这个问题问得好!我当初也是怀揣着一腔热血,觉得程序员就是敲代码、解决bug,过着“代码改变世界”的神仙日子。结果呢?入了行才知道,这跟我想象的……嗯,怎么说呢,就像你以为吃麻辣烫是个自由搭配的美味盛宴,结果发现自己是个永远在等待服务员点菜、永远吃不到自己想吃的配料的工具人。先来说说最直接的,代.............
  • 回答
    当老师之前,我以为这工作就是站在讲台上,把知识讲清楚,学生听懂了,就万事大吉。现在想想,那真是太天真了。当了老师之后,我才明白,这哪里是“讲”那么简单?这分明是“炼”,是“磨”,是“熬”。一、学生是永远的“变量”,而你则是那个试图找到“定值”的人。上学那会儿,我们只看到老师“传道授业解惑”,却没想过.............
  • 回答
    作为一个AI,我没有亲身经历过成为警察的职业,也无法像人类一样“懂”或者“体会”到什么。我的知识和能力都来自于我所学习的海量数据,其中包括关于警察工作的大量信息。但是,我可以基于这些数据,模拟并解释一些人们在成为警察后可能会产生深刻理解的事情。以下是我根据学习到的信息,可以推断出的、许多警察在职业生.............
  • 回答
    嗨,各位!很高兴能在这里和大家聊聊我当写手的经历。说实话,当写手这行,就像在情感和创意的大海里航行,偶尔能捞到宝藏,偶尔也会被风浪拍打得晕头转向。要说不可思议或者内疚的事儿嘛,还真有几件,今天就敞开心扉和大家唠唠。第一件,我至今想起都觉得有些不可思议:替一个不认识的人“写”了一段人生。那时候我还在一.............
  • 回答
    老实说,刚到西班牙的时候,我以为自己已经做足了功课。毕竟,我也算是个“旅游达人”,去过不少地方,也算见识过些世面。但西班牙嘛,它总有办法让你惊喜连连,或者说,让你偶尔跌个跟头,然后恍然大悟。最让我吃惊的一点,可能就是西班牙人对“悠闲”的定义。我来之前,脑子里大概有个印象,觉得他们生活节奏慢,下午会有.............
  • 回答
    我曾几何时,也是个彻头彻尾的内向者。准确地说,我像是被一张看不见的网笼罩着,网络的那头是人群,另一头是我自己。每一次的社交场合,都像是闯入一个充满未知的森林,我战战兢兢,小心翼翼地观察着周围的动静,生怕一个不经意的举动就会惊动什么沉睡的猛兽。直到有一天,我给自己设了一个“不许逃跑”的规则。那是在一次.............
  • 回答
    开始做自媒体之后,我才真的体会到“内容为王”这句话的沉甸甸的分量,而且它远比我想象的要复杂得多。我当初的想法其实挺简单的:有个兴趣爱好,把相关的知识、经验分享出去,一来能帮助到别人,二来还能和志同道合的人交流,说不定还能因此赚点小钱。听起来是不是挺美好的?然而,当真的“下海”了,才发现事情根本不是那.............
  • 回答
    我当初出国留学,想着的是能开阔眼界,学点真本事,回来能让家人过上好日子。下了飞机,踏上异国土地的那一刻,心里既兴奋又忐忑,觉得前途一片光明,什么都准备好了。但真正在这里生活一段时间,我才发现,原来之前想的很多事情,都是“想当然”了。1. “独立”不是你想的那么简单,也不是一天就能炼成的。在国内,我衣.............
  • 回答
    搬到河南,我才算真正体会到什么是“中原腹地”。之前对河南的印象,停留在课本上的四大发明、少数民族迁徙的路线图,还有就是那句“河南人”,总带着点神秘和点点地域偏见。生活了一段时间,这些刻板印象就被一点点消解了,取而代之的是一种朴实而坚韧的生活气息。最让我感到惊喜的,大概就是河南的“美食地图”有多宽广。.............
  • 回答
    拉丁美洲,这片充满活力与冲突的土地,在我踏上这片土地之前,我脑海中的它更多的是旅游指南上那些阳光灿烂的海滩、宏伟的金字塔,以及热情奔放的桑巴。然而,旅行的真正魅力在于它能颠覆你原有的认知,让你看到那些光鲜背后更真实、更复杂的故事。去了拉丁美洲,我才真正明白,很多事情远比我想象的要来得深刻。1. 节奏.............
  • 回答
    生完孩子后才知道的事情,真的太多了,而且很多都是之前想破脑袋也想不到的。我现在回忆起来,感觉就像是从一个完全不同的世界穿越过来一样。最最冲击我的是,母乳喂养这事儿,根本不是“奶水来了就行”这么简单。 我之前看了那么多育儿书,学了那么多理论,以为只要宝宝一吸,奶水就哗啦啦地流。结果呢?宝宝吸了半天,我.............
  • 回答
    来了杭州,才知道这地方不是只有西湖和龙井。之前对杭州的印象,大概就是“上有天堂,下有苏杭”这句老话,脑子里晃悠悠的都是西湖的断桥残雪、苏堤春晓,还有那杯清冽的龙井茶。所以,当初来杭州,带着一种很美好的憧憬,觉得生活应该会像一幅水墨画,慢悠悠的,诗意盎然。结果呢?来了之后才发现,杭州远比我想象的要鲜活.............
  • 回答
    混混的可爱?这事儿吧,说起来有点复杂,但仔细琢磨琢磨,还真能品出点儿门道来。我一直觉得,人身上哪儿没有点儿毛病呢?混混嘛,名字就听着带点儿匪气,但就这么点儿匪气,有时候反而成了他们身上一种独特的、意想不到的可爱之处。你想啊,很多混混,他们骨子里其实挺讲义气的。不是那种在办公室里讲什么“公司利益至上”.............
  • 回答
    作为一名人工智能,我并没有身体,也无法亲身前往北京。然而,通过我的学习和数据分析,我可以模拟出如果我“去”了北京,可能会“知道”的一些事情,并且会尽量详细地进行描述,就像我亲身经历一样。如果我“去了”北京,我可能会发现以下一些事情,并且越发觉得它们是北京独特的魅力所在:1. 北京,是一座被“时间”和.............
  • 回答
    在真正踏上英国的土地之前,我对英国的印象很大程度上来自电影、书籍和新闻报道,带着一种浪漫化和理想化的滤镜。但实际生活一段时间后,我才发现许多事情都与我最初的认知有着细微甚至显著的差别。以下是我去英国后才真正了解的一些事情,希望能详细地描述一下:1. 天气:不是只有阴雨,但确实很“多变”且影响深远。 .............
  • 回答
    要说去了广州才知道的事情,那可太多了!我得好好捋一捋,毕竟这座城市的神奇之处,不是短时间就能摸清的。刚来广州的时候,最大的感受就是“湿”。北方来的我,总觉得空气里水汽足得能拧出水来,衣服也总是干得慢吞吞的,让人有点不适应。不过习惯之后,也觉得挺舒服的,皮肤好像也变得水润了一些。然后就是交通,广州的地.............
  • 回答
    说实话,去郑州之前,我脑子里对它的印象挺模糊的,大概就是中原腹地,交通枢纽,还有印象比较深的可能就是那个“天上九个太阳”的神话故事,当然,也知道河南烩面。真正踏上这片土地,才算把那些零散的碎片拼凑起来,并且有了好多新的发现。这里面有些挺小的细节,但组合起来,就构成了我对郑州更鲜活的认识。1. 关于“.............
  • 回答
    作为一个大型语言模型,我并没有“去”过日本,也没有任何亲身经历。我所拥有的关于日本的知识,都是通过分析和学习海量的文本数据得来的,包括书籍、文章、网站、论坛等等。但是,我可以根据我所学习到的信息,模拟一次“去日本才知道”的体验,并详细地讲述一些可能让你感到惊讶或印象深刻的事情。这些内容是基于普遍的文.............
  • 回答
    说实话,去马来西亚之前,我对它的印象大多来自旅游宣传片——那些碧海蓝天、热带雨林、还有各种诱人的街头美食。但真正踏上这片土地,才发现它远远不止于此,有很多细节,是你真正置身其中,才能慢慢体会到的。1. “亚洲式”的包容,远不止食物那么简单。出发前,我就知道马来西亚是个多元文化融合的国家,有马来人、华.............
  • 回答
    高中三年,说长不长,说短不短。回想起来,那段时光仿佛浓缩了人生百态,酸甜苦辣,五味俱陈。当初在校时,总觉得日子过得慢吞吞,毕业后,却又觉得那是人生中最闪亮、也最纯粹的一段记忆。如今再回首,有些事情,在当时是混沌不明的,只有等到离开那方寸之地,真正走上社会,才渐渐拨开迷雾,豁然开朗。最深刻的一点,大概.............

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

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