应该怎么管理程序员?
我是一个非常能忍耐的人,非常能忍。
事情是这样的,去年春天,由于上一个东家战略失误,导致我们部门被裁(悲剧啊),只好另寻他路,恰逢旧日总监空降到现在这家公司做老总,于是我就名正言顺的过来做嫡系部队。可等俺入职后,才发现这家公司水很深啊……。
溜须拍马的人比比皆是,竭尽所能讨好领导,有些话我听着都觉得脸红心跳,胃部翻腾。此为公司第一阵营:谄媚,技术不精,管理不强,但是嘴上功夫了得,总能讨得公司一把手二把手欢心,无所不用其极,堪比现代“和珅”。这一层人比较少,金字塔尖嘛。
公司第二阵营:埋头苦干,一心只读“圣贤书”,两耳不闻“窗外事”。这是一群被极度剥削的新人,新时代的农奴,工资在公司垫底,升职没他们,加薪更别想,技术没人带,基本处于群龙无首状态,每天得过且过。这一层人最多,是整个公司的金字塔底,任凭黄沙盖脸,毫无怨言。
公司第三阵营:技术“大牛”,是的,这群人一般都是个小头头了,管理着为数不少的第二阵营,爱好钻研技术,沟通能力基本为0,未接受过正规化训练,一件事情要反复说多次方能“略懂略懂”,平时对自己手下不管不问,老子研究高深算法,你们还是自己看书学习吧。
好吧,我来了之后就有了第四阵营:不服管教派。
先说说几件小事:1.刚来的时候,安排我进了一个开发中的项目组,让我写一个图片处理和加水印的模块,图片处理,其实就是根据用户上传的图片(像素很大,不适合网页展示),压缩成各种尺寸并加上网站logo水印,两天后,我写了一个通用的接口,传入图片的原始地址,水印地址并输入要生成的尺寸就可以了,给了他们一个打好的jar包。入口参数都用“中文”注释好了,可后面一直到一个月后,还是老是被问接口怎么用。2.其二,因为存储的图片很多,很大,项目组决定用分布式存储,选了Hadoop,这任务又被委派给我了,我一看,哥也没搞过啊,but,难不倒哥。上官网查文档,上google查资料,经过几天的折腾,终于把分布式集群搞好了,那个时候公司就一个运维,只会装系统搭路由,Linux系统安装和配置都是俺自己搞的,系统搞好后死活上不了网,又把机器从头到尾检查了一遍,去问运维,说我DNS地址设错了,试了好几个包括他给我的都不行,我不死心,去问运维,聊天的过程中无意间知道公司上公网是用路由过滤MAC地址的,果断让他查路由规则,我三台服务器的MAC地址没有一台在允许列表当中,oh,my god。好了,下面继续讲Hadoop,搭建好环境,写完程序接口后就把图片迁移到集群上,跑的还算稳定,就是读取文件的时候有点延迟。后来哥有事请假两天,打算回来解决延迟问题,可当我打开电脑兴冲冲的连接Hadoop时,timeout了,What the hell did they do?去问经理,说是我离开后服务器出问题了,项目组又没有人会,就把图片迁移回Apache,Hadoop集群关闭了。这尼玛!不是坑爹嘛!!!!公司“元老”们对我的到来表示非常的不欢迎,项目组两个月后就把我T出来了,让我自立门户,领导还专门关照我组建一个项目团队时刻准备为公司冲锋陷阵,这尼玛,整个团队就我一个光杆司令。
以上只是技术的,一个对互联网一窍不通,对编程压根不懂的副总搞了一套CMMI作为管理手段,大会小会一个周要开三天,还有N多管理上的事情,不一而足,以至于我来两个月后就想离职走人。后来想想,就这么走了太特么懦夫了,我要组建自己的团队。于是乎招兵买马,从招聘、带人,制定项目规范、代码规范,学会了js,struts(以前做软件,没摸过这些,惭愧……),从去年年中的1个人道现在的6个人,我的项目组成型了。
好了,不扯闲话了,转入正题。我有182的身高,80kg的体重,我会一些拳击,练了五年田径,可是我从来不跟人拳脚相向。在生活里一直信奉“人不犯我,我不犯人,人若犯我,先让两个回合”的至理名言,可是今天早上上班打开邮件,我就不淡定了。
公司新推出了绩效考核,特别强调要量化量化再量化,最极品的是要量化“每周”写的代码行数。其实呢,大家都懂的,工作上按时把工作计划里的工作完成,保证正常上线,其实就OK了。可这位副总,不懂不说,还特别不信任员工,不舍得权力下放。不知道去进行内部团队的构建工作,偏爱相信外面什么培训老师,今天早上,竟然在邮件里,赫然把外面老师考核项写在绩效模板里,还占了20%的比重。一个根本不在公司,没和项目组成员进行沟通交流,连我们做什么项目都不知道的所谓“老师”,竟然要给我们绩效考核的“工作能力”和计划能力打分,真是奇葩啊!!
此邮件一出,“和珅”们拍手叫好,高呼领导英明,坚定的站在公司领导这边坚决执行新规定;“农奴”和“大牛”们依然摆出关我屁事的姿态,只是农奴看书的时候把头埋的更低了,大牛们在写代码的间隙,会抬头眺望窗外,若有所思。
作为不服管教的一撮人,自然是强烈的反对,再联想来了一年了,公司对加薪一事只有书面提过,CMMI文档还躺在SVN里。我觉得快要达到爆发的临界值。
其实,我们程序猿都是很善良的,真的为了公司的项目可以整日加班,挑灯夜战,只是,时间长了,付出和回报不成正比,心也就冷了。
俺带人时间不长,不过也总结了一些方法和道理,雕虫小技,众位莫笑。
1.团队要规范:
从项目使用工具到代码规范,最好统一,有利于项目集成和维护。一个项目立项到结项,编码、测试、日志、监控、文档……,每个环节都很重要,关系着项目质量和进度,从这些环节抓规范,建立起一套良性体系,不论是对于成员还是项目本身,都是好处多多的。在项目组不忙的时候,适时的安排一些项目组会用到的技术进行钻研,写成文档并做简短的培训分享,对技术总结,口头表达和书面总结能力的提升都是有益处的。
2.成员管理:
对于新手,要用正确的方法积极引导,鼓励他们多动手,不要埋头看书,毕竟看书和实际写代码差别还是很大的,每次带新人我都战战兢兢,一开始的习惯很可能影响到他们今后职业生涯,每每想到这点,肩上压力倍增。对于老手,要善于发挥他们的长处,以此带动项目组其他成员,共同进步。平时要多关心了解组员,让他们觉得项目组就像家一样,大家都是兄弟,在攻坚克难的时候,这种团结有爱的环境对于解决问题有奇效。在公司损害到成员利益的时候要坚决和成员站在统一战线。
3.工作流程:
编程是一件需要专注去做的事情,所以在日常工作中,在不影响项目进度的情况下,流程越简单越好,繁杂不合理的流程会让项目进度严重拖延,且打击团队士气。
4.对于公司:
真的希望有些对这个行业不懂的老总能看到,不要再用你的一家之见来做出错误的管理决定,残害手下的员工了。这个行业和传统行业不同,不是请几个讲师就可以把公司管理好的,那是狗屁。每年请讲师花几万,从里面拿出一部分奖励给工作出色的员工,效果要好的多。而且我们这个群体非常善良,你不提加薪,我们很多时候都不好意思提,真的。可是程序员也是人,人心易冷,那些新人累死累活工作一年多,还拿着两千露头的工资,每天还在喊着让他们加班赶进度,可能吗,对了,现在加班费都没,晚上加班连晚饭都不提供一顿,我只能呵呵?即使你把人留在办公室,心早已不在了。
今天牢骚到这里吧,只要我在公司一天,就不能让这些不合理的东西影响到我的组员,我会战斗到底。
最后,最近研究学习Swing,得到园子里不少大牛(不加引号的哦)的帮助,俺心里十分感激,等俺学成归来,一定出个专辑,好好报答各位园友。
多谢各位建议,小弟俺现在待遇还不错(算是嫡系优待吧),只是看不惯那些“和珅”党,并试图找出自己的管理之道作为对公司乱搬乱套管理模式的回击,毕竟手下还有六七个人,我走了就真的没人带这些兄弟了,他们也不会自己争取利益,真的是很善良的小兄弟,所以在我吃饱喝足的情况下,不能让兄弟们挨饿受气。