为什么要敬畏专业?

再次强调,认识到很多东西想变得专业绝非一日之功,会帮助我们在工作、学习以及子女教育上规避掉很多弯路。

我们都知道中国制造很厉害,但是很多核心技术,很多软的东西都提不起来,电脑操作系统不管是Windows, Linux和MacOS都是别人的,手机操作系统Android和iOS同样是别人的。我相信我们做不出这些东西,不是我们不够聪明,是因为除了我们总想找条捷径,不愿投入以外,还有很多人缺乏对专业的东西的敬畏,比如,我们一会儿说我们有雷布斯,一会儿说自己是罗布斯。就拿BATJ(百度、阿里巴巴、腾讯、京东),以及一些国内IT的一些大公司来说,微软、Google、苹果等这些公司离了他们几乎没多大影响,但是BATJ没有微软、Google、苹果等产品还真不行。

为什么差别如此之大,就是对专业的态度上,我们弄不弄就说自己是第一,弄不弄就是乔布斯的接班人,拿某锤手机来说,我承认有很多自己的改进,用户体验上有很多优秀的地方,但是刚入行就老说自己东半球第一,每次我都以为是东方不败,显然对手机行业的了解是业余的,迟早会付出代价的。任何行业不了解的时候,一定要向专业的人学习,对这个行业以及行业的前辈要有基本的敬畏。那些说:“没吃过猪肉,还没见过猪走吗?” 显然就是胡说,你没吃过猪肉,你怎么知道是什么味道呢?

不相信专业的人,通常过度自负,觉得什么东西都可以完全自己搞,最后要么跟守株待兔一样,要么像瞎猫一样,举几个涉及到工作、学习、子女教育、生病等例子:

  1. 工作,就拿我所在的软件行业,一些客户,你报个价格,他觉得这么简单这么贵?我自己回去找几个人来搞,这就是不敬重权威,觉得这东西就像去超市买个东西一样,刚毕业那几年,很多企业搞ERP,就是自己随便找几个人就觉得可以搞定,最后ERP变成了 (咦?哦?屁?)

  2. 学习一样,很多人觉得自学能力强,我承认靠刻苦的自学,肯定也可以不错,因为有很多人根本就不学习,但是要更好,要做到行业里的前20%, 想成为大师,如果我们相信专业,我们就需要向专业人士学习,比如和专业人士一起工作, 购买专业人士的教程,买书也是向专业人士学习,可惜很多人不愿意花几十块钱,宁愿花几十天在网上瞎找资料,更可笑的还在用百度查技术资料。

  3. 子女教育,很多人认为也是很简单的事,大师的书也不看,老师的话也不听、比自己牛的人观点也不停、自己也不成长, 我说的难听一点,那些觉得教育小孩儿自己无师自通的,也就是自己小孩儿幼儿园的水平,只是因为多活了几年,能比小孩儿多听懂几句话而已,如果你孩子将来还可以,那并不是你教育多成功,而是他后天付出了巨大的努力并且不能像父母一样的见识,另外,尤其很多孩子的父母的父母,一弄就说你不也长大了吗?我想说,现在都啥年代了,活着,像猪一样的活着,早都不是一个问题了。子女教育是个大话题,以后也是我想重点聊的,子女教育向来不是一个人的事,就算我和你自己说的很有道理,保持学习,也不一定我们的子女一定可以成功,但是可以保证的是,比我们不学习教育出来的孩子更成功,我为啥认为认识到专业性很重要,也是因为我也一样之前没认识到,吃了很大的亏,子女教育我就是小学生。

  4. 生病治疗,我们很多人不相信专业,吃了很大的亏,很多人盲目相信一些所谓的“中医”,生病不吃药或者弄些所谓的安慰剂来吃,不相信专业的科学,我们要相信,大学医学院,实验室,那么多医药企业的研发团队,不太可能某个人没有经过正规训练的,就随随便便能治疗各种疑难杂症,我觉得相信这些的人,就等于相信科学家,个大学医学院精心挑选的人,医药研发团队的是傻逼,相信大街上有一个巨大的低垂的果实没有一个人看见,碰巧让他看见了。 所以,不管是谁生病,相信我,去医院找专业的医生是唯一正确的选择,自己网上瞎看,瞎琢磨,这药不能吃,那药不能吃,最终都会耽误事。

看来这个问题如此重要,今天又聊不完了,下篇我们继续聊聊为什么专业的人是那么的专业,我们需要注意哪些可以变得专业。

坏了的钟表,一天时间也能对两次,所以做事情要学会衡量是不是这次是瞎猫碰到了死耗子。

最后,如果你觉得不错,麻烦点击好看,并转发到朋友圈,让人知道,你的三观很正。

如何做到专业

img

认识到专业的重要性,然后保持对任何能做到专业的事和人的敬畏,是我们能把事情做到专业的一个重要条件,除此之外,我们要尤其注意一下几点。

刻意练习

很多行业都需要长时间的刻意练习,大家都直到的10000小时定理,就是任何一个行业要想有所建树,都需要投入至少10000小时,当然,这10000个小时,还必须刻意的联系,比如我们学钢琴,我们开始肯定练简单的指法,然后练习简单的音阶,最后才从一级慢慢练到十级,循序渐进的长期练习。

系统完整的专业知识

我学车的时候,给我安排了一个业余教练,自认为牛逼,不按照人家驾校的体系给我教,还说的头头是道,他的理论是你最终就是要在路上开的,所以一开始你就要上路练习,由于我不会开车不了解,就觉得他说的很有道理,他带着我演示了一段路,然后由于天气热,他就在下面树下坐着,让我自己开,然后就往前开,最后碰到一个人行道,有人我就慌了,赶紧左打方向掉头,可是我肯本就没想到踩刹车,还好我也不知道踩油门,车子是怠速,然后我向左边打满了,发现打不动了,车子还没调过来,我就向把方向盘再往回打,这样我刻意往左再打一圈,可是当我往右打的时候,车子又往右偏的,随后车就撞到了路边的道牙子,还好人没事。会开车的人现在肯定觉得很可笑,但是这就看到了这个教练缺乏完整的教学体系知识。这个很多农村的人买个车找个大沙滩来练,最后一上高速,付出了生命的代价,这就是没有系统完整的知识,开车可不是学会直着往前开就可以了,侧方停车,倒车入库,会车,各种交通常识,安全意识,突发情况都需要知道怎么处理

持续稳定的把事情做正确

专业的人,就是你交给他一件事,成了,又交给他一件事,他又成了。不专业的人只是偶尔把事情做对,这没什么了不起,因为坏了的钟表一天都能对两次。我们单位乒乓球比赛,如果只比一个球,我估计大部分人都有机会拿冠军。我用人的时候,一般不会看这个人做这件事最高分有多高,我更看重这个人最低分有多高,同样一个事情,一个人一次100分,一次20分,另一个人一次80分,一次70分的人,显然我会考虑后者。

专业就是对事不对人

