24前入行的中科院大神经历

作者:yi bbbian
链接:https://www.zhihu.com/question/50516672/answer/121917292
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

说一下自己的经历,92年参加工作,专业是软件工程,那时候这个专业还是很牛的。号称高科技。到现在整整24年,现在还在做开发。不过已经很少编码了。最近刚换了工作,开始了一个新的起点。哈哈,很少想到已经47了,是一个大叔了。
92年参加工作,到了中科院的一个研究所,做操作系统的,当时一个屋子里8个人,6个研究生,年龄都是在30岁左右,还有一个是合肥科大的本科,比我早一届,而我呢,只是一个普通大学的本科,压力山大。6个研究生中,有4个是北大第一批的软件工程的研究生,(他们之前国家是没有软件工程硕士学位的),你想一下吧,这帮家伙是77,78,79的本科(清华、科大、北大的),然后读研,然后一起工作,我当时去的研究室是做操作系统,unix,这都是一帮什么牲口,说他么是百里挑一都是少的,千里挑一估计差不多。我去了1年后,这些家伙做出了一个操作系统,叫POSIX,似乎是这个名字,说简单点就是内核是Unix,但可以在上边跑unix程序也可以跑DOS程序。在当时是没有人做个这个东西的。鬼使神差到了这么一个单位,本科做的那点东西在这里就是一个渣。(我本科的代码大约是3w行左右)。于是我的码农生活正式开始了。

1码农7年
说实在的,我也是一个懒人,很少考虑未来,吃了不好亏,不过好在自己还算努力,也有贵人相助,所以现在还算不错。很多事情已经很长时间了,记得不是很清楚,写一些自己的逗逼的故事和获得的感受吧。

毕设

我的第一个项目有三个部分,一个是unix的link代码的理解,这个是我 的毕业设计。牛逼不,不光当时压力很大,一个是没有经验,没有资料,只有代码。辅导老师有自己的项目,只是给我在主机上注册了用户,其他的事情基本没有管。其他的事情都考你自己了。

A:进入机房,感觉自己很高大上,要换鞋,有工作服,当时用的hp9000,在学校的时候是60个人用一台hp3000,卡的要命,现在是一个人一台9000,50个终端你随便用,那种感觉就像乞丐进了阿里巴巴的宝库。记得第一天上机的时候登录了一个终端,下午就可以使用两个终端,第二天就开始使用了三个终端,后来基本就是使用5个终端(当时的终端是字符终端,读代码遇到函数,不想切换,于是干脆多开一个终端),于是每天上班的时候,你都会看到整个机房只有我一个人,在各个终端前滑来滑去。

B:说一点题外的话,当时还是计划分配工作,托人进了这个单位,老妈对我说三句话,一句是,我和你爸都不是搞科研的,现在给你送到这个单位,后边的事情要靠你自己努力了,第二句是工作了不像在家里,手脚勤快点,爱干活的人别人才喜欢,第三句中科院牛人多,但没有人有义务教你,关键看自己。别让自己闲着。

C回到正题,当时见老大(室主任)。老大说得很简单,毕设就是阅读理解link源代码,读明白了就写毕设,正式工作就是移植link代码,能干下来就留下,否则滚蛋。滚蛋、滚蛋、滚蛋。就是这么直接、粗暴,求我当时的心里阴影面积。

D当时不知道老大(室主任)从哪里搞来了UNIX C源代码,全部代码,我的工作就是读link代码,于是第一件事情就是将link代码全部打印出来。一万八千多行,将近400页,换行打印纸,装订好。于是我的码农+搬运工的生活正式开始了。

E:当时每天的工作流程是这样的,8点到单位(一个人都没有),打水、烧水,收拾一下桌子,抽烟,泡茶、看一会儿书,大约8点半的时候自己上楼进机房,除了喝水、上厕所基本不出来。然后就是中午吃法,吃完饭,看老大他们打牌,到一点半准时上路,再下楼就是5点半了,然后是参加室里的棋牌活动,7点回家吃饭,然后接着读代码。

F:当时工作遇到最大的问题就是没有资料,你想一下吧,没有互联网、没有手机、没有软件工程的书、甚至没有unix C的书,微软c 2.0的书倒有,可惜除了基本语法,和unix没有太大关系,所有的资料就是那一万八千行的代码。而我阅读的效果并不好,说实在的就是在原地踏步。知道遇到了老陈。

G:老陈是那100个研究生中一名,不爱说话,微秃。他是每天固定去机房的不多的几个人,每天上机大约是4个小时。不过玩棋和电脑打俄罗斯方块的时候可以看出老陈是一个反应极快的人。那时老陈抽的是2毛一包的无嘴春城,而且烟量很大,我有时候可以搞到好烟,经常散给他们。当时也不是拍马屁,简单说就是烟酒不分家。哈哈,一个偶然的机会,和老陈一起回家,他问我毕设的情况,我简单说了一下,balabala。。。。简单说就是不知道如何读代码。老陈听完,说了几句话:1从头开始读,你现在读乱了,找main从头开始,
2写注解,英文不好就写中文,
3分层读,不要一下就读下边的东西,先搞明白上层的逻辑,
4不懂的地方就猜,猜完写注解,后边发现错了,就改注解。
简单几句话,当时不是很理解,第二天去单位,尝试按照老陈的方法重新开始。牛,效率提高很多,毕竟原先还是仔细干了点话,很快将原来的代码梳理清楚了。效率提高了很多。

H:老陈是我第一个教我工作方法的人,也是第一个在技术上吊打我的人,哈哈,后来我在单位做Ingress培训,也是看了半个月的资料,老陈当时已经是我的室主任了,借去Ingress资料看了半天,然后开始给我讲Ingress和Oracle的差异。靠就半天的时间,他讲的东西我知道一半,其他还没有来得及看,更无法做到比对系统优缺点了,于是又被吊打。被老陈吊打,后来被他的弟弟小老陈吊打,这些事情以后慢慢说,后来终于有机会报仇的时候,已经是将近10年后的事情,哈哈,慢慢说。

I:老陈教的方法很有用,后来看代码的时候,很多代码总觉得似曾相识,写注解、猜测、反复、阅读、修改错误,读不懂就先放下,一遍一遍来,每一次都有新的理解。后来毕设的了优+,说个好玩的,我的毕设是在单位答辩的,为什么,我的题目拿回学校,没有人懂,只能在单位答辩,当时觉得自己可牛了,不过正式工作后就开始被正式吊打了,而不是老陈这种友情出演式吊打了,哈哈

J:老陈教的方法,后来用于吊打别人,使用过两次。一次是一年后,单位来的新同事,修改通信程序代码,两周搞不定。将老陈的方法告诉他,然后带他读了300行。后来这哥们2天拿下代码。还有就是14年后去航天智通,当时做测试部门负责人,测试终端嵌入软件。C代码,C的程序有很多错误,而且不贵是随机的,很难重现,而开发人员经验比较少(研究生刚毕业),于是开发和测试吵得不亦乐乎。回来后,我告诉测试人员,第一上摄像头,所有问题都录制下来,第二给我代码,当时刚换工作,事情比较多,其他测试人员也帮不上忙。但毕竟经过长期训练,于是读了2周,下一次PK,我亲自上,bug报告不认,好办,逐一视频演示,还不认,看代码,一行代码,一行代码说,可能产生指针错误的一个一个指出,最牛的就是将核心代码(核心函数的代码没有给我),做什么用的,参数是什么,起到什么作用逐一列出,当时将这个项目的主管(一个博士)惊着了,这是他的核心代码,连他手下的工作人员都没有,后来的事情就简单,开发人员逐一修改自己的错误。

K:说实在的,开发人员是一个很单纯的群体,有自己的骄傲,但都是讲道理的,如果他认为你说的对的,就会无条件去做,我自己和开发人员PK过无数次,无论输赢,一旦大家承认结果,都会努力去做自己的工作,给人背后下绊子的有,但说实在的,那些人我真不认为他们的做开发的。在后续的工作经历中会说很多非技术的事情,都是这类事情。

L:说几个小老陈的故事吧,小老陈,老陈的弟弟,我刚到单位的时候,单位有一个事情,就是东北有一个企业做了一个项目,用的是Oracle,出现了一个问题是数据检索速度很慢,当时单位没有做过这个东西(92年,当时有人玩FOXBASE,oracle还处于养在深闺人不识的阶段),于是我们室的老大悬赏找人,老陈说他弟弟会,请来,副主任带他去东北,一天搞定,公司赚了10万,给小老陈5w。5w,在92年是什么概念,我们室主任工资是450.回来好奇,问是什么问题,原来东北的哥们觉得数据库数据比较多,看书发现加索引会提高速度,于是就开始加索引,可你别所有数据项都加索引呀,加索引也是要耗费资源的,越加越慢,越慢越加。小老陈去了,看了一下,于是将所有索引去掉,一切OK。小老陈因为这个事情,在单位算出名了,后来特招到单位,这个家伙比他哥哥还牛,开始,我做操作系统,他做应用,后来他改做API,然后做操作系统,做编译器,06年因为单位出现很大变化,他和我都离开了单位,他去微软面试,直接将他的面试官干掉(他的徒弟就干掉过一次,他是第二次),去Sun也一样,两个公司的offer都拿到了,可他老人家都没有去,问他原因,告诉我说,微软中国和sun(中国)都不做内核和编译器。所以不去。后来去了一家台湾的公司,做内核去了,12年的时候,我们单位要做安卓,当时公司没有人了解,我去问他,老人家一句话,那个东西不难,底层是Linux,上层是Java,哥们明白了吗。明白了,咨询结束。

不知道小老陈是否算是成功人士,如果单以金钱来衡量,他肯定不是。他应该是一个GEEK吧,一个是人比较聪明,一个是专注,如果一个程序员只完成自己手头的工作,而不愿意搞后面复杂的原理,他只能是一个码农,而如果下功夫去学编码后边的理论,了解事情原理,才可能脱离码农的地位。而这需要专注和时间,小老陈对技术的专注到什么程度,举两个例子,一个是这老人家每天晚上12点回家,没有人强迫他加班,是他自己愿意在单位。不是一年,是将近15年的时间,第二个是他夫人(也是我的同事)当时怀孕8个月,让他回家做饭,老人家11点才回家,说了一句我累了,明天要开会,然后倒头就睡了,他夫人这个时候还没有吃饭呢。为这类事情,他夫人没有少抱怨,我们也没有少吊打他,哈哈,对了忘说了,成为geek'最好娶一个善解人意,勤劳能干好夫人是很重要的一个事情。

M:做毕设的事情,还有一个事情,我最早找单位做毕设的时候,不是后来去工作的单位,是中科院的另外一个单位,叫化冶所,那个单位有一个国家实验室,做双向流模拟显示。后来因为要去后一个单位做毕设,就将化冶所的毕设项目让给我一个哥们,那个哥们不喜欢编程,而我不能让这个事情做砸了,所以也一直在做这个事情,化冶所项目有一件得意的事情,还有一个震撼了我一生的事情。先说得意的事情吧。当时做的东西是一个双向流模拟程序,具体算法记不得了,好像是从试管两头有不同的颗粒吹入,然后粒子做布朗运动。粒子之间会有弹性碰撞。开始比较顺利,50个粒子的时候,计算、显示都没有问题,但随着粒子的增多,计算速度明显降低(大量的浮点数运算),显示效果明显有问题,最后基本不可使用,后来用了387芯片,有提高,但速度还是不行,后来想了办法将计算和显示分开,计算归计算,显示归显示,一下子解决了这个问题,牛逼吧。其实很简单,就是先计算全部显示的数据后保存到一个文件中去,然后,专门做一个显示程序,由于数据已经全部计算完毕,只要专心显示就可以了,而且由于只有一个读盘操作,一个显示操作,所以,即使大量颗粒的运动对于显示的影响不大。这个事情当时很让我嘚瑟了一阵,毕竟解决了一个当时谁都没有办法解决的问题。这个项目后来还获得了一个什么奖,不过那时我已经离开了实验室,和我没有什么关系了。(这个项目最大的关键是颗粒碰撞的模型,这个是专业性很强的问题,我当时的碰撞公式用的是最简单的弹性碰撞公式,后来他们又做了很多改进,不过显示那个地方没有在动,哈哈)。

震撼的事情就是发生在化冶所这个国家实验室,一天晚上,我正在coding,快下班了,来了一个老头,穿着很普通,拿着一个老式的书包,看见我在用计算机,就问我一些计算机的问题,很简单,开机、关机、dos命令,wps的使用。当时因为搞定了几个问题,心情不错。所以就巴拉巴拉给老人家讲了起来,老爷子一边听,一边拿笔记录,态度很认真。送走老人家,问旁边的工作人员,那个老人家是谁,工作人员告诉我,他是郭慕孙,郭慕孙,郭慕孙。老所长。我靠,这是和三钱一批的牛人呀,老院士,竟然和我一个半吊子的本科码农对计算机应用方面的问题进行了长时间的“深入探讨”。这个待遇是很多他的学生都没有的。


郭慕孙_百度百科
这个是郭老的介绍,说实在的,当时刚本科毕业,又是学的软件工程,当时算高科技,而且去中科院工作,当时觉得自己牛的不行,不行的,偶遇郭老的事情,当时对我是一个极大的震撼,不是郭老的学识,而是他的态度,对知识的态度,对其他人的尊重,从哪以后虽然偶尔还会装逼,但不敢太嘚瑟,这个世界能人太多。

好了最后说两个事情就结束毕业这个专题吧

第一个事情,还需要说一个牛人,是我单位的,姓王,我们都叫他王大拿,王大拿的特点就是代码狂人,上边我说过我们机房几乎没有人,除了王大拿,在我的心目中王大拿不是人,是个神。说他是神,是因为只要是计算机方面的问题,没有他不知道的,我的乖乖,不仅仅是技术问题,集成方面的、趣事没有他不知道的,当时遇到问题,问别人有不知道,最后就是一句话,问王大拿去。当时做shell命令移植,有问题,无解。当时屡受打击,自信不足,知道王大拿一定会,但不敢去问。一次抽烟的时候,问老马(副主任,我最尊重的老领导),老马告诉我,问王大拿问题,需要准备几个事情,第一,你能否描述清楚问题,第二你有没有解决方法,第三你想让你获得什么东西,这三个东西你没有搞清楚,就不要去问,否则自取其辱。于是自己回过头来,开始捋问题,记得当时捋问题的时候,实际自己已经有三个解决方法,各个方法都是各有利弊,但自己倾向第一种方案,但为什么,不是说的很清楚。三个问题准备好之后,就鼓足勇气冲了上去,一口气将三个问题说完(紧张呀,面试都没有这么紧张),好在毕竟经过了准备,而且我的答案得到了王大拿的认可,然后给我讲原因,balabala。。。。。回来后颇为得意,哈哈,我还不是笨蛋,竟然和王大拿的答案一样(被打击怕了),首次得到认可,颇为自得。

如何提问题,其实学问很深的,很多人不会提问题,特别是刚工作人,老马教我的方法,对于提高自己的水平意义很大,后来和高水平开发人员交流的时候,作为初级开发的我,经常会捋问题,搞清楚后再问,而且这么做有一个好处,就是强迫自己想答案,想方法,现在很多问题都可以上网问度娘,而我们当时没有这么好的环境,很多问题都要自己想,不过的确很提高自己的水平,所以,建议大家遇到问题的时候别上来就问,而是想一下自己如何解决,再去查资料。

说两个王大拿的笑话吧,王大拿结婚,嫂子是一个能干的人,也知道他的特点,所以家务一般不让他干,结婚的时候,买床,床架子大了,床垫小了,嫂子说,你想办法,我出去办点事。王大拿研究了半点,决定将床横架子锯短,而且从中间开始锯断(折半查找?)。嫂子回来一看,晕菜,床架完蛋了,中间断了,根本无法受力(中学物理问题),新换的床垫也没法用了,(嫂子其实去换床垫去了)。只好重新买。第二个是我的亲身经历,一天老马给我100元,让我去参加一个产品展示会,和老王一起去,目的两个,一个让我见见世面(老马对我一直很照顾),另外一个是将王大拿安全带去带回,没有听错,在北京,必须安全带回,带回的标准是到单位门口,只要到单位门口,王大拿就知道怎么回家了(当时没有手机,丢了就麻烦大了)。为了方便我将王大拿带回,可以打面的。这是第一次用公款打的的经历,记忆深刻。发布会没有听太懂,伙食不错,毕竟第一次去五星级饭店吃自助餐。不过王大拿就像带了一个小尾巴一样,我是永远跟在他后边。

第二个事情,还是被吊打,在化冶所,不过这次是被清华的学生吊打,在化冶所那个国家实验室做项目的时候,有一个事情,当时有一个绘图仪,买了有一段时间,但没有人用,需要写一个驱动,当时实验室的老大问我是否可以处理,我看了一下,说不会。这个事情其实不难,用C将原来的驱动包起来就可以了,而我当时之所以没有做,其实是畏难,总觉得自己是学软件的,硬件的东西不懂是名正言顺的,老大没有说什么,让当时清华的两个实习的学生做了,2周搞定。那是两个大二的学生,而我已经是大四了,很没有面子,后来看他们的程序,的确不难。如果当时自己仔细看看资料,做几个实验其实可以做的,但因为畏难,丧失了一个机会,后来的技术生涯中遇到很多这类事情,慢慢学会了尝试,学会去闯。每一次冒险其实都是自己的一次蜕变。最后的收获是在我进入交通行业那10年了,在哪10年,给老板闯了不少祸,但也成就了自己和公司。

毕设半年,最大的收获是见识了外边的世界,也做了一点事情,如果收最大的收获是什么,恐怕就是打掉了我的傲娇之气,后来在中科院干了14年,也总是觉得知识的欠缺太多。这十四年学了很多,也丧失了很多机会,是好是坏,谁有说的清楚。

补充:
我父母都是中科院的职工,但不是研发人员,我的同学里很多人的父母都是搞科研的,所以我接触计算机比较早,考大学的时候,我是为数不多知道自己专业是做什么的人,而且自己也喜欢这个专业,所以一直在做码农。工作以后大家碰到的问题,我几乎都遇到过,所以看到这个题目就强答一下,但如果只是简单写几条,一个是说不清楚事情,第二大家也不愿意看,所以啰啰嗦嗦写了一堆。只是希望对大家有一点借鉴的作用。奉劝大家几件事情,

1码农这个职业道路是很艰辛的路,最起码要精通两个以上的行业,所以如果对编码不敢兴趣的话,最好早做规划,可以做市场、销售、管理等等,毕竟35岁以后转行是太难、太难了。

2作为一个好的码农,要知其然知其所以然,不能只会使用工具,其实后边的机理更重要,老陈他们之所以能看半天书,就和我balabala讲两个数据库的差异,是他们对后台机理有足够的积累,这个事情不是一天半会的事情。

3好的码农要能耐得住寂寞,互联网大潮,出现在前台的技术码农少,多的是商业奇才,即是技术大拿又是商业奇才毕竟是少数。

4好的技术,还需要好的应用,毕竟是通过应用体现出技术的价值,所以码农们不要只谈技术,而不管应用。

第一个横向项目
中科院原来做的都是纵向项目,很少横向项目,所谓纵向项目就是国家项目,比如我们室做的那个操作系统。横向项目就是应用项目,比如给企业做一个信息管理系统。一般来说横向项目技术含量低,纵向项目技术含量高。在这里有一个事情要说明一下,中科院做了很多事情,但多数没有推向市场,有一些是因为无法推向市场(比如数学所的一个具体算法),有一些是因为中科院的体制无法推向市场。比如我们做的很多产品就无法给回扣,还有就是在体制内只有管理和研发,没有生产和销售、市场。你想让技术大拿们去推销,靠。这事靠谱吗?反正我在中科院是干过软件研发,集成(拿着电钻到客户那里去打孔布线),生产(自己到电子配套市场买零件,然后焊板子),销售,推销寻呼卡的编码卡。而我的本职是码农,是码农。。。。这些坑慢慢填。。。。

好了,说第一个横向项目,独山子乙烯信息管理系统。说简单就是一个小mis。当时可要算大项目了。90w。这项目是自动化所一个博士交过来的,博士去那边做自动化项目,客户一看,呦,博士,中科院的,牛人,做自动化项目,我们这里刚开始建设,要不您先帮我们做一个信息管理系统,这个系统做好了,咱们接着做自动化系统,您是博士,这个东西不是问题吧。得,博士被架上去下不来了。一咬牙,做。我不会,其他所还不会,没有问题,用Oracle,这是最新的数据库,关系型的,很牛,你们这个信息系统不是问题。啊呸,你博士没有问题,你不是做软件的,听说了一个做Oracle是数据库就敢用,92年呀,这个时候是92年,最牛的数据库是什么,是DBASE 3, foxbase。DB2和Oracle型数据库很少在应用系统中用,博士真敢干。于是回来,找到我们单位,做软件的,根红苗正。 我们室老大一看这个项目不错,不错,价格不错,不过让搞操作系统的做这个事情实在太屈才了,看看有没有合适的人,于是非核心团队人员中找找,最后,一个北大的研究生(不是那100个,是后边来的),一个清华本科(5年工作经验),一个刚毕业的邮电大学的研究生,还有我的一个师哥。没有我,自信心受到了一万点伤害,当时我很想参加这个项目,毕竟原来读大学的时候做过一些小应用。而且当时我的项目刚结束,处于无事可做的状态(中科院做项目,忙时忙死,闲时闲死,当时不懂自主学习)。私下找老马走后门上项目。哈哈,可以参加,不过是打杂,做什么,做报表的表头。不过总算进去了。

这里做一个科普吧,当时做mis系统是一个大工程。为什么,当时PC使用dos,没有汉字,字符界面,也就是无法画图,如果用汉字,ok,先将界面设置成图像界面,然后调入汉字库,通过拼音获得汉字在字库的位置,取点阵,一个点一个点画上去,输入框要一个一个定位置,画上去,菜单就不要想了,也是一个一个画,菜单点击后出新界面,要先重新设置图形界面,清除原来的内容,在将新界面一个一个画上去,所有的输入合法性检查,全部自己编写。哈哈,你想想这个工作量吧。那个时候做Mis系统是要先造砖头,再盖房子。

背景介绍完了,吊打开始,猪脚还是清华的那个五年工作经验的家伙,我们叫他苏sir,这个家伙在项目中完成了吊打全组工作人员的艰巨任务,配角是北邮的那个家伙,这个家伙完成吊打我的任务,其他人都是龙套,有一个反面角色,就是北大的那个哥们,我们叫他张二明白,哈哈,这个家伙不善于做开发,其实是一个好的市场人员,性格很好,可是编码,实在是个渣,被所有人鄙视,这个项目后,他再没有做编码,后来做市场做的很牛逼,这是一个选错行的例子,先让他完成他的角色吧。

事情很简单,小马写菜单,苏写报表功能(修改、汇总等等),我师哥写Oracle的sql,二明白写输入界面。我听命于苏sir。做表头。2个月,所有人都说完成了工作,加班不用说了,记忆深刻的是,当时的报表都超长,多长,不记得了,但超过了255字节,当时wps编辑的话,是有个最大长度限制,Wordstar,对长度没有限制,但输入中文有问题,所以,我只能先用wps输入汉字,在用wordstar去排格式,估计现在没有人搞得明白这两个工具怎么用了,总之,麻烦死了,一旦有一点格式的变化,就要重新排,苏sir的格式总是变,我就不断重新排。开始他忙着自己的事情,只要我做出来,就不管我,后来发现我工作效率极低,不明原因,问我怎么做的,我展示了一下做法,老人家一句话,你怎么不编写一个程序(工具软件),这个不会呀,(当时的确土鳖,没气死苏sir,想想也真不容易)。靠,等两天给你一个,苏sir说完就忙他的事情,一天后给了一个程序,先定义长度,在定义宽度,然后在各个位置输入汉字,和特殊的边角字符。靠,活还可以这样干,试用了一下,效果极好,不用wps了,不用wordstar了,就算出问题(bug还是有的),大不了重新启动程序。不完美,但工作效率提高将近十倍。关键是不累,加班也变成了陪他们调试,看书了。程序是为人服务的,如果能省力就编码吧,这是第一次体会代码的力量,但当时没有意识到。

好了,大招来了,我们预计12月3日去新疆,现在还有1周多一点的时间,需要开始联调了,结果出问题了,输入界面根本无法使用,无法使用,无法使用。编译链接的时候,输入界面一堆问题和警告,怎么回事,不是说那个代码已经完事了吗?当时哥几个都傻了,一问那个负责界面输入的哥们,哥们说,写完了,没有编译,但写完了,我勒个去,编码不编译,不调试。我们所有人都醉了。

没有输入的系统还是系统吗?少几个报表不怕,还有时间修改,输入没有,这个系统根本无法运转起来,我是来打酱油的,我没有办法。大家没有办法,找室老大吧。老大一听,大怒,但没有发火,找苏sir商量,苏是牛人,但因为是本科,不好管研究生,(这个你懂的),这个时候也顾不上了其他的了,要来代码先读,一个晚上,第二天上班一看他先来了,这不是他的风格呀,一问,原来一晚上没有回家,赶紧上烟,倒茶,再问情况,回答是,原来代码乱了,不能用,要重新编码,第二是中午给你个程序,帮我做输入界面(输入参数,但看不到效果)。ok,没问题。苏sir的话就是命令,我一个打酱油的一定负责好拿瓶子,买酱油的事情还是交给大拿吧。

中午,给我了程序,开始盲输,但还是尽心了,最起码行列坐标什么的都不能错,二天以后第一个界面出来,我的奶奶呀,总算有盼头了。

又加了几天班,老大决定我和二明白先过去,苏Sir和我师哥再做几个界面,然后过去。于是我开始第一次出差准备工作。

(以下是休息时间,段子开始)
在准备去新疆的时候,我在硬盘上装了一套系统,晚上要走的时候,闹病毒了,系统无法启动,当时如果用软盘杀毒,一旦出问题,估计到新疆就可以休息了,没有办法,找苏sir,dubug杀毒,逐个扇区修复,你现在该知道这帮牛人的能力了吧,2个小时搞定。对技术细节的掌握,以及对原理的掌握是创造奇迹的基础呀。

去新疆是坐飞机去,当时坐飞机是要单位开证明的,高工待遇呀,当时做火车到新疆要72小时,我们周六走的,结果一去机场,飞机误点,没有办法只能等,后来被拉到一个宾馆,继续等,最后等了三天,开始吃自助餐感觉不错,后来实在吃不下去了,问了一下,要晚上走,于是在周一的时候,哥俩杀回单位,吃了一顿食堂,遇到所有人第一句话都是,你们不是去新疆了吗怎么在这里?,哈哈,吃完立刻回去,晚上12点飞机,3点到,大巴车拉到火车站,想住宾馆,贵,不敢住,无法报销,(当时工资很低,负担不起),于是到火车站的录像厅看了一晚上的录像,第二天,买车票去奎屯。二明白人不错,写代码是渣,但其他方面还是很好的,我第一次出差,什么都不懂,基本上就是看包,他承包了所有的事情,在这里要感谢他,后来,我们基本上不让他做代码和开发,其他事情他基本全包,让我们过得很舒服。人呀,只要放对了地方,都是不错滴。。。。

到了奎屯换车去独山子,住招待所,我们待的地方不是独山子城里,是一个新建区的招待所,晚上除了我们两个和服务人员(大约10来个)方圆10公里内几乎没有人,那叫一个安静,第一次去的时候,因为头天没有怎么睡觉,连晚饭都没有吃,倒头就睡,第二天,六点起床已经睡了13个小时,起来找吃的,没有一个人,人家都在睡觉呢,三个小时时差,当地时间相当于晚上三点,上哪找吃的去,真饿呀。工作之前很少出去,第一次体会了时差的威力,你不要怪我见识少。

