用专业知识教育人是不够的。通过专业教育,他可以成为一种有用的机器,但是不能成为一个和谐发展的人。
---- 爱因斯坦
1. 比较不同团队的绩效评估方法,提出自己团队的绩效评估计划
虽然不同的团队模式有着不同的优缺点,大家在很大程度上都是同一级劳动者,这样就使得我们的工作团队保持一个紧密亲切的氛围。对任务进行不断的细化,使得每个人可以各司其职,共同为了一个大的目标而努力,在一个团队中谁也不希望因为自己的原因而去耽误整个团队的进度,也会使每个团队成员保持一种紧迫感。有利于团队中的每一个成员得到真正的锻炼,并学会承担责任。
2. 在团队中会不会出现 “劣币驱逐良币” 或者 “不敢犯错误” 的现象?
在大家做任务估计的时候,那些给出非常乐观估计的成员会不会产生无形的压力,让一些实事求是的团队成员不得不调整他们原来比较靠谱的估计,最后导致整个团队的估计都是过于乐观, 客观(包括比较保守和悲观)的估计都消失了? 或者,在工作中太看重失误,惩罚失误,导致无人敢冒险?
3. 走出“自我”和“当下”
在老师授课过程中,我看到不少同学还是只关注“自我”和“当下”,不善于跟别人合作,也不会估计别人会怎么想,或者估计“我们的团队将来会发生什么,我要如何应对”。造成这种现象的一部分原因是,不少同学从小就被灌输“搞好自己的学习就可以了”,“把眼下的考试考好,以后就好了”,另一部分原因是,同学们从来没有练习如何与别人合作,估计别人会想什么,估计团队以后会发生什么。
科学家认为,人类有别于其他动物的最大特点是人类大脑里有发达的部分在处理“别人在做什么”和“未来会发生什么”这些事情。能摆脱[自我/当下]而考虑到[别人/将来],从而主动为群体和将来行动,这是人和其他动物不同的地方。
在成功的大型企业中,人际交流能力和人际觉察是员工素质培训的一个重要部分,它包括如何与别人建立平等而融洽的合作关系,如何处理矛盾与冲突,如何影响同事,如何给别人的工作做评价,如何能了解别人表面行动下的言外之意、隐含的动机等等。在前文提到的“黄金点游戏”这个场景中,一位参赛者需要了解一屋子的同学大概的思路 ,如何影响他们,自己才能增加获胜的希望。如果每个人独自埋头推导公式,而不管其他人在想什么,是得不出获胜的数字的。
4. 刷课软件和刷票软件
在大学里,网上选课非常讲究时效——因为好的课程不多,大家都想上。大家也讨论过“刷课机”、“换课机”这样的小程序是否合乎道德和公平。春运火车票也是同样的抢手,那么程序员写一些浏览器插件/专用小软件去搞票是好事,坏事,还是不好不坏?这些行为应该用哪些道德/规定/法律来约束?
5. 团队如何做决定
软件开发和软件团队的生存都面临许多问题,需要许多睿智而果断的决定,一个团队如何做决定呢? 有下面几种方式,请评说各自的优缺点:
a) 独裁: 领导说了算。
优点:就是没有太多的纠纷,不容易各执己见争论不休,有着很快的进度。
缺点:如果领导的大方向有了问题,就比如一个大楼的地基没有打好,以后的路会更加难走。
b) 独裁+顾问: 领导和一些外部的顾问商量之后做决定
优点:有了参谋,就不会太武断与专横,还可以吸收各方的建议。
缺点:只能站在专家顾问和领导的角度,而忽视了团队中更多的人。
c) 民主投票:这样就产生了赢家和输家
优点:更为的公平公正,足够民主,会有大家的意见在其中。
缺点:更为消耗时间
d) 全体一致同意后再决定:皆大欢喜?
优点:大家都很高兴,皆大欢喜。
缺点:进度更慢了。
6. 团队的职业道德,用户的道德
人们生活,工作在一个互相影响的社会里,每个单个员工的道德,会影响团队的道德。团队领导的行为和决定,也会给 “道德” 做最好的说明。竞争对手的道德,会影响你自己的处境和决定。 每个消费者(用户)的道德,也会对软件行业有影响。
不做一个纯粹的“技术人员”
不做一个纯粹的“技术人员”,其实也就是说要培养自己多方面的能力,我仅仅把自己想到的一些点列出来说说:
1. 项目产品化的思想。现在就算在学校里面给导师作项目都讲究一个商业价值,更不要说在企业里工作。作为一个开发或者架构师最重要的就是要有产品化的概念,这也是项目是否成功的关键。软件的目的是为人服务,如何服务的好,那就要以一个产品的思路去做项目,而不是作为实验室的实验品,为客户提供好服务就会给公司带来商业价值,对自己的工作也会有很好的肯定。这是一个良性循环,反之则是恶性循环(多赢变成多输)。如何做到产品化,首先就是需要去了解需求,而不是布置需求,其次就是设计时多听取一些不同角色的意见,最后就是在客户的反馈过程中反省。
2. 多一些设计,少砌两块砖。代码写的再好,其实也只是用砖块砌墙砌的比较好罢了,这年代已经不会为了节省两块砖而给一个优秀工作者了,同时技术的日新月异,总是摆弄技巧,学习花拳绣腿已经跟不上时代了。多了解一些行业背景,多参与一些架构设计,将业务设计用良好的架构体系来实现,那才是一个称得上有能力的技术人员。
3. 学会前瞻,学会自己找事。记得我刚进平台组,最不适应的就是我的老大基本不太给我布置太详细的任务,这就好比进入大学,老师不给作业,自己反而心里没底了,其实自己找事的过程就是一个自己学习的过程,当我一天下来感觉没干什么,没学到什么,心里就开始发虚。如何能够前瞻性的去选择一些目标,如何对现有情况提出一些创新和建议,都是一种更高能力的要求。现在SIP组也是一样,在我们这个组里虽然现在每周还是布置一定工作,但是我对其他两个同学的要求也是希望能够有前瞻性,学会发现问题,预防问题,更甚者就是提出创新。当你具备了这种环境的时候,你就需要锻炼自己的能力了。
4. 做个让老大放心的人。这点也许很多人和我一样在业务上很早就让老大觉得可以安心睡觉了,但是其实另一方面,如何在商业角度看问题,如何培养新人,如何协调部门合作等等,都会让你的老大更加安心。另一方面来看,其实在这些能力的培养过程中,你不再局限于业务水平的提升,让自己在更多方面更加成熟。
客户第一:如果你是做架构的,作平台的,作开发工具的,那么客户就是和自己一样的开发者,多学习一下开源项目的精神,多从使用者角度去考虑问题,那么你的东西才会被更多的人认可和使用,永远不要去做一个“玩具”的开发者。如果你是做产品的,那么就多听,多想,多问,永远不要急着去写代码。
拥抱变化:敏捷开发的基本原则。互联网应用尤其如此,不要害怕变化,在需求和架构之间找到平衡点(说起来比较容易^_^)。
团队合作:一个人的力量始终有限,分享,交流,合作能够让自己事半功倍,学的更多,看得更远。
诚信:说到就要做到,做了就要做好,做软件开发一样也需要有责任感,贴满狗皮膏药的代码上如果注释是你的名字未来也会给你蒙羞。踏踏实实地用心去写代码,去设计架构,不经意间得到的要远远比那么一点工资来的多。
激情:还是那句话,你如果不爱这行,乘着年轻赶快转行。
敬业:专业执着,精益求精
公司里,管理职位普遍比技术职位的薪酬要高。追其根本,大都只是源于一句话——“千军易得,一将难求”。中国的官本位文化,并没有给基层的劳动者足够的重视和尊重。于是,一员猛将加上一群力工的技术组合遍地皆是,最后就造成了恶性循环,有技术能力的不能真正发挥优势,没技术能力拼命想成为不靠技术吃饭的人。这不是很奇怪吗?
恶性循环的结果就是技术含量低下。这也是目前市场需要的结果。中国不需要创造力,只需要快,不管能不能用,其实很多项目本来也没打算做什么实用的东西。大量的青春与梦想被浪费在了GDP上,无数个加班的夜晚,换来的是失去创造力的大脑。我们在扼杀梦想与希望。不过也许我们根本就不需要哪些。
有LV就行了,谁要真心啊。有钱就行了,一切产品、质量、测试、设计、团队、发展都是浮云。我们都是神枪手,打响一枪换一个地方。我们都是飞行军,哪里赚钱我们掉哪里。
很多人频繁跳槽,很多人频繁换技术方向,很多人频繁的换业务领域。最后年纪大了,只好做管理。好听的是什么都做过,不好听的就是什么都干砸了。
浮躁的社会,导致一切都急功近利。
虽然年轻人有体力优势,有冲劲,开发速度不慢,但缺乏底蕴和积累,感觉就好象啤酒和陈年老窖的区别。啤酒可以爽口,老窖才是可以唇齿留香的东西。
真正的程序员,不是力工,需要创造力和自己的开发哲学。这些都是需要积累的。厚积薄发,才是程序的王道。
可惜,在一个程序员真正完成成长之前,大多数就被现实扼杀掉了。一个经验丰富的牛X程序员的培养成本是很高的,但获得的收益却没想想中那么充实。不但是物质的,精神上也是。中国没有学术气氛,也就导致了专家和多莉一个级别,都是速成+克隆的。
真正的程序员,是一群很难被理解的人。好像一个苦行僧,孤独、执着、偏执、需要不断抵御外来的困难和诱惑,找寻一个蛋疼的梦想。
我尊敬那些坚持的人,也祝愿那些有志坚持的人们有个好前途。不管我在未来是否是程序员,我都会继续我的程序员的修行——学习,观察,抽象,架构,实施,再来一次×_×。