事都是人做的,很多时候,我们一件事情没有好的结果的原因是我们过于考虑人,而忽略这个事情本来应有的正确方式。我曾经多次考虑让一些人在公司承担更大的责任,最终效果不好,有些时候,不是他不知道这个事情怎么做,而是他觉得这个事情不好意思说,比如团队某个人进度太慢了,他总感觉不好说,某个人质量有问题,非很大劲,想到了一个非常委婉的说法,最后别人还没有Get到,我认为完全没必要,就是不要过多的考虑这些东西,事情该怎么样就怎么样,如果由于我们帮助另外一个更职业,更专业而得罪了所谓的朋友,我觉得这样的朋友是不值得交的,迟早会把你带到坑里。同样的,如果我们没让别人明白问题所在,那对那个人也没有任何帮助,一样是损失。比如,如果你承诺明天下班之前把这个东西完成,那么就是明天下午。

持续改进

专业的人,从来不会呆在原地,他们不光是把事情完成,而是总是在想有没有更好的方法。有人又要说了,那这个不是没有尽头吗?我举个我做项目的例子,和我合作过的程序员,经常会听到我一句话: ”这个地方是还可以改进的,比如XXX, XXX, 但是当前的时间和成本预算,我们刻意考虑放到下一个版本里“。 每次,我一定会去想一遍有没有更好的方案,如果找到,目前的需求和时间上看要不要用最好的方案。这就是持续改进,软件开发里面的持续重构就是做这件事的。比如财务给一堆数据的时候,能不能先给个汇总数字,然后针对这个汇总数字你的想法。而不是简简单单的丢一堆数据,还得领导自己去找去算。我们和别人沟通的时候,有没有不断的去想让对方话更少的时间来理解我们表达的东西,让别人的为这件事所化的时间走向极限,无限靠近0?

控制好情绪

专业的人做事情,不会因为心情不好,就对所做的事情大打折扣。因为吵了一架,因为路上遇到了糟心事,因为加人生病等而没法专心做事,如果这样,没人敢让这样的人做事情,因为让别人冒着巨大的不可控的风险陪你玩。

聊聊专业和业余

昨天和朋友聊天,说到一个事情,他说这个事情简单,一些业余的人就可以,我给他说很不一样,然后说后面写篇文章说一下,于是有了此篇。

img

理解专业和业余的区别,异常重要,会让我们进步非常快,不会让我们浪费如此珍贵的人生。

毕业工作很多年,如果让我说一个感受很深的体会的就是 专业业余 的区别,我想很多人都能理解这两个词的字面意思,但是要想有深刻的感受,却是不易。

就比如我们看很多体育比赛,觉得人家没啥,就拿大家经常骂的国足来说,很多人老觉得自己踢球也还可以,还不如自己上去踢,那是因为这些人没亲眼见过人家的系统训练,现场观球很多时候业余人员也不太容易看一个人踢得如何,大部分主持人说的头头有道,估计最差的足球教练都不相信他们的胡扯,20年前,还是陕西国力的时候,我就看到一个陕西国力替补球员见球迷的时候,现场颠球跟玩一样,当然不是说颠球好就球踢得好。还有人说,女足水平太厉害了,国足踢不过女足,那都是超业余得看法,国足要是踢女足得话,完全是大学生欺负小学生,职业化水平差距太大了。

我拿我自己经历的几件事来说一下:

第一个例子:我们每年公司都举行一次乒乓球比赛,而且我们公司放了个乒乓球桌,大家还经常练一练,我自己还拿过公司乒乓球比赛的第三名(业余人也不多)。我们有一个瑞典的客户在我们这边待了半年,他不太会打球,所以我们公司的中外大战,依然是大部分中国人获胜,去年10月份,那个客户说他哥哥要来西安玩,说他哥哥小的时候训练过几个月,我们根本当回事,但是结果是把我们虐的一塌糊涂,我们全公司的连发球都接不住。(下面就是他在发球)

img

所以,从这件事上充分说明被专业训练过几个月的人轻轻松松秒杀野路子打几十年的人。如果跟着业余的人做事,一定是误人子弟,一辈子不会有长进的。

第二个例子,我有一个外国客户,现在在Google, 合作了很多年,现在我们成了非常好的朋友,人非常帅气, 相信我的很多同事都知道,8年前他们给客户的报价是我们5倍左右,刚开始我一直认为是外国人对中国程序员的歧视,所以认为我们就应该低,直到有一次他和我一起编码解决一个项目问题,他做事的质量和效率让我震惊,有一个小的东西要做,当时让我们一个还算高级的程序员做,我们这个高级程序员评估了2个礼拜,我们这个程序员第二天才刚搭建好环境,估计他觉得慢了,不好意思说,就说他们的客户希望这几天就要要,他说我们来不及了,然后晚上我俩吃完饭,喝完酒,他说Jack, 我们去酒店一起试试做做这个小项目吧,然后我们就拿了两瓶啤酒,一起写这个项目,几个小时之后,我们高级程序员需要2个礼拜的东西,几个小时边喝酒边完成了,然后我被深深的震撼了,我要说人家效率是我们的10倍一点不夸张,人家的报价才是我们的5倍,人家还觉得我们占便宜了呢? 是我们很差吗?不是的,我自己很多时候也是一些程序员3,4倍的效率(根据项目完成的时间计算),但是报价连2倍都不到。

为什么有那么大的差距呢?我想说是因为专业的程度,除了写代码的速度,做事的方式,找问题,解决问题的方法等等就是有那么大的差距,很多人代码出问题的时候,需要把程序跑起来,设置断点,一个个试,人家早就用单元测试自动发现问题了, 这些人还一直沉醉在自己的这个状态中。

第三个例子,我见到了另一个国外的程序员,有幸他举家在西安待了半年,让我们两家成为了好朋友,刚和我们团队一起工作的时候,有很多我们会的东西他不会,我们还觉得有点优势,我还给他讲一些东西,很多时候讨论的时候,我们还能占一些主导,但是半年后,几乎没有我们会的他不会了,有过了两年,人家就可以自己写框架了,最近他自己成立个个人咨询公司,正在服务一个客户,报价已经是我们目前这边报价的3倍了,如果说人家为何成长的为何如此之快,我还是要说人家用的是专业的训练方法。而我们还在到处找免费的东西,天天在网上看业余的人士胡扯。

从上面你就可以看到,专业的训练用更少的时间达到了效果,然后在收入上有了很大的区别。

今天就到此为止,明天我继续聊聊专业和业余的区别,为什么认识到专业是如此重要,以及为什么我们业余。

路千万条,但你不能同时走两条路

春节期间,我在上大三的外甥想让我改一下简历,想试试找工作,同时他说也有考研的想法,我说改简历是很容易的事,关键是简历的内容,是谁的简历,至于简历格式,只要整齐就行,我还没看到有几个是因为简历做的漂亮而拿到高薪的。

我一听这个想法,大概就能猜到他是想试试是否能找个好的工作,如果不行的话,就去考研。估计很多学生是这个想法,而且很多父母也赞成这个想法,但是从我个人的观察来看,这个想法是很危险的。

原因在我看来是很简单的,我们很多时候做事都说两手准备,但是最后两手都没准备好,我多年的经验和教训告诉我,我们一段时间只能专心做一件事,就比如“条条大路通罗马”,但是你同一时间只能在一条路上,否则你就永远站在十字路口彷徨。好听点是两手准备,不好听就是三心而已。

如果我们要考研,那么我们就需要准备考研的课程,比如语文、英语、数学等。如果你考研考不好,要么说明你学习能力有问题,要么是没有认真学习,一个既不认真,有没学习能力的人,你凭什么说可以找个好工作?