第一次做飞机感受很深,哈哈,去新疆一共2次,三趟飞机,一趟软卧,这都是高工的待遇,第一次坐飞机感受最神的是飞机上可以抽烟,整个旅程烟雾缭绕,而且座位旁每个人有个烟灰缸,估计又有人要质疑了,哈哈,当时的确可以的,当时安检很简单,回程的时候我们带了20把英吉沙小刀,过安检也没有问题。现在如果再这么干,估计直接进局子了。

新疆的雪是不化的,我在北京,如果下雪,一般在3天内化干净了,但新疆的雪一直不化,我们住的地方人少,从招待所出去,往外走几百米,基本就看不到人的脚印了,但雪地上留着很多动物跑过的痕迹,很多,不知道是什么动物,四周无声,有点瘆人。

新疆本地的羊肉串很好吃,当地人将两个大桌子并排放在一起,然后在上边堆满切好的羊肉,旁边的人一边串肉,一边烤肉,一边卖,这回真是见识到了什么叫肉山。当时比较傻,以为新疆的羊肉串和北京的一样,怕拉肚子,一直不敢吃,最后一天,别人请客吃了一次,太好吃了,但已经没有机会了,虽说吃了一个肚圆,但总觉得很遗憾。

新疆人喝酒很厉害,简直是要命,一次当地一个小伙子陪我们(18岁,刚上大学),将我们四个全部撂倒,人家没有事情,后来和他哥聊起这个事情,他哥鄙夷地看了我们一眼说,我弟能喝?别开玩笑了,我们喝酒是不让他上桌的。还有一次,五个人一起喝酒,下酒菜就是水果糖,瓜子,全桌只有一个酒杯,一个喝完了,下一个喝,你不喝可以,但后边的人都等着你,也不劝,全都眼巴巴地看着你。

新疆生活很滋润,哈哈,说几个事情,当时给他们做了一个工资系统,他们的工资项极多,基本工资+各种补贴要40多项,北京,我父母中科院的单位,基本20多项就搞定了,但新疆不是,各种补贴,基本上工资都是400往上,这个在全国来说绝对是高水平的。而且当时新疆土特产品运不出来,都要当地消化,记得刚去的时候,他们一个人员请我们吃西瓜,12月吃西瓜,在92年,这简直让我感觉见了鬼了(你别拿现在的物流做对比,当时北京到南京市24小时,现在是4小时),元旦的时候,对方单位发爱国羊,说我们卖给老毛子的羊,老毛子检疫不合格,被退货,只能自己消化,要求全体员工买爱国羊,去头尾、内脏、皮的整羊,一只9元钱。

说一个知识分子被踩的事情吧,这是一个很牛逼的事情。在距离我住的地方2公里的地方有6个大型煤气储气罐,每个300吨吧,一天,一个本科刚工作的哥们去测量罐内温度,本科在当时的新疆是个稀罕学历。可是,你老人家倒是按照规章流程去操作呀,不知道这哥们脑袋进什么水了,直接弄漏了,液化天然气直接泄露,是液体呀。这哥们一看情况不妙,撒腿就跑,你跑个屁呀,这东西要炸了,估计整个独山子就平了。危机关头,方显英雄本色,还是带班班长和副班长(两个男的)带领当班的8名女员工带着纯铜扳手直接冲了上去,先灌水(水的比重大,这样就不漏气,改漏水了),然后直接堵漏,大冬天的。我不在现场,也不懂化工,方正人家堵好了,据说当时没有一个哆嗦不上的,也没有什么豪言壮语,就那么直接冲上去了,让人敬佩,真英雄呀。结果,本科直接辞退,谁说情都没有用,其他人表彰加提工资,这个事情,想想真让人后怕的。这个事情可以总结几条经验吧。

A学历不代表能力,后来我的工作历程遇到过很多牛掰的本科,SB的博士。(另外要注意,从群体能力来说,博士》研究生》本科》专科),但我们工作接触的都是个体,所以在你招聘的时候不要仅看学历。

B做事情要有危机意识,这个是研发人员比较薄弱的,确切的说,因为软件搞死人的事情我们遇见的比较少(有,但你不是做特殊行业软件,基本上不会有机会搞死人),但不是说可以没有风险意识,想想有多少次你的代码被误覆盖了,有多少次你的数据被误删除,有多少次用户来参观,你的系统宕机了。

C不要看不起那些级别比你低的人,很多时候这些人往往决定你的系统的成败(这里有一个坑,在做公交的时候,司机和调度决定你的系统的成败,后边填)

最后说两个二明白的事情,二明白编码是个渣,但做其他事情很牛,我们去新疆的时候,客户提出要我们做五笔字型培训,道理很简单,你们是做计算机的,五笔字型是计算机用的,所以你们一定会,让你们培训一下很正常,不培训就是看不起我们,巴拉巴拉,,,,,哥几个开发没有问题,五笔可就麻烦了,不是不能学,关键是不愿意学,二明白这个时候挺身而出,这哥们也牛,买了几本书,直接就开始拆字了,天天拆,到处拆。上飞机的时候还在拆,其执着让人佩服。培训的时候,二明白拆得那个爽呀,结果客户哪里,那个科室都有他的学生。办事方便之极(不过二明白五笔输入速度极慢,哈哈)。二明白的家学是很牛的,他老爹是杨振宁的同学,杨在文章是这样写的,当时有8名童鞋,其中六人都记得姓名,还有一个实在记不起来,那个想不起来名字的人就是二明白的爸爸,哈哈。这是当时他给我们讲的笑话。

好了逗逼结束,说点正经的事情吧。
这个项目是一个失败的项目,说它失败是因为项目最后没有真正使用,也没有挣到钱,管理有问题,调研有问题,人员使用都问题多多,但这个项目对于我来说是极为重要的项目。还是按照标号总结吧。

A:这个项目,对我做的工作做一个总结,开始,我做表头,后来做汉字显示,一共写了187行代码,当时苏sir没有使用我的代码,后来他告诉我,通过看我的代码,感觉我的逻辑还可以,不像二明白那样,(取得核心技术人员认可,是你在一个新单位立足的基础),后来让我在新疆做工资系统,就是这187行代码的功劳。等我搞定了工资系统,他最后将整个系统都交给我了,(苏sir,师哥,小马后来都出国了,那时出国是个捷径,特别是软件人员)。所以,告诉刚参加工作哥们一个经验,踏实、肯干是基础,技术是阶梯,要一层一层爬,有时候即使在做一些无聊的工作,也要尽心,其实别人都在旁边看着呢,有时候关键时刻随便一句话,真就决定你的未来。

B:相对编码来说,架构更重要,当时不是讲架构,没有这么高大上,我后来接手的时候,发现代码是动态编程,而不是静态编程,什么叫静态编程,举一个例子,让编写1+1等于几的程序,最简单的方法就是,写一个打印语句将结果打印出来,OK。你的确完成任务了,可是你要换一个数怎么办,再改数、重新编译,执行。麻烦否?这就是一个静态的例子,动态是用两个变量,弄两个输入框,做合法性检验,然后计算出结果,打印出来,这样整个程序就灵活多了。当时菜单是可以配置的,输入界面是可以配置的,输出是可以配置的,统计功能的表头是可以配置的,修改这些东西的时候,实际是修改参数而不是编码,这极大简化了我的工作,接手工作主要是读代码,明白后,基本就是体力活,所以接手还是比较顺利的,不要小看一个动态编码的概念,1999年的时候我们做广电的项目,用这个概念在web实现概念,简化了很多工作量,后来做公交系统的时候,拿这个概念做报表统计,效果也不错,现在的BI其实质也是这个东西,当然,有了很多的扩展。

C:关于基础结构的用途,再举个例子吧,我们本科做过一个课设,软件工程这门课的课设,做一个图文混编编辑器,当时有两个做法,第一个招数是抄,另外一个是自己编,我们哥三个是自己编写的,功能很简单,图形可以画点,线,圆,矩形等基本功能,文字能在随意位置输入文字。这个东西我们做了半年,真的半年,界面剧难看,但功能都实现了,开发工具用的是turbo C 2.0。具体的开发历程不说了,当时设计这个程序的数据结构的时候很用了一番心思,也有了图层的概念雏形,哈哈,有点自得,关键是所有的设计和编码都是在无外力帮助的情况下完成的,所以对很多东西的理解还是比较深刻的,后来工作的时候有机会接触CAD(我们单位开发了国内第一个CAD系统叫PICAD)和地理信息系统的时候,对很多概念和实现的原理以及系统的限制就很快就能明白了。

D:我们当时没有互联网,甚至没有资料,很多时候需要自己琢磨,不象现在内问度娘,外找google,但这样的环境其实有一个最大的好处就是逼迫你思考,也就是对你的思维方法的训练极有好处,现在资料多,查找方便了,但总觉得现在的开发人员重视的是对知识点的训练,而对思维的训练相对弱。通过自己的努力,在绝境中求生,这种成就感似乎越来越难获得了。

E:说第一个失败的原因吧,没有调研使用环境,我们是在dos上实现的系统,而用户使用的XENIX系统,这个是unix在微机上的一个变种,当时客户用计算机最主要的功能是打字,而一个主机可以配10个以上的终端,也就是一台机器可以当十个机器使用,可我们的开发的是dos上根本无法使用。这个问题一直没有解决,后来是借了几个机器安装我们的系统,能跑的起来,但用户直接问我们其他的终端怎么办,我们只能大眼瞪小眼了。

F:第二个就是开发环境选型失败,当时最合适的开发环境应该是foxbase,一是当时这个系统可以在用户的xenix下使用,而且开发简单,其实找一个老鸟带三个刚毕业的本科,足可以保证技术,而且当时的信息系统都是比较简单的,FOXBASE足可以满足用户开发的需求,而我们 竟然用c和Oracle,有点用大炮打蚊子的感觉。

D:缺乏管理,不要怪我们,当时管理,特别是软件工程和软件工程管理在中国基本是一片空白,市面上基本没有软件管理方面的书,我本科读软件工程这门专业课是没有课本的,你相信吗?前一段时间收拾屋子,发现我当时看的一本书是软件工程-开发法者的实践指南,竟然是第一个版本,没有正规图书的出版号,是一本油印资料。所以整个项目的管理是盲人骑瞎马。

E:客户教育,哈哈,这个事情实际在每个项目都要做的,记得当时客户问我一个问题:我买了十几台机器,要我30多万,你们几个软盘就要几十万,怎么这么贵,哈哈,就是这个环境,在机场遇到一个姐们,是民航做系统的,要给其他机场安装软件,她遇到的奇葩的事就更好玩了,他们头规定感冒的人不让进机房,为什么,怕你把病毒传染给机器,哈哈,别笑,这是真事。这还是在北京,民航系统内的技术人员的乐事。不要埋怨客户,毕竟闻道有先后,术业有专攻。但如何做好客户引导是一个很重要的事情。(又是一个坑)。

F:印象深的一个事情,就是如何对待客户,当时客户不是很配合,所以我们经常没有事情干,当时晚上加班,所以我经常在早晨补觉,一天睡得正香,一个客户的老总来了,问为什么项目没有推进,当时被叫醒后也有起床气,就冲人家发火,你们的机器都没有准备好,让我怎么装,当时觉得自己很委屈,也很牛逼,老总走了,下午准备好了机器又来找我。这个事情后来被室老大知道了,痛骂了我一顿,记忆深刻,任何时候到不要向客户发火,任何时候到不要向客户发火,任何时候到不要向客户发火,后来再也没有发生过这类事情,想想那个老总,心里其实挺佩服他的,他是乙烯工程的技术主管,而我只是一个小萝卜头,为了工作,竟然忍受我的脾气。现在想起来还想抽自己嘴巴。

G:第一次出差回来后,我开始接手全部工作,之所以这样,一个方面是因为自己的表现,更主要的是因为那哥三个想出国,哈哈,不是我牛,是被逼到这个份上的。于是开始加班,在国营单位,一般元旦到春节期间是没有什么活的,而我们第二次出差是安排在3月3日,也就是春节之后,于是其他人都走了,我在加班,那个时候苦呀,部门换了一个大房间,相当于两个教室大,可是有一个玻璃碎了,数九寒冬,暖气不足,穿着大衣,屋子里一点热气都没有,买了一个大果珍杯子,放热水,暖和一下手,接着敲代码,(当时用PC开发,不进机房了),唯一的好处是工作效率高,肯定无法睡觉,唯二的好处,CPU散热一定没有问题。

送一个段子吧,12月28日回北京,机票当时已经托乌鲁木齐的人订好,我们27日从独山子出发,但没有车,早晨6点出发,要在9点赶到奎屯火车站,当时客户想送,我们装逼,以为有出租车,结果出租车去乌鲁木齐了,(全市只有一辆),于是我们只能11路了,当地晚上三点,两个壮汉,身背2个大包,在漆黑的夜里顺着公路飞奔。路上很静,只有远方传来的狗叫声。二明白对我说,看前边的灯火就是火车站,不远,走。目标越来越近了,到了,二明白告诉我,不是这个灯光,是再前边,再走,到了,还不是。考,到底在哪里,二明白告诉我就是前边,冒热气的地方,这个时候已经将近8点,进城了,人也多,冒热气的地方到了,这是车站,的确是,我几乎要累瘫了,二明白是个很聪明的人,我们当时走了14km,二明白怕我走不了,于是给我先设立了一个小目标,不是一个亿,不是2个亿,是5公里。雪地、深夜、无人的野外、一条大路还有前边的那个小目标。。。。

H:第二次去新疆,我已经是骨干了,活全部是我在做,当时去了四个人,我,我的师哥、我的一个师弟(新参加工作的)、博士,那个博士终于出场了。当时我每天的时间安排是中午12点起床,吃饭,下午去调研,晚上饭后和博士几个人商量工作,然后就是自己加班,什么时候干完了什么时候算。无条理地说几条感受吧。

1前期的问题,不要拖延,否则就是做完了也是死,当时没有项目经理,没有人拿主意,前期实际问题已经暴露,如果后边换成FOXBASE开发,其实这个项目还有救,但壮士断臂这个决心是很难下的,所以客户关心的核心问题一直没有解决,直接导致这个项目的失败。

2项目的成败和开发人员的成败是两个概念,有时候项目失败,但对开发人员可以说是成功的,拿这个项目来说,我完成了开发工作,而且工作态度和能力都获得了认可,这对我在单位立足是很重要的一个事情,这对我后来在短时间内(一年内)成为一个及格的研发组长是很重要的一个事情,还有一点,就是当时虽然出了很多糗事,犯了很多错误,但比同时期的人员要早走了一步(直接面对客户),很多事情从不知道,进步到不明白(发现问题,有时候比解决问题更重要)。虽然还是还是很二,但有一点开窍了。敢干,敢尝试新东西,比懂得某型技术要重要。

3身份、背景在项目开始介入的时候是很重要,但最主要还是要给客户解决问题,带来效益,否则你身上的光环会一层一层被剥去。(下一个项目由于干的好,被光环加持了,挖坑先)。博士因为这个项目问题,最终没有搞到他的自动化项目,

4做软件项目和做软件开发是两个事情,简单说做软件项目的范围要远远大于软件开发,比如我们做这个项目,数据输入就是一个大问题,客户不想输入基础数据,我们也没有能力收集和输入数据,这也导致了这个系统最后无法使用。多说一句,项目管理比研发要麻烦很多,有时候开发人员往往抱怨项目经理和市场人员,其实他们也是没有办法,毕竟是他们从别人兜里掏钱,多理解他们吧。

5做开发人员不要太随性,哈哈,说一个我逗逼的事情,晚上加班,有时候完成的早,但很难睡觉,太兴奋了,哥三个都在睡觉,外边也没有人,就想玩会游戏,那个游戏叫台海大战,战棋类游戏,当时以为他们都睡着了,没有人知道,后来我师弟告诉,醒了,看见我脸上花花绿绿的,就知道我在happy,也知道我辛苦,就没有说什么。因为玩游戏的事情,在后一个项目还和领导闹过误会,当时因为我们是嫡系部队,所以老大还和我们说,我也有机会解释,而很多时候是没有机会解释的。你的辛苦往往被一次随性给毁掉,可惜之极。

最后送一个趣事吧,大家对二明白比较感兴趣,再说一个二明白的糗事吧,因为二明白编码的事情,大家对他都一些情绪,二明白心里也知道,压力比较大,所以主动承担了所有外联和非代码所有工作,成天跑上跑下的,我们系统做的不好,客户不满意,二明白压力比较大,一天深夜,我在编写我的工资程序,二明白在睡觉,2点左右,他突然坐了起来,高唱:社会主义好,社会主义好,社会主义就是好,然后直挺挺地倒下睡去。吓死我了,赶紧去找苏sir(还在加班),苏Sir过来一看,说没事,估计压力大,明天下棋的时候别赢他了。我知道你是党员,我知道你压力大,但没有这么吓人的好不。

难道我要做一个知乎最长的问题回答吗?
好吧,大家愿意看,我就写吧。争取进吉尼斯大全。
还有一个事情,后边的项目,涉及很多人,单位、地点、人名都会做修改。不要去猜是哪个事情。省的是非多。
这个回答算是段子、小说、回忆都可以,只要你高兴就好。(给小学生改错字也不错)

第二个项目

第二个项目是军方项目,所以只能讲段子了。希望大家理解
还是列表说感受吧,写文档写惯了。
A:军方的确有人才,不过都不会浮出水面,反正和我们合作的人经常碾压我。但因为军方的项目特点和地方不同,强调稳定、可靠,所以未必会是最新技术。但做出来的东西都是要直接到底层
的,如果不能到底层,宁可不用。后来我见过一个用中文编写c代码的开发环境就是军方出的。

B:军方的保密性要求极严格,所以如果有军迷最好在网络上少说话,毕竟军方的东西都是咱们看家护院的。另外千万不要和军人去逗逼,这个不是玩笑,当年试射某型导弹的时候,有逗逼以为自己牛,要看导弹,不听劝阻,结果直接关押,这个流程是不走法院的,什么时候释放,哈哈,解密的时候释放,反正好吃好喝伺候着您老人家,就是不能见家人,打电话。

C:军人的执行力极强,说一个简单的事情,喝酒,女兵,说喝酒,直接干,没有二话,所以你和军人合作,最好按照规矩来,不要搞歪的、斜的,否则倒霉的一定是你。

D:军人是很够意思的,只要你工作做好了,其他的事情都好商量,一定将你照顾得好好的,好了说几个被照顾的事情。

1车接车送,我们是到一个仓库去封闭开发,每周车接车送。你别以为仓库不好,吃、住极好,安静,无人打扰,真乃封闭开发之理想环境。

2吃饭,高待遇,被当成专家,10个人一桌,标准是10菜一汤,如果喝酒也有人陪,不过我对酒精过敏,而且酒精浇筑的代码我是不敢用,所以,后来就没有酒了。有一周日我一个人加班,军方领导吩咐炊事员照顾好小兄弟,于是中午一个人十菜一汤。我的妈妈呀,十个菜,都是硬菜。实在不好意思,就吃了一个菜,其他的没有动,和炊事员说,就一个人,晚饭弄一个菜就可以了,炒个鸡蛋吧,晚上一看,是一个菜,不过足有十一、二个鸡蛋,猪也不是这么喂呀,我使劲地吃呀,吃呀。还留下一半,实在不行了,吃不动了,跑吧。结果当天晚上一打嗝就是一股鸡蛋味.还有就是晚上有夜宵,康师傅红烧牛肉面,晚上十一点的时候,泡上一碗,那感觉简直太幸福了,第二次去新疆的时候,有一次开发三点钟饿了,没有吃的,到处翻找,最后找到了一个半个月前买的馕,好在新疆干燥,馕还可以吃,干馕就水,现在每天都康师傅牛肉面,简直就是幸福感爆棚了,三个月方便面吃下来的结果就是以后3年再没有吃过康师傅。

3射击,哈哈,这个是额外的福利,因为合作愉快,大家成为了朋友,一次聊天的时候,问 他们是否可以打枪,经过几个老大哥努力,终于实现了这个愿望,在那之前,没有动枪的机会,这回可是过瘾了,打了一百多发子弹,记忆深刻的就是后坐力撞得肩膀疼,还有就是耳鸣了2天,几乎听不到声音,当时几个老兵让我用弹壳做耳塞,我装逼,结果就是当了两天的聋子。听人劝吃饱饭,古人不欺我也。

这个项目其实是一个实验性项目,主要是看是否可用,结果不错,当你真帮助客户解决问题后,客户都会给你很好的报答的。

这个项目的东西不多说了。给大家建议几本书吧。
三本,
第一本代码大全,现在有代码大全II了,代码大全是用C语言做例子,代码大全2加入了面向对象的东西,东西极好,我带的团队要求他们一人一本,
第二本是软件工程实践者的研究方法 第八版,我当年学油印第一版,这个书不错,
第三本是pmbok讲项目管理的,
这三本书是不同阶段开发人员要读的书,都是将方法的,如果掌握了,对大家的事业有很大的帮助


第三项目当项目经理了,我先得瑟会,哈哈
这个项目是个重磅项目,第一次接触管理,第一次带团队,第一次享受项目结项,回款的乐趣(当然回款和我没有直接利益关系,让我哭会)

说这个项目,就不能不说一个牛人,张老怂,张老怂并不老,当年是31,总管我们叫小怂,我们就叫他老怂,张老怂。当时单位改革,解散实验室编制,吃散伙饭的时候来了一个胖子,就是张老怂,他是我们室老大的同学,也是那北大一百个研究生的干活,在日本工作后刚回来。他回单位要做一个松糕省坛子县的信息平台项目,松糕省坛子县是中国百强县,不缺钱,当时为了撤县建市,需要业绩,我们做的项目有点业绩工程的意思。但当地没有大企业,所以进行信息化建设就是一个不错的主题了。业绩工程有好处,有坏处,这个咱们不做评论了,接着开始我们的逗逼开发旅程吧。

张老怂带的项目的特点就是雷声滚滚,雷人不断。
第一个雷,项目全体成员工资照旧(我当时400出头),但奖金从20变成了1500,这是什么概念,说简单点,我比我原来的老大拿的多,多了多少,差不多一倍吧,后来有压力,第二月降为1200,一直到我离开他。似乎比我老妈拿的高,老妈是50年当兵,16岁开始计算工龄,后来入中科院化冶所,是全国第二批的高级会计师,第一批的注册会计师),你就知道老怂胆子有多大了吧。

第二个雷,两个工作一年的老同志,要当项目组长,每人负责一个开发任务,也就是说我要当项目经理了。要带团队

第三个雷,组员有两个选择,一个是北大的在读研究生,一个是清华的本科毕业生。这是我们的兵,当时6月组建队伍,10月28日在县里要开展示会,展示全县建设成果,属于政治任务,也就是我们说的后墙不倒类项目,说简单点就是不管你出现问题,最后工期不可更改。
说几个最深刻记忆的事情,

A:张老怂不让我们编码,作为野兽派码农,做项目的第一件事情就是编码,否则怎么能叫野兽派,可张老怂就是不叫我们编码,让写文档,需求,好吧,写就写,不让用钢笔写,让用铅笔,这个就有点过了,我们造反,张老怂说可以呀,你们可以用钢笔,如果你能一个字不错,靠,这叫什么事情,当年是没有涂改液的,一字不错。算了还是用铅笔吧,当时没有桌子,没有凳子,是以床为桌,以砖为凳写的,写的内容忘了,就记得写了七遍,七遍,一个需求写了七遍,写一遍,老怂审查一次,被问住就去改吧,我估计第七次老怂也烦了,主要是机器到了,哈哈,这是我第一次写需求,也是理解从需求到代码的第一步。无数的第一次毁在老怂的手里了。

B:开发人员要会玩,这是老怂的原话,这个家伙带我们上KTV,玩保龄、看电影、聚餐等等,而且费用全包,很快就将我们腐蚀了,以后我们带团队也玩这一手,不过的确没有老怂当年玩得漂亮。(老怂实际在教我们接触社会和团队建设,而且要保证了团队在紧张的开发过程中张弛有度)。

C:去招人,老怂看我们的确很累,而且几个宅男编程一般,但将屋子搞得脏乱差能力极强,于是想帮我们招一个小助理,这事情交给我们,于是我们开始各个楼道去贴小广告,招聘暑期大学生,后来面试是安排在大马路上的一个书摊旁边,小刘是他父亲陪着来的,两个邋遢的程序员坐在一个条凳上面试,哈哈,那个场面你们自己脑补吧,不过中科院的牌子还是很好用的,做计算机的高科技人才。现在想想要不是中科院的招牌,人家怎么会让孩子来我们这里打工。

D:老怂买烟向来都是一条一条的买,而且我们可以抽,开始是要一支,他直接给一包,后来,就是直接拿了,五个开发全部是烟鬼,一天平均5包,最高峰的时候,一天干掉一条。开始是万宝路,后来是红塔山,最后终于是都宝了,老怂买烟的行为直接造成我们脸皮厚度的增加,后来再见到客户的完全可以做到胡说八道不打草稿。而且脸不红,腿不哆嗦。

E:老怂有一个习惯,早晨起床的时候,先在床上躺着抽烟,一般是半小时左右,睡觉的时候也是要躺着抽几支,后来他告诉我,早晨是要想项目进行的如何,有什么问题,今天要做什么事情,什么事情是要最先做的,昨天工作有什么失误,如何弥补,晚上睡觉也一样,回归一天的所有情况。他当时实际是大项目组长,所有开发、管理、对外联络都是他,我们毕竟还是嫩呀,后来我也照他的做法去做了,效果不好,晚上睡不着,越想越兴奋,干脆起来干活。早晨的起床烟就更可乐了,抽完,翻身直接睡了,那叫一个舒服。这是我第一次接触质量管理,质量管理老祖宗是戴明,著名戴明环PDCA,就是计划、执行、检查、调整,8个字很简单,但这要做起来,效果极好。

说一个自己工作的感受,当你发现自己工作很难受的时候,最好琢磨一下什么原因,是否可以做一些小改进,很多时候这些改进动作不大,难度也小,但效果奇好。有一个理论叫8-2理论,套用在这里就是做20%的改进,会有80%的效果,但要提高最后那20%,却要花80%的力气。举一个例子吧。

老怂不喜欢编码,不是不能干,而是不愿意干,所以编码一直都是我们干,但是当时自己的编程规范也不好,编码的层次多,格式不合理,有一次编译不通过,看问题列表知道是少了一个大括号,找了半天,没有找到地方,当时时间比较紧张,就请老怂来帮忙。老怂来了,看了一下我的代码,长叹一口气,没有修改代码,而是开始给我排格式,什么层次之间要用四个空格键做区分,什么不许用tab键代替空格,什么首字母必须在1,5,9,13位置,什么函数不能超过60行,巴拉巴拉,,,,我是哪个气也,让你帮我调程序,说这些干什么。一肚子气,心里说,你调,你调,看你牛,哈哈哈,不过那次还真没有用上老怂帮我调程序,他的格式还没有排完,我已经发现问题了,于是恭送老怂走人,自己加了括号一次通过,然后开始逐一排格式,没有办法,谁让人家的方法好呢。

没有规矩不成方圆,编码格式规范没有什么技术含量,但对提高工作效率很有好处,后来的技术生涯中,很多时候遇到开发人员都说码农一定要加班,我就嘿嘿了,其实很多时候都是开发人员自己给自己挖坑,然后自己填,属于没事找事型的,其中编码格式不规范是一种极好的挖坑手段。

