编程是一场失败者的游戏

2020-09-09 02:25:53

我最近读了一篇讨论1970年代投资策略变化的文章,查尔斯·埃利斯(Charles Ellis)在文章中谈到了赢家游戏和输家游戏1的区别。

专家网球是我所说的胜利者游戏,因为最终结果取决于胜利者的行动。胜利是因为赢得了比对手赢得的更多的分数--正如我们稍后将看到的,不是简单地获得比对手更高的分数,而是通过赢得分数来获得更高的分数。

拉莫发现,业余网球几乎完全不同。精彩的投篮,漫长而令人兴奋的反弹,以及看似奇迹般的复苏,实属凤毛麟角。另一方面,球经常被击入网中或出界,发球时出现双误并不少见。这个业余的笨蛋很少打败他的对手,但他总是自欺欺人。这场网球比赛的胜利者得分比对手高,但他的得分更高,因为他的对手丢了更多的分数。

换句话说,职业网球是赢家的游戏--最终结果由胜利者的活动决定--业余网球是失败者的游戏--最终的结果由失败者的活动决定。

在编程中谈论输赢是什么意思?成功是什么样子的?我认为这是一个很难回答的问题,它可能会填满几篇博客文章,但我认为对我们来说一个好的工作定义是“自己或作为团队的一部分,生成高质量的代码2,这有助于为最终用户解决一些问题”。根据这个定义,在我看来,专业编程似乎是一种输家游戏,至少对我们大多数人来说是这样。

我承认,也许在快速发展的初创公司中,或者对于那些参与尖端研究的人来说,通过“赢得积分”来取得成功是有一定因素的。开发更快的算法,或者确定一些难以置信的创新方式来实现某个功能,可能会帮助您取得成功。然而,我相信对于许多专业程序员来说,成功来自于专注于不“失分”-例如,造成错误或产生深不可测的代码。

考虑到这一点,当我们考虑编程时,它强调了我们这个领域中一些不那么光鲜的元素作为一种可行的成功战略的重要性。当你接近下一个项目时,问问自己,怎样才能避免失败?

它本身就取自西蒙·拉莫在他的书“普通网球运动员的非凡网球”中所做的工作。↩︎。

我所说的“高质量代码”指的是干净、易于理解并且在正常操作中几乎不会产生错误的代码。↩︎