如果你选择找工作,那么一点也不轻松,你需要锻炼很多能力,沟通能力、合作能力,为人处事,就拿软件行业的工作来说,很多优秀的学生大三的时候已经可以做很多有意思的东西,算法,编程等等要开始有自己的Demo或者作品了,需要刷大量的面试题。所以如果要想毕业就找份好工作,哪有时间去专心考研?

我给他的建议,就是把简历的东西先放一边,先想清楚到底是想考研和找工作,这两条路没有一条轻松的,也不存在这条路是那条路的退路,就选中一条路使劲的走,如果选择了考研,就不要羡慕别人找了个好工作,如果找工作,就不要羡慕别人考了个好大学的研究生。

路有千万条,我们这一生最终有且只能走出属于自己的一条,这就是我们给自己画的人生轨迹。

最后,如果考研,我建议他换个专业,他本科学的是通信,到不是说通信专业不好,而是我觉得本科是通识教育,大部分大学生本科里的专业课都是60分的水平,换专业最大的好处,就是多了一个学科,就多了一个看世界的角度,这世界很多的创作和发明都是有跨学科背景的,乔布斯不也是因为上了书法课而让产品上了一个层次吗?而且乔布斯一个理科生却让他的演讲让很多人顶礼膜拜,这个以后有机会再说跨学科的重要性。写到这里,有些人要抬杠了,说你不是说要专心,同一时间只能走一条路吗?是的,但我并没说不同时间不能走两条路,而且考研换个专业其实也是殊途同归,因为我们最重要的是提升自己的能力和输出价值。

领域驱动设计系列(七):领域驱动开发实践之路:我们如何从领域驱动开发当中获益

领域驱动设计,遇见你之前

我们公司推行和实践敏捷已经很多年了,SCRUM已经成功应用于大部分项目,得益与业界敏捷开发大师以及国内很多优秀工程师的分享和宣传,我们使用了很多优秀的软件开发实践,比如测试驱动开发(TDD),行为驱动开发(BDD), 持续集成(CI)等等为我们带来了很多收益。由于我们公司以做项目为主,虽然这些软件实践确实能很好的提高软件交付质量和效率,但是要想用好这些实践,涉及到的因素很多,常见的如下:

  • Scrum里需要Product Owner, 客户方很少能有一个比较符合Scrum里提到的Product Owner来定义需求为As a role I want to do something so that I can get some benefit.

  • 行为驱动开发BDD对客户方要求更高,客户需要写Specific, Scenaro, Given…When…Then. 我做过一个项目,客户开始写BDD,而且也能写出比较高质量的BDD, 但是客户后来就不写了,觉得写的麻烦。

  • 我们主要使用.NET,虽然大家都熟悉面向对象,熟悉类,接口,继承,封装等等,但是面对一个项目的时候,如何对业务就行合适的抽象,正确使用面向对象依然是非常大的挑战。

  • 由于使用敏捷,不再像之前传统开发过程中有详细的需求说明书(假定那个需求说明书及时更新,且描述准确易于理解), 强调的是可工作的软件,但是很多业务逻辑很难通过界面来体现,虽然有User story, 但是就像第一步PO很难写出符合SMART原则的用户故事,常出现的情况,就是PO说一个需求的大意,程序员就“秒懂”了,最后也确实开发出了经过验收测试的软件,但是因为有测试和Feedback的修复,这一类的需求就“丢失”了。

  • 人员变动,软件行业成员变动是很正常的现象,但是很多小团队一个萝卜一个坑,如果没有好的方法,项目的相关context就丢失了,且不说有的人走的时候没有心思做交接,就算想好好做交接,也只能是最大程度减少项目相关内容不能很好传递。

几年前,当我开始做分公司的时候,刚开始我一直在致力于敏捷的推行,好的软件开发实践的实践,很多同事的软件技能大幅提升,比如熟悉了很多Clean Code的东西,单元测试的重要性和好处,持续集成,Gitflow等的好处。但是有几个问题一直是我在考虑的问题

  1. 如何减少客户反馈的bug, 虽然敏捷强调客户频繁互动和反馈来让错误无限靠近开发的时间,但是能把事情一次做对而不是多次改对依然能大幅提高项目提交速度,也就节省了客户的成本,提高了开发程序员的效率。
  2. 人员变更时候的知识传递,虽然清晰的软件架构,整洁的代码,高的单元测试覆盖率能大幅加快新的人员理解项目的速度,但是看用户故事,单元测试以及散落在很多类中的代码(单一职责的时候,我们会有大量类,注意:这里不是说不要单一职责)对中途加入项目的人依然是需要较长时间熟悉项目和代码。
  3. 提高开发人员软件技能,提高开发效率从而提高对客户的产出,然后开发人员的薪水自然能有对应的提升是做为一个分公司负责人的第一责任,员工第一嘛!另一个方面,我认为相对简单的项目,比如一些CRUD项目,一些前端项目比如Angular/React的项目越来越没有竞争力。(注:这里并没有任何贬低前端的意思,只是说直接使用已有的这些框架门槛并不是非常高), 我们必须去接一些”不好做”的项目,也就是业务复杂,需求复杂类的,这类项目才能提升程序员的能力而且报价相对较高。

追求软件卓越,原来,我一直强调质量和效率的重要性,但是大家很难理解和应用,突然有一天,我想到(也许从别的地方看到的),软件最重要的是要解决两个问题:

  1. 做正确的事情 (Do Right Thing)

  2. 把事情做正确 (Do Thing Right)

初遇领域驱动设计

做正确的事情 (Do Right Thing)

把事情做正确 (Do Thing Right)

一直在我脑海里,然后简单的CRUD项目越来越没竞争力,程序员的报价难以提高,自然薪水就会有瓶颈,而我也想解决这样的问题,突然有一天我看到了另一句话:我选择做这件事,不是因为他简单,而是因为他难,这句话对我触动很大。我的脑海里就一直萦绕着“简单”,“复杂”,“麻烦”, 于是我要做的事情就是下面三个:

做正确的事情 (Do Right Thing)

把事情做正确 (Do Thing Right)

做难的事情 (Do Hard Thing)

我就在网上搜索Complex, Software 等,一本叫做Domain Driven Design的这本书出现在我面前,Domain Driven Design这个词语早就听说过,但是更吸引我的是副标题 “Tackling complexity in the heart of software”, 我就大概看了一下书,里面的战略设计正好提供了解决复杂业务的方法,统一语言,Bounded Context, 界限上下文,设计就是代码,代码就是设计等等。 我相信这正是解决 做难的事情做正确的事情 但是对战略有些了解,怎么去实现呢?一直没有一个好的例子来帮助大家如何使用领域驱动设计,直到一本《实现领域驱动设计》这本书的出现,才真的让我们有了打通任督二脉的机会。

实践领域驱动设计

有了《领域驱动设计》和《实现领域驱动设计》两大神器,也只是向美女要了个联系方式和家庭住址而已,中间还隔了一个漫长的日落和日出,没有正式的项目,我们永远是在岸上游泳,虽然我们也在项目里开始或多或少使用了领域的一些概念,但是我们应该知道基于数据驱动(Database Driven) 是很难成功应用领域驱动设计的。正好这个时候公司来了一个项目(客户是Fortune Global 500), 他们的架构师指定要求使用领域驱动设计,这让我非常兴奋,让我们有机会对复杂业务进行领域驱动开发的实践。