再说一个编码格式的段子吧,用C的人都知道申请内存空间,不玩内存,不玩指针那简直就不是玩C的,玩内存第一个事情是申请空间,第二个事情就是给空间做初始化,否则空间会保留原来的数据,你如果直接使用出问题的概率就比较大了,哈哈,有一点象搬新家的时候,都需要先打扫房子再入住一样。当时因为报表显示,需要申请一个大空间,做初始化,没有问题,可几天以后接连出现问题,显示内容不对,而且内容是随机,有经验的人一看就知道是指针出问题。当时经验不足,找了三个小时,最后发现问题了,当时我用的是for循环,for循环体内的语句是要用大话号括起来的,以告诉计算机这是一个完整循环体,但是,可但是,for循环有两个其他的特点,第一可以是空循环,也就是循环的每一次循环可以什么事情都不做,第二,如果循环只有一个语句的话,可以不用大括号括起来,系统会自动识别。当时我偷了一个懒,因为是一个语句,所以没有用括号,但好死不死的是,我在for语句后边随手加了一个分号(分号是语句分割,往往在C代码行的最后一个字符,这个地方不应该有,但习惯性动作就上去了),于是一个完美的大空间循环初始化的程序变成了两个东西,一个是空循环,(瞎转半天不做事,另外一个是只给第一个字符空间做初始化,其他不管),于是一个伟大的bug诞生了,关键是语法没有错误,没有错误,没有错误。。。这段代码被我师哥命名为著名的虾球传代码(虾球传是当年的一个电视剧的名字)。后来在重塑金身的时候,我的师傅是这么教我的,先写for,加上小括弧(不要写内容),再加上大括弧(不写内容),调整格式,再写小括弧内的条件,再写大括弧里的循环处理语句,一个for语句要分这几个步骤写,另外大括弧一定不能少,而且左边的括弧一定更在小括弧的后边,这样即使你随手写了分号,实际是写在大括弧里的循环体多了一个空语句而已,不影响整个程序功能(代码正确率高的人,好像都喜欢用这个方法,反而是菜鸟都是先for,再条件,再循环体,一路平铺下来)

估计上边一段将很多人讲蒙圈了吧,好吧,这是我的错,将这个东西归纳一下,尽量高大上一点。做事情,一定要找方法,好的方法可以避免无效劳动,一个for语言在这里浪费了我三个小时,一个大括号浪费了我半天6个小时的时间,其他的呢?你知道为什么开发人员总在加班了吧。为了少加班,码农们请尊重编程规范吧。

跑题比较远了,转回来,

当时一天的工作安排是这样的,(这里指的是我)

小刘和道奎兄是我项目组的组员,说明一下。

早晨9点睡觉,下午5点起床吃饭,6点去一个很烂的电影院看个电影,9点开始帮助手下(道奎兄)调试程序,12点道奎兄去睡觉,我开始干我的活,到早晨8点,小刘来上班,给她讲她的任务,上午她用机器,完成基础数据的录入工作,道奎兄在中午12点用机器编码。你问我为什么晚上不睡觉,哈哈,没机器,为什么没机器,机器贵好像2万多(注意是93年的价格),而且开发完机器要给用户,项目组要是一人一台机器,项目就亏了。所以我们人歇机器不歇。我又是小头头,所以只好我熬夜。后来学习项目管理的时候,有一句话,项目管理能力就是在资源有限的情况下,通过协助、组织各项开发活动,有效地利用有限的资源,高效地完成任务。码农们,资源永远是不够的,提高自己的各项能力,才是不加班的最有效的方法。

其实我很喜欢熬夜,主要是没有人打扰,老怂给我准备的环境已经相当不错了,当时租住在一个民房里,夏天的江南,潮湿、闷热。于是左边电扇,右边冰箱(里边有冰棍),中间是烟灰缸。每天都是满满的,经常是一晚上只用一根火柴。孤灯独火(烟头)伴我到天明。

我做的系统是坛子县综合信息多媒体演示系统,逼格够高,说简单就是搞一个地图上去,全县的,然后到乡,然后是主要的企业、农业等介绍,之所以说是多媒体,有文字、图形(不是图像)、触摸屏,其实最关键的就是这个触摸屏,当时国内还没有,我们做完之后,其他的东西没有什么,触摸屏是出彩了,当时是国内独一份,(次年春节的时候回家,参加计算机产品展示会才看到类似产品)。哈哈,对于玩惯了现在电脑的人,当时的系统简直就是垃圾。(当年陈毅老总想要一个一次性打火机,但一直没有如愿,直到去世。现在中国的一次火机占领全球市场,想想令人感慨)。
当时的主要技术问题,地图如何搞进去,别和我说GIS,当年没有这个玩意,而且你以为386能跑GIS吗,用数字化仪自己画,哥几个还记得化冶所那个绘图仪的事情吗,数字化仪有一点像现在的手写板,但只有驱动程序,如何画直线,曲线,换色,这些东西都要自己编写,这个工作是我的。好在我在大学做课设的时候做的是图文混编编辑器,而且又有被清华学生吊打的事情,所以这个东西上手就快了,小刘负责绘制地图,也就是我写完一段代码,她就开始使用,发现有问题,晚上和我说,我修改,第二天,她在接着绘制,当然她的事情不仅仅这些,最大的事情是收拾屋子,每天一进门,根据烟灰缸里的烟头数、桌子上草稿纸书、和地面的冰棍棍数,她就大概知道我的工作效果。道奎兄负责展示部分,当然,因为他是学数学的,所以结构什么的都是我设计好,和他说明白,他去实现。有问题了我帮他调试。

说点工作感受吧
A:版本管理很重要,当时没有版本管理的概念,最后就是代码版本乱了,到处都是C的代码,但是妈妈找不到孩子,孩子找不到妈妈,真是一个头两个大,最后痛下决心,开两个目录,一个工具程序,另外一个是演示程序,然后每个目录下边开子目录,用日期做名字,每天开发最后一个事情,就是新建子目录,将代码复制到对应的字母下,如果一天有多个版本,就分为-1,-2.。。。多个子目录,反正就是别怕麻烦,每天复制,哈哈,你别说后来好几次出问题,都是从前一天的版本回溯的,我不是大拿,没有意识到要编写一个SVN出来,但最起码自己的坑一定要自己填。

B:写注解,一般一个代码几周不动就会忘了,特别是程序量大,事情多的时候,随手写注解,英文不好就中文,没有中文就用拼音,反正是没有困难,创造困难也要写。但是注解不要写成语法说明,不要写成语法说明,不要写成语法说明

C:你无法吃掉一头牛,但可以将它切开吃,不要眉毛胡子一把抓,老怂虽然没有编码,但实际对我们工作的控制是很严格的,吃饭的时候检查工作,谈笑间分配工作,我们的系统分成数字化议程、显示程序等等好几块,而且由于前边有了需求分析,所以一个子系统又可以分成不同功能,而先开发哪个,后开发哪个是根据实际工作需要来的,这样形成了工具软件开发、数据录入、数据显示多个环节的每日的循环。靠,这不就是快速迭代吗。

D:授人予鱼不如授人予渔,老怂很少介入编码,bios中断不是他的长项,他牛的是项目整体控制,所以他教授我们更多的是方法,于是我们这帮小怂每天乐呵呵的去帮他打鱼,当然老怂也没闲着,看哪里有鱼是他的事情,然后每天抽时间检查工作,吊打我们,也是其乐融融。

E: 团队建设很重要,而团队建设往往是在日常的生活中,有时候是递上一支烟,有时候是遇到问题互相争吵,有时候时玩笑的时候互不相让,但如果遇到问题了,真是拼死相救呀。

D:一个函数真的不要太长呀,原来看操作系统代码的时候经常有几行,十几行的代码,简洁的很,当开始自己编写的时候,往往是几百,开发完了,即使没有问题也要做优化,改成几十行的,(标准是不要超过60行,最好在30行以内)。后来做交通的时候,一个姐们的写了一个著名的5000行的代码,牛人,真是牛人,能编出如此复杂的代码不是一般人,但别忘了大多数码农都是普通人,所以函数还是短一点吧(那个姐们后来辞职去读博士了)。开发别忘优化,切切。

好了下边是段子时间。
A:24个字母的故事,哈哈,这个故事有意思,我们的团队后来招聘了1个小女孩,作为文员,在我的项目组,叫王珊,大专毕业,小丫头很冲,人也聪明,都是容易犯二,24个字母的故事就是著名的王二故事之一,到了开发组总要学一点编码,所以让她学习C语言编程,当时的题目是编写一个输入程序,读入26个字母,并显示,王二说:不难,一会给你,过了几个小时也没有出来,然后我就去看,王二在调试,系统给出的提示是字符串越界,我看了下代码,怎么字符串长度是25字节,除去最后的结束符,只有24个,英文字母不是26个吗?王二一听不乐意了,气势汹汹地说,就是24个,我当过英文老师(她带过几节初中英文的课),当时因为连续工作,头有一些晕,看她气势汹汹的样子,我不由地也犯嘀咕,难道真是24个,我怎么记得26个,于是将手放到背后,A,B,C。。。。开始数了一遍,不对是26个,你自己数一遍。于是王二尴尬了。后边的事情就很简单了,加长字符串,编译、测试通过。为王二的学生默哀,遇到这么一个二的老师也是难得,王二后来嫁给了我单位的同事,去英国了,希望在哪里她的英语水平提高的快一点。

B:毒气弹事件,这是周二(周同学犯二的)的故事,周二是清华的本科,牛人一个,很多集成和市场工作都是他在做,是张老怂的得力助手,可是周二有一个毛病,就是懒,江南,夏天,衣服几乎一天一换,周二家里比较富裕,衣服都比较好,换下后,就扔盆里放上水泡着,可是总忘了洗,我们有时候就顺手了,一次这家伙不知道怎么将泡衣盆放到了厨房,没有人注意到。老怂一天发现屋子里有味道,开始以为是死耗子,追踪过去,原来是周二的衣服,那个酸爽,试着洗了几下,直接吐了,吐了,吐了。后来我用了半袋洗衣粉也没有洗出来,等周二回来,只好将这些衣服都扔了。

C:憋镜头,哈哈,这个事情比较乐,坛子县展示会的时候,我们的系统在当地引起了不小的轰动,记得当时一共有十个子项目,有一个是万方数据库,有一个是实时的交易系统(只是可以查询到交易需求的系统,不是交易撮合系统),有一个本地企业数据库系统。当然最牛的就是我这组的坛子县多媒体演示系统了。当时用手指触摸屏幕就可以实现跳转,看到很多企业信息,很多人都想不到。这么大的事情,自然有电视台的记者来录像,不过,只不过镜头里从来没有我,所有参加项目的人都有,包括本地的工作人员,只是没有我,县电视,省电视台,最后是中央台,总之就是没有我,有一次,我和一个当地哥们并排坐在计算机前,我指挥他操作。看清楚,是并排,两个人相距10cm都不到,当时我想这回该有我了吧,可谁知道 ,还是没有。。。让我先哭会。。。后来就更过份了,我做了很多系统,有很多次都是市长参观,但也从来没有看见我伟岸的身躯。最最过份的一次是,我老婆的闺蜜在电视台,在我们结婚那年拍了一个贺岁的短片,专门拍了我老婆和我。这次总算没有问题了吧,但最后,最后,我的镜头被剪掉了,我夫人有一个30秒的独白。好吧,我是憋镜头专家。

D:被领导接见,展示会的时候,有一天展台前来一群人,原来的讲解员是王二,但也是凑巧了,我们的宣传资料没有了,王二去复印资料了,看见来了一群人,于是我就冲上去做讲解,全县的地图显示,银行,政府等热点显示,县资料的显示,各乡主要企业的各项资料的显示,balabala。。。记忆深刻的是,当时中间是一位老人,很矜持,不过他对触摸屏很感兴趣,旁边的人大喊:点到XX乡,看看神仙洞有没有?哈哈,没有,我做的系统当然我知道,根本没有那个资料。于是就开始打屁。。。总算混过去了。展示会结束后的一天晚上,老怂兴奋地从外边跑来,让我请客,弄的我莫名其妙,关子卖了半天,见我一副屌屌的样子。于是告诉我,副总理来参观了,有照片,上面有我,拿出照片一看,好吧,中间是副总理,旁边是副省长,我在边上,但只有半个脸,哈哈,记得我在中间给老大爷介绍了很长时间,好吧,我承认自己不关心政治,不认识副总理,更不认识副省长,否则能那么淡定。鬼才相信。那个相片后来被单位当做一个资料一直保留在公司,毕竟那是中央领导第一次参观我们的产品。

E:坛子县是出名人的地方,另外一个名人是著名科学家 华罗庚_百度百科,这个牛人,自学高中、大学的数学,后来成为了著名的数学家,但让人惊讶的是,他后来玩的 优选法统筹法对提高普通人日常的工作有极大的帮助,真正可以做到小改进,大效果。这个事情让我知道了科研和创新不仅仅是在实验室里,也不仅仅是科学家的事情。另外,做科研要接地气,我们不是从基础研究的(做基础研究的人才是研发牲口中的战斗机,向他们致敬),所以一定要接地气,直接用户说好,你的系统才是真正的好,产品才有可能生存下去。至于很多评奖神马的光环,都是浮云,不要太在意。不过让人伤心的事情,他那个自学的杂货铺位置正好在改建的河道上,位置在河道中央,所以已经看不到踪影了。

F:张氏刑法:这个组工资高,大家也比较有干劲,但也不是不犯错误,一般的错误,老怂顶多说说、给讲明白道理,然后他就会去补救,但有时候,给老怂弄急了,老怂也会动用张氏刑法,周二那次毒气弹事件,就动用了张氏刑法,那天晚饭前,决定执行张氏刑法,先让周二平躺,然后大家依次坐在他身上,我负责照相,所有人都笑得前仰后合,而周二呢,为了表现他则无所谓,尽然找了游戏机在哪里玩。画面大家脑补吧。此刑法适合身强体壮的逗逼青年,其他人慎用。

G:缝被子是个特长,你会缝被子吗?不会,就别做项目组长了,这是到了秋天的一个事情,我们夏天的标配是一个床,一凉席,一枕头,一毛巾被,到了秋天就不行了,褥子和被子是必须的了,当时整套被子比较贵,所以我建议老怂买被套和棉芯(这个专业术语怎么说?),自己做被子,谁会做?老怂问大家,哈哈。技术宅男都看天,在找鸟玩,王二虽说是女孩,可瞪着一双大眼睛无辜地看着我们,一脸迷茫。嗨,我来吧,老怂惊了,宅男们都惊了,谁能想到一米八的大个子会缝被子,好吧,我技术一般,针脚比较大,不过不会将自己缝到到被子里,大约半个小时可以缝好一个被子。只是让我老娘看到,肯定一脸嫌弃(我们小时候的衣服都是老娘自己做)。最后是我自己的,做了改进,没有用被套,而是用毛巾被,两个毛巾被中间加一个棉花套。告诉你一个秘密,用毛巾被做面非常暖和。在江南冬天待过的兄弟都应该有感觉吧。

H:说到江南的冬天,真叫一个冷,那个冷和北方的冷不一样,北方是干冷,但只要进屋子就好了,江南不是,是湿冷,是冷到骨髓的那种冷。12月因为事情回北京,只穿了一个毛衣,皮夹克,单位的人看我象怪物,他们都是全部武装,可我觉得北京的风都是温和的,真事,两地对比,差别太大了。长江一两岸的人可能最耐冻的中国人。不信你可以去亲自考察一下。因为江南的潮湿,我们在江南夏天起湿疹,冬天起冻疮。

I:这是你的责任,还是江南的冷引出的问题,进入12月,江南很冷,每天出被窝都是一个艰难的事情,老怂给王二买了一双翻毛皮鞋,这个事情当时我当时觉得怪怪的,买烟就算了,买皮鞋,900多,有这个必要吗?后来有一次在和老怂聊天的时候,说去这个事情,老怂和我说:你看,王二一个女孩,大专毕业,只有19岁,人家第一个工作就是出差,而且一出差就是几个月,江南的冬天冷,手、脚都起冻疮了,你们当头的,都没有看到吗?都没有想想如何解决这个问题吗?你要知道在日本有一个习惯,你的工资有10%是要花在你的部下身上的。这个事情给我印象很深。高效率的开发团队,要有良好的团队气氛,而团队的领导者对团队风气的形成有极大的影响。后来我自己带团队的一个没有太多的技术壁垒,一个也用自己的钱做过很多事情,让人欣慰的是,我后来的团队都是公司最好的团队。这是我一直引以自傲的事情。(一个深坑)。

说一点题外的话,感谢网友的关注,原来想回答问题,但感觉真是一、两句说不清楚这个事情,原来也很想写写自己的经历,但人很懒,总是写了一点就放手。我的确不是写书,文笔也不好,写了很多逗逼事,主要想让大家看着不累,但有自己的体会会写出来。
很多事情已经是很遥远的事情了,所以,整个回答写的层次,线索都很乱,想起一个事情就直接写,给自己挖可不少坑,我会继续填。如果有可能,我会在全部都写完后进行一次整理,不过说实在的,总感觉现在这种逗逼文体是原汁原味,真是都整理好了,很多东西的味道就改变了。如果大家认为可以,就先看这种逗逼文体吧。

还有就是这个回答我会一直写下去,但更新速度不会这么快了,只能用中午和晚上的时间写,如果可以大家可以一周回来看一下,我知道追文是很辛苦的,可写东西的确要回忆,思考。希望理解。

J:做事要想办法出彩,这话怎么说呢,简单点,就是做事情别老循规蹈矩,张老怂后来做项目总结的时候,告诉我们,我们这个项目是个大集成项目,很多东西技术含量并不高,最出彩的项目实际就是触摸屏,而这个东西是我们原来的室老大向他建议的。结果效果奇好,刚来的时候,当地对接的领导对我们头说,你怎么带了一帮小孩来了,展示会结束后,吃饭的时候说,中科院的都是专家,哈哈,总算没有给单位丢脸。

想出彩不是一定要高大上而是一定要用心,记得后来带小刘去苏州(她回学校上学,我们去办事),当时,老怂让我照顾好小刘,记得当时和小刘聊天的时候,知道她很想吃KFC和M,当年苏州好像只有很少的几家,而且以当时的价格来说算比较贵得,鉴于小刘同志工作期间优良的工作表现,哥俩决定一人请他一次,满足小刘同志的这个愿望。看着小刘同志吃饭后满足的样子,我们也乐了,几十块钱实现了用户的一个小目标,这个简直太值了。

当然也有出彩没成,而出糗的事情,去杭州,观西湖美景,晚上饿了,楼外楼,哥们请客,点了菜,我一看,加了两个,西湖醋鱼、叫花子鸡,外加两杯茶(自然是龙井了)。这两个是招牌菜,稍微有点贵,有点贵,吃完了,就真跪了,我付账,后边几天就只能吃路边最便宜的盒饭了,不过感觉值了,毕竟再吃这个两个菜的时候已经是20年后了,随便说一句,到新疆一定吃羊肉串呀,当年以为新疆的羊肉串和北京的一样,怕拉肚子,一直不敢吃路边摊,后来发现真好吃,已经没有机会了,不知道什么时候才能去乌鲁木齐再撸串。

说一个题外的话,码农总感觉活都是自己干的,其实软件开发最难做的事情,还真不是编码,而是创意。憋创意这个事情就怎么说呢,要靠积累,靠灵感,不是仅仅靠勤奋和努力就可以的,更不是现在考度娘可以解决的,找不到灵感就像体内内压巨大,无法输出,而一旦获得灵感,发现了解决方案,则是一泻千里的感觉。好吧,有点污。所以,码农要提升,就多出去走走,不要只做宅机男(女)。

补充一个关于图书的段子吧。想起来了,就写在这里,省得各位还要往上翻找。
代码大全,大学毕业的时候,有一次去书店看书,看见了这本书,当时感觉这本书很有用,但价格很贵,好像是78元,当时我的生活费是40元,咬了几次牙,最后还是没有买,一个是价格问题,一个是当时还是野兽派代码小白,对软件工程的理解几乎是白丁。几年后,看到这本书,真是一边读,一遍流泪呀,当年要是买了这本书,也不至于加那么长时间班呀,这件事情造成了两个结果,一个是我的手下一定有一本代码大全2,你不买,我给你买,反正人手一本。第二个就是以后见到技术书就想往家里搬,后来被老婆批斗,告诉我买书可以,但必须看完才能买一下本,好吧,你说的对,我买一个kindle总可以了吧,反正现在正版+非正版足够我看的了,哈哈,我好机智。

如果大家在学习某一个语言,最好,先买一本入门书,这个书一般比较low,主要让你入门,掌握基本语法,一般编写了几百到2,3千行程序就可以扔了,但不要轻视他,一般入门是最难的一个事情。然后是一本函数的书,类库函数,这个是资料,越全越好,便于查找,当然,你外语好就直接看帮助文件,那个是最全的资料,其次要买几本精通类的图书,不好说那个最好,这个主要看作者和译者的水平了。由于水平问题,不同的书对不同功能讲解不同,一本书经常是这个章节好,另外一章节糟糕,所以,要轮换着看,反正弄明白是目的。其实,如果你的外语好,后几本书可以不买,而且要学习计算机语言最好是看英文书,我的英文比较low,这个亏吃大了,学软件的兄弟最好有时间补补外语,对你的技术生涯影响极大,我的一个兄弟,原来外语和我一样low,后来苦学外语,现在比我牛多了(这又是一个坑,要在离开中科院的时候填,此坑已经填完)。好了,现在就让我们开始念,A,B,C,D。。。。。一共24个字母。

坛子县项目,段子还有很多,以后想起来再补充吧。做个总结吧。

A:这个项目是我第一次独立完成一个项目,开始接触管理,算是管理的启蒙。在我的技术生涯中是极为重要的一个事情,当时,无论是开发,软件工程、项目管理、甚至集成工作在当时都是一片荒漠,室老大、张老怂他们可以算是很重要的一批开拓者(不敢说是第一批),他们将国外很多先进的技术和管理思想带入中国,这些东西对中国后续的腾飞有很大的作用。

B:尊重规范,但要明白原因,每一个规范其实后边都会有一个故事,如果你搞不清楚原因,就先遵守它,当你有足够的经验的时候,再改进规范。

C:研发人员喜欢稳,因为技术背景的原因,一般有一点问题就觉得不行,其实没有那么严重,有时候就是要敢于去闯,一个稳定的结构,也往往也是即将衰亡的结构,而一个新兴的结构往往伴随着活力和bug,(怎么象高中政治了?),不是有那么句话吗,北大科大,不如胆子大。哈哈

D:项目的成败,技术只是一个方面,而其他非技术因素,往往决定项目的成败,这里边人的因素是最主要的,码农们有一点情商和阅历是很重要的事情,有时候,采用非技术手段(不是行贿,别想歪了),就可以解决问题。技术很重要,但不是万能的。

E:经济是基础,我不喜欢钱,但没有钱是万万不行的,码农们要有一点经济头脑。(出差丢过一次钱,差点睡大街)。好吧,还有不喜欢钱的吗?我给你们账号,都给我,哈哈

最后补充几个事情,比较有争议,只是说我的看法,一家之言。

A:关于女孩子是否适合做开发的事情。靠,这是一个敏感问题,弄不好就是性别歧视。说几点,第一,我觉得是否是好的程序员,和性别关系不大,或者说做科研和性别的关系真不大,先说自己家的事情,我的老爹和老娘都是做会计的,但我老娘在专业上绝对碾压我们家老爷子,老娘当兵退伍后一直在中科院,24岁的时候就是所里的财务主管,干了一辈子,后来因为不会外语,所以只能是第二批的高会(这里也有一个故事,后边说),第一批的注册会计师,当时的会计的职称评定是从中科院最早推行的,所以也可以说,老娘是全国的第二批高会。关于我神奇的老娘,后面找一个地方吹嘘吧,还有一个是我时候的邻居,夫妻都是做科研的,我们叫他们柯阿姨和胡司令。柯阿姨也是在专业上碾压胡司令(柯阿姨后来出国了,据说搞的不错)。帮我介绍工作的一个阿姨是当时软件协会数学分会的理事长,老太太普普通通,平时完全看不出来,但一说到专业问题,整个人都变了,从一个人兽无害的老人瞬间变成大boss,整个人充满了王霸之气,基本上我们说几句话,老人家就明白我们要干什么,然后直接碾压。我辈只能望风而逃。后来在单位教我的数据库设计的张阿姨也是牛人,她的老师姓萨,她的同学是王珊,不知道这两个人是谁,哈哈,回去看看软件的专业课数据库概论的作者,你就知道了。前年遇到一个阿姨,老中医,针灸手段一流,她做的一个东西你一定用过,就是感冒冲剂,原来中药都是熬,她们做成了冲剂,你没有吃过吗?他老公是中科院电工所的,参与过东方红一号的研发,不过现在叔叔在给阿姨打下手。(这个算碾压吗),两位老人80多了,但体质极好。就像50多的人。羡慕呀。

前边说到的都是前辈,至于我的同事就更多了,以后慢慢介绍,总之,我觉得女性做软件其实没有问题,特别他们仔细认真,如果再加上智力超群,一般男性是无法追赶的。女性遇到的问题主要是家庭和孩子,恋爱、结婚、怀孕、生子,以及后来的家务和对孩子的照顾都耽误女性时间,而且由于计算机技术发展比较快,所以几年下来,往往在知识上形成代差。另外就是刚工作前几年,对后来的职业生涯影响是比较大的(工作方式、工作习惯定型期),可不幸的是,这几年,往往是女性生活压力最大的时间。所以,码农最好不要歧视女性,如果能在软件圈存活下来的姐们,最好尊重他们,这些姐们的能力往往出乎你意料之外,对刚进入行业或者准备进入行业的姐们,只是劝你们早做规划,尽量做到家庭美满,工作顺利吧。(这个算回答一个姐们的女汉子是否可以做码农的问题吧)。

B:屁股决定脑袋,哈哈,最近知乎比较著名的一个事情就月饼事件,90%认为程序员冤枉,10%认为公司做的对,其实这就是一个屁股决定脑袋的事情。不信你看去,反对的年龄都不会太大。而赞同的,都是老鸟或者是管理人员,估计年龄不会下30的吧。这个事情,说自己的想法吧。第一个是,小哥们经验不足,程序没有搞好,没有检查成功后如何处理,所以有这个问题,小哥们如果经验多,只抢一个,估计就没有问题了(算完美,以后可以是一个段子),所以学技术要精益求精呀,做事情要仔细认真。第二个,动钱无小事。只要和钱沾边的事情,要格外注意,凡是和钱有关的事情一定要严丝合缝,不能做99%,就认为没问题,没事情了。这是绝对不行的,说几个我自己后来遇到的事情。

1售票员,公交车上的售票员,这个大家都熟悉吧,虽说现在少了,但还有,你如果注意观察,会发现很多有趣的事情,现在买票都是一元,两元。几乎没有人要票,但售票员一定会撕票,而且会说,票撕了,您不要我就扔了,然后把票扔到垃圾桶。为什么?因为公交规定,凡是收钱不撕票的,不给乘客票的,视为贪污,无论金额大小一律开除。大家每天都会坐公交车,但很少有人知道这个规定吧,为什么?讲两个段子吧,一个西北某地公交的故事,当地公交系统上投币机,一天,负责维护投币机设备的哥们接到一个电话,电话是设备提供商打来的,说你们公司有人来修投币机,问是怎么回事。那个哥们一听就知道不对,因为如果去维护设备,他肯定知道,而且和钱有关,于是,立刻让对方扣留来人,可惜,那人发现不对,跑了,事后发现是一个司机将投币机私自拆下,想搞明白原理好投钱(别小看司机,能人多,做交通后有很多司机斗智斗勇的段子,但说实话,他们真心的苦呀)。

