程序员为什么要一直改bug「程序员为啥整天趴着改bug不能一次性写好嘛」

整天看网上程序员图片上都是在低头对着电脑,要不知道对电脑为啥有这么大的痴迷,为啥整天都是对着电脑也不嫌烦,有些东西一直在修改,改来改去的不能直接一次性的搞定嘛? 估计这是外行人对程序猿一个最真实的评价。是不是写的东西都不是一次性的,需要不停的调试,估计程序员媳妇们对这些东西最有发言权。

为啥外界对程序员会产生这么大的误解,码农工作的常态到底是啥状态?为啥编码的工作不能像搬砖一样一次性全部搞定?

第一 程序员算是比较耗费脑力的工种,精细度非常高,相对来说问题多

软件开发是属于精细的工种,直接搞出来的代码基本上很难一次到位,即使有的模块功能或者别的方面都到位了,也不能保证别的模块没有对这个模块进行干扰。一旦有个模块出问题了,可能就会影响到软件整体的运行,有可能还牵连到整个项目组的人,排查到最后不一定是谁的模块问题,弄得白陪着加班搞一场了。

其实在软件开发过程中,流行这么一句话:好的东西都是改出来的。从字面理解的意思违背软件开发规律的,正常的开发过程先是设计整体的模块框架,然后按照计划一步步的去做,但在实际开发过程中很难这么实施下去,客户的需求在变,市场的动态在变,特别是互联网公司产品的迭代导致所有的东西都在变,折腾的多了,经验也就出来了。

第二 产品的需求变化的非常快,有时一个功能还没搞定,新的需求又来了

软件开发需求频繁的变动几乎是开发的常态,所以导致程序员一直处于奔波忙碌的状态,由于需求变化非常频繁,这个功能可能带出很多的bug,有可能修改这个功能的同时造出了别的bug的出现,这在软件开发过程中非常常见。增加功能的同时带入新的bug进来。牵一发而动全身,一个动起来导致大家都跟着动。

曾经亲身经历一些产品在研发过程中,发现同类竞争产品增加了什么新的功能了,然后在这一期的需求变化中重新给排期进去,有时候搞了几家的需求,为了把这些功能都搞进去,弄成了功能大汇聚反倒成了四不像。这在国内互联网开发过程中司空见惯。

刚入行不久的新手,容易增加新功能导致新问题出现

很多刚入行的程序员,凭借自己的一股冲劲,特别是自己能够写一些东西的时候,往往容易写出质量不高的代码,这时候可以说直接写bug,在对框架还没了解彻底的时候直接去写,很容易破坏原有的生态体系,导致出现大量问题这种可能性经常发生在刚入行没多久的程序员身上。

当然还有一些是程序员本身追求精益求精的表现,在编码界称之为重构,不停的对自己写的代码重构,chrome浏览器全球有2000多人一块参与研发,从他更新速度来看几乎每时每刻都在变化,有很多就是程序员在重构自己代码的实现,形成更好的效果,作为程序员的你经常重构自己代码不?

从产品角度出发,任何精品都是雕琢出来的,没有工匠精神,造不出精品。

大多数人想要改造这个世界,但却罕有人想改造自己,要做一个顶级的工程师,先从改造自身的代码做起。

关注本头条号,大家一起学习编程。

程序员为什么要一直改bug「程序员为啥整天趴着改bug不能一次性写好嘛」

程序员为什么要一直改bug,不能一次性写好吗?

软件可能在使用过程中没有任何问题,但不符合产品的预期下图源自“How projects really work?”,很形象的突出了客户需要的产品和最终得到的产品不一致。


因为文字具有二义性,每个人对相同文本会不同的理解,客户、项目经理、分析师、程序员对需求理解的不一致,导致了产品上线运行后不符合预期。这算是如李一个最大的Bug,有经验的开发公司会从沟通流程上尽量规避这种可能性,但也没有办法完全避免。


