翻译 | 程序员悖论(The Programmer’s Paradox)

2019-10-131956

原文自博客发布平台medium,作者为 Ryan Nehring,传送门

在程序员负责的每一个项目中,难免都会对时间和完整性产生一个矛盾。编码是一个复杂的工作,因为它提供了多种方法来达到同样的目的,在功能实现上很僵化但是又充满主观性的一些看法。

那这是什么意思呢?

好的,我们再看看,在 JavaScript 中,如果省略的右括号,可能会把整个代码破坏掉,这在代码功能编写上是很严格的。但是,比较两位不同的程序员如何去解决表单验证的问题上,在方法、优势和效率上都会产生一定的主观的争论。

因此,意识到每个程序员在如何更好地编码的观点中都有不同的定义非常重要。

程序员悖论

程序员悖论是指这么一种情况,当我们发现自己正处于其中一个观点中。每一个项目都会有那么一刻,coder 需要决定是立刻结束这个项目,还是花更多的时间来完善它。

矛盾点在于,在我们花心思去对项目进行改良和添加功能的时候,我们都会不可避免地遇到新的问题需要解决。程序员往往会被"完美代码"这个美好的幻想所困扰,并且坚信始终会有完成的一天的。但这并不是发展的本质。

例如,为了更好的运行速度而重新设计已经完成的功能代码块会让人们意识到,其他相似的程序块也可以这样做。

这是程序发展中重要且有价值的一步,然而,困扰着我们的点在于,我们没法很好地区分哪些是实际真正有用的增强功能,哪些只是简单的代码上的改良。

什么是真正重要的

作为一个开发者,重要的是问我们自己在我们构建的这些产品中想表达出什么。边际技术层面的改进可能会让你感觉"更正确",甚至能够帮你节约数个小时的时间,但是这是否真的有意义?它们是否真的你值得花时间去实现呢?

其实答案就在那个我们时常会忽视的一个简单问题上:"这是否真的能帮助到用户?"

你并非为了感动其他开发者而编写代码;而是为了能够给到用户去完成某件事情的工具。

有效的努力成果

作为一名程序员,花费单浪时间精力在实际效果很低的事情是非常容易。花费4个小时将代码重构成使用快速排序代替冒泡排序也许能够提高一丁点速度,但是使用的用户真的会注意到你所节省的这0.001秒的成效吗?

如果将这些时间用在书写更好的异常处理或者解决 UI/UX 上是否会更好?

最终,成果的有效性取决于这样的原则,即对用户产生的最积极的净效果,而不是让你感到最有成就感的事情。

每个规则的盲区

尽管需要花费大量的时间,但编写那些整洁、有效的代码还是很重要的。

你现在是否正处于构建那些需要扩展的应用中呢?它是否需要支持大量的用户并发?对于过重的用户负载,它是否需要经常访问 API 以及数据库连接?在这些情况下,我上面提到的节省的0.001秒时间也许就来得非常有必要了。

但说实话,尽管你可能会深信一些开发博客所描述的,这种例子还是非常少见的。更常见的是,日常的开发者是帮助小团队去开发工具,而这些小团队仅仅需要这些工具能够完成所需要的工作就可以了。

你更需要做的是,花其他开发之外的时间在构建文档和异常处理当中,以至于用户能够最大程度地理解你的宝贵成果。

悖论被解决了

在最后,程序员悖论或许根本就不是一个悖论。解决它的方法在于问自己一个问题,什么是最适合我的用户的?

真诚地对待这个问题会让开发者更少地误入歧途。构建具有出色的用户界面和文档的解决方案,会比产品延迟交付和深入重构更能获得收益。

让他运行起来,然后将它交付出去。那么你就可以在下个版本中重写你那排序算法了!

分享
点赞1
打赏
上一篇:Docker常用命令笔记(一)
下一篇:翻译 | 我所知道的分布式锁