后两个故事,是我亲身经历,我在做交通后,去分公司出差,一次,同宿舍的哥们急性肠胃炎,我们将他送到医院,因为大家都是出差,现钱不多,所以就向分公司后勤部门借钱,5000元,手续是我办的,借钱的时候我写了借条,还钱的时候让他写了收钱的条子。都签字,(我老娘是财务,给我的一个经验就是过手的钱,必须当面点清,而且有收据,有签字,我一直坚持这个习惯,如果不对,宁可自己吃亏,但不能落人话柄)。大约过了一个月,当地公司hr找我,问关于借钱的事情,当时,我将借款和还款的凭据都给他了,后来问他是怎么回事,原来帮我办手续的人,向财务借的是5200,现在财务的帐对不上了,而且发现这个哥们很多采购的事情上都钱帐不符。累计下来不是小数字,后边的事情就不说了,补款、辞退。那个哥们就是由小到大,后来大概累计是2,3万元吧。如果不是我留下的凭据,这个事情我怎么说的清楚,所以说害人之心不可有,防人之心不可无。钱上无小事(和金额无关)。

再说一个例子,还是在那次出差的事情,当时公司做公交项目,IC卡,为了方便运维人员工作,就给大家发了公交卡,用于乘车,但规定不能打车,和其他消费,这实际是方便员工的一个措施,而且员工也有点小利,可是好死不死的是,一帮哥们有人用这个卡去小额消费,(就是吃早餐刷卡,和7-11店刷卡)金额都不大。但禁不住人多,次数多,爆了,老板下令查,当时我拿到了全部消费记录,但因为数据的问题,很难确定是小额消费还是公交车费(没有终端记录,这也是系统设计的一个问题),当时我想的不要冤枉好人,于是,将大金额的消费(肯定超出票钱的记录)和诡异消费(比如消费数额有几角几分,坐车不能是这样)找出来,其他的都放过。记录上交,后边的处理就不是我的事情了。后来公司开除了几个人,其实大多数人还是放过了,但IC卡的福利就没有了,有时候,我们老埋怨公司,可很多时候都是因为个别人的小贪心,坏了大家的好事,而背锅都是公司。

公司是要盈利的,凡是不以盈利为目的的公司都是耍流氓,管理是要成本的,很多时候因为成本的原因不可能做到百分之一百的公平,这是现实,不光在互联网企业,在其他企业也一样。制度是要起到警示的作用。但你不可能要求所有公司的制度都是完美的。这不可能,就像这个世界不存在无bug的系统是一个道理。

从另外一个角度看这个问题,如果哥几个技艺精湛,心静手稳,代码也不应该犯这么低级的错误。当然,我也相信这哥几个没有太大的坏心眼(开发人员真的很单纯),就是手潮、社会经验手,所以才踩上地雷了。但钱上无小事、钱上无小事、钱上无小事。

一个哥们说,中国第一台计算机是航天部二院的,是在65年的时候,钱学森主持的,不知道真假,望指正。

0加一个前传吧
评论里有很多人觉得我的经历不具有普遍意义,好吧,也许是这样,毕竟父母是中科院的(但不是做科研的),身边的同学父母有很多都是名人,不过和我没有什么关系,当年,我最多是他们眼中的小屁孩,最大的可能是他们根本不知道我,否则,我也不会现在在这里吹牛打屁了,哈哈。

我写这个回答,其实主要感慨于当初各位老大给我的教导,后来在和哥们、姐们合作的过程,我对他们的有一些帮助,有些时候,你如果能帮他们打开一点门缝,他们对你的回报是惊人的。(我能说,做交通行业的时候,他们让我工资翻了两番吗,虽然有自己的努力,但没有前期的积累,和后期的同事们帮助,我这个人浑身是铁又能打几根钉)

我的家在北京中关村。先做个知识普及,中关村,原来是个小村子,中关,也有说是中官,中无疑是中枢之地,中央之地皇宫也,官是官员,而且是住在中央之地的官员,牛不牛,在宫中除了皇帝,谁能住在中枢之地,自然是太监和宫女,哈哈,这个坑挖的。明、清代的太监和宫女中的牛人成名成凤,比如慈溪、小德张等,但大多数都是普通人,据说太监和宫女是不能入祖坟的,而这些没有名和利的太监和宫女除非是陪葬,否则根本不能入皇帝的坟岭。于是一个现实的问题就来了,年老色衰后怎么办?无儿、无女、无亲戚。这没钱还好办,但无后的确是个大问题。毕竟中国人讲究入土为安,于是大家商量了一下,算了,我们还是靠自己,简单的说,就是后人埋前人,大家找了地方,退休了(实际是年老无用了被赶出来了)就到这个地方,拿着不多的钱,做点营生,死了,其他人就凑点钱,给送到旁边的保福寺,过几天给埋了。慢慢地这个地方就有了名字叫中关村。80年代的时候,中关村大兴土木的时候,经常可以挖出棺材,至于随葬品几乎没有。每天上班,路过中关村,看见一个牛逼的大楼上写着,新中关的名字,就不禁想笑,没文化真可怕。

中关村的兴起,要感谢一个人,这个人就是郭沫若,对就是写女神的那个郭沫若,他是中科院的第一任院长,他将中科院的研究所的地址选在了中关村,我小时候,这里只有中科院的一些研究所(数学所,物理所、计算机中心、化冶所、电工所、声学所。。。)以及中科院的宿舍,当时的宿舍楼只到89号,后边的楼都是新楼了。如果你来中关村,有一个地方是要去的,没有什么太多可看的,但那个地方可以说是新中国的科研的发源地,就是中关村的13、14、15号楼,据说这三个楼是中国著名科学家集中记住的地方,原来看知乎的时候,文中很多著名的科学家就是居住在这里,08年的时候听说这里要拆迁,后来一直没有动。虽说中关村现在是寸土寸金,但这些地方真是应该保留的。毕竟这是新中国科研发展历史的很重要的部分。

说道原来的中关村,老爸和我说过一个事情,如果你遇到一个老头,秃头 、戴一副旧眼镜、破衣拉撒的,很邋遢,拿或者背一个旧书包,你一定要尊重他,因为他可能是副研究员或者正研究员,甚至可能是著名科学家。哈哈,这是真的,我后来见过很多著名科学家,比如 冯康(中科院院士、数学家)、比如陈景润等,大家看到的科学家可能都是西服革履,而我们这些孩子看见的科学家更多的是衣衫褴褛,哈哈,不是因为穷,是因为他们的心思根本就不在这些事情上,冯康是计算中心的所长,小个子,罗锅,看见过他很多次,衣服旧(但干净)、背包破,但说话办事干净利索,思维极其敏锐。老人家最后去世时,是在做一个难题,一连几天没有出屋,咖啡和雪茄相伴,搞出来了的时候是深夜,去洗澡,谁知道,突发疾病,在医院里抢救几天后去世,让人叹息不已。这些人,真是败絮其外,金玉其中。让我背不敢不尊重。

说道衣着,不讲究似乎是中科院的传统,讲一个我老爸的趣事,老爷子后来机缘巧合升官了,可以参加年会了(国家领导人,每年会在春节的时候和中科院的科学家和领导举行团拜会),第一次去,老爷子连一身西装都没有,结果穿了一件老年夹克就去了(科学家这个时候总算穿了他们一年穿不了几次的西服),进人民大会堂的时候,老爷子被大会堂的保卫拦住了,一问,原来是参会的,而不是来参观打酱油的,这身装扮实在有点。。。。还好,旁边的中科院的保卫人员认识我家老爷子,这才进了门,回家后,老爸被老妈这顿埋怨(老妈不知道老爸去参加年会),后来强制给他买了几件西服,只不过,老爷子几乎没有穿过。

废话说了半天,说一下一个我很敬重的一个人吧,在讲中国科研的发展历程上,中关村都是不能不提的一个词,而在讲中关村的时候,有一个人是不能不提的,这个人就是 陈春先_百度百科,如果说陈老先生在我心目是一个神,那就是夸父,为什么这么说,看看吧

1陈老先生可以说是一个科学家了,在百度里的生平介绍就可以看出来,当时他就是中科院物理所的室主任,如果不出体制,当一个院士应该是没有太大问题的,当了院士,后边的很多事情就顺理成章,怎么说呢,名誉、地位、金钱估计都不是太难的事情。

2陈老先生是中关村第一个走出体制,第一个办公司的,第一人,第一人,第一人,而第一人命中注定就是要走在不平坦的道路上,就是要将所有的地雷都趟出来的人。为后人开出一条小径,老先生第一个出来办公司,第一个提出了孵化器,也将自己的钱拿出来资助研发者。最要命的是,老人家一生无悔,直到最后。

3很难评价老先生是成功还是失败,但他无疑是一个开拓者,老先生的成功在于为后来人开辟了一条新路,老先生的失败教训实际也为后人打开了一扇窗户。很多次和陈老先生的孩子聊起原来的事情,聊起陈老先生,都引发我们更多的思考,为我们后续的职业生涯起到了指导的作用。

这个话题太沉重了,开始说一点有趣的事情,关于我们的体会还是在逗逼故事中说吧,总之,希望大家都知道一个人-----陈春先-----那个为我们趟雷的中关村第一人。

A:之所以认识陈老伯,是因为他的孩子,他有两个孩子,老大叫老猫(我的叫法,他们家叫他大猫),小的叫小猫。老猫和我是小学同学,当时,大家的家庭没有太大的区别,房子都很小,大人都按时上下班,孩子都不太管,属于放养,于是大家都在一起玩,慢慢成了朋友,那时老猫家的书多,不仅仅是大人看的书,而且小孩看的书多,于是到哪里去看书,借书就成了常事,一来二去,熟了。

B:老猫是个好学生,学习认真,功课也不错,我算是比较淘气吧(不算最淘的),语文一般,但数学不错,反正在班里做题速度第一,而且正确率还是比较高的,不过字就比较乱了。喜欢做难题,经常是难题不错,容易的出错,把老师气得够呛。

C:小学毕业的时候,我们过了第一个没有作业的暑假,哈哈比较难得呀,中关村一小是以学习成绩好著称的,当然,成绩是和做题量有比例关系的。第一个没有作业的暑假当然就是疯玩了,反正家长也不管我们,那年,毕阿姨(老猫的妈妈,也是一个大牛人)出国学习,带回来一台电脑。苹果II,没错,当年的苹果微机,估计毕阿姨在外边学习的时候没有少吃苦,这个机器里当时有两个游戏,一个是警察抓小偷、一个是太空入侵者。当然还有一个BASIC开发环境,哈哈。你以为要讲我和老猫如何苦学BASIC成为计算机小超人吗,没有,我们成为了游戏小超人。哈哈

D:我们毕竟是孩子,毕阿姨买计算机不知道是否为了让孩子学习计算机,反正,我们很快学会了计算机基本操作,主要内容是,开机,启动游戏,玩,死了,重新来,依次循环,直到天黑了,大家该睡觉了,关机我才撤退,当时痴迷到什么程度,哈哈,反正是一个暑假下来,我的胳膊经常抬不起来。当年那个疯狂的年月呀,反推一下时间,大约是84年。当然,后来,还是学了一些编程,当时中科院计算中心在假期组织所里的孩子学习计算机,主要就是BASIC,那时最难的程序是用计算机打印一个大熊猫的图案,全部用字符B打印,这个程序当时是很牛的程序,不过,老猫的编写的程序是在高中的时候,编写了一个成绩统计的程序,这是他的人生第一个实用程序,大约是87年的时候,这个事情,后边说。

E: 初中,两个人去了不同的学校,我在中关村中学(这个学校的第一期学生)。老猫在八一,那个时候,老猫的父母好像已经办公司了,反正就是整天忙,几乎没有时间管两个孩子,刚上初中,老猫也没有特别要好的朋友,而我们比较臭味相投,成为了好朋友。陈老伯当时在家里办公,当时他的家就是办公室,整天人来人往,我们三个小孩就躲在一个小屋里玩我们自己的。

F:陈老伯日常的衣服是睡衣,哈哈,你没有看错,因为他的家就是办公室,当时是一个大四居,一间房是他和毕阿姨的卧室兼办公室是,另外两间是公用办公室,最后一间是孩子们的房间(极小,不超过8个平方)。在我儿时的印象中,陈老伯总是一身睡衣,或者一身旧衣服,而且在他的衣服上经常可以知道他这几天吃了什么饭。当然,这样并不妨碍他和其他人讨论问题,而且,他的生活似乎就是工作、吃饭、睡觉。在我的记忆中似乎没有见过他玩什么,或者喜欢什么。

G:陈老伯脾气很好,反正没有向我们这些小毛头发过火,他有几次生气,都是和毕阿姨,基本上都是陈叔叔要花钱,毕阿姨不给,当然,不是陈老伯为自己的事情花钱,都是做项目的事情。说道陈老伯,就不能不说毕阿姨。毕阿姨是中科院计算中心的,后来也辞职下海,帮助陈伯伯打理公司,当时办公司是很容易挣钱的,容易到什么地步,可以说是坐地收钱,我的一个阿姨和我说过,当时,一个286加上287(芯片)做成的兼容机,可以买到10万,回扣可以给1万,这是80年代初的价格,所以你只要能搞到微机的配件,组装,装上dos就可以,连汉字系统都没有,当时中关村很多公司都是组装微机起家的。陈老伯公司是否是这样,我不知道,我只知道当时陈老伯的公司总是在坐过上山车,一段时间很有钱,一段时间没有钱。

H:后来和老猫和小猫聊过这个事情,他们告诉我,当时当赚到钱后,陈老伯就会将钱投出去,扶植开发,而不是用于赚钱,当时扶植开发几乎就是血本无归的事情,为什么?因为研发的不规范,市场不规范,管理也不规范。研发不规范这个不用说了吧,基本靠个人能力,不要说什么软件工程,当时根本就没有这个玩意,做出来就是NB,做不出来就是SB,而且当时出国成风,有时候东西做出来了,人出国了,什么资料都没有,让你接手,都没有办法接手。很多东西半途而废。

I:市场不规范,有几点,一个是骗子多,中关村有一段时间叫骗子一条街,哈哈,这个就不说了,说多了都是泪。另外就是硬件值钱,软件不值钱,说白了就是知识不值钱。另外如果产生纠纷,没有人解决,法律条文根本就没有,有时候就看谁无耻,而陈老伯是书生,书生无耻的少之又少,所以陈老伯就总是被无耻打败。

J:研发管理,一个产品或者项目,研发其实只是其中一部分,甚至是一个很小的部分,我想很多码农看到这一点都会愤愤不平,但这是实话,前期的调研,规划,后期推广、生产都是一个产品泛滥于市场不可缺少的部分,可中科院的恰恰没有这些环节,所以陈伯伯为首的先驱们也没有这些意识,他们善于研发,也善于管理研发的小团队管理,但一旦进入市场的海洋中,往往被非技术因素打败。

K:过于超前的意识和思想。办公司、办孵化器都是领先同辈最少10年的概念,当时很多条件不具备,所以他们遇到的困难是我们难以想象的。其实对于市场来说,领先的未必能占领市场,也未必能成功。就像木桶盛水一样,领先的意识只是最长的那根木头,而木桶盛水的多少却是有最短的根木头决定的。当时毕阿姨是挣钱的好手,后来我一直在琢磨,如果毕阿姨是CEO,陈伯伯是CTO是否更好点,毕阿姨保证公司的正常运转和盈利,而陈伯伯用一部分钱去做他喜欢的事情,这样效果是否是最佳组合?

这是一个比较沉重的话题,希望大家别睡着吧,说点轻松的事情。

我为什么做软件开发,这个事情说起来很简单,小学三年级的时候,北京动物园安装了几个街机,可以在上边玩太空入侵者,但是玩一次0.2元,我攒了半年的钱,2。3元,当时的计划是车票0.2,公园门票是0.1元。然后2元可以玩十次,但是,可但是,因为不熟练,上去一次,最多半分钟就被机器搞定,玩了几次,就舍不得了,毕竟是攒了半年的钱,后来在苹果2上看见那个游戏,你想我会是什么样子,再后来,父亲单位在假期组织我们学BASIC,当时参观机房的时候,看见那么多机器没有人用,当时我的眼睛估计都是绿光闪闪。

第一次用计算机干了点事情,还是用那个苹果2,那已经是高中了(我也考入了八一),学校期末考试排名,当年手工排名你知道的,这可是一个大工程,老猫的班主任让老猫编写程序,帮助排名,现在看很简单,当年,我们可是连文件都不知道怎么玩,几百个学生,每人七门成绩,逐个输入,不能错,不能关机(都是放在变量,没有写文件,关机就没了,我们很土,这个我承认),几天,我们搞定了,那个自豪,打印的时候,一个班一份,鉴于我和老猫的私交,老猫给我多打了一份,好让我回班吹牛逼,第二天,早去,刚开吹,班主任进来了,以为是给她的,拿走,我这个苦呀,老师,你知道我们干得有多苦吗?都不让显摆一下呀。

所以说,当刚上大学的时候,我和老猫是不多知道我们以后会做什么的人,因为兴趣和后来的工作相符合,我们后来都在这个行业干了很长时间。这也是我们比同龄人幸运的事情。

陈伯伯去世是一件突然的事情,当时家里人都不在身边。让人感慨颇多。说他是 成功者,毕竟在当年他曾经身家千万过,而且又是很多领域的先行者。说他失败,在公司起起落落后,最后的确可以说是身无分文,所以,我总觉他象中国神话中的夸父,一直在向着自己的目标奔跑,从未停止。

很多人说,他是败于体制,后来人由于体制的改变而获利,但我觉得不仅仅如此,做科学研究和管理还是有很大区别的,单纯的用做科研的方法去做管理,失败者居多,毕竟社会科学和自然科学是两个不同的领域,当然,无所谓谁高谁低。

陈伯伯是我心中的神,之所以说他的一些问题,只是想提醒码农们,我们的生活包含编码,但编码不是我们生活的全部,留一点时间给家人,给孩子,给自己,去多看一点其他方面的书,去行万里路,毕竟 他山之石可以攻玉

还是跳过初中,和高中,直接讲大学的经历吧。吹牛是一个相对轻松的事情。

说一个学习外语的事情,反面教材是我,正面教材是我的一个徒弟。

我的外语一直不好,不是自己不努力,是方法不对,另外就是自己太懒,工作后吃了大亏,说点自己的糗事吧,初中、高中,反感外语,主要是因为不会念,也就是所谓的哑巴外语,单词倒是下了不少功夫,但成绩也就是60分,考大学的时候,很多时间用来复习外语,而耽误了其他功课,所以,对于外语就更加厌恶。刚上大学,因为怕没有学位,所以还是比较玩命,有一次期末,全班32人放倒了8个人,但是没有我,当时,哥三个还买香蕉庆祝,结果那哥俩直接拉稀,哈哈。不用考外语了,所以后两年基本不愿意动英语书。

当时的偷懒,工作后被惩罚了,一个就是资料少,英文原版资料不少,但我阅读速度就比较慢了,记得后来有一次编写delphi程序的时候,自己有一个问题理解错了,结果折腾了三周,哥们,三周呀,后来搞会了,再看资料,人家上边写的明明白白的,本来几分钟的事情,结果浪费了3周,我还把自己搞的很苦。说一个题外的话,现在IT人员之所以加班,真是有那么多活做吗?不是,是我们基本技能有问题,是基本技能,当然,这个技能可能是编码规范,可能是做需求的方法,也可能是英语水平。

说一个吴敌的故事吧,这个故事应该放在我的高级码农生活中讲,但既然说的外语,就先说一下,

吴敌,我在中科院带的最后一个兵,先说一下他的外语学习的事情

A:招聘的时候,吴敌是一个不错的学习的学生,人很聪明,当时,当时,我负责测试部门,吴敌的成绩、反应、人品都不错,就是有两个问题,一个是代码量小(为什么现在的软件工程的学生代码量越来越小,真是奇怪),第二个就是外语。代码量好办,所以说是做测试的,但我们的测试由于使用测试工具,所以是要编码的,他先写,然后我来帮助他调试,教他编程方法,当时,我已经算一个老鸟了,也带过几个团队,所以这个不是问题,至于外语,我给他讲了我的失败的经历和后来在工作遇到的问题,然后告诉他一个方法,就是听,当时,他买了一个mp3,至于时间问题,就是在他上班和回家的路上,当时他上班要将近一个小时,于是每天大约有2个小时听英语的时间,他一直坚持,(他的毅力比我强),结果呢,可以告诉你,2年半以后,他离开了单位(当时我已经离开中科院),去了一家公司,当时要求是外语面试,面试的是一个澳大利亚人,他后来和我说,当时他的水平属于可以听懂,但回答是磕磕巴巴的,不过,结果还好,总算进入新公司了,在后来,他用外语的时间不是很多,但几次都是关键,一次是后来他象换工作的时候,去IBM,外语已经很流利,但因为代码量少,而被pass,(虽然失败,但你要知道外语现在这个时候已经不是他的问题),还有一次,是他们公司过CMMI,来的是国外的审查员,也是澳大利亚的,当时他就脱颖而出了,成为了这次过级赛的主要运动员,CMMI每过几年是要重新审一次的,审查员(一个国外好老头)以来单位就大喊着,吴敌,吴敌,吴敌在哪里,哈哈,把他的领导给惊着了。外语的作用,第一学习技术的必须。我们的计算机软、硬件技术目前来说还是有欠缺的,读国外原版资料比翻译的资料要好很多。第二,机会会多,很多时候,即使不用,但也是一个敲门砖,有是最好的。所以,码农们最好不要丢弃外语。

B:既然说道吴敌,就讲一下他的故事吧。否则,大家可能会迷糊,招聘吴敌的时候,我当时在负责测试和质量部门的工作,当时单位有几个测试人员,但编码能力比较弱,所以需要招聘一个能编码的种子(工资问题,不可能招聘高级测试员,所以招聘种子自己培养)。千挑百选挑了吴敌。之所以选择吴敌,一个是他个人能力,但最重要的是他的心态,记得他当时和我说为什么不做程序员,是因为在大学学习软件觉得很难,自己无法完成编码工作,哈哈,一个机灵的好伙子,到我手下,想不编码,门都没有,(我当时的判定,吴敌应该做过一些编码,但遇到问题无法解决,所以想放弃,这个是开发人员必经的一个阶段,如果帮助他克服了,必是一个好码农,对工作敬畏的人,总比无知者无畏的好)。

C:吴敌来单位后如何工作和学习外语这个不多说了,说几个比较关键的事情吧
1不许跑,当时测试部门编码的就只有我和吴敌,我当时已经工作13年了,想离开单位,所以,对不起吴敌同志,编码全靠你,资料我给你找,代码可以帮你调,但编码都你来干,好在吴敌是真想学技术,所以,代码量迅速增加。每次他想跑的时候,我就一句话,不许跑。可怜的吴敌就这样被我虐待了一年,(代码是基础,没有大量的代码做基础,很多事情你真的理解不了,所以在本科的时候做2到3万行的代码,是你找工作一个区别于其他人的闪过点,切记切记)

D:给讲,但不编码,开始都是将但文体,几十行,几百行就搞定,了后来上千行的代码,我也是直接讲,哈哈,被怪我,这是为了吴敌好,你要知道如果的万行代码都是由几千个几百行的代码组成的,那不叫水平高,叫低水平循环,说简单点,编写一个400行的代码的训练要远远大于编写10个40行的代码,而一个万行的代码复杂度要远远大于几十个千行代码,所以,如果你还是在学校学习的哥们,又立志做码农的,最好在毕业的时候有一个万行代码的程序。这是极好的自我训练。

另外一个就是想让吴敌树立一个观点,万事靠自己,工作了和做学生最大的区别就是没有了依靠,在家可以靠父母,学校可以靠老师,但工作了只能靠自己,老话怎么说的,师傅领进门,修行在个人。千万比指望师傅管你的一切,我又不是郭德纲。哈哈,不过,后来和吴敌一直是朋友,估计以后也不会有撕逼的事情,小小得意一把。

E:哥们,写本书吧,这个是一个好玩的事情,吴敌工作大半年了,系统用的很熟悉,工作也是玩着就做了,于是遇到一个问题,无事可做,妈妈呀,这个可不行,中科院工作性质就是这样,有时候很忙,有时候很闲,但在我手下的人想闲是不行的,(当然我最反对的就是加班玩命,不是别的,效率低)。于是有一天聊天的时候,给吴敌安排一个任务,写书吧。写什么,就是QTP的使用,可我们写的东西不上档次,没有关系,我们写入门的书,将你遇到的问题先写下来,不够吗,咱们去51testing,看别人有什么问题,于是我们有了将近百个问题,大部分可以回答,还有不知道的,好办,你不是没有事情吗,去找资料,去实验吧。

F:吴敌是真听话呀,百多个问题,一个一个搞,都明白了,写了20个问题给我看,一看,哥们,这个东西是人话吗?怎么了,我都说清楚了。是,我明白,是因为我搞了怎么多年的开发,别人明白吗,让别人看一眼,于是叫过来其他的测试人员,的确不明白,哈哈,这好办,咱们先总结如何写人话,显示题目,在写应用场景,问题点,技术原理,实际的程序,最后是遗留问题。都按照这个格式写,标准,好办,写完让你老妈看,他不是开发,也没有基础计算机,他听得明白就过关,拜拜了您那,我去休息了,

G:罢工了,吴敌小朋友罢工了,很简单,就是不写书了,其他的倒是没有什么,为什么,为什么,问他,不说,哈哈,慢慢聊吧,终于有一天他说了,这个事情还是因为他老妈被逼听课,听完了,倒是可以听懂,随口问一句,你都写出来了,别人都会了,你怎么办?没有工作的情景吓坏了宝宝,于是宝宝罢工不写了,哈哈哈,哥们你太逗了,你知道我13年用了多少开发语言,用过多少系统,搞计算机的,就是更新快,要不但学习,现在你不写,难道别人不写?再说了,你写了,说明你水平高,发表后,一定会有反应,不信,咱们看看,(发表后怎么样,我可不知道,但忽悠的本领我还是比较强的,搞不定你一个刚毕业的小屁孩岂不是太打击我的厚脸皮了)。好了,总算成功,写书工作继续。

H:发表了,终于发表了,300多页,不过不是出版物,是在51网站上,一个测试人员的专业网站,于是吴敌成为了明星,从初级战友直升高级战友,(我因为不回答问题,一直是初级战友,不过,我的朋友是高级战友,像不像阿Q)

I:安静,安静点,因为那个书切入角度比较好,说人话,而且发布的客户群比较对位,所以,吴敌成为了十八线小明星,一堆小弟倒头就拜,无数问题向他飞来,哈哈,于是我们吴敌小朋友开始飘飘然了,一天没事的时候,销吴敌的活动开始了,忘了是什么事情,好像是在讨论技术问题,我问吴敌是否想做测试组长,吴敌当然愿意了,于是我告诉他,作为测试组长需要懂的东西,比如代码编程规范,看设计文档(如何看明白,如何找问题),如何组织工作,如何了解测试人员和开发人员能力。。。。等等,当然了,不给资料不是我的风格,于是给他列了资料,大概几十项吧,告诉他这些东西搞明白、会用了,就可以做测试组长了,于是这个世界安静了,每天兴奋的象小公鸡啾啾叫的吴敌小朋友终于安静了,岂止是安静了简直是垂头丧气了,哈哈,打击人是我们长项。
说一个题外的话,开发人员的成长是有一个大致的规律的,一般来说,一两年谦虚谨慎,三四年勤勤恳恳,五六年趾高气扬,七八垂头丧气,九十年平平淡淡。这是是说本科的。

