说起程序员,在我心目中的形象本来是这个样子的:
冷静、酷炫、聪明,沉浸在代码的世界里,容不下其他任何事情的干扰,充满魔性的双手在键盘上来回敲打着,就能创造出改变世界、改变生活的互联网产品。
但是不知道从什么时候开始,“程序猿”这个词进入了我们的视线,于是一直勤勤恳恳、为人低调的程序员们一下子成为了“黑”的代名词,他们的画风突然就变成了这个样子:
然后,就是无尽的被黑、被调侃:
这样黑程序猿,我觉得很不公平,因为他们真的很努力、很辛苦。通常情况下,程序猿的生活好像只有写代码这件事。就算加班改bug到深夜,依旧跟打了鸡血一样。就算满眼的疲惫、满眼的红血丝,只要面对代码,空洞的双眼立马变得风情万种。不要嘲笑他们没有女朋友,他们的时间都用去跟键盘“打情骂俏”、跟bug“相爱相杀”、跟代码“浓情蜜意”了……甚至,面对美女,也不为所动。
程序猿的生活也很简单,电脑、可乐、泡面、饿了么,就可以是他们生活的全部,尽可能简单的生活,他们才能把更多的时间贡献给代码,很多时候,在代码面前,睡眠的优先级是很低的,于是,每次他们缓缓把头转过来看着我的时候,场面往往是这样的:
因为长期的熬夜、劳累,程序猿都老得特别快,无意中看到一个程序猿五年间的三张工作证,我忍不住哭了。
除了高强度的工作,程序猿往往也背负着巨大的压力,不多说,看下图,自己去感受:
伴随着这些压力,伴随着无休无尽的修改需求,为了自保、为了生存,程序猿的“谎言”随之而来,在老板、产品经理、项目经理、策划、客户等这几座大山的重压下,程序猿究竟说过哪些谎?让我们一起走进程序猿的世界。
“谎言一
That's easy, it'll just take a couple of days.
这个很简单,只需要几天的时间就可以完成。
“谎言二
It's just a temporary solution, it won't be used in production.
这只是一个临时的解决方案,它不会被用于正式的产品开发。
“谎言三
It's not a bug, it's a feature!
这不是bug,这是一个特征啊!
“谎言四
It's done. I just need to clean up a few things.
已经完成了。我现在只需要再清理一些东西就好。
“谎言五
I am 90% finished.
已经差不多完成90%了。
“谎言六
It will just take 2 minutes to fix !
这个只要两分钟就可以修复好!
“谎言七
Dev: This will take 10 days.
Boss: Can you do it in 5?
Dev: Sure!
程序猿: 完成这个需要10天。
老板:能在5天内完成吗?
程序猿:当然!
“谎言八
Yeah, it is a known bug.
对的,这是一个已知的bug。
“谎言九
This is a hardware issue. Nothing to do with software.
这是硬件问题,跟软件没关系。
“谎言十
"How much time do you need?"
"2 hours."
Then, 4 hours' gone, 1 day's gone.
"I'm on it, and very close to the end, but need more time."
“你需要多少时间?”
“两个小时。”
然后,4个小时过去了,1天过去了。
“我正在做,已经快完成了,但还需要一点时间。”
“谎言十一
The code was working few minutes ago.
这代码明明在几分钟之前是可行的。
“谎言十二
You forgot to clear your cache.
你忘记清你的缓存了。
“谎言十三
Lie: "It's just a prototype."
谎言:“这只是一个原型。”
Translation: This code is totally going to be used in the final project, unless it clogs up so much that we are literally forced to rewrite it (which won't take nearly as much time and is always worth it anyways).
真相:此代码将完全被用于最终的项目中,除非它“阻塞”了进程让我们不得不在字面上重写它(这不会占用同样多的时间,但反正这么做是值得的)。
Lie: "I can totally have that out in like 3 days, tops."
谎言:“我完全可以在3天左右出样。”
Translation: Two weeks.
真相:需要两周。
Lie: "I can't do that."
谎言:“我没法做这件事。”
Translation: I probably can, and it may actually not take me that long, but I have no clue how at the moment so I don't want to sign myself up for it if I can help it.
真相:我应该能完成,并且这件事实际上可能不会花费我太长时间,但是此时此刻我不知道该怎么做所以我暂时不想向别人保证我能完成它。
“谎言十四
Yeah, I tested it.
是的,我测试过了。
“其他更多的谎言
That's weird...
这太怪异了......
It's never done that before.
这以前从来没有发生过。
How is that possible?
这怎么可能?
What did you type in wrong to get it to crash?
你输错什么了以至于系统崩溃了?
I haven't touched that module in weeks!
我已经好几个礼拜没有碰过这个模型了!
You must have the wrong version.
你用的版本肯定是错误的。
It's just some unlucky coincidence.
这只是一些不幸的巧合罢了。
I can't test everything!
我不可能测试所有的事情!
It works, but it hasn't been tested.
这个已经完成了,但是还没被测试过。
Somebody must have changed my code.
一定有人改了我的代码。
Did you check for a virus on your system?
你系统里的病毒检测过了吗?
You can't use that version on your system.
这个版本在你的系统上是不可运行的。
It works on my machine.
这在我的机器上是正常的。
“其他观点
一、
If by 'lies', you are talking about intentional deceit, most of these answers describe a lack of experience. ... or self-delusion at worse.
如果说是“谎言”,那么你们在谈论的是故意欺瞒,但这里的大多数答案都在形容一种缺乏经验的状态,或者说是严重的自欺欺人
But if you want ‘lies’; I'd saythe most common lies told by programmers are never verbalized. The most common lie is 'going dark'.
但是如果你想要谎言:我想说的是程序猿最喜欢说的谎言并不会用语言表达,而是直接“进入休眠”状态。
Going dark is when the programmer is thinking "I can't tell anybody my current status, so I'm not going to say anything until I get myself out of the jam I'm in. Then nobody will know the difference." Then they stop responding to all communication. The programmer might've been slacking ... or, more than likely, they're just really embarrassed about their honest lack of progress.
当程序猿在想“我不能告诉任何人我的现状,所以在我还没走出我身陷的泥潭之前我什么都不能说。这样就没有人会发现我的异样。”于是他们停止所有的沟通。程序员可能已经懈怠,或者,更有可能的是,他们只是对于当前真实的项目进度感觉到很尴尬。
二、
There are many times when I give an estimate, my project manager would slyly say, "2 days? OK, it will take 4 days." "1 week? It will take 2 weeks."
很多次当我给出一个预计完成时间的时候,我的项目经理总会狡猾得说,“2天?好吧,应该会是4天。”“1周?好吧,应该会是两周。”
He thinks doubling my estimate is a smart thing to do.
他觉得把我的预估时间翻个倍是一项聪明的决策。
Then, after doubling it, sometimes, the estimate becomes unrealistic:
但是,当他翻倍之后,有时候,这样的预估就会变得不切实际:
Him: "2 weeks. It's a no go -- that takes too long."
Me: "I said 1 week. Not 2."
他:“2周,这不行啊,时间太久了。”
我:“我说的是1周,不是2周。”
More often than not, I do deliver on the estimate. But of course, there are times my estimates are off. But that's normal since estimates are estimates.
通常情况下,我能在预估时间内完成工作。当然也有估计错误的时候。但是这也是正常的,毕竟预估只是预估而已。
All I know is: it's annoying to categorically double all estimates and assume that developer estimates are "lies."
我只知道:总是断然地去把预估的时间翻倍以及总是臆断程序猿的预估是谎言,这些很让人困扰。
三、
A programmer can never test their own code. Because they know how it works, it makes no sense to try and use it wrong. "People" are not programmers, and they will ALWAYS try and use it wrong. This is usually not by intent, but because of lack of knowledge, inexperience, laziness, obstinacy, and because it's not what they are used to doing.
程序猿都不会自己测试他们写的代码。因为他们知道这怎么运行,所以试图用错误的方式去运行它是没有意义的。其他的人并不是程序猿,他们经常试图用错误的方式去运行它。当然他们不是故意的,而是因为他们缺乏知识、经验不足、懒惰、牛脾气,因为这不是他们习惯做的事情。
So the biggest lie of a programmer is "I tested my code and it always works correctly."
所以程序猿最大的谎言就是“我已经测试过我的代码了没有任何问题。”
总结
无意中在一个国外的网站上看到了“程序猿都说过哪些谎”这个话题,觉得很有趣,于是就想到了写这样一篇文章,让大家进一步了解程序员这个职业。作为互联网行业的创业者,程序员对我们来说,是工作上最亲密的伙伴之一,我们的idea、我们对产品的期许,都要靠他们帮我们实现。因此,他们真的很辛苦,多少个加班的深夜,都是程序员们陪我们共同度过,改bug、赶进度,无怨无悔、任劳任怨,真心觉得程序员是一种值得尊敬的职业。他们才是真正的造梦师,通过他们的双手和键盘,我们创业者的梦想就这样实现了。
所以不管你是老板还是产品经理还是策划还是客户,或者说是程序员的另一半,请给予程序员多一点的关爱,请理解他们的工作,然后,对于他们说过的“谎言”,也就一笑置之吧,仔细品味,谎言里尽是心酸。
最后,想要推荐给程序猿们一本好书,绝对是你们用得到的,不用谢。