• Feeds

  • 享受造轮子的乐趣

    在业内,由于技术布道师的传播,“重复造轮子”成了一个讳莫如深的话题,一个新的项目在各种讨论场合总是会小心翼翼的避开这方面讨论,一旦触及则会马上描述自己系统的独特性和必要性。富有经验的项目管理者,通常在开工前就会想好各种质疑的应对。但是造轮子也并非是一个雷区,有时候造下轮子也是无妨,不必遮遮掩掩,真的需要考虑清楚的是,轮子为了KPI、晋级、虚有的声誉,还是真的出于兴趣及热爱?他们是否可以放在阳光下,和另外一个社区的产品从技术的角度去比较?

    在Linux起步的阶段,在服务端有高端大气上档次的Solaris,在桌面端有占据垄断地位的Windows,如果抱着不造轮子的心态,也就无法让高高在上的Unix走下神坛,装进每个学生的学习的电脑,也不会成为最经典的开源协作的项目;在搜索引擎的领域也有同样的故事,一直到最近一两年,还有顽强的公司的不断进入这个领域。设计和使用一项技术就像厨师和美食家的区别,是不同层次的工作与体验。如果你的目标是给用户提供一个更好的操作系统,使用一个引来的产品很难使我们离目标更近。

    在一方面,造轮子可以使我们加深对专业领域的认识,帮助我们重新思考这个领域;而且我们可以根据自己对场景的理解,思考改进原来的实现。更难的境界是REINVENT, 而不是迈出造轮子那一步。

    另外一方面,富有挑战的项目的轮子可以帮我们更好的聚集人才。好一点的公司都在谈人才争夺战,但是大量的公司对于优秀的人才并没有充分施展的空间。Where Should Top Coders Work?也提到了类似问题,顶级的开发人才希望能发挥自己的才智解决业界最棘手的问题,因此在这些挑战的项目周围聚集优秀的人才之后,就有更好的机会通过创造项目中的智慧,发挥技术的杠杆作用去推动业务。

    但是也得强调几句,同一厂中的重复造轮子不值得鼓励,技术团队在造轮子时候得把握好优先级及时机,在农闲阶段造轮子,农忙阶段发挥作用。

    一次编程马拉松活动

    “编程马拉松(hackathon)是一个流传于电脑迷(hacker)当中的新词汇。编程马拉松是一种活动。在该活动当中,很多程序员相聚在一起。他们以合作的形式去进行电脑编程。编程马拉松的灵魂是合作地编写程序和应用。 编程马拉松的时长一般在几天到一周不等。编程马拉松不是编写些一次性作品那么简单。编程马拉松的精髓在于:很多人,在一段特定的时间内,相聚在一起,以他们想要的方式,去做他们想做的事情——整个编程的过程几乎没有任何限制或者方向。” 以上是维基百科对于Hackathon在活动形式上的解释。

    3G门户总裁张向东在参加完2013年Google I/O大会之后感慨

    虽然工程师总是被知识分子和政治活动家所忽视,但只有技术革命才不是循环往复的。有了电流后就不再用蜡烛,有了汽轮船就不再用帆船……这才是真正推动历史的火车头, 它带来了不可否认的和不可逆转的进步。

    当今真正的革命领袖,就是程序员。

    尽管愿景如此,对于怀抱技术改变世界梦想的工程师来说,大部分环境并没有提供良好的成长土壤。由于视野及经验方面原因,工程师在产品的设计、品质与战略等方面并不具备太大优势,在公司中更多是充当是执行者的角色。而且越大的公司分工越细,工程师长期从事的可能只是庞大产品线的很小一部分,较难体验作为工程师身份创造事物的乐趣。因此类似Hackathon这样的环境可以适当释放工程师创新与实践的需求。

    因此当一位同事L提议进行一场Hackathon时,得到了广泛支持。Hackathon编程的领域没有太大悬念,由于移动方向的绝对影响力,加上大部分工程师最近也在积极学习移动开发,因此Hackathon选定为移动方向。

    由于部门内大部分工程师并没有熟练的移动开发经验,为了提高活动的产出,在Hackathon一周前进行了一次赛前培训,讲解了一个app开发的过程。讲师也是由参赛人员中在移动开发方向有一定经验的工程师担当。培训也有配套示例的工程,供课后自行修改尝试。接着,参赛人员按照1-3人的队伍规模进行了组队报名参赛。一些心急的选手也开始在提前编写代码。

    活动从端午假期前的周五下午2点左右开始,在周六下午2点左右结束。大部分队伍也取得了不错的结果。

    Quora网站上一篇“什么是创业型公司理想的环境(What are the coolest startup culture hacks you’ve heard of)”问题中,有人提到了一些让有意思的Hack活动。

    Facebook的Hack月
    当你在facebook工作一段时间后(通常1年),公司会让你选择一个新的team在新的项目工作一个月(Hack month),如果你喜欢那个项目,你就留在那个team,如果不喜欢,你可以回到原来的团队或者再选择新的团队。

    Dropbox’s的Hack周
    在Dropbox,有一周所有人放下手中的现有工作,去做一些自己感兴趣而且很酷的事情。其中创造到一些产品或者特性可能会加到现有的产品中。

    新兵训练营的故事

    受到《打造Facebook》一书的启发,以及对改善环境的美好期望,春节后几个同事都信誓旦旦的表示要搞一个团队内的新兵训练营,尽管大家的出发点及理解不太一样,但没有影响积极前行的信心。

    最开始是由L同学在前期张罗,L同学的核心办营理念是打造具备综合素质的人才(原话不一定如此),因此需要一个丰富的课程体系,让新人从无到有掌握应有的技术技能。即使有一些具备丰富经验社招的同学不需要部分内容,L同学的观点是这些课程可以根据对象进行裁剪,类似大学的学分制。

    由于一些原因,大旗转移到另一个T同学来主导,T同学更偏精英团队营造,认为在老的群体中有一些不好的做事方式及技术体系,需要从新人开始全部隔绝,“需要一个全新的开始”。T同学也开始小范围的训练营试点。

    这时候出现了一些办学观念的碰撞,比如“是否只考虑校招不含社招”、“是否课程目的主要为传授知识点或经验”、“是否不考虑团队现在的,通过新人创建一个理想的团队”等之类问题。

    L同学在QCon大会上跟新兵训练营可仰望的Harry交流了一些细节,Facebook新兵训练营的做法

    1. 了解公司公共的技术体系(共性的,帮助以后更好的了解兄弟部门业务)
    2. 公司文化及业务介绍
    3. 推荐及撮合部门,介绍新人去合适的业务团队
    上述说明在《打造Facebook》一书中有详细描述。

    经过一段时间的讨论,都已经基本达成共识,认为较为可行的新兵训练营的思路是通过案例讨论的形式,了解并分析目前技术体系现状,鼓励改进及创新的想法,辅助传递核心团队文化。新兵训练营每一堂课程除了新人之外,还有各个领域的核心员工及技术主管,新兵训练营的重要的思路是让新人了解目前体系,融入现有的团队文化。

    新兵训练营倾向于讨论没有标准答案的技术案例,甚至倾向选择有争议性的话题,以便讨论过程中了解争议的前因后果,以便更好的理解各种技术及业务场景。

    最新的新兵训练营由Q同学在主导,第一期新兵训练营,讨论开放平台的技术组成部分、以及搭建中可能遇到的技术问题。