说明一下。

一般本科毕业,都知道自己知识是与欠缺的,所以一般在工作的时候都比较听话,基本上让做什么就做什么,对别人也很谦虚谨慎,为了学东西吗?感觉老鸟都是牛呀,

三四年的时候,往往因为工作好,会升级,做一些重要的工作,接触单位的核心技术等等,这个时间段,因为时间的积累和成长的渴望,都是极端努力工作,加班最多的就属这个年龄了

五六年的时候,一般来说,如果你干了四年,都能当一个小头目了,或者在技术上小有成绩。于是会感觉编码不过,如此,仿佛这个世界没有你做了不了的项目,大家吹牛的时候,你会如数家珍般的罗列自己的项目,当然,如果你赶上了那几个浪潮,挣了一点小钱,就更完美了。于是这个阶段的人最大的特点就是一个字---狂。

七八年的时候,哈哈,因为你的狂,报应来了,因为你的成绩,单位重大项目来了,你负责,于是你发现,技术上你是一个小白。管理上还是小白,而项目可能不仅仅是软件了,有硬件的内容,有集成的工作,有客户的工作,妈呀。原来项目管理这么麻烦,人事交往这么麻烦。当然最好是鉴于你能力超强,单位给你好几个项目,由于人才的欠缺,你还需要管理部门,那就真完美了,于是你发现自己这日子没办法过了。愁眉苦脸是这个阶段人员最显著的特征,顺便说一句,这个阶段是开发人员转型最多的时期。

九十年的时候,看你的修行了,如果你知道如何做,或者遇到贵人(可以给指导),你掌握了技术、管理,于是很多事情就顺理成章了,也许还要加班,也许好有很多挠头的事情,但你已经经历了很多,也知道事情如何发展,你该如何处理,于是,你不会再着急上火,成天忙忙叨叨的,按部就班地做着事情,祝贺你,你已经完成了第一次定型。

需要说明的一个事情,每个人经历不同,所以这只是一个基本的过程,大家别按照工作年前去硬套。我遇到过在工作10年了,还属于垂头丧气的人

J:吴敌安静了,老老实实地去收集资料,修修改文档,去继续他的测试工作,你以为事情结束了,没有,后边还有故事。

K:当老师,哈哈,不是我,是吴敌,吴敌因为在网络上表现的谦虚谨慎,彬彬有礼,所以,收到了大家的欢迎,于是有一天,一个姐们问他问题,吴敌同学大义凛然,威风凛凛。获得了姐们的认可,于是受邀讲课,什么,QTP测试,吴敌问我去不去(当时我已经离开单位了),当然去,于是给吴敌讲如何备课,哈哈,内容不说了,这个吴敌小同学都会,关键是讲课经验。老办法,给妈妈同学讲,讲三次,考虑到妈妈同学已经经过了培训,要求再给爸爸同学讲,要求老爸能听懂,会基本操作,ok你就过关了,上讲台,投标答辩,客户交流一直都是开发人员比较怵头的事情,这个事情最基本的方法就是模拟讲课,我们做项目的时候,开发人员第一次上讲台,无论你对系统多熟悉,要讲课,对不起,先备课做ppt,然后就是讲一遍,说一遍问题,连续三次,基本可以过关,这样再上讲台就可以做到不胡说八道。这个方法及其灵验,各位有兴趣可以试验一下。

L:继续吴敌小同学的逆袭故事,还是那个姐们,发现讲课效果不错,于是问了吴敌一个问题,来我们单位如何,做测试,工资大大滴高,动人呀,中科院工资低呀,去面试,老外,澳式英语,哈哈,就是上边的事情,吴敌小朋友危险过关。。。。开始了他人生新生活。

M:吴敌是我在中科院带的最后一个兵,后来,我们的接触主要是在春节的时候,有时候在网络上也聊聊,这个家伙后来做到他的公司测试技术负责人,部门第二把手,10多年,上层领导多次更换,他却稳坐钓鱼台,工资吗,也一直在上升,哈哈,现在也晒晒旅游照什么的,后来的有四个事情对他来说是比较关键吧。

1吃亏是福
俗话说有人的地方就有江湖,有江湖的地方那能不撕逼,这个事情太常见了,在中科院的时候,吴敌这个事情见得少,刚去新单位,就碰到了这个事情(当时我也在新单位撕呢,哈哈),他在电话里巴拉巴拉说了半天,事情很简单,就是有老同事(也就早到一年,比他大两岁)高冷欺负他,无非就是吴敌小朋友,活你全干,功劳是我的,过错是你的,怎么样,我是老人,要听我的,哈哈。一次、两次,吴敌忍了,现在有点要爆发的趋势,哈哈,哥们,别着急,这个事情简单。第一,活全干,而且要抢着干,最好让人家无事可干,第二功劳全是他的,没有必要争,第三,领导批评,你全接着,开发人员的埋怨去你解释,有错误就承认,回来迅速改进。就这么着,半年以后看结果,如果你认为我是怯懦,那可就大错而特错,这是三个很厉害的必杀三招。

第一招,多做事,吴敌虽说有两年多经验了,但毕竟还是嫩,属于杀小怪,挣金币,求升级的过程,与其每天无事找事去PK高冷,不如多练习技术,有人给你机会,为什么不珍惜,这个世界是一个现实世界,老板雇佣你,是要压榨你的剩余价值,你连价值都没有,何谈剩余价值。所以我们还是快去杀小怪求升级去吧,

第二招,不争功,你以为你争功劳,功劳就是你的,你以为老板是笨蛋,部门经理是笨蛋,身边的其他的工作人员也是笨蛋,其实每个人对身边的人都有一个评价,这个评价不是写在纸面上的,是写在别人心里上的,关键时刻才显露出来,到时候,你说什么都晚了。

第三招,接批评,哈哈,这个是最狠的,有问题,人的第一反应是跑,你没跑,领导留下一个印象,你改正问题了,留下一个好印象,次数多了,领导会反问自己是怎么回事,一调查,全出来了,你说领导不问,哈哈,如果你的领导真是笨蛋,那你就该跑路了,跟着错误的领导,是最大的错误,切记,切记。

结果,半年后,吴敌涨工资,年终奖系数1.4(一般是1.1)。一年后高冷走人,原因技术差、是非多,无事可做。

2面试失败
不算毕业找工作面试,吴敌有过两次面试,一次是在我离开单位的时候,他去yahoo面试(想想好怕,如果当时去了,现在?),回来以后,那叫一个兴奋,仿佛此职位非我莫属,细一问,我就哈哈了,一盆凉水泼下,没戏。为什么,答非所问,其实吧,对于新毕业或者刚工作的开发人员,企业要的是发展的可能性,也就是可培养性,你吴敌同学是不错,但那点成绩摆出来是上不了台面的,而且又有一点小得意,这个麻烦了,嗨,经验是硬伤呀。然后自然就没有然后了,吴敌很伤心。。。

第二次面试吴敌就坦然多了,那次是一个哥们介绍他去IBM,一面,二面都过了,后来栽在了大boss哪里,主要原因是代码能力,说简单点就是代码量,对于像IBM这种类型的公司来说,测试和开发性质是一样的,代码能力是很重要的,而吴敌一直做的是黑盒测试和回灰盒测试,代码量有,但比起开发来自然少多了,自然被pass,不过,这次面试,对吴敌来说没有坏处,反而有好处,一个是让他了解的代码量的重要性,一个是让他有时间学习管理,后来他拿下了Java,这对他后来和开发人员的交流提供了很大的方便。

3项目管理、质量管理
项目管理和质量一起说吧。这个是一般开发人员必经之路,一般来说在工作3,4年的就会接触项目管理和质量管理。其实质量管理和项目管理有很多的重叠的。覆盖率大概有70%到80%,所以,如果你项目管理学的好,转质量管理几乎是没有问题的。哈哈,关于这些理论的东西后边慢慢讲。还是先说无敌小朋友吧。IBM面试后,无敌就开始玩JAVA,后来是学了项目管理,当然他学项目管理是一种低成本学习法,所谓低成本,就是看PMP的资料而不是去考试,这种学习需要比较强的自觉性,因为没有考试的压力,而且题目都需要自己找,所以对个人的要求比较高。这里需要说的一个事情,关于学习,学习需要系统化,学习需要系统化,学习需要系统化,重要的事情说三遍,这个坑巨大,要慢慢填。

先说无敌小朋友吧。无敌的特点就是坚持,这个特点我不如他,4年前他们公司开始CMMI考证的事情,当时公司比较重视,找了一个澳大利亚的老外来做外审,无敌小朋友又露脸了,原因如下:

1外语好,可以和老外无障碍交流,(他后来一直在坚持学习,每天半小时)。

2开发经验足够,测试和自学让他代码量够多,所以在涉及到实际工作经验的讲解时,能够反应过来。

3另外看过很多质量和管理方面的书,所以不存在老师讲的概念和知识点,他不知所云的现象。
无敌小朋友缺的是系统化,而老外的讲解,总能使他有所悟,也是一个老头在上边侃侃而谈,一个小萝卜头在下边频频点头,一堆中萝卜在哪里昏昏欲睡,哈哈,场面自己脑补吧。

于是出现了一个奇怪的现象,低级别的无敌小朋友和高级别的开发和管理中、大萝卜成了好朋友,大家经常凑在一起,讨论如何对付CMMI,然后让无敌小朋友冲上去和老外交流,PK,于是无敌小朋友成了,懂技术、懂管理、懂外语的多方面的人才,而这次CMMI过级也成就了无敌,让他成功打入了核心开发人员团队。

好了,赶紧拉回来吧,讲大学的学习体会,都讲到了巴布亚几内亚去,这个题跑得实在有点远。
简单罗列大学的学习吧。

1学软件,或者想搞软件的,第一侧重的就是代码量,我自己的感觉,本科3w,研究生5w,若干你能够达到这个程度,我想你根本不存在找工作的问题。说一个不是段子的事情,4年前,国内一个不错的大学的在读研究生到我公司做实习,当时我问了一下,他们的代码量一般是2000多行,最好的是5000-6000行,而研究生毕业的时候是不到20000行的,这个数据实在有点太低了。
单纯谈代码量,不是很科学的,哈哈,如果编写了500个100行的代码,你的水平是很低的,顶到头相当于是1千行的水平,而10个1千行的代码水平绝对比不过一个3000行的代码,说简单点,就是不要低水平循环,在你毕业的时候,本科最好有一个8000行以上的程序代码(一个程序),而研究生应该有一个万行代码的程序。

2外语,这个不说了,每天半小时,这个不多说了,一定要坚持,

3数学,没有这个东西是最重要的,我们说的程序员经常是一个模糊的概念,在中国的程序员队伍中,真正的软件工程专业出来的还是比较少的,其他专业的比较多,而有两个专业可以说在软件专业是比较优秀的,一个是数学专业的,一个是电子专业。这里说的数学专业似乎不是很合适,应该说是在本科阶段对数据训练比较好的专业,往往做软件是比较容易的(比如高能物理的很多专业),当初,软件行业用到高数、高代等纯理论的比较少,但对逻辑关系却用的很多,如果没有经过这些方面的训练,工作以后麻烦多多,另外现在软件行业整体的数学能力实际是一个逐步提高的过程,比如现在如果做大数据处理和人工智能,高等数学的东西要求是越来越多了。大学是有时间静下心来学些数学的,工作以后几乎没有时间用于数学的研究,所以在大学期间多刷刷题对以后的用途极大。

4学一点硬件知识,搞软件的不懂硬件是不行的,哈哈,有那么一句话,最好的软件工程师最后都去做硬件去了,哈哈,的确是这样,在的技术生涯中,一个是很多项目中的确搞过硬件,第二,软件很多的体系是和硬件紧密相关的,第三,硬件的原理限制了软件效率,所以最好不要认为搞软件的可以不懂硬件。讲几个段子吧

10.8.2016


在我们学习C语言的时候,有一个比较著名的对比程序,哈哈,这里只说原理,不说代码,很简单,就是打开一个文件,然后一个字符一个字符往文件里写,写完一万个字符,关闭。另外一个程序功能相同,但是不是一个字符一个字符写,而是,一次写入一万字符,计算一下时间,具体时间忘了,但第一个程序所用时间大约是第二个程序的百倍以上。如果不了解硬件知识,你很难理解原因,但如果学过计算机原理的都很清楚,磁盘的写入是要寻址的,而寻址的工作过程实际是一个机器臂的移动,每写入一次都要有一个寻址过程,所以你一次写入一个字符就要寻址一次,而一次写入一万字符也是寻址一次,所以同样是一个功能,一个要寻址万次,而一个是一次,看看,差别出来了吧。这个原理你别小看,如果是玩大量数据的数据库存储,这个点是必须知道的,而且效果很好。


如果给系统调优,最常见的方法是将写入磁盘的动作改为内存操作,一般来说,空间不够写磁盘,提高速度用内存,这是我们原来编程的时候常用的方法,为什么,还是刚才说的机器臂的原因,内存操作是以光速在操作,而机械臂的速度,不说了,说多了都是泪。


说一个毕设的糗事吧,当时的PC是16位机,而我毕设的小型机是32位机(在当年,这个是很牛的,你要知道那个机器有4G硬盘,一定会鄙视我,不过当年做4年本科也没有用满一张1.44M的软盘),记得是玩字符串操作,写没有问题,但读出来发现是错的,怎么搞也不对,后来才发现,人家是32位表示一个字符,我是16位,所以悲剧了,还有一次,是浮点数比较,怎么比较都不对,后来发现是浮点数不是精确值,而是近似值,也就是浮点数实际是无限接近,而不是等于,后来的习惯改成了在一定范围内比较来确定是否相同,这些糗事都是和计算机的硬件相关的,单纯的软件是很难理解的。所以,软件开发人员千万不要有我是搞软件的,不懂硬件没有关系,这绝对是tmd是错误的,是错误的。


5学一点历史,这个是历史是计算机的发展史,或者是科学发展史,你刷题累的时候,看看任务传记,知道第一个程序员是个女的,叫Ada,了解一下HP在硅谷的地位,看看乔布斯是个研发人员吗,在琢磨一下难道比尔盖茨是牛逼的开发者还是牛逼的商人,至于马云,难道仅仅是一只站在风口上的猪吗?我说的这些,不是让你去读鸡汤文,而是去读他们的经历,他们的失败,失败比成功有时候给你的启发更大,只所以要读这个东西,其实主要是让你对未来的直接生涯有一个大致的了解,便于以后的职业规划。

11.8.2016


说一个题外的话,一个在中科院的小朋友提到她在中科院工作的苦闷,说几句吧,


A:师傅领进门,修行在个人,工作和学生的最大区别就是没有人会为你着想,需要你自己去规划自己的未来,这点说起来是很残酷的,但是现实,不要去埋怨。


B:有一个自己的规划,如果实在不喜欢编码,可以不做码农,其实有很多职位可以选择,最好所从事的工作和自己的兴趣和能力可以匹配,这样工作起来会比较不累。职业生涯可以走的长一点

C:所从事的事业要长一点,其实不管是软件行业还是其他行业,如果你干了10年以上,都可以成为专业人员,当然前提是你用心了,而一旦成为专业人员就有一点呢小媳妇熬成婆婆的感觉了,所以你要想一下,你想从事那类开发,一旦决定就不要经常换,最起码要工作2-3年,否则,不容易形成积累,而没有积累就无法形成突破。不能达到一通百通。


D:工作以后不要只埋头拉车,不抬头看路,这是研发人员最容易犯的错误,路走错了,你越卖力,越辛苦,越倒霉。开发人员之所以加班,有那么多的工作吗?你看看最后系统的代码量是多少?文档量是多少?少的让你惊讶。


E:学习是研发的一部分,傻瓜才会用全部时间去编码,而不去学习。我自己带队伍的时候,除非极端情况,一般,我的开发人员要求是工作62开,就是6个小时工作,2个小时学习,当然,如果你的组织不是这样,你就自己规划好了,现在电子书很多,切换界面动作快点一般没有什么事情,当然,你别老看小说就行,好了,说你呢,补充两个段子说明一下吧。


第一个段子还是我的糗事


我英语不好,所以看英文资料就很。。。。了,记得是我后来带团队的时候,因为开发人员少,所以很多疑难问题都要我自己搞定,当时是编写Delphi代码,是要在一个grid表中加入一个下拉选择框,原理我明白,如果用c编写,对于当时的我来说不是问题,但delphi当时我接触也才半个月,所以就只能自己去试验,这个问题难了我2周时间,各种方法都实验了,不行,最后是又去看书,突然发现在一个地方设置一下变量似乎就可以了,于是又实验,成功,当时真是又高兴,又想抽自己大嘴巴,其实书上都有,都是外语不好浪费了3周时间。


不过好在最后是按时完成了工作。我们在做开发的时候,没有互联网,没有百度,有深厚甚至资料都不全,所以,强迫我们去思索,去试验,很多时候都是被逼到绝境上,不上不行,否则就是个死,但这种环境的确训练人,习惯了这种工作状态,对于我们来说,更多的是考虑如何解决问题,而不是逃避,不是接手现成的答案。靠自己,靠自己,靠自己,千万记住。另外就是就是不要跑,后来遇到很多开发人员,遇到问题的时候,不是逼自己,而是想办法跑,最后死得比较惨。


第二个段子是我在做交通后带测试部门的两个测试人员的段子


第二个段子是我做交通后的事情,但是我负责测试部门,招聘了几个测试人员,一个是毕小斯,另外一个是费小斯,毕小斯是软件专业的,而且成绩不错,人很聪明,所以做测试上手快,进步大,而费小斯是电子专业的,在软件方面自然就有问题,一天费小斯问我,毕小斯软件专业毕业,做测试上手快,效果好,我对他也重视,而自己虽然努力,但因为所学专业的问题,想赶上毕小斯几乎不可能,很沮丧,哈哈,于是我开始忽悠他了,首先,他是我重视的开发人员之一,(这个是真话)第二,参加工作后就要不要太强调自己的专业,工作没有和专业百分子百对口的,所以必须自主学习,否则,即使专业在对口,不后续学习,淘汰只是早晚的事情,第三,工作中,用到什么什么学习什么,你不是没有用过数据库吗,好,给你一堆oracle的书,去学吧,什么,没有时间,这个简单,你不是独自一个人北漂吗,那就晚上晚下班一个小时,这样你就多了12.5%的工作时间,即使这段时间只有十分之一的效果,每天也比多提高了1%,那么每天的效果就是原来的1.01,学习效果是个累积的过程,1。01的一年的效果多少,咱们算一下,就是1.01的220的次方,大约是18.7,那么十年呢,哈哈,是一个天文数字了吧,这还没有算你周六和周日呢,你想咱们上学,一门课程75学时,你用三周还搞不定,你不会告诉我,你原来没有在期末搞过突击吧,如果三周还搞不定,不是你不努力,就是你智商有问题了,那就不能怪我了,哈哈


结果呢?毕小斯后来成为测试大拿,后来去了一个电商公司,费小斯呢,他真的比毕小斯好,在单位的时候,他是第一个外放的(独自一人外出,负责一个测试项目),而且要不是他后来想离开单位,我实际想让他负责整个测试部门的,不过他出去也没有给我丢脸,先是做测试,后来做质量,最后在Bat的B做了产品经理,你能想到吗,这是一个原来看到编码就头疼的小斯



关于代码量的一些概念


哥们,你知道代码行,你知道有效代码行吗?你知道开发的平均的代码行?你知道项目的代码行吗?


代码行这个概念大家都比较清楚,但要注意,注解行算代码行,哈哈,这是原来的规定。

有效代码行是相对代码行的一个概念,因为比较难统计所以现在不多说,简单点说,就是实现相同功能的最短代码行。(下边那个枯燥的文章是我原来写的,直接搬运过来,非码农可以不看,枯燥之极)。


一个开发团队(不包括非技术人员)平均是50行左右,如果包括非技术人员,一般就是20-30行,甚至10行以下。

一下内容比较枯燥,非码农可以直接跳过


刚参加工作的时候,老同志向我介绍了一个有效代码行的概念,这个概念对我的工作有一定的影响,介绍给大家,希望对大家的工作有一点帮助。


有效代码行的概念是相对代码行的概念而言的,我们平时比较重视代码行的概念,代码行是指在编程中程序员编写的所有代码的行数。包括。空行,注解行,以及代码行。这里要注意的一个问题是,很多人由于编写不规范,会将多个代码行写在一行,这不但会使代码行的计算发生错误,而且对代码的调试也很不便。


例如
if(a==1){b=1;}else{b=2;}
应该编写为
if(a == 1){
b = 1;
}else{
b = 2;
}


这样代码行应该为5行而不是1行


有效代码行是实现相同功能的最短代码行。举一个事例说明一下,有C语言实现打印从1 到10000所有的整数。比较极端里编程方法是:
print1to10000(){
printf("%d/n",1);
printf("%d/n",2);
.
.
printf("%d/n",10000);
}


该程序代码行为10002行,但另外一个实现完全相同功能的代码是
print1to10000(){
int i;
for(i=1; i <=10000;i++){
printf("%d /n",10000);
}
}


代码行为5行。也就是说第一个程序的代码行是10002,但它的有效代码行为是5行


这是一个比较极端的事例。也许有人会说没有人会去编写10002行代码的那样的傻瓜程序。的确是这样,在这个问题上没有人会这么编写,但在开发的过程中类似的问题总是层出不穷。以后我会举一些事例说明。


关于有效代码的行的另外一个问题是,有效代码行应该是实际运行系统中的代码行。而不是你在项目中编写的所有代码行。举一个例子。我在一个项目使用c语言开发,由于我对一些技术难点不了解,所以要编写一些代码做技术准备,(假设我编写了5000行),当所有的技术难点解决之后,我开始进行编码,编写的代码行为4000行,那么我的有效代码行应该为多少呢?是4000行,这是因为我原来编写的5000行代码是做实验用的,而在我真正开发的系统中并没有使用到他们,所以它不是有效代码行。


这个例子从一个侧面说明了为什么有人一个月可以编写1万到2万行代码,却不能完成开发任务的问题。原因很简单,他编写的是代码行,而不是有效代码行。所以我们现在不必因为听说某开发人员是个高产量的代码生产者就感到自卑。(提出一个问题,如果项目失败了,有效代码行应该是多少)。


关于有效代码行另外一个使人惊讶的问题是-----一个正常的软件开发人员的每天的有效代码开发量是10行到15行(国外的统计),怎么样很少吧。但你只要仔细想想就会发现其中的奥秘了,这是一个开发组织开发一个项目的的平均值,之所以会这么少,是因为在统计的时候要算上所有的工作人员(调研人员,设计人员,编码人员,测试人员,维护人员,文挡编写人员等)以及所有的时间(从调研开始计算时间)。而不是单指编程人员的每天的工作量。如果你认为你每天编写10到15行代码就完成任务了那就大错而特错了,实际上你如果将你手头一个刚做完的项目做一下计算,恐怕有效代码行也就是这个数了。


关于有效代码的一个有趣的问题是,不要单纯的谈论有效代码行的问题(后者说把它作为评价代码的唯一标准),有时候适当地降低有效代码行效果反而更好,举一个例子。我曾经有编写过程序是进行一个矩阵转换,如下所示。


1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
转换为

1 2 6 715 16 28 29
3 5 8 14 17 27 30 43
4 9 13 18 26 31 42 44
10 12 19 25 32 41 45 54
11 20 24 33 40 46 53 55
21 23 34 39 47 52 56 61
22 35 38 48 51 57 60 62
36 37 49 50 58 59 63 64


我的一个同时编写一个64行的赋值语句,当时我看完了觉得他很笨,于是自己花了2个小时编写一个复杂的转化语句,大约是30,40 是行,当时挺得意的,可后来一想不对,我的有效代码行是少了,但存在几个问题:


1效率低,由于存在判断语句和循环语句,效率肯定要低,而效率是这个程序要强调的一个条件。


2调试麻烦,我的同事只用了10分钟就完成了工作,而我用了2个小时。唯一欣慰的是我的有效代码行少,而且容易扩展性(但扩展性在这里用不上)。所以我想这应该是一个糟糕的只强调有效代码行的例子。


下面,我再补充一点关于10002行的代码问题,我做的比较多的是信息管理系统,一次我们的一个项目组做一个项目,该项目的特点是要对十几个专业数据库的数据进行管理。专业数据库之间没有相互联系。独立成为系统。操作主要是添加、删除、修改、查询、统计。各子系统除了数据项不同以外操作过程是比较相类似的。由于项目比较简单,就交给了一个新工作人员开发(需求是比较完善的)。他先实现了一个专业数据库系统,然后采用copy的方法在很短的时候实现了其他的系统(当然要做一些修改)。开发的速度很快。但到了测试的时候问题就来了。我们的测试人员只要在一处发现了问题,其他的系统必然存在相同的问题。如果他要修改一个错误,就要同时修改十几处相同的错误。编写过代码的同志们都知道做这种相同的重复性的编码是很烦人的。改了一阵他就受不了了,而且更可怕的是,他修改的地方仍然会发现新的错误。而一旦修改又是十几地方需要同时修改,你说烦人不


最后总算基本过关了。但他花费的时间和精力是很大的,而且对软件开发产生了畏惧心理,以后再也没有过code工作。从这个工作事例来说我们不难发现一些问题。


1采用copy的方法编程在软件开发过程中是一种常见的现象,特别是对一些刚参加的软件开发人员和非软件专业的工作人员(我在12年的开发过程中发现的一个规律)。
2采用这种开发方法虽然开始的速度会快一点,但实际上以后的维护工作是非常巨大的。
3这种编程能够方法和10002行的编程方法从原理上来说是相同的。


其实很多道理是很简单的,相同的问题,我也遇到过,我自己的工作300个表,每一个表要7个界面,也就是说要2100个界面,bs系统的界面开发是很浪费时间的一个人一天最好也就是一个界面,2100个界面估计要87个人月,所以如果采用copy的方法我就死到家了,后来我们采用了动态开发的方法只用了14个人月。而且系统维护起来很方便。(不论是修改界面还是新添加功能速度都很快)


如何代码行的有效性,编程经验不多的确是很难编写有效的编码行。一个建议是,如果你完成了一个功能的开发,可以采用别的方法再次开发(当然是在不影响工作的情况下的)。我自己的开发经验是这样的,如果是第一次实现某个功能。实现了即可(满足系统要求),但要做第二次编码(或者叫迭代吧),将其中暴露的问题解决(诸如函数代码短过长,模块划分不合理,不好的变量名等问题),一般来说,第二次开发完成之后,代码是比较合理的,而且代码段会短很多。另外在算法上进行一些改进,只要不断总结进步会很快(别学狗熊掰棒子)。


有效代码行的的问题的确比较复杂。原来的定义是:完成一个相同功能的最短代码行数。我自己扩充了几个附加条件:
1必须在实际系统使用的代码。
2有效代码行不是衡量一个代码好坏的唯一标准。


至于如何评价一个别人写的代码的有效代码行。我想需要考虑多个方面:


1需求是否合理,不合理的需求只会增加代码行,不会增加有效代码行


2框架是否合理。解决相同问题可以有不同的方法,方法的不同代码行的差别很大,但有效代码行应该是相同的


3不同开发环境的有效代码行的差别很大,应该区别对待。


4对基本的算法的实现应该进一步完善,获得最佳实现方法