就像实现领域驱动力说的一样,领域驱动主要有两大块儿战略设计和战术设计。

战略设计 (Do Right Things)

Ubiquitous language

领域驱动开发让业务专家(Domain Expert)和开发人员一起来梳理业务,而双方有效沟通的方式是使用通用语言,在这个项目里,一开始我们就定义了很多词汇表, 就是我们自己的通用语言。

Bounded Context 和 Domain

有了通用语言,词汇表 每一个词汇一定是有边界的,不同的边界内是不一样,比如你爱人在你家这个Bounded Context是你的Wife, 但是如果她是一个老师,那么在学校这个边界里就是一个Teacher. 我们经过多次讨论,采取的方法是拆成多个子系统(Bounded Context,是不是很像现在的微服务?),每个子系统进行自治。

随后我们把一个个业务抽象为领域对象(Domain Model), 每一个Domain对领域进行自治。而模型里的属性和行为表达为业务专家都可以理解的代码,用比如Job.Publish(). 虽然这里面最终产生了聚合根、实体、值对象等,但是我们和业务专家沟通的时候尽量不要说这些词汇,比如我们可以说, 在招聘这块儿,职位是不是必须经过公司进行管理,那样我们就知道 Job是属于公司这个聚合根。 对领域进行“通用”(类名,方法名等都用自然语言表达)建模,业务人员可以直接读懂我们的代码,从而可以知道是否表达了业务需求。

战术设计 (Do Things Right)

在战术设计方面,由于业务行为和规则都在领域里,而且系统被拆分成多个子系统,这对技术实现上带来了非常大的挑战,尤其是大部分人都是有牢固的基于数据驱动开发的思想。 技术上有不同实现方式,但是一开始我们选择了“最佳实践”(实现领域驱动设计),也就是使用了Event Source和CQRS, 但是这条路是陡峭的。

Event Sourcing

Event Sourcing 就是我们不记录数据的最终状态,我们记录对数据的每一次改变(Event),而读取的时候我们把这些改变从头再来一遍来取得数据状态,比如你有100块钱,现在剩下10块了,我们记录的不是money.total=10, 而是记录你每一次取钱的记录,然后从100块开始一步步重放你取钱的过程,来得到10.

一开始,我们写的过程中,时常回想起数据驱动的好,(每次开始一个新东西的时候,是不是很熟悉的感觉?),觉得用Event Sourcing各种麻烦,直到后来随着系统的复杂性不断增加,我们才感觉到带来了非常大的好处, 这个随后单独来说。

CQRS

由于使用了EventSourcing, 对数据查询,尤其是跨业务(aggregate)的查询非常麻烦,很难像关系数据那样有查询优势,CQRS是解决这一问题非常好的方法,CQRS让查询和写入分开,把界面需要查询的数据进行原样写入,原样的意思就是界面显示什么样的,就提前保存成什么样的,类似于原来的缓存,没有任何join操作,这样查询是非常高效的。

实践领域驱动过程中面临的技术挑战

最大的挑战当然是战略设计部分 就是正确的划分Bounded Context和领域建模,这个部分这里难以几句话说清楚,只能多实践,多向大师学习,比如试试Event Storming的方式。

然后,如果团队没有任何领域驱动开发的经验,千万不要低估技术部分的挑战,并不是很多人说的技术部分不重要,如果实现不好,领域驱动很难落地。我们遇到一些典型问题,当然后来都很好的解决。

  1. 开发人员认为EventSourcing不重要,比如,原来你要发布一个Job, 你可能只需要改一个属性Job.Status=”Published”, 但是现在你需要定义一个JobPublishedEvent的事件,很多时候一次改变需要定义很多事件,比如CompanyNameChangedEvent, CompanyEmployeeAddeedEvent. 最重要的是事件的粒度如何定义?

  2. 由于根据Bounded Context拆分成一个个子系统,系统之间的交互比较麻烦。原来在一个Controller里直接调用不同的Repository来改变数据的方式就很不适用了。

  3. 由于使用CQRS,查询必须要单独保存QueryModel, 这相对传统的数据库驱动的开发方法,写和读都是同一个数据库更加麻烦。

  4. 事件的版本管理,比如事件改名,删除和增加都需要考虑重放事件重建领域对象的影响。

  5. CQRS如何保证数据的及时性和一致性,比如我在一个公司详细页面修改了一个公司名字,然后点击保存按钮导航到公司列表页面,这个时候QueryModel可能还没有更新过来,这些如何解决一致性的问题。

领域驱动开发如何让我们和客户共同获益的

  1. 做正确的事情(Do Right Things): 领域专家高效的和团队沟通,确保建立了正确的反映业务规则的模型,而开发人员有了直接可以使用的代码,而且可以因为Domain有了数据和行为,非常方便的进行单元测试,因为Domain不依赖第三方的数据存储等,可以确保实现了业务。

  2. 大大提高了沟通的效率,我们知道一图胜千言,而对开发人员来说,少废话,Show me the code! 不但代码对程序员更容易读,而且Code(领域对象)就是最新的需求. 可以跑起来的需求。

  3. 大大提高新成员进入项目的速度,最主要的是看领域模型以及对领域模型的测试,几乎就知道了系统的所有的业务规则。

  4. 领域驱动的技术部分给系统增加功能或扩展带来了极大的遍历,举几个例子:

a. 由于使用了事件溯源,我们很容易查询历史数据。我们只需要指定一个时间点,我们重放事件的时候重放到这个时间点就可以了。

b. 操作日志,原来如果我们想记录操作日志我们代码里遍布都是Log, 而现在我们只需要重发事件,想看什么日志就看什么日志,而这些就只需要我们回放数据库存储的事件流就可以了。

c. 系统之间的通信,我们只需要发布事件就可以了,其它系统订阅我们的事件就可以,我们和其它系统之间没有直接依赖。

d. 大大提高了系统增加新功能的方便性,很多时候增加新功能就是订阅事件就可以了。

f. CQRS, Query model极大的提高了系统的查询性能,而且当我需要新的界面的时候,我不需要对写入端代码进行任何修改,包括类文件都不用修改,是不是符合对修改关闭,对扩展开放(OCP)? 我们只需要建一个类似新的EventHandler,然后重放对应的事件就可以了。

e. 因为使用了事件溯源,系统之间通过事件集成,比如通过消息队列发布和订阅事件,这可以大大增加系统的**抗压能力**,我们可以把事件放入队列,后续处理系统即使不能及时处理也不会让前端系统崩溃。

f. 系统性能大福提高,在写入端只有插入操作,没有修改操作,在读取端只有Read操作,那么何须锁表,何须开启事务?由此一来,输出存储和读取的瓶颈可以大大缓解。
  1. 开发人员可以更集中的处理业务,由于一切都是事件,实现玩基础库后,开发人员可以忽略数据存储,大部分时间都是在写业务代码,不关心数据怎么存储,数据存储部分就俩操作 AggregateRoot.Get(id), AggregateRoot.Save(), EventPublish.Pubish(CompanyNameChangedEvent), 而事件订阅端只需要增加一个EventHandler就可以了。

  2. 系统很好进行了解耦,业务逻辑集中在领域中,不会像之前的开发里面业务逻辑充斥在很多地方,修改一些功能的时候,不得不如履薄冰,生怕哪里给破坏了,或者哪里没考虑全。

  3. 不用过于担心开发人员,尤其初级开发人员不正确的代码遍布系统多个部分,对其它功能的影响可以大大减低,Review代码其实主要Review业务实现的单独的类,不用担心很多技术实现部分不正确,因为基础库写好了,这样可以适当均衡团队成员组成来降低项目开发成本。

