写在前面:
结合我的工作经验,我对未来工作做出了一些规划。算是想法的总结,我希望能达到有效的沟通。请指正我哪里有不合适的。告诉我哪里能做,哪里不能做,哪里不足。
现在,我已经养成一个engineer思维,所以我可以教授如何像一个engineer一样思考。
思维方式:
Engineer和scientist的思维方式,完全不同。
Scientist:why
Analyze:注重原理,从简入繁(从现象,原因,分析各种复杂的因素)
Engineer:how
Realize:注重实现。化繁为简(将原理用工程实现,运行,生成结果。整个过程越简单越好。)
如果你们对数据科学感兴趣,我建议你们走research engineer(RE)的道路。大数据科学并不是纯科学。它具有非常多的工程因素。scientist当然是不可缺少的,但是如果是在直接面对工业和商业应用的公司,RE才是最奇缺的人才。
RE同data scientist的主要区别是,不需要深刻理解每种ML模型全部细节,不需要有能力判断各种模型在不同数据和应用上的performance,但是可以
1.实现scientist给出的具体ML算法(需要了解基本ML概念,以便于同专家进行交流。)
2.可以用真实数据完成模型学习(cross validation)。(熟悉常用的模型学习方法和工具。)
3.可以调节模型参数。(熟悉模型筛选,特征选取,特征空间压缩的方法。)
4.总结和比较学习后个模型的性能。(熟悉基本性能评估方法。)
RE不需要花太多时间研究各种ML模型和方法,它更注重应用ML的工程性。因此,应用面更广,而且需求量也要大得多。在数据越来越多,越来越受重视的前景下,前途是很光明滴。
当然,RE如果要更进一步深入,还可以读Ph.D向scientist转化。
我的工作经验总结:
Engineer素质需求:
coding能力,实现力和行动力。
自学,自我更新。
业务逻辑(算法原理)的设计实现能力。
交流:敝帚自珍不如交流共享。重视交流,相互学习。邮件交流尽量用英文。
工作过程:learning
Using(coding,testing,debugging)
Sharing(document很重要,项目中要补齐。)
【discussing,reviewing评审】
尊重经验:技术就是经验。做成靠技术,做好要经验。
所以要重视项目文档:内容简要,只有设计说明,使用说明。项目经验总结放到单独的文件。
一流的团队能将三流的项目做成二流:源于技术经验的积累。
想做成,靠学习,想做好,靠测试。想快速不走弯路,靠经验。(建立淘宝网站,本科生做不到。原因?)。我亲眼鉴证了天才的指挥官制定策略,奋勇努力的士兵努力工作,最后项目却做的很烂。
员工培养:
扇形知识架构:点+面。一个主要方向的知识积累,成为专家。其它多方向的知识储备,粗浅理解,能够实现。(如spark,yarn自己选方向研究)
这样拼接成一个圆,圆环中心是PM,深入的人离得近。面广的人的做的多。
而且,培训员工,不要担心你员工成长。在中国创业,一靠关系,二靠业务。你的员工顶多跳到对手企业,不能自我创业。而员工学到高深技术可以增强存在感,更有利于项目产品,形成企业核心。
Training:
实战练兵。用小项目让学生直接熟悉整个项目开发过程。
书到用时才方恨少,前提是你要用。(你不用,书就是多余。所以一定要让员工做项目,从实践出发,才会知道,自己所学不足,才回主动学习。)
项目管理:
Git:code
Scrum:People(非严格管理。激发员工自我推动)
周报:内容简要。描述工作内容【项目进度】【是否有困难;】周三提交
项目文档记录:Markdown
PM将项目分解成不同模块,个人领取,负责到底。(信任+责任)
谨记:
1. engineer可以急,PM不能急。弹性工作制,模块个人负责制。激发engineer的自主性, open思维,创新。
2. engineer思维可以发散。PM思维不能发散。否则需求定义变化,不利项目总体进行。
交流:鼓励员工交流学习。表达是思维方式的形成。邮件尽量用英文,不怕错,怕不知错。
总结:项目完成后,需要总结,过度工作后,需要调整休息。
培训内容:
Hadoop基本的原理和使用。
Hadoop开发工作环境:linux,python,shell,vim。
搭建hadoop。
工程经验:从现有项目中分析一个小的项目。让学生参与完成,熟悉整个开发流程和各种开发工具(如git,linux,多种编程语言)。具有实际的工程开发经验。养成工程思维。
业务逻辑:开会研讨业务分析,设计的实现方法。对算法有不断的新认识。
项目总结:周四下午开小组讨论会,总结开发经验,讨论困难问题。(遇到困难,解决方法,如何提升效率,好的编程工具sublime,编程技巧,好的书籍,paper)
与其他团队的交流也很重要。比如同测试团队,要了解测试的方法,测试团队的工作内容。如何能比较好的衔接。
我个人如何带团队:多听别人说什么,在工作分配上多和下属交流。在工作分配后才能指挥整个团队工作。争执要多忍让。个人负责制,弹性工作制,无私交流制,多同外部交流制。