5积累开发数据(在开发过程发生开发的数据),获得一个基本检测数值(可惜我目前还没有发现关于这方面的资料)


6系统自动生成的代码行不算有效代码行。


跳过完毕


说几个关于代码行的逗逼故事吧


在我做交通系统后,有一次和一个新招聘的10年的开发人员聊天,问他代码量是多少,那哥们不屑的说了一句,200w左右,当时,我就惊着了,我的吗呀,我每年的代码量在2万左右,如果剔除做实验的代码,估计就一万行,人家的效率是我的十倍,于是虚心的问,什么代码,效率这么高,结果是一个CV专家,(所谓CV专家就是经常在编码的时候用复制粘贴功能),因为做的软件是信息系统这类的软件,所以,常用CV功能,代码量自然就高了,听了这话,我就呵呵了。


这里要说明一个事情,做软件,重在需求,苦在设计,少在编码,勤在测试。所谓重在需求,是要明确方向和目的,防止南辕北辙,这是软件开发的重中之重。苦在设计,是要你的体系、架构满足用户的要求,这里要考虑用户模型、系统模型、系统的限制、算法问题,所以说在设计阶段,开发人员是最苦的。少在编码。我们的开发人员经常是盲目编码,这也是缺乏开发训练的一个标志,如果你对所使用的开发系统不熟悉,而需要迅速掌握系统特点,这还说的过去,否则,只能说明你的开发有问题,如果你说不清楚客户的数据流动的过程,处理的方法,计算机怎么可能按照你的指令去工作,要知道计算机只是一个工具,它是按照你的要求去工作,而如果你连工作流程都说不清楚,计算机除了制造bug,是没有其他事情可以做的。勤测试,没有人是牛人,特别是一个新系统,所以不断的测试,看系统是否和自己想的一样,将问题早发现,这个是很重要的事情。


在我经历过的开发团队,如果常年需要加班,研发一定有问题,可能是需求,可能是设计,可能是管理,但很少是编码。这个坑深了,在交通十年,讲的都是整理研发团队的事情,慢慢填。(强力加班的工作方式一般执行2个月以上,效率下降极大。)


关于学习的事情,补充几点,想到了就写在这里


A:原来提高PMP的时候,有一个老师讲过,听的东西,记住10%,写的东西,记住20%,做过的东西,记住60%,讲的东西(给别人讲课),记住90%,所以不要只看,作为码农,要做实验。


B:不用的东西不看,哈哈,计算机随便的一本书都够厚的,在项目开发的时候,采取看目录的方法,用那些东西,看那些,这样效果比较快,记住这是在项目紧张开发的过程中,


C:建立体系,这一条和B似乎矛盾,就是在项目不紧张的时候,一定要建立一个完整的体系,我自己的学习过程,在前几年因为项目的原因,用过很多语言,但多数不深入,形成了低水平循环,后来真正搞得好的是软件工程和项目管理,而这两个东西实际化了很长时间去搞明白,形成了自己的体系,这个过程很痛苦,但很有用,对于语言,也一样,在学习的C和C++,如果真学的好,形成了体系,在学习其他语言实际只是一个对比过程,可以快速形成新语言的体系,


D:建立量化的概念,中国人办事不容易量化,这个事情其实很糟糕,所几个我自己的亲身经历。

这个故事是我记忆最深刻的事情,我的夫人怀孕的时候,做检查,有一项是弓形虫,当时检查完了,第一次检查是定性检查,用试纸,当时大夫对我夫人说,你的检查是阴性,孩子有畸形的可能,怎么办,你自己决定,当时我夫人都傻了,给我打了一个电话,然后自己在12月的寒冬,在风雪中独自走了4公里回家。我当时刚换了工作,比较忙,下班前,上网查了一下,弓形虫,原则上5%出问题,但有一个问题,测试有定性和定量之分,定性只能说明有或者有过,一般家里有或者的小动物,就会有感染这个病,但一般成年人无不良反应。靠,这个事情,定性是得过,现在是否有,不能确定,有问题不能确定的时候,你怕责任,就让我们直接拿掉孩子(虽然没有直说),有这么玩的吗,后来,我们去了医院做了定量检查,等结果的两周真是如坐针毡,还好,定量数据一出来,上网一查,果然是得过,现在无事。这叫什么事情,我不想吐槽医院的问题,我只想说,我们自己做事情的时候要定量和不能定性去玩,


还是说吴敌学习的事情,他学习外语的时候,因为犯怵,所以总是有一搭无一搭的,效果自然不好,于是想放弃。一次聊天的时候,我吐槽他的学习,他说基本每天都在学习,但效果不好,估计自己没有学习语言的天赋,后来,让他统计学习时间,很简单,打印一个月的日历,每日学习超过一小时的,画钩,否则画叉,详细统计时间,唯一的要求不能作假。一个月下来,吴敌惊着了,学习时间惨不忍睹。后来,他专门利用上下班的听外语,这样,一个月保证了45*2*22分钟的学习时间。后来的事情就不多说了。


我在中科院工作10年的时候,做过一个统计,有效工作时间,当时看的一本书《软件工艺》,里边有一个统计编码有效时间的统计方法,我们一般统计时间都是按照上班时间来计算软件的开发时间,但软件工艺不是统计的,它有一个理论,开发人员工作效率高的状态叫顺流工作状态,顺流工作状态最明显的一个特征就是在你编码的时候,你觉得还没有干多少活,时间却过得很快。经常是感觉刚埋头编码,一抬头却该下班了,我想很多码农都有过这种感觉,顺流工作状态效率很高,但进入顺流状态最起码需要15分钟,而打断顺流却很容易,一个电话,别人的一个招呼,甚至QQ的状态都可以讲你从顺流状态拉出,再进入又要15分钟了,我当时要求我的开发人员统计工作时间和顺流时间,不进行考评,只是要一个时间统计,时间统计要求比较精确,到秒级别,因为我和下属的关系比较好,所以哥们几个还是给了我比较好的结果,结果,一般开发人员,有效开发时间只有工作时间的20%,最好的一个代码狂人是45%,而顺流时间就更少了,只有开发时间的30-40%左右,这个统计不是很精确,样本量也不大(6个人*10个工作日)。但的确说明了很多问题


首先,开发人员喜欢加班主要是在晚上或者周六日的时候,工作环境相对好(人少),也就是他在进入顺流工作状态后不容易被打断,可以一直处于顺流状态,所以,如果你的团队可以的话,最好考虑一下如何让他们在上班的时候处于顺流,而不是逼得他们去加班。


其次,别崇拜所谓的代码大神,所谓大神应该是实现的功能,而不是看代码量,第一实现功能,第二代码可复用,第三代码简洁。


说这一段,主要想告诉大家,做事情不要凭感觉,要用数字说话,这个是著名的戴明环的C(检验的内容)真实的数据可以说明很多问题。虽然有时候有点残酷。


好了,还是啰嗦我的开发历程吧。


在坛子县的工作在年底胜利结束,比较牛的是,我们这个项目的收款是很快的,这是我参与额项目第一个拿到收款的项目,元旦的时候,项目整个杀向了深圳。具体的项目开发不说了,说发生的一些事情吧。说之前必须介绍一个人,华不大明白,哈哈,是和我同届的哥们,在一个研究室,也是坛子县项目组的成员,当时他负责另外一个项目组的开发。做信息系统。但是他负责深圳机场的一个项目,而负责的项目在深圳城里。和本地的一个公司合作,只有我一个人去城里,而项目组的其他成员都在机场。


A:被捕事件,当时的深圳是比较乱的,外来人口极多(几乎都是外来人口),而且很多事没有身份证明的,于是遣返就成了公安的日常工作,一天晚上,华不大明白带领团队在外边踢球,结果碰上了当地拉网,结果一群人都被圈里边去了,而哥几个还都没有带身份证,于是被请上了运犯人的车,王二这个时候没有犯二,说自己刚来,于是被放过,回去立刻找张老怂,其实后来也简单,老怂拿上大家的身份证就营救出了大家,不过听说,华不大明白当时很英勇,一定不坐犯人座位,而要坐前边的副驾驶,理由是自己有证明,只不过忘带了,不是遣返人员。估计人家也懒得和他折腾这个事情,就让他坐了,不明白回来,仍然大义凛然的说,如果不是他在哪里牵制了警察叔叔,王二一定跑不了,整个团队就全军覆没了。


B:狗肉煲事件,不明白项目组有一个女生,是他项目组的一个主要开发人员,从坛子县项目开始一直是不明白的骨干,而且两个人配合的比较好,一天下午,两个人突然吵了起来,而且非常激烈。后来还是老怂介入,才平息了,不明白跟我说,之所以起冲突,是因为中午不明白请他吃了狗肉煲,于是被传染了,哈哈,当然这是一个玩笑,老怂事后给我分析这个事情,其实根本不是什么狗肉的事情,其实是大家出差时间太长了,而且连续封闭开发,所以有点过劲了。这个时候大家的情绪和工作效果都极剧下降,还好,当时已经临近春节,给项目团队有了一个缓冲休息的时间。矛盾才得的了疏解。


我一直比较反对加班,特别是为了加班而加班,原因如下,


第一人不是机器,就是机器还需要检修呢,即使你再讲情怀,也是有一个限度的,一旦超过研发人员的忍受限度,必然产生反作用,而开发人员的反作用是非常可怕的一个事情,以为开发人员的工作很难度量,即使你有kpi去做考核,但开发人员对付这些东西的手段一定比你多。所以我一般不反对主动加班(即使没有开发代码,而仅仅是看书学习),但不支持长期高强度的加班。


第二加班的效果实际不好,码农的工作无论怎么说是个脑力劳动,如果让他真的高强度工作8小时,实际是没有精力去加班的,对于一般人,实际上是工作时间他们无法进入顺流状态,而造成还有精力去加班,那么为什么不给他们构造一个可以长时间处于顺流的工作环境呢?其实,无论是封闭还发,还是出差的现场开发,以及战斗室,其本质都是让开发人员有一个顺流的工作环境,仅此而已,很多时候,我们不深究其理,而是简单的看表面现象。现在开发人员流行的大通道开发环境实际是一个很不好的环境,开发人员很容易在正常工作时间被打断,那么为什么不给他们做成相对封闭的小工作间,说白了,还是管理人员太懒。


第三,长期的高强度加班给身体和情绪上造成的损害极大。码农这个群体天生的有一种情怀,所以我一直觉得开发队伍是比较好带的,但长期高强度对身体损害是很大的,而由此造成对家庭损害更大,这些东西都会影响开发人员的情绪,长期负面情绪的积累一旦爆发,就是一个大事情,而开发人员往往疏于注意对自己情绪的管理和疏解,所以一旦出现矛盾,就会比较激烈,而作为一个团队的管理人员,注意开发人员的情绪的变化和疏解是一个重要的技能。


第四.长期的高强度的加班,实际是掩盖领导的无能,领导不是好做的,特别是研发团队的领导,在中国,开发团队的领导不能有明显的短板,这个要求其实是很高的,比如,如果你的计划能力、估算能力差,造成工作量和资源部匹配,那你就加班吧。如果你的技术不行或者学习能力差,那你就加班吧。如果你无法把握需求以及变更控制,那你就加班吧,总之,需要长期加班的团队,往往是其领导者,在一个或者几个方面有短板,这个时候,其实需要领导者补齐自己的短板,而不是简单的加班。


说一个段子吧,这是真事。


我在做交通项目后,项目组也有加班,但相对比较少,而且项目成员以下班就先跑著称,哈哈。有一次开高层会,我们CTO说,我们强调技术研发,强调技术的领先,我们毕竟是技术公司,现在我们的开发人员下班就走,几乎没有人加班,这怎么行。其他的互联网公司都是要加班的,都是晚上11、12点才走人。而我们的很多项目组,下班就打卡走人,这怎么行,我建议,研发人员一定要加,加班可以给加班费吗?比如晚上10点走的人,可以报一个餐费,20元,。。。。。。。所有的研发部门的项目经理都傻逼了,晚上10点,多干4个小时,给20元,你当开发人员是傻瓜呀,还好,公司老板说了句话,开发人员加班干什么?于是这个世界安静了,然后就没有然后了,哈哈,老板英明


C:什么叫专家,哈哈,专家这个词现在似乎成了贬义词,还是叫专业人员吧,我在深圳的时候,是和北航的一个教授合作,教授是玩软件的,带我去做调研,我基本上是一个打下手的角色,调研的时候,我是拿本记录内容,而教授却直接画出数据流图,整个系统业务流、数据流随着用户讲解的结束,就会直接呈现在用户面前,而我需要将记录的东西带回去整理,第二次和用户讨论的时候才能出图,这无形就浪费了很多时间。在我自己的技术生涯中遇到的绝大多数开发人员都无法做到像教授那样,这并不可怕,可怕的是大家都认为画不出设计图是一种正常现象。


关于专业人士说几个例子。


中科院一般有两个体系,就是研究体系和工程体系,研究体系就是助研》副研》正研,工程体系就是技术员》助工》副研极高工》正研级高工,这两个体系不多说了,区别大家都知道,但其实,还有一个工匠体系,在我小时候,我母亲单位的里有很多工匠,就像八级钳工的概念,他们做什么?是吹玻璃的,你想不到吧,单位做实验的时候有很多玻璃器皿是特殊结构,当时在外边买不到,所以只能自己生产,而一个好的吹玻璃的老工匠是可以吹出满足研发人员的特殊试管的,而如果没有这个东西,科研往往要耽误,你就知道他的重要性了吧。


老于是我在中科院的另外一个头,下一个项目我是跟他干的,他的牛事,后边讲,这里只说一个他的牛事,我们在跟他做项目的时候,都是用C,经常要调用BIOS中断,BIOS中断的资料很多,记得当时一本资料是16开的,大约5厘米厚,你想一下查这个资料要多长时间,当时最简单的查询方法不是查书,也不是找度娘(当年度娘还没有出生呢),而是去问老于,开始,也以为老于是用的多,熟能生巧,所以也没有在意,一次吃饭,大家吹牛打屁的时候,老于说他可以说出所有的中断功能,这个有点过了,于是我们几个拿出资料一个一个问,功能是什么,中断号是什么,AX,BX,CX,DX是什么值,无论你正问还是反问,老于都是随口而出,而且从来不错,我的妈妈呀,那可是一本是16开的5cm厚的书呀。同样的事情,老于后来还玩过一次,就是C类库的结构图,也是随手画出,不过我们那个时候已经没有兴趣去验证图的正确性了(太受打击了)。问题是,老于说,我们研究室原来室主任叫孙玉芳,人家是可以将Unix核心代码随便拿出一段就告诉你做什么用的,为什么这么写,甚至到每个变量是什么值,代表什么意思。


我在中科院被被太多的牛人碾压过,不可否则的是,他们的智力水平超过常人,但如果说仅仅是聪明成就了他们,却也不对,其实每个牛事后边都有一段痛苦的经历,象孙玉芳和室老大他们每年的代码阅读量都是几十万行,(我当年是半年1万8),代码量就更多了,老于他们同样,没有几十万行代码量的积累,是不可能真正理解软件开发的(cv专家的200万行不算代码量),而张老怂虽然很早离开了开发,但他的管理积累也同样深厚,这同样是长期带领研发团队的积累。



现在的软件行业经常纠结在是做技术还是做管理,哈哈,这个东西在我看来其实没有必要太纠结,原因如下:


1管理的思维方式和科研的思维方式很多方面是一样的。所以,一般科研做的好的,管理都是不错的,管理和科研最大的区别是很多知识点的不同,对于一个善于学习的人,掌握知识点,应该不难。比如像室老大、张老怂他们都是技术出身,在有机会接触管理后,其管理能力都提高很快。这个事情关键在于你的思维体系是否科学。通过科研还是管理实际都可以实现思维系统的科学化,这个应该是深度问题,而至于是在管理上、还是科研上,甚至是市场方面都知识广度问题,一般来说,深度难突破,广度易突破。所以在刚参加工作有一点深入,形成突破这是很重要的事情,而如果多次转换工作,则容易形成低水平循环。这是我的个人观点。我也好,吴敌也好,还有毕小怂、费小怂都是普通人,我们实际都是走的这么一条路。


2管理和技术在实际生活中不是对立的管理而是相互相成的关系,做技术的不能一点管理不懂,首先,现在的开发不是原来的西部牛仔时代的个人英雄主义时代,而是团队、系统之间的对决,个人很难完成全部工作,(成本也不合适),单人的高效率往往被总体的低效率所完败。而管理不懂技术,那就成了外行管理内行,冲突和矛盾所消耗的资源也是令人吃惊的一个事情,而不懂技术的管理被技术欺玩这个事情也太常见了。所以,你要想做成一个事情,最好做一个技术型的管理人员或者具有管理思维的技术大拿。


跑远了,回溯,回溯。


D:在深圳的时候,还做了一件不知道算NB还是SB的事情,哈哈,事情是这样的,当时整个团队在机场做机场的一个系统,而我在深圳城里做另外一个项目,整个项目是和我们公司在深圳的一个分公司合作(当时公司、分公司极多,而且乱)。在城里呆了一段时间,项目没有太多的事情,就经常和分公司的开发人员聊天。一天晚上,突发奇想,于是写了一个整个分公司整体分析报告。报告的内容比较简单,就是公司的人员组成,水平,项目情况等等。这个报告写完后。交给了张老怂。当时提交的时候也是满腔热血的,但张老怂看完之后没有说什么,只是一句话,让你去城里不是干这个事情的。嗨,有一种热脸贴凉屁股的感觉。再有然后是几年以后的事情,当时我已经离开了老怂组,一次几个吃饭的时候,老怂才告诉,那份报告对他后来的决策有很大的作用(项目组在做完机场项目后,会北京发展了)。这个事情让我想了很久。首先,关注身边的环境这点是没有错误的,在一个机构中,机构中人的组成、做事方式对项目的成功以及你未来的发展都极为重要,其次,要做好自己的事情,我参与的项目由于种种原因最后没有成功,虽然原因不在我这里,但容易给人,你是不务正业的感觉。第三选择时机和方式,你做的事情也许正确,但展现的方式和时机很重要,如果我是在吃饭的时候,或者其他相对轻松的环境下将这些内容说出来是否更好?



好了,说一下,我在张老怂组的最后的几件事情吧


1在深圳,我参加的项目黄了,不是技术原因,是市场原因,那个时候,搞软件开发没有专门的市场人员,都是技术人员自己在做,毕竟不专业。所以就没有然后了,在老怂组让我体会最深的就是技术和市场的关系问题,中科院的技术应该说还是不错的,但市场一直是个问题,主要问题是一个是开发人员不了解市场,于是闭门造车的现象比较严重,有时候一直追求技术上的高精尖,而不管市场是否适合,死得很快。第二市场需要什么?也就是产品也好,项目也好,可以为顾客解决什么问题,这个往往考虑的少,第三,就是死路问题,很多时候总所有问题都用所谓的技术去解决,结果陷入死胡同,其实有些问题是无法用技术来解决的,有时候,往往一支烟能解决的问题,你用再大的技术成本都无法解决。


2春节过后,老怂带领团队在深圳开发,我回北京做了一堆小项目。说几个故事吧。


A:绣花打版,这个事情是我离开张老怂组做的最后一个项目,说实在的,当时自己只是一个研发,而不具备项目管理能力,当时是做绣花打版的一个软件,我们单位是中国第一个做这个软件的公司,而且产品已经开始实用化(当时国内纺织业开始兴起),只是当时的体制问题,开发人员的贡献和收入实在不成比例,而进入市场的开发人员的确很难利益的诱惑,在加上国营单位体制的问题,于是原来项目组的人员纷纷离开,而我和另外一个研究生就被迫接受这个项目,说是接手,其实是重新开发,因为那是人走光了,代码也没有(哈哈,别说什么版本管理,当时没有)。这个项目现在有影响的几个事情。


学艺在偷,当时没有资料,你根本找不到任何资料,主要学习的方法就是去参加展示会看别人的设备如何操作,然后回来自己模仿,各种针的走法,从原来系统中学习,从别人展示的(卖的设备)设备上看,回来总结,然后实现。


书到用时方嫌少,由于涉及很多计算方面的问题,很多时候需要重新翻书,特别是数学方面的数据,真后悔当时学习的时候没有认真。


接口是个大问题,这个东西是所有编写C语言的人最厌恶的事情,做C的时候,最怕的即使接口变化,而引起接口变化的原因还特别多,而没有一个良好的设计,往往会频繁引起接口的变化,我和苏sir编程的时候,他的接口很少变化,原因很简单,他的经验足够,虽然没有成型的文档,但很多事情都能想到,留余量,所以很少接口很少变化,而在绣花打版这个项目中,我的合作伙伴主负责,但因为经验问题,几乎是三、两天就一变,更要命的是,有时候变了不和你说,于是经常出现,你好容易改完了,去和他联调,却发现接口变了,最后没有办法,于是干脆什么都不做,等他不变了,我再编程,你想这个项目会是什么结果。


在系统开发中,不变更是不可能的,但要注意的是,同一个模块的功能不要频繁和反复的变更。说一点降低变更的方法。


需求是变更的第一原因,用户需求和用户实际需求是不一样的,用户需求往往是在做项目的时候,用户在调研会议上提出的功能,但这个功能实际是什么样子,需要你去验证的。举一个例子,我在做交通后,做了公交调度系统,在和公交公司技术部门交流的时候,用户往往我们按照发车时刻表进行调度,这个方法按照原来的路况是没有问题,(原来路宽车少,公交车速度可以保证),但后来就不行了,原因很简单,车多了,路堵了,后来和调度人员聊天的时候,调度人员告诉我,他们实际上是以发车时刻表为依据,根据每天的实际情况进行调度,而且基本采用车先回先走的方式。哈哈,第一种调度实际上就是我们说的用户需求,而第二种方式是用户实际需求,你不能不考虑用户实际需求,同时也不能不管用户的需求,否则项目结项的时候一定有麻烦,你说怎么办,简单,你按照用户实际需求开发,一定要满足之,这样,你的系统才能真正使用起来,而用户需求呢,我采用的方法是原理性通过,也就是领导的时候,可以演示,但不精致,bug多多,哈哈,实际情况,我们开发了四种发车方式,两种是调度人员每天都要使用的,而另外两种就属于面子工程了,这样基本达到了好吃不难看,而且工作量基本可控。


第二种,基本就是设计问题了,一个是个人经验,第二个就是人犯懒。个人经验这个东西不是太好说,每个人的效果都不一样,但总体上是一个提高的搞成,犯懒实际上设计的最大问题,为什么这么说,说一下我自己的观点。


你可以不写文档,但不能不设计。我总说自己是野兽派码农,本意就是我也不愿意写文档,哈哈,暴露了,但不写完善的文档,不代表不写文档,不代表不设计。我自己的经历,所谓完善的文档几乎都是结项使用的,说句不好听的,就是对付客户的,但核心文档一定要写的,而且都要是干货,比如通信服务器的通信协议,数据库的结构设计,整体系统的整体架构。这些东西都是会影响整个系统的东东,不写是不行的,


另外就是做大型程序一定要有文档,万行以下的,不写文档估计还控制的住,5w的出问题极大,而如果是几十万行,无文档基本就是一个死。


另外就是不建议写详细设计文档,(我们现在很多人将概要设计当成详细文档,具体概念见软件工程的书),为什么,一个是详细设计文档量大,第二是变化大,在时间紧张的情况下,根本来不及,所以我经常使用代码注解来替代详细设计,这样效果比较好很多,而且开发人员容易接受。

文档的作用是什么,不说理论,说一点实际的东西,


第一:整理思路,很多东西在想的时候,或者讨论的时候往往都没有问题,但一落实到纸面就出问题。所以在做系统之前最好将主要的内容落实在纸面上。


第二:便于检查,对于稍微大一点的系统都,一个人很难将全部的东西记得很清楚,而且在讨论的时候经常出现前后矛盾的现象,而这个时候,文档可以作为一个证据,进行验证,否则容易出现开发人员的矛盾。在开发人员出现接口、数据库结构、核心算法有矛盾的时候,我采用的方法是,先看谁有文档或者记录(记录实际也可以作为过程文档),有文档第一,记录第二,谁有就作为当时的讨论结果标准,都没有,就各打五十大板,然后重新讨论,讨论后,会和主管人员做交流,一般来说主管人员承担70%责任,下级30%,但要求大家以后有文档,至少是有讨论记录。


第三:是传承,开发人员因为种种原因流失或者调度都比较快,接手别人的程序是一个最麻烦的事情,用一周,甚至一个月接手,都会存在这样或那样的问题,而有文档速度和效果会好很多,这个事情,我一般在开发人员进入团队的时候就交代好。而且组员在开发过程中,会进行适当的轮换,这样,整个项目的任何一部分的开发尽量不依赖某一个人。


关于文档如下写:总结几条吧


第一:广度优先,不要深度优先,广度优先还是深度优先,实际是一个思维方法的事情,一般来说,初级开发人员都是深入优先,而好的管理人员和技术大拿基本都是广度优先。在写文档的时候,你可以观察一下,初级人员写的方式都是,标题1,标题1。1,标题1.1.1,标题1.1.1.1,标题1.1.1.1.1,而老鸟的写的方法是标题1,标题2,标题3,标题4。。。。然后是,标题1.1,标题1.2,标题1.3.。。。。。。。看出规律了吗。采用深度优先时候,问题是写的全局容易乱,子标题的容易打架和冲突。在早期我采用深度优先的方法经常发生漏写、冲突(前后矛盾),重复(前边写了,后边又在一个地方写了)。但采用广度优先的方法基本没有这些问题。


采用广度优先的方法还有一个好处,就是可以比较估算文档工作量,而且有时候,项目紧张的时候,可以先提供简版(供批判稿)提交给客户或者领导,这样,防止出现最后评审不过,抓瞎的事情发生。(领导通过简版,可以看出你的思路,出问题可以快速调整,防止错误理解造成大量文档工作浪费)。另外领导最怕什么,工作失控,而如果有简版,他对工作基本感觉是可控的,即使出问题,也便于即使调整,失控是领导和客户最害怕的事情,失控是领导和客户最害怕的事情,失控是领导和客户最害怕的事情。重要的事情说三遍。而广度优先的方法,是让领导和客户感觉项目在自己控制的最好方法。切切


第二.如何写评审用的文档,这个评审用的文档是指在项目中间检查和项目验收使用的各种技术和管理文档,而不是开发组内部使用的文档,开发组内部使用的文档要干货。而评审用的文档水货多。水货多。如何水货多,写细节,类似的功能采用文档复制,再修改的方法,哈哈,基本就是CV专家的干活。用你们原理内部的技术文档作为骨架,然后让新参加的工作的研发人员写这类文档最好,一个是解决劳动成本,另外,新开发人员通过写这类文档熟悉系统,练习文档的写作方法,顺手出用户评审报告,一般在项目结项一个月左右的时间开始这个操作,基本可以满足要求,这些需要说明一下,开发的干货文档,基本上一个人日是6000字左右,基本上不会超过10页,但评审用的文档吗,哈哈,一天搞个几十页上百也都是可能的,评审用的文档一个是文档个数不能少,干货齐备,注水严重,方正技术类型的按照500-1000页写是标准,再告诉你一个事实,评审文档越多越没有人看,你的项目通过的可能性越大,但记住一点,内部文档要干货。



第三:内部文档要如何写,内部文档要干货,不说了,在项目过程中,其实是无法按照软件工程的要求编写全部的文档的,那么那些文档要写,要控制呢?我自己的感觉,首先是公共资源的地方是一定要写的,比如数据库结构,其次是整体的架构,架构不要过多的细节,但总体结构一定要清晰,其次是接口一定要写,否则后期开发过程中一定矛盾多多,最后是核心的算法和操作原则要写。