最后,系统更加容易修改和增加新功能,不正好支持了敏捷开发的“拥抱变化”吗?

总结

领域驱动开发好处多多,概念比较多,门槛相对较高,对人员要求较高,团队里至少需要有领路人,不然代价会比较大。 尤其慎用Event Sourcing, 而领域驱动尤其适合业务相对复杂的项目。 对那些很小的项目,CRUD仍然是好的选择。

最后,如果你对领域驱动比较感兴趣,欢迎如我联系wangdeshui@outlook.com

  
 DDD

拆书系列(十):《联盟》

《联盟》这本书被很多人追捧,我个人看完以后觉得也不错,提出了一个雇主和员工的一种新型关系,全书一直围绕这一观点,个人觉得略显啰嗦,也许是受我程序员的性格影响的原因吧。和这本书相比, 显然《创业维艰》这本书对我影响更大,《创业维艰》这本书直击我的心灵,而且很多场景我都似曾相识。

感悟

《联盟》强调的是重建雇主和员工的关系,让雇主和员工之间达成联盟,新的忠诚观允许公司和员工对彼此做出承诺,把过去的商业交易转变为互惠关系的框架。雇佣关系可以转换为一个联盟:一份由独立的双方达成的,有明确条款的互惠协议。

我个人对这个是认同的,原来我们也强调我们希望和员工签订的合同是一份”心里契约”,但是在中国目前这种环境,这种关系是否凑效,我觉得还需要观察,为什么这么说?我和员工建立过不少次”心里契约”,比如我们和客户一起给我们员工做了培训,我们付出了大量的精力给实习生做了培训,甚至我们每个年初都和大家谈了新一年的薪水等等,但是却多次被部分员工单方打破这个 “契约”,甚至有的人告诉我:”我知道这样很不应该,但是我违反法律了吗?”,为什么?我个人觉得是因为”信誉观”不同。

  1. 个人信誉,很多人不重视,这个从小或者教育中体现的并不多。
  2. 信誉代价,在中国,不守信誉的人付出的代价太少。欧美国家如果个人信誉差,在贷款,找工作很多方面都有影响,在中国,你这个银行办不了信用卡,却可以在另外一个银行办,你在一个公司表现很差,不是很容易被别的公司知道,原因很简单,因为你去一个新的公司,别人只是把你当个”物品”使用,依然可以能带来收入,不过好在很多好的公司,开始做一些背景调查了。

所以说,我觉得联盟是我们追求的一个方向,但是现在实际的还是需要有制定一些约束,比如如果培训如果付出了不小成本,必须签订对应的合同规定相关的义务。

不过比较好的是,越来越多的人,眼界越来越宽,格局在提升,不再只是追求暂时多点收入的不择手段,我相信联盟在中国会有适应的空间。

本书内容

几乎没有公司会直截了当地提供有保证的职位;这种保证会被员工们认为是幼稚、虚伪的,或者兼而有之。相反,雇主会含糊其词地谈论录用和任期问题:他们的目标是留住“优秀”员工,而时限是——不确定的。这种模糊性实际上破坏了信任基础——公司要求员工向其做出承诺,但不会报以相同的承诺。

许多员工的对策是做两手准备,一有机会就跳槽,不管他们在面试过程或年度考核中如何表忠心。

双方的行为方式与其官方立场公然矛盾。 由于这种相互的欺骗,双方互不信任。自然,也没有哪方会从这种关系中充分获利。雇主不断失去有价值的人才,而员工无法充分投入目前的工作,因为他们正不断地在市场上寻找新机会。

与此同时,管理者被夹在中间。他们连承认这个问题都十分谨慎,更不用说解决它了。他们不是思考如何以有远见的方式促进员工发展,而是担心如何在完成重要项目之前保证团队的完整性。 没人想冒被抛弃的风险,因此没人投资于长期关系。

许多人力资源主管和高管在培训和开发项目上花了重金却眼睁睁地看着员工在几个月后离职,难免感到沮丧。如果你认为员工是自由人,自然的反应就是削减培训预算。为什么要为竞争对手培训新员工呢?

雇主、管理者和员工需要一个新的关系框架,一个他们彼此承诺可以真正保持的关系框架。

通过联盟重建信任与忠诚

双方的承诺

雇主和员工建立的关系基于他们为对方增加价值的能力。 雇主需要告诉员工:“只要你让我们的公司更有价值,我们就会让你更有价值。”换句话说“我们将让你更抢手!”

员工致力于帮助公司取得成功,而公司致力于提高员工的市场价值。

我们是一个团队,不是一个家庭

你会开除你的家庭成员吗?不会。但你会开除员工。所以不要再告诉员工我们是一个大家庭了。相反,企业更像是一支球队,有明确的目标,队员们为了这个目标和自己的发展聚在一起,有人不合适就离开了,有人留了下来, 球队经理可以决定裁减或者交易球员

硅谷真正的成功秘笈:员工拥有创始人思维

拥有创始人思维的人会推动变革、激励人心、出色地完成任务。具备创始人思维并不一定意味着你要开办自己的公司,开创性思维在市场变化剧烈的今天尤为重要,过去的高绩效员工总是在重复着自己的工作,一旦市场变化,这些技能都将变成负债。 只需要几个开创性员工,就能带来巨大影响。

我们要鼓励员工在公司进行开创新工作,约翰拉赛特是一个被迪士尼开除的动画设计师,理由是他的疯狂想法让他无法专心工作。乔布斯雇佣了他,制作了玩具总动员。后来皮克斯被迪士尼用70多亿美金收购,约翰拉赛特成为迪士尼首席创意官。

任期制:培养开创性员工的利器

将员工在你的公司职业生涯规划为一系列连续的任期,你可以更好地吸引和留住开创性员工。

在每一段任期中,管理者和员工都要制定一个任务目标,让双方都能长期受益。任期代表雇主和员工对某项具体任务的道德承诺,任期制让雇主和员工建立信任、相互投资,也保留了雇主和员工适应变化的灵活性。

诚实地谈论任期

向他们说明,先有工作将如何为他们创造改变职业轨迹的机会,他们的责任是利用在这里的工作经验抓住这种机会,为自己创造长期价值,这种价值将在他们离职后的职业生涯中体现的最明显。

公司里的三类任期

轮转期:针对高度可换的岗位,提供标准化培训,通常针对入门级员工。

转变期:个性化设计的一个时期,核心承诺是员工将有机会改变自己的职业生涯和公司,一般来讲一个任期2-5年。

基础期:雇主与员工保持高度一致性,员工认为这是他最后一份工作,雇主也希望这名员工一直干到退休。

协调员工的目标和公司的目标

