用空格缩进的程序员赚钱更多,多赚8.6%
原作者:David Robinson
译者:诗书塞外
你用Tab还是空格来处理代码缩进?
这个问题通常会引起程序员间的”圣战“,它已经无数次引起争论了。我自己是用空格的,但是我从没认为两种习惯之间有什么很重要的区别。但是今天我们要公布Stack Overflow 2017开发者调查得到的一部分源数据,而且分析表明用空格还是用Tab真的是有所谓的!
用空格的程序员比用Tab的程序员挣钱多
有28657名职业程序员(他们不是学生也不是实习生)参与了这个”用Tab还是用空格的调查“。这之中,40.7%的程序员使用Tab,41.8%的程序员使用空格,17.5%的程序员两者都用。其中,12426名程序员填写了Ta的薪水。
分析这些数据,我们得到一个很有趣的结论,用空格缩进的程序员比用Tab缩进的程序员赚的更多,即便两者拥有相同的编程经验。
从图中可以看出,使用空格缩进的程序员的薪资中位数是59,140美金,而使用Tab缩进的程序员的薪资中位数是43,750美元。其他国家程序员的薪资已经由当地货币换算成美元了。同时使用空格和Tab的程序员薪资水平基本和使用Tab的情况差不多:在后面分析中我们会忽略这部分混用的程序员。
这个结果很令人惊讶,但是结果本身还不能说明什么问题。当我第一次看到这个结论的时候,我怀疑是不是某一个因素影响了结果,比如程序员所在国家或者使用的编程语言。比如可能人均GDP比较低的国家的程序员更喜欢用Tab,而有理由推断这样会拉低用Tab程序员的平均薪资。
如果原因真的如上所想,那么在国家内部进行统计应该就不会有这个令人惊讶的结论了。所以我们选取了样本最多的几个国家,在国家内部进行统计。
在欧洲这个现象相对比较弱,而在印度这个现象却相当明显。不过可以看到,无论在哪个国家内部,使用空格缩进的程序员薪资都比用Tab缩进的程序员高,所以可以证明不是国家这个单独的因素导致了这个差别。
另一方面,我们知道不同类型的程序员会有不同的习惯:比如DevOps会倾向于用空格,而移动开发者更喜欢用Tab。这个差异主要因为他们使用的语言不同。这次的调查中程序员们提供了他们使用的语言的情况,和他们是什么类型的开发者。
从统计数据中看,无论是在同一语言内部,还是同种开发者内部,使用空格的程序员都比使用Tab的程序员薪资更高。
我还尝试了很多其他的因素,比如教育水平和公司规模,得到的结果都是相似的:用空格缩进的程序员薪资更高。我们在这里把调查的源数据提供出来,希望统计学家们能够找出导致这个现象的因素。
评估“空格 or Tab”选择对薪资的影响
如果我们把影响薪资的所有因素都放在一起,那么“空格 or Tab”的选择在这里占有多大的权重呢?
为了解答这个问题,我使用以下因素对工资做了一个线性回归:
“空格 or Tab”的选择
国家
编程工作年限
开发者类型和使用的语言
学位
是否为开源项目做过贡献
是否热爱编程
公司规模
这个模型预测使用空格缩进会使得工资相较于使用Tab缩进高8.6%,p值10^-10的置信区间为(6%, 10.4%).(通过这个预测工资的模型,我们能够估算每个因素对工资贡献的百分比,而不是美元绝对值)。从另一个角度计算,我们得出使用空格缩进相当于增加了2.4年的工作经验。
结论
嗯…这确实难以置信,我最开始也没想到是这样的结果。但是即便我尝试了各种解释,这个结论还是站得住脚。我甚至加入了一些调查中没有的因素去计算,这个现象始终都是存在的。
这个结论并不能说明因果关系,我始终不敢确定我已经考虑到所有的影响因素了。如果你是一个数据科学家,统计学家,或者分析师,我们鼓励你下载源数据来检查。如果你想重现这次试验的结果,这里有这篇文章用到的源代码。
我们很希望能听到任何有关于这个现象原因的理论。
为了保住我的薪水,我决定继续用空格缩进….