好了,喜欢跑题的毛病有犯了,拉回来,

我离开张老怂组的一个最主要的原因是张老怂对我个人的希望和我自己对自己的规划有矛盾,张老怂希望我搞管理,带项目组,对于他来说,当时项目组正在一个上升期,急需带团队的开发者,而我在这一年的开发过程中,无疑是比较符合老怂需求的(在组内和其他人比较)。而我觉得自己的技术水平实在糟糕,如果现在就做管理,技术无法压住别人,根本不好管好开发组(当时的真实想法,哈哈),所以我想继续提高技术。

这里说一个事情,在考虑是做技术还是做管理的问题上,我和老娘讨论过这个事情,老娘没有说什么,只是告诉我,当年文革的时候,凡是技术干部在被打倒后,后来都能够出来,回复职务,继续自己的工作,而政工类干部基本就不行了(政工干部可以认为是管理型干部,在当年)。所以,这样坚持了我先学技术,打牢基础的觉醒。哈哈,,当然现在不一样了,对于管理人员,一个是上升的渠道比纯技术的快,而且即使你在一个单位呆不住的话,换一个公司吧,现在比当年选择途径多了很多。

下边要说在其他项目组的工作了,将我在张老怂组的工作感受做一个总结吧。


第一:开发一定要为市场服务,或者说为公司的市场和销售服务,再好的技术,如果不能推向市场,或者利润,都是没有意义的,作为研发人员最忌讳的是看不起市场和销售人员,而不和他们好好合作,一味强调技术原因是没有意义的。


第二:技术解决一切问题,特别是和管理和人工智能有关的方面,切记不要用工具(软件产品)解决管理的问题,那些说什么你用了我的产品就可以解决你们公司管理的问题的东东都是胡说八道。


第三:和客户保持友好的关系,这个不是采用回扣等手段,其实,有时候你真心的对待对方,不轻视对方,真诚对待所有客户,不管是上层还是下层,很多时候,客户给你帮很多忙。

第四:没有准备好的时候才开始工作,这个对于研发人员要特别注意的,技术人员一般都比较保守,希望在做项目前可以解决所有问题,这个基本不可能,方正我自己做的项目,即使在熟悉的开发系统,都会出现这样或者那样的技术问题。所以,一般来说,在项目开始阶段,有60%把握就可以做。


第四:主要开发组的工作强度,长期加班是不可取的,在加班的时候,项目经理有责任调节工作人员的状态。在高强度开发状态,一天有效工作时间也就是8-10小时,注意这里是有效工作时间,而不是工作时间。


第五:项目经理尽量让组员一致行动,我们出差的时候都是一起吃饭,一起出去玩,这是团队建设的一个有效的方式,另外就是防止出现意外情况,一个团队是否团结,从他们在出差的时候活动方式就可以看出来。


第六:项目经理的工资有10%要花在组员身上,哈哈,这是一个小日本的习惯,大家出去,领导花钱,说起来容易,做起来难,开始的时候,我也认为,我自己挣的钱,自己花,但做了项目经理后,发现,当你真把10%的钱花在组员身上,收益是很大的,哈哈。


张老怂还是很够意思的,他知道我要走的时候(单位内部调动),问我要去哪里,我说自己想学习技术,于是他建议我去了余大侠组,好了,照例先说段子,再说感想吧。

A:小时报,做开发的写过月报、周报吧,如果严格一点的写过日报,哈哈我们这个组实行小时报,所谓小时报,是每天按照工作时间进行填写工作内容,最可怕的是如果你和别人联合调试,那么你们两个的小时报时间一定要一致。这个东西不是老余搞得,是项目管理部门,一个从德国回来的姐姐搞的(叫她德姐吧),开始的时候我们都比较反对,但人家是在从以严谨著称的德国回来的软件开发管理人员,拿我们做实验,哈哈,于是我们一边在疯狂编码,一边还要凑小时报,对是凑,我们每天最大的乐趣就是吃完晚饭,一边聊天一边凑当日的小时报,然后接着熬夜。这个小时报大约执行了3个月,后来无疾而终了。我们也解脱了,回想小时报,说说实在的,还是比较有用的,第一,它牵制我们进行工作检查,即使是凑报告,我们实际还是需要回想全天的工作,而自己也感觉代码开发效率要高很多,可惜当时没有做代码行统计,只能说是自己的感觉。第二。小时报有一点计划的含义在里边,我们那时做代码没有项目管理和计划的概念,都是野兽派,德姐虽然没有让我们做计划,但每天的检查实际起到了小鞭子的作用,不断抽打我们,快点,再快点,别人比你快了,就等你联调了。第三,这些记录虽然有偏差,但对很多问题的明确是有好处的,后边的接口矛盾的时候,很多问题都是可以通过查报告发现问题的,(编写绣花打版的那个哥们也在这个项目组),在绣花打版的时候,很多问题只能说,这个时候,是很吃亏的,(你们懂的)。但现在这些东西都有记录,哈哈,领导不是傻子,看记录基本就明白怎么回事了。关于开发人员之间的问题,我在做交通的时候会将,利用工作记录玩的一个事情。(这个坑先留着)。总之,记录工作是一个很重要的事情,切记。

小时报为什么失败?


小时报失败从某种程度上讲是一个必然。说一下原因吧。


第一:强推,这个是让所有人最反感的事情,即使你是真正的好东西,也不要采用强推的方式。而德姐采用的强推,无疑是我们变成了她的敌人。而老余采用了坐壁上观的方法。


第二:没有同甘共苦,在开发团队中,是否同甘共苦是一个很重要的东西,我们每天都是9-12的工作法(将近15-16小时),而德姐是正常工作时间,所以,即使开始我们对德姐还尊总的话,三个月以后,我们已经采用无视的方法对待她。


第三:利益,你做管理没有问题,但对我们开发人员有什么好处,在这次做的时候,所谓的管理并没有让我们感受到好处(对工作的检查的作用,我们当时无法体会),而只是裹乱,你想我们能支持你吗?其实,如果德姐当时将我们的工作时间做一个统计,代码量做一个统计,可以看出我们的开发效果是非常高的,如果在领导面前表扬一下我们,哈哈,我们也会认可很多,但她没有做,不要指望别人可以在无利益的情况下,长期帮助你,这几乎是不可能的事情。


第四:自身的能力问题,这个事情实际是压垮我们对德姐信任的最后一棵稻草了,当时,我们和德姐的矛盾已经很大了,但最起码,大家面子上还过得去,记得一次有客户来,当时我们已经联系工作很长时间,前一天晚上7点了,德姐忽然向用户手册,我们告诉她,还有代码要写,估计来不及,于是她说她来写,让我们给资料,我们花了2个小时给她准备资料,然后继续编码,12点回家,当时走的时候,还问过德姐是否有问题,德姐说没有问题,但是,第二天没有任何资料写完,而且其他组的人告诉我们,我们一走,德姐也回家了,这个事情,大家都没有说什么,但从哪以后,德姐的话我们不听了。打铁需要自身硬,技术上的欠缺还好说,但。。。。。。,就失去我们的最后的信任,而开发人员一旦不信任你,搞死你的方法太多了,

管理的提升比技术的提升要难得多,技术往往可以靠一个人或者一个核心小组就可以了,但管理几乎要设计所有人,而一点没有注意到,就会造成管理提升的失败。那么,可以怎么做?还是说一点自己的后来工作中的体会吧。


1:了解环境,了解团队,了解开发人员。当你空降到一个组织的时候,不是大张旗鼓的改革,而是观察,观察组织,观察人,观察工作方式,找到核心问题和可以快速见效的问题。


2:让参与的人员享受到利益,这个利益不仅仅是钱,那就太狭隘了,比如成就感、比如机会、比如能力的提高,比如项目的成功,这些东西往往比金钱更重要,而随之金钱的利益也会来,(如果不来,就说明公司有问题,赶紧跑,哈哈)


3:宣贯,这个东西可不是开两次会,发一些资料,做几次培训就可以的,我自己的感受,研发人员有比较强烈的改进工作、获取成功的动机,但同时他们也反感僵化的宣贯,所以宣贯的关键是你讲的东西是否合理、科学,道理说否说的通,另外就是在日常生活总逐步宣贯,比如吃饭的时候,哈哈,别太僵硬,研发人员是很容易接受的。如果研发人眼主动问你管理问题,那么你就成功了。


4:以身作则:这个很重要,张老怂的很多方法都是身体力行,而德姐在这一点却恰恰不行,张老怂则相反,比如他说你的工资有10%要花在部下身上,这招很好用,他自己也的确做到了,我自己以后的项目也基本按照这个方法去做,效果极好。其他的事情也一样,比如加班,如果领导不加班,最好不要安排部下加班,否则很容易反弹。

张老怂还是很够意思的,他知道我要走的时候(单位内部调动),问我要去哪里,我说自己想学习技术,于是他建议我去了余大侠组,好了,照例先说段子,再说感想吧。

A:小时报,做开发的写过月报、周报吧,如果严格一点的写过日报,哈哈我们这个组实行小时报,所谓小时报,是每天按照工作时间进行填写工作内容,最可怕的是如果你和别人联合调试,那么你们两个的小时报时间一定要一致。这个东西不是老余搞得,是项目管理部门,一个从德国回来的姐姐搞的(叫她德姐吧),开始的时候我们都比较反对,但人家是在从以严谨著称的德国回来的软件开发管理人员,拿我们做实验,哈哈,于是我们一边在疯狂编码,一边还要凑小时报,对是凑,我们每天最大的乐趣就是吃完晚饭,一边聊天一边凑当日的小时报,然后接着熬夜。这个小时报大约执行了3个月,后来无疾而终了。我们也解脱了,回想小时报,说说实在的,还是比较有用的,第一,它牵制我们进行工作检查,即使是凑报告,我们实际还是需要回想全天的工作,而自己也感觉代码开发效率要高很多,可惜当时没有做代码行统计,只能说是自己的感觉。第二。小时报有一点计划的含义在里边,我们那时做代码没有项目管理和计划的概念,都是野兽派,德姐虽然没有让我们做计划,但每天的检查实际起到了小鞭子的作用,不断抽打我们,快点,再快点,别人比你快了,就等你联调了。第三,这些记录虽然有偏差,但对很多问题的明确是有好处的,后边的接口矛盾的时候,很多问题都是可以通过查报告发现问题的,(编写绣花打版的那个哥们也在这个项目组),在绣花打版的时候,很多问题只能说,这个时候,是很吃亏的,(你们懂的)。但现在这些东西都有记录,哈哈,领导不是傻子,看记录基本就明白怎么回事了。关于开发人员之间的问题,我在做交通的时候会将,利用工作记录玩的一个事情。(这个坑先留着)。总之,记录工作是一个很重要的事情,切记。

小时报为什么失败?


小时报失败从某种程度上讲是一个必然。说一下原因吧。


第一:强推,这个是让所有人最反感的事情,即使你是真正的好东西,也不要采用强推的方式。而德姐采用的强推,无疑是我们变成了她的敌人。而老余采用了坐壁上观的方法。


第二:没有同甘共苦,在开发团队中,是否同甘共苦是一个很重要的东西,我们每天都是9-12的工作法(将近15-16小时),而德姐是正常工作时间,所以,即使开始我们对德姐还尊总的话,三个月以后,我们已经采用无视的方法对待她。


第三:利益,你做管理没有问题,但对我们开发人员有什么好处,在这次做的时候,所谓的管理并没有让我们感受到好处(对工作的检查的作用,我们当时无法体会),而只是裹乱,你想我们能支持你吗?其实,如果德姐当时将我们的工作时间做一个统计,代码量做一个统计,可以看出我们的开发效果是非常高的,如果在领导面前表扬一下我们,哈哈,我们也会认可很多,但她没有做,不要指望别人可以在无利益的情况下,长期帮助你,这几乎是不可能的事情。


第四:自身的能力问题,这个事情实际是压垮我们对德姐信任的最后一棵稻草了,当时,我们和德姐的矛盾已经很大了,但最起码,大家面子上还过得去,记得一次有客户来,当时我们已经联系工作很长时间,前一天晚上7点了,德姐忽然向用户手册,我们告诉她,还有代码要写,估计来不及,于是她说她来写,让我们给资料,我们花了2个小时给她准备资料,然后继续编码,12点回家,当时走的时候,还问过德姐是否有问题,德姐说没有问题,但是,第二天没有任何资料写完,而且其他组的人告诉我们,我们一走,德姐也回家了,这个事情,大家都没有说什么,但从哪以后,德姐的话我们不听了。打铁需要自身硬,技术上的欠缺还好说,但。。。。。。,就失去我们的最后的信任,而开发人员一旦不信任你,搞死你的方法太多了,


管理的提升比技术的提升要难得多,技术往往可以靠一个人或者一个核心小组就可以了,但管理几乎要设计所有人,而一点没有注意到,就会造成管理提升的失败。那么,可以怎么做?还是说一点自己的后来工作中的体会吧。


1:了解环境,了解团队,了解开发人员。当你空降到一个组织的时候,不是大张旗鼓的改革,而是观察,观察组织,观察人,观察工作方式,找到核心问题和可以快速见效的问题。


2:让参与的人员享受到利益,这个利益不仅仅是钱,那就太狭隘了,比如成就感、比如机会、比如能力的提高,比如项目的成功,这些东西往往比金钱更重要,而随之金钱的利益也会来,(如果不来,就说明公司有问题,赶紧跑,哈哈)


3:宣贯,这个东西可不是开两次会,发一些资料,做几次培训就可以的,我自己的感受,研发人员有比较强烈的改进工作、获取成功的动机,但同时他们也反感僵化的宣贯,所以宣贯的关键是你讲的东西是否合理、科学,道理说否说的通,另外就是在日常生活总逐步宣贯,比如吃饭的时候,哈哈,别太僵硬,研发人员是很容易接受的。如果研发人眼主动问你管理问题,那么你就成功了。


4:以身作则:这个很重要,张老怂的很多方法都是身体力行,而德姐在这一点却恰恰不行,张老怂则相反,比如他说你的工资有10%要花在部下身上,这招很好用,他自己也的确做到了,我自己以后的项目也基本按照这个方法去做,效果极好。其他的事情也一样,比如加班,如果领导不加班,最好不要安排部下加班,否则很容易反弹。


B:扫不干净的烟头,我们单位当时借住电子研究所,电子研究所因为要做实验,所以楼层比较高,大约有4米多,我们的开发办公室比较大,大概有两个半教室的面积,这么大屋子只有我们四个熊程序员,和一个女工作人员,四个熊程序员基本都抽烟,每天下班,女同胞下班了,我们就解放了,可以随便抽烟,当年比价穷,加班就靠茶叶和烟,记得当年的抽烟的事情有两个乐事,一个是有一天老于告诉我们顾客要来,让我们打算卫生,(当年卫生都是自己打扫,没有打扫的阿姨),我们干了一天,但怎么都无法将烟头扫干净,每次你以为扫干净了,别人就可以从一个犄角旮旯找到新的烟头,最后,连我们那个女同事都无奈的放弃了,我们也就只能相对苦笑了。另外一个事,在一天早晨,当时我们刚熬了一夜,早晨,我去上厕所,刚出来,看见我们那个女同事来上班,刚开门,一股浓烟从办公室喷涌而出,直接将姐们推出了门外,姐们一边挥手,一边大喊,你们在烧火吗?于是开窗,开门,通风放气,当时是冬天,我们几个一晚上最少干掉了6包烟。这个屋子犹如仙境。哈哈,最后说一句,抽烟不是好事情,最好不抽烟,抽烟有害健康,切切。


C:听音辨码


老余是个神人,他是数学专业的(数学专业做软件是很牛的。后来做交通的时候,我的一个核心开发也是数学专业的)。他是27岁开始做软件,当时他们单位有一台PC没有人用,他于是将机器搬到自己的宿舍。最开始用BASIC。这个东西玩熟悉了,他 不知道该玩什么,在一个计算机杂志上看了一篇汇编的文章,于是开始自己用debug开始玩汇编,后来是C。他如中科院是30多岁了,在我来单位做毕设的时候,他在做操纵系统底层驱动,因为是玩底层的,所以老余通知就经常玩一些奇怪的事情,听音辨码是一个事情,哈哈,先说一下老余的其他的事情吧,


1解密:老余擅长汇编和C,所以解密对一个数学的人来说就成为了常态,经常有人找老余去解密,后来一次看老余的简历,这个家伙解密近千个软件,一种有意见事情给我很深的印象,当时,中国某机构从德国买纺织机,5台,近千万美元,当时,随机有软件,德国企业当时说要配5套,否则有问题,我们的采购这认为一个足够,买5套,架构500w美元,打折也是150w。厂家屡次劝说,不听,回来一实验,不行,再买软件,500w,不打折。当时,某部人员都傻了,你知道当年因为国家主打纺织才能采购,百万没有在哪个年代都可以进监狱了,托人找到老余,一周时间,搞定,代价管吃管住一周,最后请了一顿大餐,好像没有钱,(好笨的知识分子呀)。


2改库函数:我们编写系统的时候,系统速度很慢,老余看了我们代码,认为没有问题,想了半天认为是库函数的问题,我们哥几个都擅长玩C,而C的库函数对字符串操作检查是比较严格的,老余认为主要问题是库函数检验太多,于是将库函数带走,第二天给我们,速度果然提高很多,问老余,他说,你们自己都严格字符检验,而系统函数也有,而且处理时间极多,于是老人家反编译,去掉了所有的检验,速度自然提高,至于因为编程不规范出错的事情,哈哈,你们一帮小怂自己的事情,不过,好在已经练了好几年,还真没有问题。


3听音辨码:这个也是一个牛事,当时编写小程控机的代码,主要是调用程控机的API和C混编,但是API资料不全,最麻烦的是,有一部分函数的返回值不知道,但是我是一筹莫展,深夜加班,老余帮我调试,突然,老余说,这个放回值应该是什么。。。什么。。。。老大,你是怎么知道的?我很疑惑,没有资料呀,你是神仙呀,你听,程控机有声音,这次是balbabala,上次是balalbala。。。。估计是这样,实验一下。于是我又去码代码,实验通过,当时真是千万匹草泥马在飞奔,这是做软件吗?好吧,老余,你牛。


老余怎么说呢,他不是张老怂那样的管理牛人,也不是室主任那样的代码大牛,甚至不是软件专业的,可也许就是因为不是专业出身,所以,对他来说没有什么不能做的,只要工作需要,就去学,从再早的BASIC,汇编、C、甚至后来的硬件编码,电路设计。都是需要就去学。认真的学,在他那里我从来没有听说过,我是某某专业的,所以这个东西我做不了的话。(这个特点在我的前辈那里都有这个特点),我自己,后来也是这样,但我的确没有他们聪明,所以,我的专业好基本是软件领域。


D:海参有壳:哈哈,这是我的糗事,当时做完系统,去大连安装,客户请客,海鲜,主菜上桌,有一个菜叫海大拌,都是不错的海鲜,除了海参,其他的都不认识,于是想夹一个海参,筷子下去,不对,海参怎么有壳,但不能放下,拿回来吃了,没有觉得有什么特别的,当时还挺懊恼,吃客海参怎么那么难?饭毕,主人说本地习惯最后的鲍鱼要给付账的人吃,找了半天没有,奇怪了,难道饭店有问题,在一找,哈哈,在我的盘子旁边,就是那个带壳人海参,妈妈呀,我可真不知道呀,难道我成了二师兄,吃人参果不知其味道,当然,最后是主人付账,毕竟,我还年轻,不知者不怪吗。



E:如何提高效率,

说这个事情的时候就不能不说一下我们当时做的东西,哈哈,很简单,当初,我们那个年代最普遍的就是寻呼机,这个东西现在已经是古董,看不见了,这个东西的作用就是,通过话务员将你的电话传输给寻呼机,也可以发送一些文字,这样寻呼机主就找电话给你回电话了,这个系统里边有一个核心模块就是编码模块,其实就是一块编码吗,将话务员的手工数据的信息,经过编码给发送机,然后发送给寻呼机。


老余当初玩的就是这个编码卡,具体的内容记不清了,只记得当时编码卡效率不是很好,最牛的就是3M的,一个卡可以容纳10万个数字机,或者2万个汉字(汉字机信息大)。当时最麻烦的就是数字丢失,因为信息在一天高峰时段会因为信息过多,无法编码完成,结果丢失,当时老余看了几个板子,对,就是看看,没有看代码,然后问了一下问题,于是开干,具体如何设计我记不清了,就记得当时用了三级缓存,前两级是保证速度,最后一级是保证数据不丢失。后来我们做过实验,数字机可以增加10%的容量,而且不丢失数据,至于因为缓存引起的数字传输延误,哈哈,问题不大,一般都是秒级,最大也出现过分钟级别的,但说实在的。对于当时来说晚几分钟真不是什么太大的事情。


这个事情我的感受,第一,解决实际问题,你知道当时提高10%效率是什么概念,那可是1万个客户,数字机全年的费用是900元,需要增加的是35个话务员,一个话务员的工资大约是2。4万/年。全年84万,而毛收入收入是900w。哈哈。


这个卡另外一个好处是不丢失数据,我们在大连的时候,有一个哥们打上寻呼公司来了,什么事情,说来又去,这个哥们是一个司机,老板是土豪,土豪专门给他配了寻呼机,方便找人,一天土豪老婆要用车,呼之不理,大怒。告知土豪,土豪一听,急了,你小子牛呀,解聘。司机一看呼机,没有消息呀,解释不听,你要知道,当时正值下岗潮,在东北,一个司机,找了一个土豪,是多麽的不容易呀。也难怪要打上门来,哥们,你做的系统可靠性有多重要,你可以看见了吗?


这里多说一个事情吧,想到了,就写下来了,


很多开发人员都感觉客户难伺候,不愿意和客户接触。的确,和计算机打交道比和人打交道要容易很多。在和人打交道的时候,其实这主要是因为没有掌握和别人打交道的方法,还是说一下自己的感觉吧,不一定对,仅供参考。



我自己感觉和人打交道,其实主要是一个利益的问题,哈哈,这个利益不仅仅是金钱。在和老余合作的这个项目中,我是第二次体会到了当你给客户利益的时候,客户是会给予你极大的支持和帮助的。上边我们粗算过如果换一个编码卡,会给客户带来什么样的经济效益,这个经济效益不会给予我们的直接的接触人,而是会给他带来其他利益,比如业绩,比如成就感,我不否则直接的经济利益会很有用,但这个手法我很少用,(权限不够,而且我的确也不善于搞这个事情),所以,我经常采用给予客户其他的利用,比如,第一,我绝不让客户给我背责任,只是最起码的标准。第二,给客户业绩,这个事情是很重要的事情,业绩是对客户来说是一个长期利益,第三,不要抢客户饭碗,哈哈,你别不信,我们做软件开发,经常是做抢别人饭碗的干活,如何消除客户的敌意是很重要的一个事情,这个事情需要在后边说。

说一下第一点,我后来的项目中遇到一个老大哥,哈哈,也是77,78年那一批的本科,技术是杆杆的,(关于他的技术,后边说交通10年的时候会介绍),有一次,要在调度室挂一个调度屏(电视机),开始他选了高度,结果他的客户说,太低了,高一点,老哥没有办法,虽然很不愿意,还是按照要求提高了高度,结果过几天,客户的领导来了,一看,大怒,你们搞那么高,给谁看呀,低一点,一旦水平都没有。老哥和客户都在场,老哥一看,赶忙上去承认错误,于是又将屏幕放回了原来的地方,更难能可贵的是,老哥对客户一句抱怨的话都没有说,后来,客户和他成为哥们后,问这个事情,老哥就一句话,我说了,除了让你挨批还有什么好处?哈哈,老哥是一个明白人,


后来,老哥还做个一个事情,当时,是给客户安装设备,老哥做了方案。和专业的,可是他的老大不听,瞎来,结果出状况了,客户怒了,在联络会上,一堆客户狂批我们公司(当时他们头也现场)。老哥一看情况不对,又挺身而出,一个客户一个客户去敬烟。老哥年龄很大,技术牛掰,人缘也好(包括在客户那里),客户也知道不是他的责任,看到老哥这个情况,总算松口了,让我们去整改(给改错的机会了),于是老哥带团队有玩命干了1周,于是一切搞定。这里说一下,老哥的老板后来是完全给老哥授权,老板很牛,但不可能在什么事情上都是牛人,不过这个老大还是不错的,老哥后来跟我说,不要让你的客户担责任,不要让的领导担责任,也不要让你的部下担过大的责任。这样你的路会越来越宽。至于说的码农的工作,第一是要尽最大努力实现用户的需求,第二在和大家合作时,不要将工作分的太清楚,(其实是推卸责任,而且失去技术提高的机会),帮其他人解决问题,有时候是提高技术的一个捷径。第三,在客户那里有时候承受一些误会或者责难,有时候会给你带来一些惊喜。


第二,给客户业绩。也是我接触的客户少吧,直接索贿的少,而且一般回扣什么的都是市场人员的事情,我接触的比较少,我自己感觉客户更在乎项目的成功,毕竟客户是甲方的负责人,如果项目出问题了,他要担责任的。如果好了,自然是一份功劳。我的方法一般就是将项目做好,一般很少了直接拒绝客户(拒绝客户有敲门,一会儿讲)。有时候的确很难受,但也逼得自己去思考,解决真正的用户问题的系统才是好系统。你的客户长脸,客户就会给你更多的机会(公司会有连续项目)。


说说如何拒绝客户的要求,哈哈,首先,客户的前三个要求一定要满足,一般来说,前三个问题是客户的核心问题,不解决一般项目的结果不会好,也许你的项目可以结项,但系统后来估计就没有人用了,成了死系统。后续项目就不要想了。而且一般前三个问题解决了,客户就对你建立信任,最起码是技术上信任你,我们和张老怂做坛子县项目的时候,客户开始对张老怂说,你怎么带了几个小孩了,能做成吗?干完了,领导参观了,撤县建市了,领导高兴了,手下也高兴了,于是对张老怂说,你们不错,不愧是中科院的,都是专家。


有些东西的确是无法实现的,这个时候要给客户讲明白,这个时候实际是非常考验开发人员能力的时候,怎么说呢,简单说,如果你用浅显的普通人理解的语言讲明白一个计算机原理,说明你是真正理解这个原理了,而不是背诵原理。所以,我从来不会用用例图是给客户讲系统,说句不好听的,码农有多少能画出正确的用例图,何况客户。。。。


第三点,也是很重要的,我们的客户很多时候有这个忧虑。你们开发的系统的时候会抢我们的饭碗,这是真事,那么如何解决这个问题呢?在我和客户交流的时候,这些客户往往是系统的直接用户,这些用户如果配合你,对你的系统使用是有很大的好处的,我一般会告诉客户几个事情,一个是如果你告诉我工作流程,那么意味着系统会和你的原来的习惯符合度高,你掌握起来会容易很多,另外,我们系统使用的时候,会选择一些工作人员试用,如果你来使用,那么你对系统就会很熟悉,这样,在淘汰人员的时候,你被选中的可能性就低很多。其实,这个东西实际上是给那些努力工作的人员留一个后路,没有必要撒谎,有时候实话实说反而效果好。


总之,你要让客户感觉到你是为他着想的,这样他会你当成朋友。而朋友之间很多事情是很好办的。哈哈,有钱办不到的事情,有时候朋友却可以帮你办到。


拉回来,否则又不知道会跑到哪里了。











2高级码农7年

3进入交通领域10年
下边写的东西,不是很逗趣了,有时候,的确很残酷,没有办法,这个世界就是丛林法则,如果你不喜欢看,就跳过吧。