你的任务是根据员工的具体任务目标而不是他的全部生活进行协调, 你不需要无条件地支持员工的价值观和理想,但你必须尊重他们。目标协调的三个步骤是:

1.建立和传播公司的使命和价值观。

2.了解每位员工的核心理想和价值观。

3.合作协调员工、管理者与公司的使命和价值观。

最终,一致的兴趣、价值观和目标将增加公司与人才之间维持长期稳固联盟的概率。

如何执行转变期计划

1.开始对话,确定目标。

——任期的整体目标是什么?

——成功的任期将给公司带来什么?

——成功的任期将给员工带来什么?

2.定期检查以交流反馈。至少每个季度要进行一次双向对话,既检查员工的贡献,也考量公司的帮助。

3.在任期临近结束前,开始制定下一个任期计划。管理者和员工制定公司内的新任期计划,或者,双方都认为员工应该去另一家公司任职。

如何处理任期中的意外

如果员工愿意在公司内部换一个岗位?那就通过对话安排好交接,结束一段任期。

投资在员工的人脉上

1.聘用有人脉的人。问问面试者“除了你,你认为我们还应该招入哪位重要人才?”

2.教会员工如何通过交谈和社交媒体从人脉中发掘情报。

3.执行有助于员工建立人脉的计划和政策。包括:鼓励员工使用社交媒体展示自己;为员工建立人脉基金;为员工社交参会提供方便;在公司办公室举行活动。

4.让员工与公司分享他们了解的信息。比如每周有半天时间交流各种信息。

打造终身联盟:前同事联络网

投资于同事联络网的成本远远低于想象,而回报则远远高于想象。同事联络网能帮你雇到优秀人才;前员工能提供有用的情报;前员工能推荐客户;前员工是你的品牌大使。

1.决定同事联络网的成员。删除掉存在纠纷和法律道德风险的前员工。

2.明确定义与前员工关系的期望和收益。常见的方法有:员工推荐奖金、产品折扣和测试白名单、举办活动、为前员工颁发荣誉、向前员工通报最新消息等。

3.建立周详的离职机制。在离职面谈中与员工巩固终身关系,收集信息进入数据库。

  

拆书系列(九):《创业维艰》之关注眼前的麻烦

如何最大限度减少办公室政治

我所说的政治,是指员工在职场进阶的过程中,依靠手段,而非业绩和贡献为自己谋取空间。

几乎所有的办公室政治都是由公司老板开的头。你可能会觉得委屈:“我讨厌政治,不爱耍手腕,但是我的员工们却乐此不疲,这跟我他妈没有一点关系。”

其实你错了,公司内部的办公室政治并不在于你本人是否爱耍手段。而事实上,正是那些缺乏政治头脑的老板们却常常带出一支善于勾心斗角的队伍,因为他们常常在不经意间助长了公司内部激烈的政治斗争。

办公室政治是如何产生的?

公司CEO无意间对政治行为的鼓励或放任,往往是办公室政治的源头。

就拿给管理人员定薪酬为例来说吧,如果那些资深员工时不时地找你要求加薪,示意你他们的所得远远低于应得,甚至暗示你他们手头还有别家公司伸出的颇具诱惑力的橄榄枝,你会怎么办?

如果对方的要求合情合理,你也许会酌情考虑,然后给他加薪。这种做法听起来无可厚非,但其实你已经就此为办公室政治的蔓延埋下了祸根。

这样说吧,你对员工的加薪对促进公司的发展没有任何作用。员工获得加薪是因为他提出了加薪的要求,而并不是因为他真的工作十分出色。

你这样做的后果有三个,我们来一一分析一下。

1.公司里其他跃跃欲试的员工很快就会照葫芦画瓢,因为没有不透风的墙。无论是这一轮竞争者还是那个先吃螃蟹的人,加薪与否都与工作表现和能力无关。你花时间考虑的,不是对方的工作业绩,而是政治问题。最终,这些资深员工的加薪标准将演变为:先到先得。

2.仅仅因为对政治手腕不敏感,公司里那些默默奉献的员工将无缘这份计划外加薪。这对他们来说,是一种极大的不公平,轻则忍气吞声,重则直接炒你鱿鱼。

3.你的员工从此次事件中总结出:会哭的孩子有奶吃,会耍手腕的员工有钱赚。于是乎,你手下的员工都开始跟你玩手段、耍手腕了,准备做好听他们的集体嚎哭吧。

如何将办公室政治的发生率降到最低?

招聘员工时,要衡量对方的野心有多大。

每个人都有野心,但并不是每个人都是天生的野心家。那些以公司的发展为依托,从而实现个人职业发展的野心是恰如其分的,是无可厚非的。与此相反,那些只关注个人成功而将公司利益置之不顾的人拥有的野心却是非常的不当的。

建立严格的流程来防范潜在的办公室政治,并认真执行。

  • 业绩评估与业绩奖励

  • 机构设置和职权划分

你需要做的,是定期考量公司的机构设置,搜集所需的信息,在下属还没发现任何预兆的时候就做出决策。决策既出,立即执行,不给小道消息和流言蜚语留一丁点儿机会。

  • 员工提拔

在提拔某个员工的时候,他的同事肯定会揣摩他受重用的原因。究竟是因为业绩好呢,还是会耍手腕呢?如果答案是后者的话,那么他们很容易产生这样的反应:觉得自己不受重视,从而跟被提拔的员工对着干。

  • 当心道听途说

所以,作为公司的一把手,你必须考虑到自己的言行在全公司的影响和可能会引发的蝴蝶效应。千万不要因为自己的言行,而助长公司的不良风气。

适度的野心

在组建管理团队时,大多数新创业的公司都倾向于把“智商”作为选拔人才的主要标准。然而,一支智商出众但野心过盛的团队却不会对公司发展做出积极的贡献。

从宏观的角度来看,只有当资深主管们把集体成就放在个人成就之上,从全局角度而非个人角度来考虑问题时,这个公司才有可能实现利益最大化。公司利益的最大化就意味着个人利益的最大化。不然,零的1%还是零。

主管的野心指数应保持在适当的范围内,这一点相当重要,因为这是维系员工工作积极性的一个重要前提。如果一个主管对于个人前程的关注超过了对公司业绩的关心,那他手下的员工一定会想:我干吗要加班加点地为这家伙卖命?最能激发员工积极性的做法莫过于让他们怀揣使命感去工作,让他们相信这份崇高的使命值得他们把个人抱负暂放一边。所以说,能将理想抱负控制在合理范围内的主管比那些野心勃勃的家伙更有价值。

以“团队”为出发点来考虑问题的人说话时很少使用“我”,哪怕是在谈论其个人成就。在面试中,他们总会把功劳推到从前的合作伙伴身上。相对于工作待遇和职业发展,他们更关心这家公司的实力。如被问及为何离开上一家公司,他们往往会把责任归咎于自身,检讨自己判断力不佳而做出的错误决策。

彼得定律和坏榜样法则

彼得定律:意即在一个集团中,员工只要表现出众,就能获得提拔,直至被提拔到一个他不能胜任的岗位。

坏榜样法则:依据该法则,一个团队内部无论哪个层面出现了滥竽充数的人,他们都会像蛀虫一样影响其他成员,最终使得能力出众的人也渐趋平庸。这条法则的原理就是:员工会拿他们上级中能力最差的那个人做参照物。