另外在软件开发途中也会出现各种各样的Bug。这种情况有点像装修房子,设计公司根据客户房子的尺寸和结构、朝向、生活习惯等等设计工程图和效果图。客户看到设计工程图和效果图后感觉很满意,马上水电工、木工、瓦工、油漆工等陆续进场按照设计工程图和效果图施工。施工完后看起来所有都很正常,验收的过程中就会暴露很多问题,比如少了一个插座、油漆涂抹不均匀、有的瓷砖没有贴好等。


当客户真正入住的时候,可能还会发现各种当初对设计不满意的地方,一旦真正使用的时候,就会发现当初应该这么设计。客户在使用软件的时候,并不会按照操作流程使用这种情况就好比使渣喊迟用“高压锅”,使用说明上明明指出先得放气,才能掀开锅盖。使用的人非得先掀开锅盖,意外便发生了。软件是按照开发流程一步一步设计的,软件崩溃了,程序员对外行解释软件中出现的Bug是不现实的,只有老老实实地去设置阻断或者更改程序的流程。


另外软件使用过程还会出现一些黑天鹅事件,比如网线断了、服务器故障、机房网络拥堵等等。这种情况除了在软件的架构上做冗余,没有其他更好的办法。用户能正常使用,但在用户看不到的地方有各种异常一个软件有许多的功能模块,并且这些模块并不是同一个人设计的。一个功能模块几乎不可能独立运行,必然牵扯到其他模块。对于一个程序员设计的其中一个模块所依赖的其他模块没有办法保证是100%可用的。


这时虽然有错误,不影响主要的流程,也不影响用户的正常使用,用户也不会察觉到,甚至软件开发人员也没有察觉到。但指不定用户使用软件实现某个功能的时候,软件就会抛出错误或者崩溃。


所以软件想要变得成熟,Bug收集和处理机制是非常有必要的,比如:会影响客户使用的优先级高的Bug要优先修复。Bug是软件的影子,也是程序员的噩梦实际上不能存在没有bug的软件,Bug和软件如影随形。就像我们使用的Windows,穷尽无数优秀的软件工程师来设计给用户优秀的桌面体验,但也有各种层出不穷的bug。

程序员对Bug有多爱就有多恨,Bug无处不在,即使再牛逼的程序员也逃脱不了Bug的魔掌。想要完全避免Bug几乎是不可能的,所以也不在一次性就写好的程序。以上个人浅见,欢迎批评指正。认同我的看法,请点个赞渗虚再走,感谢!喜欢我的,请关注我,再次感谢!

程序员为什么要一直改bug「程序员为啥整天趴着改bug不能一次性写好嘛」

程序员为什么要一直改bug?不能一次性写好吗?

作为一名程序员,我也总是在调试,Bug总是防不甚防的出现,这个过程真是有趣又痛苦,最后我觉得习惯就好,一次性写出完美代码是每个程序员不可实现的梦想。

程序员写程序是为了解决某个问题,所以程序员能否一次性写好程序不是由程序员决定的,更取决于使用者能否一次性给出完整的需求,而实际上这一点几乎不可能。开发程序是一个创造的过程,而程序员只是创造者之一。

完美如何定缺贺义?程序员本身的能力的增加,在写程序的过程中会不断发现可以改进的地方,这时候如果追求完美主义可能根本无法完成程序。所以先写出一个可执行程序,再不断迭代出更好的程序更加有效。

程序员作为一项工作,是有任务有指标的,比起慢慢写出完美程序解决所有问题,大家更喜欢肆扮昌快速看到一个可以执行解决部分裂扒问题的程序,此时完成比完美更重要。

没有哪个程序员可以写出完美的代码,即使高能又伟大的公司也做不到这一点,想想看你的手机软件是不是经常提醒你该更新了,连微软都在三天两头的让你打补丁,不是吗?

上一篇: 女销售原来靠这样卖房(楼盘置业顾问提成大概多少)
下一篇: 编程语言 函数,编程函数用法