我是2006年离开中科院的,原因无他,挣得少,当时个月4500,拿到手的是3500左右,哈哈,职位很高,但收入太低了,而且单位没有什么起色。这些内容,我会补充在高级码农那个章节里,这里就不细说了,这里就说说后来的事情吧,先说找工作吧。

中科院工作了14年,面试了不少人,但自己去面试只有一次,还是在参加工作的时候,不过当时已经基本确认在中科院工作了,所以那个不能算是真正的面试,算是走一个过场吧。

说几个面试的真实的事情吧。

A:招聘可以分为缓招和急招。所谓缓招,其实就是找储备,无论职位高低,也就是职位不缺人,或者不是很缺人,招聘主要看是否有合适的人,有最好,没有也无所谓。而急招就不是了,是很缺人,项目已经开始了,或者缺少响应职位的人,需要马上招聘。

缓招的特点,就是你面试的时候,问的问题方向性不是很明确,很杂很乱。主要看你的能力更适合做什么。而急招的方向性就很明确,一般来说,技术问题比较多。而且比较实在,都是在实际开发中要解决的问题,有时候甚至是项目组没有解决的问题,通过面试找思路的。而且急招一般对开发工具要求比较具体。有时候详细到令人发指。

一般来说,缓招的成功率很低,而急招的工资和成功都比较高。这个原因就不说了。

B:招聘最大的障碍不是面试,而是hr,没有看错,hr。为什么这么说,码农都是搞技术和技术管理的,而hr恰恰不懂技术。也许hr对他的专业很熟悉,但是他们是真不懂技术呀,看着你的简历绝对是一头雾水,所以他们采用的方法是排除法,比如年龄要在25-35之间,性别要男的,要会Java、Oracle等等,这些简单的指标。一旦有不符合的,就直接cut掉。哈哈,你不要怪他们,隔行如隔山。所以告诉你一个最简单的方法,就是看招聘要求,不管三七二一都往上写,这样至少可以争取到面试的机会,哈哈,别说我不地道。hr的工作特点真是这样的。这里要说明的是,在面试的时候,一定要搞清楚你的职位要求,如果你的技能和你的职位要求差别太大,还是多加考虑,否则,很快会被PK掉。让你注意写简历的方法,只是为了降低被hr误杀的概率,到面试的时候,还是需要说实话的。切切。

C:初级看潜力、中级看技能、高级看方法。这里说的初、中、高不是你简历上写的工程师或者高级工程师,这些概念都让软件公司玩坏了,说一下中科院的标准,1年助工,6年工程师,16年高工。这个年限基本准确。工作6年才有资格评工程师,而工程师是中级级别。工作16年才有资格评高工,高工是高级水平。那些2-3年工作经验甚至刚毕业就敢写高级工程师的哥们,除了逗乐外,没有任何意义。

初级看潜力,本科或者研究生毕业,除了少数牛人,一般来说,都需要培养,就是需要让人带。带人是一个很累的活,有时候,带一个人,不但工作效率会降低,而且,容易落埋怨,所以很多开发人员不愿意带新人。但如果新人肯干,聪明,尊重师傅,则老鸟就愿意教。而作为一个刚入行的菜鸟,如果在前三年有一个好师傅带,则进步的速度是飞快的,一般来说,大学同学在三年左右的时间已经有很大的差别了。

中级看技能,哈哈,中级人员是最好找工作的,主要特点有几个:
1掌握了一种或几种开发工具,有一定的开发经验,属于上来就可以干活的主。
2身体状态、技术、学习能力、社会经验都比较均衡,比较好指挥,而且一般不会出现和领导顶牛的情况,(牢骚难免,活不会耽误)。
3有一定的生活压力,不会轻易跳槽。虽说中级人员也有很多跳槽的,但比起初级人员来,他们是稳定多了,毕竟生活的压力让他们不能那么随意。如果公司状态好,一般来说他们是不会轻易跳槽的
4中级人员的生活压力大,你不能指望他们象初级人员那么玩命,这个不现实,如何提升他们的综合能力,提高干活效率是关键。

高级人员看方法,所谓高级人员,需要具备两个特点,一个是知道如何做事情,第二个是会教别人,中级开发人员一遇到没有做过的事情容易犯嘀咕,害怕、退缩。而高级人员不会,他们负责的事情往往是以前没有做过的,甚至没有接触过的,但良好的训练保证了他们可以将事情做成。他们也许不会Java,不会数据库,但却可以带领团队开发出相应的系统,他们也许不是计算机科班出身,但可以带领带领软件研发团队,这没有什么奇怪的,因为他们掌握了做事情的方法。

一个好的研发团队需要一个高级人员。团队的建设、研发方向的把握,研发频率的控制,客户的交流这些东西往往决定研发的成败。他们和中级人员的区别就是很少抱怨。将事情做成是他们的唯一的目标。

这里说一个事情,很多项目的失败实际上就是缺少高级人员的坐镇,高级人员不是职称,也不是你在公司的职位(软件界高级别,低能力的人太多了),是依靠数十个项目的锤炼出来的。这个东西来不得一点虚假。高级人员的特点就是有无数的解决方案,而且解决方案是基本可用的,不是口贩子。有问题的时候,他一定和兄弟们冲在第一线。没有事情的就不知道猫到什么地方搞自己感兴趣的东西去了。

高级研发人员的特点:
1谦虚、平和。对所有人都很尊重,绝不是那种有点成绩就嘚瑟的主。

2敢拿主意,敢做决定。平时也许还会左躲右闪,但到关键时刻,一定出方案,定调子,担责任。

3较真,在他的专业领域绝对较真,你如果想打败他,需要做很多功课,一旦发现你对了,对于他来说很少存在面子问题。

4思维方式是广度优先,而不是深度优先,想想二叉树的变量方式吧,初、中级别的基本都是深度优先,而高级研发都是广度优先。

5有故事,聊天的时候,业内的故事可以给你讲一堆。毕竟是久经沧海的人。

6对事情的机理研究比较深。专业问题可以让外行听懂,简单说就是说人话,而不是拿专业名词去忽悠别人。不要小看这点,没有深刻对专业的理解是不可能用大白话说机理的。

7能带人,会带人,这点不说了,高级人员一般都好学,所以不认为知识封锁是个好事情,也愿意教别人,

好了说的比较远了,拉回来吧。

D:高级人员招聘难,初、中级别容易。初级、中级掌握的技术一般都具有比较大的适用方位,这个不说了,而高级人员难招聘,一个高级人员是一种综合性人才,另外就是专业的高级人员都是各公司的宝。所以在外边招聘很难。

另外,需要所一个,原来的高级人员还分管理和技术,现在纯技术的少多了,一般都是一专多能,管理现在是一个基本技能,哈哈,还记得那个93年出去一次就赚5w的小老陈吗,他搞了很长时间的技术,但现在也开始介入管理了,哈哈。不过管理的思维方法和高级研发的思维方法还是很类似的。

E:扮猪吃老虎,哈哈,这个算是高级人员的一个特征吧。和你讨论问题的时候,那个谦虚呀,说话那个客气呀,初入社会的孩子们经常被蒙骗,等老虎露出牙齿来,那可不是闹得玩着。(告诉你辨别猪和老虎的方法,就是讨论问题的时候,屏蔽掉一切谦虚的词,看他是否可以快速理解问题,是否可以提出可行的方案,如果是,那要小心了,不是虎也是狼)

F:招聘的时候要知道自己想要什么,这个问题在校招的时候特别明显,说几个这次校招的朋友吧。
1第一个是一个博士,清华的,做电子和机械的,哥们来的时候就问我为什么招聘他,哈哈,挺牛的,和他说了我们的方向和工作内容,这个哥们喜欢做的是机器人和人工智能方面的东西,两个人聊得不错,不过哥们后来决定不来,我感觉挺可惜的,不过,也很赞同他的想法,坚持自己的想法很难得。

2一个中科院的硕士,软件专业,和我们的方向比较匹配,是我很喜欢的类型,也肯学习,能力不错,后来也没有来,因为家庭原因,家里比较困难(农村的),单位可以给解决户口,但工资不高9000不到。后来去上海一个公司了,对方可以给解决户口,工资20k,方向对口,深感痛心,不过也理解,毕竟经济决定一切呀,后来成为了哥们。

3一个理工的女硕士,这个孩子让我怎么说呢,自己争取来的(原来面试没有她),能力不错,希望解决户口问题,工资认为9000可满足,我现在的单位规模比较大,所以走流程的时候会比较慢,开始一切顺利,后来她和hr谈的时候,要求100%保证有户口,哈哈,这个事情其实没有问题的,但你知道,任何人其实都无法保证100%,(hr主要有上级机关的审批,虽然一般没有问题,但谁敢保证100%),后来闹了很多幺蛾子,最后hr烦了,pass掉了。

4还是一个清华的女硕士,我面试的,当时觉得我说的事情靠谱,虽然专业不是软件,但数学能力不错,思路清晰,而且也愿意转行,最关键的是感觉和我们一起工作可以学东西,于是来了,现在已经在办入职了。

对于第一、第二个朋友,我是非常满意的,虽然他们没有来,那是他们的选择,不但他们知道自己的工作选择的要求,而且可以告诉面试人,所以我们都可以根据自己的要求做出选择,虽然后来没有来,但的确能够理解他们,

第三个感觉怎么说呢,当初努力争取,别人给了你机会,但您老人家并不珍惜,什么事情都要求100%满足自己的要求,这个就是社会经验少了。

第四个应该说比较聪明,我们单位可以解决户口,工资可以满足基本生活需要,而这个家伙更看重的是以后的机会和未来同事之间的关系是否融洽,哈哈,看得的确比较远。

说一点题外的话,找工作,不光要看工资这些显性收入,还有看那些隐性的收入。比如户口,这个东西的确很有用,在北京原来听说要18w,现在不知道多少钱,关键你没有办法办。现在你不觉得,等结婚、孩子上学、出国,你才能体会它的用途。还有一个更重要的,就是机会和师傅。

先说师傅吧,一般来说,毕业前三年是工作定型期,基本可以决定你的工作方法,这个东西可是影响你一辈子的东西,遇到一个好师傅可以让你少走很多弯路,节约很多时间。

机会这个东西就更难说了,一般来说机会是和风险在一起的,如果你准备好了,风险就是机会,而如果你没有准备好,那么就是风险,我在做交通10年的工作里都是将别人做糟的东西做好,成就了公司。也成就了自己,这些东西后边会讲到,别着急。

工资这个东西是最实在的,但也是最虚的。先说我自己吧,06年的我离开中科院工资4500,换工作8000,2年之后20k,最后离开单位的时候是23k,不高,但你要知道有3年的时候,其实是单位在养我,哈哈,就是事情不多,但工资不低(当时我比我的领导高6000多)。

我有两次是工资低于原来的工资,一次是在中科院的时候,换项目组,工资从1500变成700,原因很简单,当时从张老怂组里出来,老怂希望我做管理,而我觉得我的技术很low,需要学习技术,所以当时请老怂帮我联系去了于大拿项目组,工资自然降低(老怂组的奖金多,工资其实没有变)。不过,后来学了很多东西,这些东西在后来对我的帮助实在太大了。另外一次,就是最后这次换工作,去了国企,工资由25000变成20000,哈哈,原因很简单,机会成本而已,这个东西就不讲了,等几年后,如果我成功了,在来嘚瑟吧。

码农的工资高,实际上都是外企和互联网工资炒起来的,外企就不说了,说说互联网公司吧。互联网公司的工资一般可以是其他做IT工资的两倍,哈哈,这是真事,但有几个问题。

1公司被淘汰率高,说简单点就是公司死得快,即使是BAT类型的公司也存在某个部门撤并的问题,公司不倒,但部门或者分公司撤销,对于开发人员来说和整个公司倒闭没有区别,都是没有工作被裁掉。对于35岁以上的码农一定要注意这个问题,我的哥们有很多都遇到了这种情况,的确很狼狈,对家庭影响也很大。

2隐性成本很大,主要是时间,互联网公司的加班很多,如果用工资去除以实际上班时间,单位时间的收益比所谓的传统软件企业要高,但也没有那么高了。这个东西我们做过统计,大家可以自己算一算。

3互联网公司是商业模式大于技术。哈哈,这个不是否认技术的重要性,但技术绝对不是互联网公司第一位的东西。原来和几个著名公司的公司人聊过,无论是技术还是技术管理其实都有很多问题,庞大的技术团队,却没有核心技术,更多的是砸人力,砸钱。一旦资金链出现问题,则公司game over,这恐怕是中国中小型互联网公司最大的隐忧了。

4没有时间学习,作为码农,应该有一个逐步升级的过程,但如果你整天加班,如何提升自己?如何跟踪新技术,如果学习管理,这些东西说起来简单,但真是只有很少的人会注意自己的技术生涯的规划。仅仅依靠掌握工作中的那些东西,是不能保证你的快速提升的,而不能快速提升自己,则意味着被淘汰。

我自己的快速提升有三次,每次都是半年的时间,第一次大约是工作7年左右,当时的困惑是编码很不错了,但对系统的开发缺乏深入的理解,当时是用半年的时间看了一本书,就是软件工程,反复看,因为是在中科院,课题之间是有空闲的时间,所以用了半年的时间苦读。(这次的关键是建立软件开发体系)。第二次是工作14年的时候,也是半年,刻度pmp(项目管理)。技术没有问题了,但总觉得有一层天花板无法突破,偶然的机会去写了PMP,7000道题反复做了7遍,第一次正确率是70%,后来是50%,30%,60%,80%,90%,最后基本是100%。

哈哈,为什么正确率会是这样,说明一下,我在工作14年的时候,已经参加过16个大项目的开发了,所以工作经验还是有的,所以第一次做题的时候,依靠自己的经验,所以可以达到70%的正确率,后来学习PMP的时候,实际上是将旧有的体系打破,而新体系没有建立起来,这时候,整个人的思维都是混沌的,所以成绩极差。后来经过反复学习,逐步完善管理体系,所以成绩逐步提高。要说明的一点,PMP的题目很多都是情景题,实例题,要求你分析,然后获得结果,相当于让你在工作中不断发现问题,在到书里找答案,从而逐步树立你的管理体系。而且当时的老师要求我们在错误题目写出问题原因,当时还是有些不屑一顾的,后来发现的确有用。

说一个好玩的事情,pmp很多题目是没有固定答案的,而且不同时间的考试题标准答案不一样,哈哈,其实这就是真实情况,一个情景题有时候从不同的角度去考虑,获得的结果是不一样的,有时候一帮大老爷们和老师争得脸红脖子粗的。好像回到了高中。

PMP的半年真正帮我打破了管理的天花板,06年以后的工作,基本上是拿pmp打天下,效果不错。

这里需要说明一个问题,同样的东西,不同人使用的效果是不同的,我们那个班,估计我学的时间是最长的,半年时间,做题是最多的。考分不是最高(我不是学霸,也不是考试型选手)。但它让我的工资从4500变成了25000,职位从中级提升为高级。哈哈,后来和公司很多人PK,输的情况少,(更多时候是赢得了别人的尊重,这个后边讲)。

我们班最牛的一个哥们,就学了一周时间,也过了,其他的有一个月的,两三个月的,但效果就不好说了,很多人是被单位逼得来学的,而且工作事情有多,所以真正上心的少,我能专心学习主要是当时正好要离开单位,所以时间多多,去新单位正好直接试用,效果就比较明显了。

最后一次学习,大约是一年的时间,学习的互联网经济方面的问题,很多疑惑终于得解。不能不说,国外很多人文类的研究还是很牛掰的。

回溯,回溯。还是说招聘吧。
G:应聘失败很多原因是不可说的,见过的有性别问题、学校问题、学历问题、地域问题,哈哈。这些东西一般人家是不会和你直说的,所以,知道是否能去公司就可以,别纠缠其他的了。
为什么会有这些问题,主要是老板,或者直接办理在这些方面吃过亏。所以就擅自引申了,什么,你说这不科学,不合理,哥们,你能要求所有人都是那么理智和科学吗?反正我是不行。

还是说点奇葩的事情吧。
1关于性别歧视,我做交通的时候刚去的是测试部门,前任部门经理招聘了一个女测试人员,胖,经理面试了一下还行,就进了,结果谁知道当时已经怀孕5、6个月,工作两个月,要保胎,请假,然后就是生孩子,那时公司情况不好,老板压力大,测试部门玩了这么一个事情,成了典型,最后干脆走人了。我接手测试部门半年,这个姐们回来工作,开始也不敢给他压工作,(那时我老婆也在怀孕中,深知其中之苦)。可是这个姐们实在是牛人,利用空闲时间开起了网店,开也无所谓,你别在前台进货取货呀,进货取货也没有关系,你别在公司推销母婴产品呀,推销你也看人呀,这姐们竟然向老板秘书去推销,于是爆了,开除。没有商量。

这个事情搞得我们很狼狈,后来再面试女性工作人员的时候,都要问人家结婚没有,什么时候要小孩。这个操蛋,我一个187的大老爷们问女士这些问题,你说尴尬不,但你说谁让你的部门出了这么一个奇葩。

我在公司的测试团队男女比例时2:1,开发团队是4:1.不要说我性别歧视。

2分数歧视:有在读书的哥们和姐们,如果真想做软件开发,一定要注意你的分数,一个哥们,好像是邮电的本科,酷爱编程,也很聪明,是属于我喜欢的代码狂人类型,当时面试他的时候,真是狂喜呀,可惜被上级毙掉了,原因很简单,由于大学期间放的科目太多,没有学位。学校和学位以及各科的成绩真是一个卡人硬指标呀,不要说国企了,外企,私企都一样,除非你有特殊关系,否则在人力资源就拿掉你,这回是因为急招,所以放宽了,可您老人家最起码要有学位呀,你要知道上边的大脑袋不是一线人员,他们只会执行政策(这样不犯错误,至于你的开发进度和人家有毛关系呀)。另外对于校招,分数是关键,这个就不多说了。

3地域问题:著名的河南人问题,这个还真遇到了,后来我去的达智公司的时候还真遇到了,老板姓张,当时告诉我不要河南人,因为在他做生意的时候,被河南人骗过,所以公司不要河南的,不过,这个事情不就嘿嘿了,一个是我的开发组有一个女孩就是河南的,而且是核心开发人员,不是一点事情没有,但的确是聪明又能干,很多时候都是她独当一面,而张老板实在是。。。。这个老板我是合作时间最短的,而且也是最不愉快的,随意地域问题还是当成段子听比较好,毕竟那里都有好人,有坏人。关键还是看人品。但地域歧视的确是存在的,这也是事实。

G:再说一个事情,估计也是你想不到的,你觉得你很牛(说的是真正的牛人,自认牛人走开)就能应聘成功吗?未必,为什么,就是因为你太牛了,一般来说,如果应聘者人比面试人牛,很有可能game over。原因如下:

1面试官无法体会你的重要性,前边说了,人员的成长是有阶段的,底层人员很难体会上层人员的工作方法的用意,而且在人的不同阶段,容易自傲。觉得自己牛,别人都是渣,如果别人的想法和自己不同,很难自省。在一些新公司和中小型公司这类人员比较多,反而是大型国企和外企对高级别人员比较尊重,也许这就是所谓的企业的底蕴的问题吧。

2竞争,哈哈,这个事情是现实存在的,毕竟人都是生活在现实中,如果招聘来的人比你牛,直接的结果就是有很大的替代你的可能,那么最简单和直接的方法就是不要招聘他,这样对你就没有最直接的威胁了,你别不承认,这个方法是最简单而有效的,当然,你不能对别人这么说,可以找一些似是而非的原因。比如对企业的认可度、和职位的符合度,未来的职业规划等等一些虚招子来拒绝。

3这里说一个题外的话,如何接纳比自己牛的人,其实作为面试官要想接纳比自己牛的人,关键还是要提高自己。一个人无法做到全知全会,所以招聘在某方面比你牛的人是必然的,如何接纳并且PK过面试人员,关键在自己的水平提高,比如,他编码和你差不多,你可以侃架构设计,他架构设计不错,你可以侃软件工程,软件工程也不错,可以侃项目管理,项目管理也不错,可以侃产品管理或者部门管理,侃方法论,侃品牌意识。如果他这些都比你牛,那么好,我做你的下属没有问题。反正大树底下好乘凉。

说这些,不是厚黑学的演示,只是告诉大家一些现实,在说一些可行的解决方法,便于你判定对方公司对你的认可度。说一下如何判定公司的方法吧。

1面试你的什么人,在社招的时候,一般来说,公司规模越大,见到高层的可能性越低。但如果你的职位重要,或者工未来作难度很大的话,面试你的人职位会很高。我自己被面试的时候,最后都是公司技术负责人或者老板直接面试,(智通的时候是cto,人力负责人、研发部门经理、老板)哈哈,级别够高吧,但做的活的确是够难,智达的时候是老板、研发部门经理、技术负责人、项目管理负责人一起面试的,最后这个单位比较简单,直接进去的,没有面试,因为是一个团队过去的,但老大对我们是很尊重的,这个后边说吧。

2观察一下公司的工作状态,每个公司都有自己的风格,有些东西通过对公司的规模,人员的工作状态,工位的情况,面试官的说话方式等等方面,让你基本可以对公司有一个大致的了解,现在很多公司做ISO和CMMI,一般来说也会将一些宣传标语贴出来,记住它们。我知道很多时候这个东西是假的,但真有面试官问,哈哈,记得当时是一个20人的群面,当时好像只有我一个人完整答出来了,(我在中科院最后的职位是质量负责人,所以对这个东西比较敏感)。仔细观察,一个是可能放一个小炮,另外就是看这个企业的风格是否适应自己。

说一说笔试的事情吧,这个东西也是搞笑。
笔试原意是很好的,考察一下基本知识,以及和未来工作的符合程度,不过,因为出笔试题的人原因,这个东西被搞坏了。说一下原因吧。

1题目长期不变,技术落后了,题目外泄了,但没有人员去改进笔试题目

2知识点问题过多,方法论问题少,很多东西是可以快速查资料的,这些东西不知道为什么要考,我见过最奇葩的一个考试题目是考ftp参数。我的妈妈呀,这个真没有记住。

3没有合理评价标准,在实际工作中很多事情有多种解决方法,要根据实际情况进行应变处理,不是只有一个所谓的标准答案的。

4告诉你一个真相,很多时候面试官都知道题目的答案。这是真的。

5很少有人会对所有的笔试题目打分,反正我是从来没见过,所以,无法量化的东西就谈不上客观、公正。那么他存在的意义何在?

吐槽完毕,但你如果遇到笔试的时候还是需要认真对待的,特别是校招和工作1-2年的同志们,吐槽归吐槽,谁让你不是老板呢。

说一下自己对高中初级人员的判定吧。

初级人员是要能做好事情,中级是做成事情,高级知道要做什么事情。这个是最关键的区别吧。
初级人员说简单就是搬砖,把砖头办好,码好,少损耗,效率高,就行。所以初级人员是体累,心不累。

中级人员是做成一个事情,记住是做成,这个词很重要,做项目就是将项目搞定,也许是用技术的方法,也许是用商务的方法,可以让下属做,你休息,也可以你亲自扑上去,反正不管如何,你要将事情做出来,而且所有资源使用尽量少,这样,你才是一个中级人员,资源使用的多少,是衡量你水平的标准。中级人员是累脑又累身体。

高级人员是知道要做什么事情,高级人员最重要是掌握方向,需要对所有方方面面的事情进行权衡,包括政治、市场、资金、资源、技术、时间等多方面进行考虑,最后决定做什么事情,当然。也许他不会具体做,但他对整个公司的发展影响是最大的。所以高级人员是累脑不累体。但不要以为他们轻松,一旦高层决策失误,那是无论多少中级、初级人员都无法弥补的,那是战略性失误呀。所以高级人员是很累的。

说几个自己面试的事情吧。先说被面试,不管去没有去,给自己感觉不错的公司,不要去对照具体公司,没有意义,只是告诉你,如何让你的被面试人感觉比较好。

需要说明一下,我被面试的时候已经工作14年了,哈哈,这点请注意

1:A公司,招聘项目经理,开始的时候是群面,主持人开发是介绍公司,然后提问他们公司的iso口号(就贴在公司大门口处),但是只有我一个人回答上来,后来是让介绍自己的经历,在然后是介绍来之后的工作,让每个人讲自己的会如何组织工作。然后解散回家,顺利进入二面,老板直接面试,就具体的管理问题和技术问题进行讨论。效果不错,但最后还是决定放弃,主要是通过交谈发现公司没有一个主营方向,属于项目型公司,这样对个人的长期发展不利,我在中科院干了14年的项目了,没有一个相对稳定的方向。容易成为万金油干部。这实在不是我希望的。但公司的人员给我的感觉还是比较好的。

2:B、C公司一起说吧,这两个公司基本一样,上来就是做题,一个是sql语言,估计是玩数据处理的公司,一个是ftp使用,哈哈,答完走人,这两个公司都是国内的公司,感觉不好,我投简历肯定是看职位的,这两家公司都是不管应聘人的实际情况,让你感觉你对应聘人员的不尊重,相比第一家公司,虽然也是全面,但效果比B和C这两家公司好多了。

3:某外企,当时面试的质量保证职位,当时我的工作经验覆盖开发、测试、质量工作,如果单纯说工作能力来说应该满足要求,但是面试我的是一个只有2年工作经验的研究生,而且通过聊的过程发现,此人工作比较虚,都是浮在上边,谈话的内容比较肤浅,而且此人比较武断。不接地气。最可气的是,如果去了哪里,如果去了,此人可能说我的领导,这个事情就不好玩了,于是果断走人。
4:某老牌外企,面试两次,一次技术,一次hr,比较专业,技术主要谈技术和技术管理,hr主要看管理思想和人生态度,哈哈,效果比较好,可惜后来来一个我感兴趣的项目,所以就没有走(不是中科院,当时已经换了一个单位)。但对这个外企的感觉一直不错。关于这家外企说一个事情,关于如何面试很多书讲了,特别是一些技术问题,但对非技术问题如何解决,这些东西没有一个固定的格式,没有一个固定的答案,我自己的感觉,如果你的时间比较富裕,学学pmp。这个东西虽然是项目管理,但对你分析问题和解决问题的能力提高很多,其中一个主要的就是如何就是如何通过聊天,快速明白对方的意思,而且回答出比较正确的答案。反正我在学习pmp后,还真没有因为以为回答这些思维方法和做事方法类的问题给over掉。注意pmp不是面试宝典,是在你有比较多项目经验的前提下梳理你的做事方法,总而达到效果,属于慢效药。

5某国企,朋友介绍去的,当时是技术负责,研发负责,项目负责,总经理一起面试,当时我已经工作23年了,做交通也有9年,而且我做交通是从头到尾所有工作都做,这个后边讲,所以无论技术、实时、运维、管理都问题不大,说几个面试官的问题,一个技术负责人问题不多,项目管理的也几乎没有提问。而且和研发负责人在讨论具体技术问题的时候,发现他们明显结果统计数据明显不对,当然因为是面试所以也就没有在追,工资问题和总经理纠缠了很久。哈哈,这些事情后来都暴露出来了。所以说仔细了解你的面试官,是了解一个公司最好的方法。还有一个事情请注意,当时我因为朋友介绍的关系,虽有疑问,但还是去了这个公司,这个不能说不好,虽然完成了项目,也提高了技术,但过得不是很愉快,所以在你面试的时候有疑惑,还是要多想一下,否则容易给自己造成很大的损失。

猜你喜欢

转载自blog.csdn.net/weixin_36721918/article/details/54923237