程序员最头疼的七件事

简介: 懂点技术,瞎指挥有人说不懂技术的瞎指挥很可怕,我倒是觉得懂点技术,然后指手画脚更可怕!有个国企的项目,甲方负责人李总是个局里的二把手,不知道什么时候了解了一点编程的技术, 每次开需求会都是和我们大谈如何开发软件,他的口头禅就是: 这个需求,用个SQL从数据库一选不就出来了?!你们怎么得开发一周?!别想蒙我!唉,他怎么能考虑到用SQL的like是效率极低的, 数据量大了是要崩溃的,我们得建立全文索引,需要用一套基于搜索的解决方案才行。
img_d687f1616e7757aea685bab011cb42db.jpe

懂点技术,瞎指挥

有人说不懂技术的瞎指挥很可怕,我倒是觉得懂点技术,然后指手画脚更可怕!

有个国企的项目,甲方负责人李总是个局里的二把手,不知道什么时候了解了一点编程的技术, 每次开需求会都是和我们大谈如何开发软件,他的口头禅就是: 这个需求,用个SQL从数据库一选不就出来了?!你们怎么得开发一周?!别想蒙我!

唉,他怎么能考虑到用SQL的like是效率极低的, 数据量大了是要崩溃的,我们得建立全文索引,需要用一套基于搜索的解决方案才行。 

甲方的技术实力看起来这么“强悍”, 不懂技术的乙方负责人只好和稀泥:我们回去再评估一下。

懂技术的程序员在下面大眼瞪小眼。 

代码都写玩完了,需求变了

这一点我不想多说,相信大家都深有体会。

虽然敏捷软件开发的方式对这个问题有一定的改善,但是无法根治,尤其是当客户觉得这个东西就是好,一定要实现的时候,程序员基本上是无能为力的。

必须得改! 不想改? 还想不想干了!

任务时间估算

我工作了这么多年了,遇到任务的时间估算,或者项目的工期估算还是头疼。

主要有两方面原因,一个是内因,即软件固有的复杂性,软件工程发展了这么多年,我们努力地让系统的各个模块独立,关注点分离,高内聚,低耦合。 

但是还是没有办法像搭积木那样去开发软件。很多细节纠缠在一起,难以准确估算。还有一个很大的风险是:一个你预料不到的,很小的问题就能把你死死地拖住,让你耗费大量的精力。

另外一个原因就是外因,人和项目的因素。你把任务时间估算得多了,有人会挑战你,怎么需要这么长时间?  估算的少了,自己就默默加班忍受吧。

如果是项目倒逼工期,那任务估算就是一个摆设了。

到客户那儿去演示

为了做好一个演示,在公司把系统调试了很多遍,把演示的步骤一步步都准备好了,到了客户那里,可能是手贱点了一个什么东西,然后,系统崩溃了,演示进展不下去了。

经历过两次这样的事情后,每次演示我都变得战战兢兢,如履薄冰,不敢越雷池一步,严格按照脚本来走。

现场演示一个不成熟的产品确实是让人挺崩溃的事情。写到这儿,我不由得想起来老罗在台上满头大汗地演示TNT的场面...... 

写文档

代码好不容易写完了,刚刚喘口气,准备开始下一个工作,领导说,把文档也补一下,接口参数的含义都写上 ,程序员心里通常都会不爽,有所抵触,结果就是草草地写个文档出来。

为什么这样呢,因为实现功能的那些代码才是体现自己价值的,能够赚钱的工作,文档看起来只是附加品而已。工作做完了,谁愿意多干活呢?再说了,工作量估算的时候把写文档时间算进去了吗? 你都不给我时间,现在还让我写,不是让我加班吗?

如果想把工作做得漂漂亮亮,既有优雅的代码,又有完善的文档,必须得给文档工作留出时间才行。

修改遗留多年的代码

为了实现一个新功能,我得修改六七个文件,其中包括一个长达5000行的JSP,三个500行的函数,2个没人问津的存储过程,做这一切的时候,还得小心翼翼地不能破坏老功能,此中酸爽滋味,不知道别的行业能否体会得到?

你说这遗留代码烂吧,但是人家可以工作,你想重写吧,一是没有时间,二是重写了能保证每个犄角旮旯的业务点都覆盖吗? 所以只能采用渐进重构的道路,慢慢地把他改好。 

能够从头开启一个新项目的同学,还是挺幸福的,好好珍惜吧。

Bug不可(难以)重现

人世间最痛苦的事就是明明有个Bug在我的眼前,我却无法重现它。 

四五年前,我们有个运行良好的应用突然出了状况,一到下午两点左右就会毫无征兆地崩溃,查看了日志,根本没有报任何错误。在测试环境中想尽了一切办法进行模拟,总是无法重现。 

这样的现象持续了一个多月,感觉就要绝望的时候发现了蛛丝马迹,北京时间的下午两点,是意大利的早上8点,那个时候,意大利的用户会登录系统,有些特殊属性的用户做了一个操作,触发了一个年久失修,普通用户根本走不到的代码分支,导致系统直接退出。

只用一行代码就Fix了这个Bug,但是重现的过程竟然长达一个多月!

相关文章
|
6月前
|
前端开发 JavaScript
意想不到的前端三个小妙招
意想不到的前端三个小妙招
|
6月前
|
人工智能 架构师 机器人
高薪程序员的三大窍门,你准备好了吗?
“高薪,月薪过万”已经成为人们对于程序员的刻板印象,但实际上对于二三线城市的码农来说,月薪过万似乎仍然是一个难以达到的目标。地理位置、房价以及升职加薪等问题让程序员陷入了薪资困境。作为一位程序员,若想获得自己理想的工资水平,需要具备哪些要素呢?
|
人工智能 IDE 算法
【周末闲谈】新的编程方式,程序员的未来何在?
【周末闲谈】新的编程方式,程序员的未来何在?
125 0
|
SQL 存储 Oracle
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
238 0
|
程序员
【程序人生】码农与软件工程师 究竟“差”在哪里
【程序人生】码农与软件工程师 究竟“差”在哪里
123 0
|
设计模式 架构师 算法
程序人生 - 程序员:伤不起的30岁
程序人生 - 程序员:伤不起的30岁
126 0
|
算法 程序员 持续交付
如果你有拖延症,程序员不如试试这个技巧提升效率?
  要吃掉一头大象,每次吃一口。   ——克雷顿·艾布拉姆斯(Creighton Abrams)   造成拖延的首要原因之一,同时也是造成生产力低下的祸根,就是总是在感慨一个问题:好忙啊,问题好大啊……实际上,你并没有真正试着去解决问题。当我们从任务的全貌来审视任务的时候,它们看起来比真实情况都要大,并且更吓人。   在本文中,我会谈及一个能够帮助你克服拖延的提高生产力的窍门:分解任务。通过将大任务分解为小任务,你会发现自己更有动力去完成它们,也更加稳妥地向着目标前进。
157 0
瞧!这5000个爱管闲事的工程师干的好事.....
从 2018 年 4 月来到大爱清尘基金开始,师先存就没有正经过过几个周末。
10168 0
|
Java 程序员 应用服务中间件
程序员碰到最奇葩的需求是什么体验?
@梁大折腾 部门老大:你,做个微信小游戏吧 我:啥样的? 老大:反正你就做个小游戏吧,这个火 我:????? @柔情 领导:那个运维啊,你来把他的系统破解了,要不把他服务器黑了也行。
1926 0
下一篇
无影云桌面