作者:自由飞
链接:https://zhuanlan.zhihu.com/p/22846871
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
即使用着21世纪最先进的编程技术,IT民工还是一群民工。自由散漫,没有规矩。而且这还是一种时髦,一定要圆领衫牛仔裤胡子拉碴一副Geek的派头才行。要打破束缚嘛,要创新,不拘一格,特立独行……
我并不是反对自由,相反非常渴望自由,看我的名字就知道了。但是,自由是有代价的。
相对于农业社会,工业社会最大的特点不是人性的解放,恰恰相反,是人性的束缚。日出而作田园牧歌般的生活结束了,取而代之的是朝九晚五的流水线劳作:每一个人都是一个巨大机器上的一颗螺丝钉,随着机器轰鸣向前,不舍昼夜。
工业社会的本质不是分工,而是协作。没有协作,你怎么分工?越是精细化的分工,越是要求高契合度的协助。每一个零部件,都必须大小统一,开箱即用,以此推之,整个社会,其实是被“组装”起来的。无论是我们手里的iphone,还是整个政府的运作。
说了这么多,终于,“组装”这个词,是不是和让我们这些IT狗觉得有点耳熟?
“不要重复造轮子”,谁都懂的道理,IT界的名言。不重复造,怎么办?拿过来就用,组装嘛!现在的开源代码不计其数灿若群星,理论上90%的项目,根本不需要写多少代码,找到合适的,拿过来,直接用就是了嘛……
但事实上呢?都在忙着造自己的轮子。为什么?其实是因为这些轮子不好用。为什么不好用呢?农民工造的呀!开源嘛,我只是为了满足我的需求/兴趣,随便写写,自由发挥,然后整个半拉子扔在哪里……
开源这样做是没问题的,但如果一个企业,自己的生产代码,也沾染了这种自由散漫的精神,就会带来两个后果:
质量不稳定。代码写完了么?写完了。能跑么?能跑。OK!——真的OK?这是程序员最大的顽疾!程序员写代码追求很多东西,比如语言,比如性能,比如优雅……但偏偏没有“稳定”。我带的团队成员可以理直气壮地和我说:“代码质量不是我的事,找bug是测试人员的事。”行外人听到这句话可能下巴都要掉地上去了,但我知道知道这种心理:这是人性。
很多开发人员,写代码就像是在打游戏或者鼓捣他的玩具,比如一件模型飞机,“哇塞!飞起来了。”OK,搞定,兴奋劲一过,就懒得搭理,要去找下一个玩具了。至于这飞机是不是每次都能顺利起飞,刮风下雨有没有影响,操控方不方便,降落是不是平稳,耐不耐用……这些杂碎事情,你知道有多烦吗?
如果依着程序员的性子做产品,你永远只能得到一个半成品。飞机很快就能起飞,但不会降落,它直接从天上往下栽。
可重用性差。很多同学一谈到重用,马上就想到“抽象”“继承”、“面向对象”、“设计模式”之类的东西,但我要说的不是这个。重用的前提是“标准统一”,IT行业的行话是“协议”,或者“接口”,使用统一的协议或者接口,才是大规模重用的最坚实基础,但这个不是我们能决定的,所以此处不表。我们说一个微观的东西:代码的可读性。
代码和工业零部件有一点不一样:它是可以改的。所以开源的代码,理论上哪怕它有那么点不合适,我们是可以拿过来改的。但问题在于,这只是理论上,实际情况是:别说改,连看都看不懂!为什么总是愿意自己造轮子,一个重要的原因就是:看别人的代码比自己写还难。
为什么代码看不懂?一个字:乱。很多代码,你去看它的代码,乱成一团糟。本来业务逻辑就快让人绕晕了,再加上代码那个乱啊,尤其是来来往往很多人写的,简直就像迷宫一样, 让你一脑子的浆糊……
这种东西,你怎么敢用?
同样的,这个问题最大的问题还是在于程序员的思维。一个刚毕业进入团队的小兄弟问我:“有没有那种写出来只有自己看得懂别人都看不懂的代码?”注意他的语气,和他一脸的神往,神往,神往……他认为能写出这种代码的人才是牛人!
过了两年,他自己牛逼了。我review他的代码,“你这一段我怎么看不懂啊?”他耸耸肩,“你看不懂我也没办法了!”咦……好在我还有几把刷子,好歹还算是个行业内人员,然后从他代码里抓出了bug,不然还真镇不住他了?他的潜意识里面,“我写的代码,看不懂是你的问题。”
这就是IT民工的“民工思维”。
链接:https://zhuanlan.zhihu.com/p/22846871
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
即使用着21世纪最先进的编程技术,IT民工还是一群民工。自由散漫,没有规矩。而且这还是一种时髦,一定要圆领衫牛仔裤胡子拉碴一副Geek的派头才行。要打破束缚嘛,要创新,不拘一格,特立独行……
我并不是反对自由,相反非常渴望自由,看我的名字就知道了。但是,自由是有代价的。
相对于农业社会,工业社会最大的特点不是人性的解放,恰恰相反,是人性的束缚。日出而作田园牧歌般的生活结束了,取而代之的是朝九晚五的流水线劳作:每一个人都是一个巨大机器上的一颗螺丝钉,随着机器轰鸣向前,不舍昼夜。
工业社会的本质不是分工,而是协作。没有协作,你怎么分工?越是精细化的分工,越是要求高契合度的协助。每一个零部件,都必须大小统一,开箱即用,以此推之,整个社会,其实是被“组装”起来的。无论是我们手里的iphone,还是整个政府的运作。
说了这么多,终于,“组装”这个词,是不是和让我们这些IT狗觉得有点耳熟?
“不要重复造轮子”,谁都懂的道理,IT界的名言。不重复造,怎么办?拿过来就用,组装嘛!现在的开源代码不计其数灿若群星,理论上90%的项目,根本不需要写多少代码,找到合适的,拿过来,直接用就是了嘛……
但事实上呢?都在忙着造自己的轮子。为什么?其实是因为这些轮子不好用。为什么不好用呢?农民工造的呀!开源嘛,我只是为了满足我的需求/兴趣,随便写写,自由发挥,然后整个半拉子扔在哪里……
开源这样做是没问题的,但如果一个企业,自己的生产代码,也沾染了这种自由散漫的精神,就会带来两个后果:
质量不稳定。代码写完了么?写完了。能跑么?能跑。OK!——真的OK?这是程序员最大的顽疾!程序员写代码追求很多东西,比如语言,比如性能,比如优雅……但偏偏没有“稳定”。我带的团队成员可以理直气壮地和我说:“代码质量不是我的事,找bug是测试人员的事。”行外人听到这句话可能下巴都要掉地上去了,但我知道知道这种心理:这是人性。
很多开发人员,写代码就像是在打游戏或者鼓捣他的玩具,比如一件模型飞机,“哇塞!飞起来了。”OK,搞定,兴奋劲一过,就懒得搭理,要去找下一个玩具了。至于这飞机是不是每次都能顺利起飞,刮风下雨有没有影响,操控方不方便,降落是不是平稳,耐不耐用……这些杂碎事情,你知道有多烦吗?
如果依着程序员的性子做产品,你永远只能得到一个半成品。飞机很快就能起飞,但不会降落,它直接从天上往下栽。
可重用性差。很多同学一谈到重用,马上就想到“抽象”“继承”、“面向对象”、“设计模式”之类的东西,但我要说的不是这个。重用的前提是“标准统一”,IT行业的行话是“协议”,或者“接口”,使用统一的协议或者接口,才是大规模重用的最坚实基础,但这个不是我们能决定的,所以此处不表。我们说一个微观的东西:代码的可读性。
代码和工业零部件有一点不一样:它是可以改的。所以开源的代码,理论上哪怕它有那么点不合适,我们是可以拿过来改的。但问题在于,这只是理论上,实际情况是:别说改,连看都看不懂!为什么总是愿意自己造轮子,一个重要的原因就是:看别人的代码比自己写还难。
为什么代码看不懂?一个字:乱。很多代码,你去看它的代码,乱成一团糟。本来业务逻辑就快让人绕晕了,再加上代码那个乱啊,尤其是来来往往很多人写的,简直就像迷宫一样, 让你一脑子的浆糊……
这种东西,你怎么敢用?
同样的,这个问题最大的问题还是在于程序员的思维。一个刚毕业进入团队的小兄弟问我:“有没有那种写出来只有自己看得懂别人都看不懂的代码?”注意他的语气,和他一脸的神往,神往,神往……他认为能写出这种代码的人才是牛人!
过了两年,他自己牛逼了。我review他的代码,“你这一段我怎么看不懂啊?”他耸耸肩,“你看不懂我也没办法了!”咦……好在我还有几把刷子,好歹还算是个行业内人员,然后从他代码里抓出了bug,不然还真镇不住他了?他的潜意识里面,“我写的代码,看不懂是你的问题。”
这就是IT民工的“民工思维”。