超级混蛋

只有聪明还远远不够。出色的员工同样还要能吃得了苦,担得住事,并且善于和团队成员和睦共处。

公司需要选拔大量头脑灵活且责任心强的员工来发现机构运作中的漏洞,并协助解决这些漏洞。然而,有些头脑灵活的员工不但帮不了公司,反而会给公司制造更多的麻烦。出现问题时,他们不是立即找出其中亟待修复的漏洞加以解决,而是拼命挑毛病,以凸显自己的高明。具体来说,他会质疑公司的前景,贬低公司的领导者,以此来衬托自己。有这种习惯的员工越聪明,产生的破坏力就越强。也就是说,聪明人产生的危害性会达到最高点,因为人们对聪明人往往坚信不疑。

他们为什么这么做呢?

  1. 寻求关注
  2. 天生叛逆
  3. 思想不成熟

一个公司是由集体的力量造就的,员工如果不能成为这个集体中值得信赖的力量,那么无论他的个人能力有多强,对于公司来说都是没有价值的。

恶狗咬人咬得才狠。如果你跟前有这样的恶狗,你就必须早做了断。 (这个我深有体会,今年就碰到了一个CW的恶狗)

该不该招资深人士

创办技术型公司,意味着你自此开始了一段和时间赛跑的艰难旅程,这段旅程将持续至你生命的最后一刻。没有哪一家刚刚创业的技术型公司能摆脱产品“保质期”这个魔咒。再伟大的想法过了期就会一文不值。

任用那些曾有过相关创业经验的人可以加速成功的进程。

聘请资深人士加盟新创业的公司,有点儿像运动员为提高比赛成绩服用兴奋剂。如果使用得当,你有可能刷新纪录;如果使用不当,你就会一败涂地。

首先,要求他们顺应公司的企业文化。他们来自不同的公司,拥有不同的企业文化,而且有些企业文化的确比你公司的更胜一筹。但要记住,现在他们是在你的公司就职,那就必须接受你这里的文化,适应你这里的办事风格。 在这个问题上,不要因为对方资格老而轻易让步。坚持你的原则,推行你的企业文化。

其次,制定一个清晰明确的高标准工作要求。

你要先确保自己的员工出类拔萃——不管是新人,还是老将。不能只满足于对方比你更胜任这份工作,因为你聘用他们就是为了让他们做你不擅长的事。

  

拆书系列(八):《创业维艰》之有效的人力资源管理

具有讽刺意义的是,管理技术部门最先懂得:一个管理出色的质量控制部门无法生产一款高质量的产品,却能告诉你产品研发团队何时生产了一款质量低劣的产品。类似情况是,一个高质量的人力资源机构无法给你创造一个管理完善、企业文化成熟的公司,却可以告诉你,你和你的管理者何时没有尽到职责。

招聘

  • 你非常清楚每一个公开职位所需要的技能和才干是什么吗?
  • 你的面试官准备得充分吗?
  • 你的管理者和员工有没有向求职者积极介绍公司的情况?
  • 面试官们能按时到场吗?
  • 管理者和招聘人员会及时联系应聘者吗?
  • 你能和最强的公司展开强有力的人才竞争吗?

报酬

  • 就你公司的统计数据而言,你享受的福利合理吗?
  • 和与你展开人才竞争的公司相比,你的薪水和股票期权福利如何?
  • 相对于你的薪酬制度,你的绩效排名如何?培训与融合
  • 聘用员工之后,从该员工及其同事,以及管理者角度而言,他需要多长时间才能体现出生产力?
  • 加入公司之后,员工需要多长时间才能清楚公司对他的期望?绩效管理* 你的管理者会给予自己的员工前后一致、清晰明确的反馈吗?* 你公司的书面绩效评价报告质量如何?
  • 你公司所有的员工都能按时收到自己的绩效评价吗?
  • 你能有效地管理工作表现不佳的员工吗?

#工作动机

  • 你的员工来上班时激动兴奋吗?
  • 你的员工对公司使命怀有坚定的信念吗?
  • 他们每天喜欢上班吗?
  • 有没有员工消极怠工?
  • 你的员工清楚公司对他们的期望吗?
  • 员工们是安心留在公司还是辞职人数比往常更多?
  • 员工们为什么辞职?

有效人力资源的几项要求

流程设计师

人力资源主管颇有点儿像质量监察部门的主管,他必须精通流程设计。准确衡量重要管理流程的一个关键是,看其是否具备出色的流程设计和严格的流程管理。

真正的外交官

没有人喜欢打小报告的人。如果管理团队对其缺乏完全信任,人力资源部门不可能有效地开展工作。管理者必须相信,设立人力资源部的目的是帮助自己改进工作,而不是对自己进行监管。优秀的人力资源主管会真心实意地为管理者提供帮助,不会因为发现了问题而大肆表功。他们会直接找管理者解决问题,提高管理质量。 如果人力资源主管将自己的知识深藏不露,玩弄权术,或搞阴谋诡计,那他就毫无用处。

行业知识专家

薪酬、福利、最佳招募方法等变化极快,人力资源主管在行业之中必须建有深厚的关系网,对所有最新情况了如指掌。

CEO信任的智慧顾问

感觉灵敏的人

当公司管理质量开始下滑,所有人对此毫无觉察,但感觉极其敏锐的人却能察觉出公司正在走下坡路。你需要这样一个人。

  

拆书系列(七):《创业维艰》之招聘

可以从朋友的公司挖人吗?

这里的朋友是直:

  • 重要的生意伙伴
  • 朋友

从朋友公司挖人的一个理由经常是:反正他们也在找新工作。

替你的朋友想想,这个时候他肯定在为公司的生死存亡而奋战,没有什么比失去一个优秀员工而让人伤心,而且其它员工会把这当做公司没落的征兆,更让你朋友觉得打击的时,他其它员工会认为连他的朋友都挖他的墙角。

思考这种动态关系有一个简单的方法:如果你丈夫离你而去,你希望自己最好的朋友和他约会吗?他肯定会和其他女人约会,所以,让你的朋友得到他难道不好吗?这看似符合逻辑,但其实并非如此,你肯定会失去朋友。

1.除非该员工极其出色,否则你无论如何也不要从朋友的公司挖人。

2.“挖人的反身性原则”:某公司挖走你的几名员工,会让你惊恐震惊,那么你就不应该挖他们公司的任何员工。

3.制定政策:将那些规定未经CEO(或高级主管)同意,不得雇佣其员工的公司名单列举出来。在录用前,要保持公开,并与其所在公司的CEO进行沟通,对他进行背景调查。

4.当你告诉你的朋友从他公司挖人了,就意味他都不如这名员工对你重要,别指望你们还能继续做朋友。

处理这种情况的最佳方式就是公开透明。看清了雇用出色员工和背叛珍贵友谊之间的矛盾之后,你就应该将事情公开,告诉员工,你和他现在所属的公司有重要的生意往来,在录用他之前,你必须和他所在公司的CEO进行沟通,对他进行背景核查。告诉他,如果他不同意,你会立即中止录用,并对此保密。在录用之前,要和朋友进行交谈,这样才能更好地判断录用他的员工对你们的关系所带来的影响。此外,你还有可能避免用人不当,因为往往有些应聘者在面试中表现极佳,但进入公司之后,表现却不尽如人意。

