来源:数学建模 文|头条号:程序员的酒和故事
编辑:Gemini
有一部分程序员中的老司机,他们善于找各种借口,少干活,少背锅,多拿钱。但是,更多的程序员坦诚、直白、偶尔也会意气用事。
程序员拿到一个新功能,心里暗暗发笑,这剧情我见过啊。于是脱口而出,这功能简单,一天就能做完,明天上线肯定没问题。
结果,眼看着到自己设定的截止日期了,还有一部分代码没有写完,怎么办?
很简单啊,又不是生死状,又不要命。解决办法很简单,加班~~~
程序员,那些年吹过的牛逼,最后都自己加班了。
功能开发完了,拿去测试吧,拿去玩耍吧,上线吧,部署吧,发给客户吧,肯定没问题的。
结果,很多时候还没发布。要么测试发现bug,要么产品发现bug,要么老板发现bug。
你的第一反应就是:是特么你们不会用老子开发的功能吧?你乐呵呵的看着bug复现,怎么办呢?
很简单啊,紧急修复bug,重新发布。时间来不及了?加班啊~~~
程序员,那些年吹过的牛逼,最后都自己加班了。
在技术讨论会上,你侃侃而谈,我精心设计的前后端分离的框架,我使用了现在最流行的界面库,我们用的技术某某独角兽公司都在使用,肯定是最好的。
结果呢,使用的技术太新。Github上很少有相关的开源项目,Stack Overflow上很少有这方面的问答。你被一个问题搞的昏天暗地,只能默默的看官方文档,而且是英文的(这是好事儿)。
啊?项目着急上线怎么办呢?加班啊~~~
程序员,那些年吹过的牛逼,最后都自己加班了。
之前为了快速迭代,忽略了代码的结构和质量。正好最近这两天没有什么新功能开发,我要重构一下现有的代码,绝对没问题。
结果呢,两天的空窗期没搞定。明天就要开发新的功能了,怎么办呢?加班啊~~~
程序员,那些年吹过的牛逼,最后都自己加班了。
在工作中经常能听到这样的话「不就加个按钮么?怎么要做两天时天?」。那么,作为程序员如何解释自己的工作复杂度呢?
如果你的老板是技术出身,那你很庆幸,他能理解你实现一个小小功能,修改一个小小功能所付出的辛苦劳动。
如果你的老板不懂技术,也许你就要无穷无尽的加班了。给你的忠告就是:做正确的事儿,等着被开除。这是一位谷歌工程师说的话。
如果你的产品经理懂技术,那么你既是幸运的也是不幸的。
幸运的是,他可以理解程序员工作的复杂度。但是“不幸”的是,你再也不能为了偷懒找借口。
当产品经理提出一个方案时,你再也不敢坚定地说“技术不可行”。因为你害怕产品经理自己写好了代码给你,那是多么尴尬的境地。
下面是 Channing Walton 的用泡茶的例子来解释,非常形象。
请他们描述泡出一杯茶需要哪些步骤,他们会这么说:
烧水
把茶叶放到茶壶里
水烧开后倒入茶壶
等待5分钟
把茶倒进杯子
加牛奶
喝
现在,有趣的开始了。你要开始问这样的问题:
烧水?
水哪来的?
热水壶在哪里?
你怎么把水倒进热水壶?
你怎么知道热水壶壶里要倒多少水?
如果没有水/热水壶/电怎么办呢?
假如加水传感器失效怎么办?
假如煮水传感器失效怎么办?
茶叶放到茶壶里?
茶壶在哪里,如果没有茶壶怎么办?烧水之前我们应该考虑到这些问题吗?
茶叶在哪里,要用哪一种茶叶?我们是否应该先问清楚,或许如果没有对应的茶叶,我们甚至都不应该开始泡茶?
关于加水和传感器也可以有类似的问题要问
倒开水?
你确定水已经开了么?你怎么能确保“倒水”的机器从热水壶那收到“烧水完成”的信号呢?
你如何确保倒水的机器知道热水壶在哪里?
如果热水壶在倒水的过程翻了怎么办呢?
正如你工作中看到的,写代码会让你骂骂咧咧,经常爆粗口。
另外有数据统计,写 C++ 程序,会比写 PHP 或 Python 程序所遭到的骂声更多。
Andrew Vos在找一个周末项目,于是决定在 GitHub 上抓取100百万条提交信息(commit),并扫描其中的脏话。
而且程序员最喜欢的一句是:“去TMD,咱们就这样发布。”
往期经典文章回顾
1. 泰勒定理的奇闻轶事
2. 丘成桐:漫谈微分几何
3. 概率的意义:随机世界与大数法则
4. 算法|人人都该了解的十大算法
5. 数学里也能耍流氓
6. 深入浅出遗传算法