提到那些成功的互联网创业故事,几乎都有这么一段情景:聚在在一起激情的讨论,手指飞快的敲击着键盘,凌晨喝着咖啡,啤酒还在亢奋的写着代码,高质量、颠覆性的产品就在这样的环境下产生了。。。
这就是互联网创业推崇的精神。
我们这篇文章就来揭秘互联网创业背后的神话,讨论一些好的软件开发原则,希望带来一些经验和思考。
#神话1:你必须雇佣一个“技术极客”
技术极客很容易让我们想到: 一个带着耳机有点酷的程序员成天都在工作,一个复杂的系统他独自就能搞定。但事实证明软件开发是一个团队活动,在创业初期实现一个mvp(最小可行性产品)是可以的,但是创业一旦进入商业化阶段,靠个人英雄主义肯定是不行的。一方面鼓励英雄的心态导致其他人没有积极性,整个软件团队将被腐蚀掉;另一方面,软件团队的分工协作让产品更加稳定和持久发展,不会因为个人的原因影响整个产品,而且每个成员都能获得成就感。
#神话2:程序员需要安静的工作,不能被打扰
这是有道理的。如果人在工作的时候,每一次打断都会破坏注意力,而且要回到中断前那个逻辑需要花点时间。所以一些知名的软件公司都会给程序员独立的办公空间。实际的情况呢?大多数程序员只会在编程中花费一小部分时间,其他时间都是在思考或是讨论、随意逛网站、看手机。我认为效率最高的是结对编程。双方应该多交流讨论,碰到问题一起解决,这样效果更好。
#神话3:长期的加班文化
创业公司为了抢占市场先机,往往疯狂的工作。996(早上9点-晚上9点,6天工作)几乎是家常便饭。我觉得做1周的冲刺,这样加班是没问题的。但是如果是一种常态,连续几个月都如此,我想开发人员的效率,产品的质量都是让人担忧的。由于开发人员压力过大,离职率也会非常高。
#神话4:为了快速上线,需要走捷径
因为做市场的同事压缩开发的期限,成了粗制滥造的借口。没有测试用例,没有精心的设计,匆匆完成编码就准备上线。但是高效团队却不会因为压力缩减必要的环节,不管来自内部还是外部的压力,都要坚持按开发流程去做,坚持产品的高质量。
#神话5:开发者应该为自己写的代码负责
这听起来很不错。但是这意味着每个代码模块只有一个人知道。这导致程序员的自我保护意识。也给企业带来风险。如果一个人流失,会造成团队开发速度减慢,如果他/她对某个关键部分负责,可能会让企业瘫痪。一个健康的软件团队是每个人能够修改系统中任何代码。结对编程正是方便了这一点。因为知识从一个人传递到另一个人。了解整个系统的人越多,团队的能力就越强,也越有弹性。
#神话6:职责的细分是至关重要的
管理者很希望通过细分角色来解决系统问题。在软件团队中,通常表现为前端,后端,数据库管理员等。我认为每个人都应该成为全栈工程师,因为细分让团队变得脆弱。不仅如此,团队成员得不到全面成长,也会很没士气。细分也意味着大家需要对接的地方更多,很多时候出了问题会造成相互推诿。每个人都可以在每个层面工作,从html和javascript到java,再到数据库,这其实没想的那么难。
我们在实践过程中的一些体会,欢迎大家讨论。