如何避免大公司主管难以胜任小公司工作的情况发生?

第一,在面试过程中将具有破坏性的不匹配情况筛选出来。

雇用一名大公司主管之后,你会面临两种危险的不匹配情况:

节奏不匹配。

这样的主管已经习惯于等待邮件到达,等待电话铃声响起,等待会议被安排得井井有条。在你的公司里,他会长时间处于等待状态。 如果这位新主管总在等待(根据他自己的受训经验),其他员工就会充满疑虑。你会听到这样一些言论,如那家伙整天都在干什么?

技能不匹配。

管理大公司需要的技能和创建新公司大不相同。管理大公司时,你往往对这些任务比较擅长,例如复杂的决策制定、次序优先、机构设计、流程改进,以及部门交流。创建公司时,没有机构需要设计,没有流程需要改进,部门之间的交流非常简单。但同时,你必须能够非常熟练地实施高质量的招聘流程,具备丰富的专业领域知识(你自己负责质量控制),懂得如何从零开始创建流程,而且在把握新方向、制定新任务方面要非常有创造力。

如何筛选?

你可以询问如下几个问题:

1.“你上班第一个月会干什么?”——如果答案是要用一个月去适应和了解,那么这样的人不要聘用,因为小公司没有那么多需要了解的。

2.“这份新工作和你目前的工作有什么不同?”——挑选那些能意识到工作差异的应聘者。

3.“你为什么要加入一个小公司?”——想加入你的公司的正当理由是渴望变得更加有创造力。

将新人的融入和面试看得同等重要。积极帮助新人融入公司。

1.促使他们积极创造。每日、每周,甚至每天给他们制定目标,确保他们做出相应的贡献。

2.确保他们明白自己的职责所在。如果30天后,你觉得他们还没有掌握情况,就要毫不犹豫地解雇他们。

3.把他们放入集体。给他们列一份他们需要认识并向其学习的员工名单,并要求他们提交一份汇报,汇报自己从这些人身上学到了什么。

在没有招聘经验的时候,怎样才能招到优秀的人才?

知道自己要什么

**你必须意识到自己非常无知,不要妄想仅靠面试应聘者就能学会如何招聘。虽然面试过程对你可能很有启发意义,但将其当作唯一的知识来源却很危险 **。这样做会让你很容易落入下面的陷阱:

第一,凭外表和感觉聘人。

第二,挑选与众不同的人才。
你会想象一个完美的主管形象,然后把实际应聘者和你理想中的形象进行对应。这一观点之所以错误有以下几点原因:首先,你不能雇用一名想象中的主管来管理一个充满可能性的公司。你必须为处在其次,你想象中的主管形象往往都是错误的。你设想的这个形象的基础是什么?最后,让招聘团队理解这么抽象的一套标准极其困难。其结果是,每一个人都想在应聘者身上寻找与众不同的东西。

第三,看重的是应聘者身上没有弱点,而不是其长处。经验越丰富,就越清楚公司里的每个员工都有严重的缺点(包括你自己)。金无足赤,人无完人。因此,招聘时要看重应聘者的长处,而不是其身上没有弱点。每个人都有弱点,只不过有些人身上的弱点比较明显而已。因为其人没有弱点而对其加以聘用意味着你将愉快感作为优先考虑的因素。当然,你必须清楚自己需要应聘者具备什么能力,然后找出具备这种能力的人,忽略他在其他方面的弱点。, 当然人品差的人就不要录用了。

想知道自己需要什么样的人才,最好的方法是在该职位上亲自体验一番。 不是名义上的,而是真正履行职责。 CEO往往不愿意干职能性工作,因为他们担心自己缺乏相应的知识。这种担心恰恰是你应该干这类工作的原因——学会相应的知识。的确,亲自体验是获得招聘所需要的所有知识的唯一方式,因为你要为公司寻找合适的主管,而不是普通主管。

第四,引进专家也十分有益。

如果你认识一位出色的销售主管,先和其进行面谈,了解他获得成功的原因,搞清楚他的哪些能力最符合你公司的需要。如果可能,将该领域专家纳入面试流程。不过,要注意,这些专家并不完全符合招聘条件。也就是说,他对你的公司缺乏了解,不知道公司的运作模式以及公司的需要。因此,不能将决定都推给专家来做。
最后,你心里要清楚自己对加入公司的人有什么期许。这个人在第一个月会做什么?你期望他加入公司的动机是什么呢?你想让他立刻扩大部门规模,还是在下一年只招一两个新人?

控制招聘流程

1.写下你想要的能力,以及你愿意忍受的缺点

一名主管很可能收到其它团队成员的喜欢,但工作起来却毫无效率,同时他也可能工作十分高效,影响十分深远,却受到大家的鄙视,但是后者明显要很多。

2.设置检验招聘标准的问答题目

3.组成面试小组

4.秘密调查和公开调查

单独做决定

只有CEO能全面了解招聘标准,制定招聘标准的基本根据,面试官和应聘者推荐人反馈回来的所有意见,以及各类持股人的相对重要性。

  

拆书系列(六):《创业维艰》之员工培训

我们都知道,员工培训是非常重要的,可以让员工尽快具备岗位技能,也对员工个人成长大有帮助,不过风险就是,在中国这个市场环境里,培训很可能就是为别人做嫁衣,好不容易你辛辛苦苦带人,投入大量精力和成本培养人,最后别的公司直接拿去用,比如你付出了巨额的成本,但是别的公司仅用你培养成本10%的涨薪就可以轻松把有些人挖走,虽然被挖走的人N年后还是一样继续原来的那点积累(因为不想自己培养的,也别指望你去了会培养你),但是公司却实实在在遭受的损失,所以对那些还在花力气培养人才的公司,我们要怀着一份敬意,如果所有的公司都不愿意培养人,而是直接去挖,那么行业将慢慢无人可用,我今年招了几个社会实习生,有几个就是来蹭培训的,后来意味自己学了很多东西,在我看来只是刚刚学了几个API,还没入门就要远走高飞,我只能祝他们在新的岗位上能大放异彩吧。

为什么要进行培训?

  • 培训确实能够提高公司的生产力,也更容易推进绩效管理,提高产品质量。
  • 培训非常有利于员工留任。

员工离职,排除一下经济原因,公司的业务原因,工资原因之外,下面有两个常见的原因:

第一,他们讨厌自己的管理者。 缺乏指导、 职业发展前景不明朗、 收到的反馈多为负面的,这些因素通常会令员工感到惊恐不安。

第二,学不到东西:公司没有投入资源,帮助员工学习新的技能。

如何对员工进行培训?

最好的培训导师是CEO本人,作者写的很多培训文件至今还在被人们使用。比如:好的产品经理和坏的产品经理。

1.职能培训。最好从与员工最密切的话题开始:胜任自己工作所需要的知识和技能。培训具有强制性。

2.管理培训。为管理团队设定期望时,管理培训是最佳着手点。这些课程会告诉管理者如何按照你的期望办事。

3.其他培训机会:邀请各路精英,分享自己的拿手技能。与谈判、面试和财务等相关的培训不仅能加强公司在这些方面的能力,还能鼓舞员工的的士气。

管理者只有两种方法可以提高员工的产出:激励和培训。