10年,4个单位
第一个单位:
03年从大学毕业,应同学推荐,入职于劳动局下属的劳动就业管理处,充当一个小网管:电话坏了,修修;打印机坏了,修修;电脑(包括多媒体终端)坏了,修修;网络坏了,修修;复印机、速印机坏了,打电话让专业人士修修。
入职后的第一件事情,是负责《劳动力市场信息网络》(一个关于劳动力招聘和求职的系统)的升级扩容,这主要包括两个部分:一是将《劳动力市场信息网络》扩展到下属的38个乡镇的办事处;二是和市局实现数据的共享。
其时,下属乡镇的办事处还没有相应的办公设备(电脑、桌椅等),并且升级扩容还需要其他的一些设备,因此,需要进行一次大采购。既然是大采购了,当然不像买买普通的办公用品那么简单。
首先,得向地方财政申请Money。于是,我开始写财政申请书。我记得第一次我写了好几十页,从升级扩容的原因到可行性方案、实施细则,到各设备的大致价格,全都写了上去。结果不行,几经修改后,最终精简到只有大半页纸。由于金额较大(53、4万,对于我这个刚毕业的且生活在贫困地区的小P民来说,这就是巨款了),跑了几趟财政局才申请成功。
之后是到招标办招标。具体过程我就不说了,是可以有黑幕的(我胆子小,怕出问题担当不了责任,因此我正直了一把;当然,也将继续正直下去。几年前听说招标办的主任进去了,哈哈)。
再然后就是坐等中标公司采购物品,签验收单。
在升级扩容过程中,还同时把单位的网络重新布置了一遍。最烦的是拉网线:先大致计算每台电脑需要的网线的长度,然后在楼层的某个墙角打个洞,将网线从楼层夹板拉过去,穿过洞,再用线槽板包住网线,沿着墙角接到各个科室的各台电脑。
劳动就业管理处是一个半盈利性质的事业单位。所谓半盈利性质,就是说,如果你没钱用,就从地方财政上申请;如果你赚到了,就将没用完的钱上交地方财政。然后,你知道的......不错,你想的不错,就是你想的那样。
我,作为一个理工科人士,想的是靠技术吃饭,有多大能耐,就拿多少口粮,而不是在某个安逸的环境中混吃等死。于是在干了13个月后,我毅然辞职。现在的我,虽然偶尔会有点想回去,但我从来没有后悔过当初的决定;在出来的这9年中,我确实见到了世面。
需要一提的是,在这个单位,我相当活泼,从门房的老爹到各科长科员,关系不要太好;处长、主任也对我关爱有加,每到节日,都会邀我到家中吃饭(还说要给我介绍对象,不过由于当时我还不能确定是否要一直留在那边,只能感谢领导的好意了。现在想来,这是相当正确的决定:那时我还那么年轻,怎么能为妹子而折腰,^_^);对局里的局长、主任等,也混了个脸熟。
第二个单位:
从劳动就业管理处出来后,我就投奔到张家港同学那去了。
我花半年时间,学习游戏开发,包括编程和策划。那个时候,每到夜深人静的时候,我会出现在gd(好像是属于某游戏公司;如果我没记错的话,还会每周报导H5 OL的进展情况。不过这个网站现在已经消失了)等大小游戏论坛;并且活跃于多个游戏开发企鹅群。在其中的一个群中,一个妹子和另外一个人起了争执,我调解了一下,然后,一年后,这个妹子成为了我的女朋友,^_^。这个妹子,文笔不错,但我没有这样的天赋,没做成策划。虽然能捣鼓点程序,但离游戏公司的要求(至少那些招聘信息看起来很唬人)还有点距离。
之后我弹尽粮绝,只好找了家公司上班糊口。
这是个民营合资企业,大老板好像是某个汽车厂的Boss,不过我从始到终都没见到过其庐山真面目。
这个公司的工资也不高,起初每个月只有1200(我刚入职劳动就业管理处的时候是840多,后来调成了920多,除去吃住,每月所剩基本为0 )。不过我很有热情,想着在哪一天可以将工资提升到3000。
我们研发部的“技术总监”F来自上海,23岁,据说有点背景。想想也是,如果没有点背景,怎么可能那么年轻就被聘为“技术总监”?
当时他让我们做一套ERP系统。以我们当时的人员配置,1资深程序员+4初手程序员+1后勤,当然是不可能新开发一个的,F在这点上看的很明白。他不知道从哪儿搞到了一套ASP源码,让我们将之改写为ASP.Net(C#)。
源码很垃圾,相似的代码到处都是...那个时候我还不懂重构的概念,只是觉得这很讨厌,应当提取为一个函数。但问题在于,我们对系统缺乏了解,加上水平不够高,害怕出错,更为关键的是担心吃力不讨好、落后于所谓的“进度”,我们只能逐页逐句的“翻译”,繁忙得紧。
那个时候是04年,用的是vs2003,显示屏幕只有17寸的。“翻译”的时候很多地方要前后对照,为了方便操作,只能将字体缩的小一点。这直接导致,在连续工作一个月后,我只要对着屏幕超过10分钟,就眼睛难受,流泪难止。庆幸的是,这个时候的“翻译”工作已经接近尾声;而且,我在大学假期自学的Javascript帮了我一把:我被调去维护一个叫做RichClient的js库了。
这是一个比较专业的js库。服务器端数据库中的数据输出到页面后,可以用它在客户端(用今天的话说,叫前端)生成js数据集;并且这个数据集可以和表格以及导航条绑定。表格做得不错,在编辑模式下,点击不同的单元格会根据设置的不用显示出相应的编辑控件,如编辑框,颜色选择框、下拉框(还支持键、值对的方式)等等;并且带有分页显示的功能;还可以和其他的表单结合,当用户点击某条记录或通过导航条改选当前记录的时候,会自动刷新到对应的表单。在这个表单中,也可以对当前的记录进行修改;修改的结果可以保存到当前的缓存中;当修改全部结束后,可以点击导航条上的“保存”按钮更新到服务器数据库。用今天的话讲,它其实是一个ajax库(那个时候还没有这个概念,虽然已经有不少公司在用)。RichClient还有其他的一些功能,比如在页面初始化时将含有特定属性和属性值的元素作一些处理等,我就不说了。这个库强大之处在于,它可以和服务器端的脚本配合使用,比如,像我说的将数据输出到前端的js数据集,只需要一句C#:InitDatabase("dbTable", "jsTable");
我接触这个库之后,修复了一些bug,完善了几个功能。然后,被安排写一些演示:基于xmlhttp的Web输入法;还有多行表头的表格列拖放;利用xml配置文件将服务器端的Excel表单输出客户端的RichClient表格(这是一个强大的功能;用户设置的Excel表格无论有多复杂,有多花哨,都将会如实地显示在前端,也就是我们所说的“所见即所得”。xml配置文件的作用是记录Excel单元格中的数据的格式和来源,比如B2,是日期格式,无数据来源;C3,是整数格式,来源于数据库表User中的ID,过滤条件为空,采用键、值映射的显示方式)。
当我把这些演示做完之后,还沉浸在技术的海洋里,满心欢喜。
但噩耗突然降临,公司告知说要裁掉我们整个研发部。这个消息让我相当惊讶,也有点愤怒我是何等的惊讶和愤怒,还有一点点无所适从感和对同学的愧疚(我所投奔的同学原来在一个台资企业IT部门,薪水还过得去,是我的多次劝说,将他引入了我们公司,没想到入职还不到半年,就要被裁掉了。后来我们自嘲说,我们俩不能呆在同一个公司,否则公司准倒闭)。
被裁掉的我等P民也无可奈何,该吃的饭还是要吃,该走的路也还是要走。不过,当公司说要不给我们一个月的赔偿金的时候,我们是真的怒了;后来在我们的努力和坚持下,公司还是如数发放了赔偿金。
在离开公司之前,F找我谈话,说可以在上海给我介绍份工作,不过只有3000块钱一个月。当时我就心想,张家港的三千和上海的三千能一样吗?不会是真把我当要饭的了吧?我于是直接拒绝了F的好意。
同时,我们得知了被裁掉的原因:F和总经理争权夺利;总经理震怒,直接更改公司方针,由自主研发变为SAP代理。
领到赔偿金后,我和同学两人在公司所在园区的一个小饭馆,点了两个炒菜和一碟花生米,又用不方便携带的台式风扇换了几瓶啤酒,一边喝酒一边合计,接下来干嘛啊?去哪儿落个脚?我同学说,我姐在上海,要么我们就去上海吧。我说,中。于是,在2005年的8月25号,两个落魄的年轻人,各提一包,来到了上海。
第三个单位:
到上海的第二天,也就是2005年的8月26号,我和同学去附近的网吧在网上找工作。我大概投了4、5份简历。当时,我们的心里相当没谱,打算明天继续革命。没想到的是,第二天一早就有3家公司打电话通知我在28号面试。当时我只顾着高兴了;现在想来,这其中有问题啊。因为28号是周日啊,既然有人在27号也就是周六通知28号的面试,那是不是说明,这些公司周末都是要加班的?我是讨厌加班的,除非是确实必要的。
在我看来,加班的原因只有四种:
一、员工能力低下,无法保质保量完成上级交代的任务;
二、上级失职,没有仔细了解下属的能力,导致下达的任务超出了下属的能力承受范围;或者上级能力不足,未能制定出合理的开发计划,只能靠下属的加班加点来弥补进度;
三、公司的文化就是加班;或者公司有问题,依靠剥削员工过日子;
四、由于某些特殊原因而导致的正常的加班。
周日上午有两家面试,由于离得较远,只赶得上第一家的面试。那是一家做医疗器材网站的公司,面试的结果不是很理想。
来不及吃中饭,我连忙赶下午的这一家。这是一家私营企业,有大小老板两人合资;其中,大老板带着原班人马去往广州拓展新业务;小老板留守,因而我得到了这次面试的机会。
我应聘的是Web开发工程师,我打算演示的是我在上一家公司做的那些Demo。不过由于我没有电脑,只能在面试官(也就是小老板,以下简称老板)的电脑上执行。从邮箱下载附件,解压,配置Web共享,很快搞定。老板对这些Demo赞赏有加,然后当着我的面,删除Demo,清空所有的缓存,并让我确认,没有Demo相关文件残留在他的电脑上。这种做法让我对他升起好感。但当时他没有当场录用我,而是让我先回去等通知;这让我心里高歌神曲,又失败了?不过,让我兴奋的是,就在走出办公大楼的门的一霎那,我接到了他的电话,通知我明天(也就是29号周一)入职。我了个去啊,兴奋是兴奋,但我当时哪能这么轻易地答应,作为淑男,要有矜持,^_^。再怎么说,我也要先把住的问题给解决了不是?
我算是比较幸运的,仅仅3天时间,也就是在31号,我就躺在了田林一村的某个38平方的一室户里面的床上。
9月1号,是崭新的一月,是崭新的一天,我准时上班,真是美好的开始啊。
前两天没啥具体的活,主要是熟悉一下工作环境,认识一下同事:前台L,会计F,搞Domino Notes(公司的OA产品用Domino Notes开发,这一块我协助编写一些js)的X和T,搞ASP.Net(C#)的C。
C是一个大专生,据说其C#水平相当了得;C还跟我说,他的一个同学在架构设计上颇有造诣。
得知这两点后,我只能用欣喜若狂来形容我的心情。这个公司我来得实在是值啊,可以先向C学习C#,然后再向C的同学学习架构设计。我憧憬着,每逢周末,约上C和他的同学,还有其他志同道合的同志,相聚一堂,大家一起喝个茶、吃个饭、聊个天、联两局游戏、交流一下技术和学习心得。
可惜的是,我还没来得及实施我的计划,C却被公司开除了。详细的原因我不清楚,我不是八卦的人,也没有打听。
之后,公司改变了开发方向,决定使用VC开发新产品。VC就VC吧,对我来说这也不是什么大问题。
此处得简要说一下我的学习经历。
在大一寒假的时候,我自学了PASCAL;
在大二暑假的时候,我自学了C++(除去模板的部分)。
在大二寒假的时候,自学了JS 1.1和DHTML 4.0。
从第二个工作单位开始,又杂七杂八地学了其他不少东西。
在大二学完C++转向VC的时候,一个变量绑定的问题困扰了我半年之久,因为实在是找不到人问啊。那个时候,我所在的整个年级没有人在学VC,因为我们计算机系连C++都不教,我自学用的C++课本还是向自动化系的同学借的;至于说那些我能接触到的老师,嗯,嗯,呃,就不说了。另外,那个时候的网络不像现在这么发达(那时还是56K小猫拨号的时代。我清楚地记得,我们用宿舍的电话拨163的时候,必须在在配置中多加一个,号,否则会由于拨号太快而导致拨号失败;也还记得,拨号都是用的9989的卡(我在南京上的大学)),绝大部分学生,包括我在内,根本不知道搜索引擎为何物(而且谷歌是在2006年4月才进入的中国市场,2000年的时候,百度也就才成立)。在被困扰的这半年之内,我投入了Java的怀抱(后来有一段时间还搞过JSP,不过现在全忘了)。后来,一次无意之中,发现按住Ctrl+鼠标双击就可以直接调出变量绑定操作窗口。现在想想,那个时候的我真是傻得可怜啊,就那么几个菜单项,即使看不懂英文,还不能一个一个试嘛。当然,这也跟我以前没有接触过电脑有关(第一次接触电脑还是在99年的一次考试之后。我同学说带我去玩游戏。我一开始以为是去游戏厅。没想到最后是去“网吧”。我记得这个网吧当时安装的是Windows 95。当时我对电脑是一窍不通,而且不敢乱操作,就怕搞坏了。害怕到什么程度呢,这么说吧,当时我玩的那台电脑上,桌面上只有系统图标和几个文件夹。“我的电脑”处于选中状态,我无意中按到了Windows键,于是,菜单出现了。我的第一反应就是吓一跳,完全不知道下一步该干啥,于是赶忙叫来老板。我同学得知这个情况笑话我个半死。然后说找个游戏给我玩。于是,开了一个模拟器(那个时候我可不知道它叫啥,我觉得对话框都一个样),调入街霸,还给我示范了两局。我清楚地记得,他同时按了两个键,Ken就发出了绝招,而不是像在街机上那样,噼里啪啦一大串操作。现在想来,是控制宏了。当时我不会玩街霸,我同学就又给我开了一个小日本的RPG,汉化过。不过我就玩了两分钟,因为,在这两分钟之内,我看到的全是对话,毫无意思(那个时候,我以为它会一直对话下去)。我同学无语,开了一个暴力摩托。前面几局我老是被别人打、被别人踹;后来我就开始打别人、踹别人。我记得打人和踹人用的是空格键和回车键。再后来我回回得第一。由于还是试玩版,无法玩第一张以外的地图。不过就算是这样,我还是玩得不亦乐乎,玩了整整一个通宵!)。真正地接触电脑还是在大学上<计算机基础应用>的时候。那个时候我和同学都不懂电脑,在讨论哪台机子新的时候,完全是看装的操作系统。如果是Windows98,我们就说,哇,这台机子新,这台机子好,^_^。
有点扯远了,有空专门写个回忆录吧,现在把话题转回来。
自从公司决定使用VC后,到目前为止,我的ASP.NET技能就使用过一次,就是在现在任职的这家公司(第四家公司),用它来写OPC XML的WebService。这个等下面到第四个单位的时候再具体说。
我们决定开发的是一款基于IM的项目管理软件,另外还集成了文件传输、内容(文档)管理、内部邮件、外部邮件、文件共享、任务追踪等;采用C/S结构;VC开发;支持Windows 9x/Me、Windows NT/2K/XP、Vista(后来加入了对Win7的支持,并且不再明确保证支持9x/Me。至于Win8,只能表示遗憾,该产品未能坚持到其发行)。在05年的时候,同类产品很少(腾讯有RTX,但很多用户都不怎么买账;还有另外一家公司,具体名字我忘了,虽然他们做得相当早,但影响不大),应当说,老板的眼光还是不错的。但我们在开发的过程中,始终没有做出明确的定位:给什么样规模的公司用?现在想来,这是相当有问题的。大公司一般会定制一套系统,而小公司一般就凑合着不使用了。
那个时候的我,水平不怎么行。老板先让我试一下能不能搞,说得好听点,就是确认一下技术可行性。我于是写了一个基于TCP的网络音频播放程序(就是QQ中放歌给对方听的这么个功能)。写好后,就跟老板试验了一下。由于是在局域网中,效果是相当流畅。老板于是决定开搞。
为了做出漂亮的界面,老板专门招了一个美工D;后来为了推广我们的产品,还招了3名销售。
我一个人捣鼓了一年,出来了大部分功能:IM、项目管理、文件传输、内容管理、内部邮件等。同时,从无到有地创建了所谓的“类库”,大大小小百十来个导出类,涉及数据库、网络、多线程、XML、系统、工具集,还有各种基于MFC自绘的控件,以及窗口相关的管理类。窗口管理类中有一个叫做CMyWndSplitter(名字起的不好,见笑见笑)的,功能是模拟MFC的分割窗口。当然,它和MFC的分割窗口不同。首先,CMyWndSplitter可以用于任意的窗体中,比如复合窗体、对话框或者视图;其次,它只能管理已创建好的窗体,或者自动创建拖拉条;最后,它支持任意复杂的分割方式。举个简单点的例子,就拿VC开发环境来说,左边是工作区,可以左右拖动,并可以设置其是否显示;下面是输出窗口,可以上下拖动,也可以设置其是否显示。这样的界面用CMyWndSplitter很容易就可以实现(如果自己实现的话,光处理拖动(包括拖动时显示的阴影框)就要费一大堆事。如果,切分窗口较多,可拖动部分增加,这简直就是灾难)。当然,以今天的眼光来看,在代码级别,CMyWndSplitter很不完美;但从功能和实用程度上看,还是相当不错的。
我们的开发方式不大好。老板一再强调,我们是使用的“原型”开发法。这个方法并没有什么不好,对我们当时的情况来说,也比较合适。但问题是,我们对它缺乏深入的了解,也没有实际经验作参考。经常发生的情况是,费了老半天的事,在“完整”地完成了某个功能或界面后,老板过来一看,觉得又不好,然后返工再改。这样一次两次并没有什么,但是随着次数的增加,这样的开发方式(是不是“原型”法我不知道)越来越让我厌烦。我提过这个问题,但老板的回答说,不把东西做出来给用户实际使用,用户又怎么能够知道它到底行不行?这话有一定的道理,但我想老板大概是受到了OA产品的影响。因为我们公司的每个OA客户或多或少都需要定制一些功能。而且,往往是,这些客户自己还无法准确地表达出自己的需求,无论你跑多少趟,做多少遍需求调研,即使最终试图用合同固定下来,都无济于事,需求还是变来变去。换句话说,客户也不知道自己到底想要什么。这很奇怪,但却是事实。碰到这种情况,大概是敏捷大显身手的时候。不过那个时候我不知有敏捷,直觉就是开发方式有问题;而且也在想,OA有需要定制的功能,可我们的IM项目管理软件是套装的啊,不会有定制的功能,用瀑布是不是更好点?当然了,由于市场调研不可能面面俱到,肯定要不停地完善增加功能,那我们也可以用瀑布螺旋啊。对于IM部分,我们当然是直接借鉴的成熟产品,QQ和MSN。对于其它的部分,在功能上,我个人觉得,应当是我们引导用户、整合用户,而不是被动地全盘接受用户,否则就变成部分用户的定制软件了。换句话说,我们要作出合适的市场定位。到底给谁用?我们的用户应当像“时尚女魔头”中的女主角一样,要么“接受它”,要么“甩了它”。当然,接受它之后你可以提意见,但我们不一定会听你的话。
“原型”的开发方式导致老板需要经常和我与美工进行问题的讨论;对一些东西也会有反复的修改。慢慢地就不爽了。
虽然我对架构设计不是很懂,但在开发过程中,多少还是有些设计的,只不过还没够格到架构的程度。另外,程序设计也是一种设计。因此,我经常要进行某些角色的转换,有时是伪架构设计师,有时是开发包设计师,有时是产品程序师,有时是代码工,有时是测试人员,有时是用户......在产品公测后,我还充当过一阵子客服。前期还好,我还能清楚地认识到自己当前所扮演的角色;但在后来,受到魔鬼的诱惑,设计和编码终于发生了混乱(比如说对某个问题的解决,在代码级别,只要加一个全局变量,再在有限的几个地方稍作修改即可解决。但如果从设计上、代码可靠性上,解决起来将会比较复杂)。然后,魔鬼就逐渐侵蚀了我的大脑,让我变得更加混乱不堪。虽然我们每周二都会组织打篮球,但我心理的状态并没能得到调整。
06年下半年,老板招聘了Z,这让我们成立了“团队”。Z起初负责文件共享这个功能模块(在交给他之前,我先实现文件共享和主功能模块的集成和调用接口)。文件共享中需要为访问用户设置权限,针对用户数据的获取和权限数据的读写等问题,Z会和我进行讨论。在这些问题以及后来其他问题的讨论中,我的精神状态得到了一定的改善。但改善的只是以前单人独自干活的苦闷和寂寞。
在Z实现文件共享的这段时间内,我主要负责解决试用客户反馈的问题。我们有个关系很好的客户,公司规模在2000人。他们指派了200人来试用我们的产品,结果发现,我们的产品多次发生过信息无法发出和掉线,还有崩溃等问题。经过我和Z的研究,发现这些问题都和网络有关。在项目开始的时候,由于知识的匮乏,我决定对每个连接的用户采用同步的处理方式。这样可以极大地简化代码,实现起来最简单、最快速;但也是最低级、最低效的方法(其实在普通的PC机上,同时进行几十人的业务处理绝对是可以的)。于是我们进行优化。优化的方式是改用IOCP。但我们没有直接使用Windows的IOCP,而是自己实现了一个,因为使用Windows的IOCP的话改动量非常大。优化之后,网络的问题得到了缓解,但还是会偶尔出现问题。再次研究之后,发现是发送网络数据的代码有个小问题,没有检查(非错误)返回值(比如,int lenght = send(pData, dataLength);如果length小于0,表示发送失败;但对大于等于0的情况(数据发送成功,但可能仅发送出部分),我们没有进行判断)。再次修改后,还是会有“信息无法发出”的问题。于是我们再再研究,发现,信息并不是真的无法发出。我们在进行QQ聊天的时候,发出的信息会立即显示在聊天窗口中,但如果该条信息最终没有发送成功,会在聊天窗口追加显示相应的错误信息。当初老板觉得这种方式不好,会让用户误会(必须承认,确实存在一定的误会),所以决定采用等信息发送成功后再在聊天窗口显示出来的处理方式。如果服务器比较繁忙,或者网络质量不好(有人是VPN接入,也有人是由外网通过路由端口映射接入),就会有延迟。这无法避免,就好像很多决策一样,得到这个,就牺牲那个,我们只能在二者之间进行取舍和平衡。
07年上半年,我和Z都觉得基础架构不大好,于是想花上半年的时间进行重写,但被老板否决了。老板害怕失去市场和市场先机;但我们认为,在产品不够好的情况下,市场份额越大、客户越多,坏影响也越大。我把产品分为3个层次:能用、实用、好用。所谓能用,就说不要求产品能满足用户的基本需求,但不能崩溃,在出错的情况下绝对不能破坏数据。实用,就是说,在能用的基础之上,提供的功能确实能有效地解决用户的问题。至于好用,就是在实用的基础上,提供更加良好的用户体验。当然,这三个层次并非独立,往往交叉。不过,当一款产品出问题的时候,必须要从最基本的开始解决。我们的软件的基础架构出了问题,却不去解决,反而继续增加功能,就好像是地基没打牢而继续盖高楼。在这种情况下,投入越大,损失越大。当然,我们要求重写基础架构的要求也有相当的风险(毕竟是技术人员,在考虑问题上,还是技术上占多一点)。不过从最终结果上看,我认为提议是正确的:我觉得,在当初,我们根本不会有想象中的那么大的市场;所谓的市场和市场先机,可以忽略不计。
在产品推广上,公司使用了三种方式:一是销售人员电话介绍和推销;二是通过一款软件,连续不断地在各个论坛、博客等地方发言、回复、留帖;三是使用百度广告。其中第二点让我不喜,但在产品缺乏知名度的情况下,当时的我也想不出什么好的推广方式。
07年下半年,我和公司签订的两年合同到期,我没有续签。不过当时项目吃紧,老板同我商量看能否留下来在帮衬一下。我于是留了一年。由于老板值得信赖,我们也没有签订合同,就凭口头协定。老板的其他一些方面也很不错,比如,他从来没有让我烦心工资的事。在他觉得我能堪大用的时候,就会自动给我升值:从刚进公司时的4k/月,不知不觉间就到了8k/月(如果我不走的话,十几K是妥妥的)。
08年下半年,我离开公司。由于觉得精神劳累,在家先休息了两个月。然后,碰上了金融危机,在面试了几家大公司无果后,果断地在家继续休息,直至09年过完春节,才开始再次找工作。
12年10月的时候,Z到达极限,辞职了。老板没有再坚持,正式承认了项目的失败。
总结一下失败的原因和感想:
1. 老板未能准确判断开发团队的能力是否达标(应当说,对于大多的小公司都是如此);我能力不足,缺乏经验。
2. 产品定位不明确。
3. 调研不足,需求和分析不到位。
4. 决策失误。在盯紧目标的同时也要注意到过程。
5. 开发太过依赖于个人,典型的个人英雄主义。
6. 应当“未虑胜、先忧败”。创业往往不会一次就成功。应当首先把失败当作成功的积累。这次我们可以失败,但不能失败了就一无所有。问问自己:在这次失败的创业中,我们的付出为下次的创业留下了什么?(前面我说过,我写了百十来个类的类库;但这些并没有相关的文档。我走了之后,谁会知道它们都是干吗的?谁还会去用?而这些应当都是创业的积累,是公司的财产)
在公司的三年中,我作为开发团队的领头羊,由于缺乏经验而不能称职。确实,头羊可以见到千变万化的风景,但前提是,你得能够分得清什么是风景什么是陷阱才行。为提高自己,为能够跟在头羊的后面,在盯着头羊一成不变的屁股时,学习头羊领路的技巧和辨识的方法,我进入了一家“上市公司”。
第四个单位:
09年4月,我入职于某“上市公司”。之所以加上引号,是在强调自己的愚蠢。我是在51Job上投的简历。在投的时候,我特意阅读了公司的介绍,由于对一些名词的缺乏了解,再加上没有仔细斟酌,这直接导致我混淆了“SY”和“SY集团”,以为“SY集团”上市和SY上市是一回事。后来我才知道它不是,不过那个时候已经和公司签订了三年的合同。我是个讲信用的人,既然已经签订合同,就要履行到底。至于为什么在合同到期后继续续签,在后面再说吧。
SY公司属于科学仪器行业,不是专业搞软件的;因此,在工资上,和软件公司完全没有可比性(到现在为止,已经进入这个公司4年了,但我每个月实际拿到手的Money才是第三家公司的80%)。即使如此,我还是决定进入这家公司,因为在第三家公司的时候感觉到了自己的不足,我想提高自己,这种时候就不能怎么考虑收入的事情。
在干了一段时间之后,我才发现,这家公司的产品开发(包括硬件和软件两部分)是相当地混沌的。
首先,在管理上有很大的问题。老祖宗在管理上有句话,叫“无为而治”。SY的管理层光“无为”了,就是不“治”。哦,或许还是有作为的,不过可能作用在公司的对外事务上了。在公司内部事务上,我所在的基层从来就没有感觉到过来自上层的压力、激励和助力。2月份研发部开会,我的一个同事大胆进言,说我们研发部死气腾腾、毫无朝气,希望副总想想办法。结果,副总回答说,他也很奇怪,我们研发部大部分都年纪轻轻的,咋就没有朝气呢?年轻人不是应当很有活力的吗?然后,就太监了。他就是不想办法,就是不想办法!我实在不知道他到底是不愿意想啊,还是没有能力去想。这位同事还进言,为了提高大家的积极性,能不能在完成项目某个里程碑的时候发点奖励、奖金啥的。你猜怎么着,结果副总和老同志X就开始忆苦思甜了,说他们在SF厂的那段日子;说,他们那时还都年轻,才参加工作不久,穷得一天到晚发愁,担心找不到对象。但是,但是啊,他们对捣鼓机械很有兴趣,虽然对科学仪器一窍不通,不过就是凭着吃苦耐劳的精神,凭着满腔的热爱和热血,凭着自我的摸索,恁是摸到了头绪。于是他们跑到厂长那说了,能不能申请点资金,让他们研究下去,还说,如果出成果,算公司的。厂长看他们搞的不错,张口就是5万块钱。后来,真的出成果了,厂里给他们以及其他参加研究的同志每人发了4000块钱的奖金。而他们虽然是出力最大者,但他们也没有计较,没有计较一时的得失,坚信,最终厂里是不会亏待自己的。果然,等设备量产后,他们都获得了不错的股份。X感叹说,如果当时他们去厂长那要求发更多的奖金,厂长会不发吗?但如果这样做了,最后的股份就不会那么多了。副总也说了一通,大意是,研发部是有项目奖的,但是由于开发目标未曾达到过,因此这个奖项也就不可能拿到;另外,公司的目标是上市,但在没有上市之前,还无法量化各个员工对公司的贡献,因而也就不可能确定该给员工多少股份。最后,总结说,我们还处在热血澎湃的年纪,不要过分追求利益,要相信公司是不会亏待每一个人的;员工每天在干什么,对公司有没有贡献,上层是知道得一清二楚的。然后感叹啊,说他还真没听过哪个公司的研发部不加班的。还具体举了日本公司的例子,说,在日本人的公司里,下班后,老大不走,老二就不能走;老二不走,老三就不能走;老三不走,员工就不能走。然后痛心疾首地感叹说,我们公司一到下班时间,研发部的人除了C就全部走光了。再然后,继续感叹说,哪怕我们没事情做,那至少也要留下来做做样子啊,不然怎么给你评优秀员工啊。我就日了,感情C被评上优秀员工不是因为他分担了别人的工作,而是他每天晚上都要在公司睡上一觉再回家的缘故啊。副总就是副总啊,毕竟是国有企业呆过的人,那语气、那神态,真是诚恳真挚而又语重心长。我只能说,副总,您好,您真和蔼可亲;但是,我能稍微反驳一下吗?虽说年老的务虚,但这个虚是建立在实的基础之上的,不然虚就真的是虚了,成镜中花水中月空中楼阁了。您老不能因为务了太多的虚而把曾经的实的给忘了吧?厂长不是给了您们5万的研发费吗?假如我们也捣鼓了点头绪,公司打算给我们多少研发费啊?副总啊,你要知道,年轻人就是要务实的。我们这些基层人员是要实际解决问题的,是要生产出实际的产品的,而不是和其他什么人打打高尔夫、联络联络感情,顺便就达成合作战略的。我就不明白了,我们员工想要的只是一点激励,你扯那么远干嘛。你不搞物质激励,不愿意聚个餐、唱个歌,难道精神的还不行啊?说几句口头表扬的话您会那啥啊?大胆进言的同事还说了,能不能把公司的大小目标说出来让大家都知道一下,这样,我们才能知道我们干的每一件小事背后所具有的重大的意义,这样也才有利于大家劲往一块使,向着同一个目标携手共进。副总的反应,哦,好像就是没反应,就是不作为,就是不作为!您老能抽点空了解一下“松鼠的精神、海狸的方式、大雁的礼物”、关心一下团队协作吗?我们的副部长,还提了一个人员名册的问题,希望能把公司所有人的联系方式群发给每一个人(我们公司有ERP,但讽刺的是,这个ERP和我们公司的绝大多数人员没有任何关系。唯一能够让我们感觉到有ERP存在的事是,曾经好几次我们上网速度慢,我同事查看一下网络情况,结果就发现,ERP服务器群发了大量的ARP数据)。部长当场决定,没问题,一会他会让人打印出来发放,人手一份。结果是到今天为止,我还没收到过这个有一点儿关系的东东。
体制有问题。公司的领导层大多来自国有企业SF厂。因此比较有国企的风格。国企什么风格呢,就说其中的一点吧,很讲人情。比如,我们软件部的技术头头三天两头迟到或者干脆不来(绝不是因为公事),曾被副总多次发现,但除了被骂一顿之外,其他的P事没有(具体有没有被扣款我不知道,我们公司的职员工资属于“机密”)。我们都知道,每个公司都会有一个“大火炉”。但经过我4年来的观察,我们公司的大火炉就是迟到扣款,就这么一个。另外有一些制度也不合理,比如,我们研发部加班无工资,无调休,甚至可能还要自负交通费和伙食费;而其他部门就什么都有,什么都有,什么都有!还有,当初我们头头在面试的时候,和我说得很明白,我无需试用,直接就是正式工待遇;谁知,进到公司后两周后,人事妹子和我说,这不符合公司的规定,我至少得试用上两个月。另外,头头还说,我们公司的X险X金是足额交的。但是我很悲剧地发现,我的住房公积金只有几十块钱,跟我在第三家公司的同事Z根本不能比(他是600多)。真让人纳闷啊,如果头头不知道自己是否有这些权利的话,就不要乱答应啊!还有年终奖的问题。其实我们是没有年终奖的。但是,公司觉得这样不好看,于是,每个月从我们员工的工资中截取一定的比例,等到年终的时候一次发放,形成所谓的“年终奖”。由于国家税收制度的问题,这就导致我们每年都要多交点税,换句话说,并且说得严重点,就是公司特意损害了员工的利益。另外要说的是,截取的比例并没有明确地告知员工。去年说给我们涨工资了,但也没有明确地告知涨了多少;然后,我们员工发现,12年的“年终奖”比11年少了一大截。公司解释说,是因为截取的比例下降了工资的10%。那我想问的是,12年公司真的给我们涨工资了吗?不会是0.1%吧?
在行政后勤上也很有问题。比如,薪资制度发生改变,不事先进行通知,等员工发现了才开始解释,但是解释得不清不楚,很不能令人信服。以前有个人事妹子,我去询问沪外人员的医保卡(刚改革的,就是社会保障卡),结果她说上次没拿到;等第二次我再去询问的时候,她居然让我自己去劳动局看看。我好奇的是,上海这边的劳动局在周末上班吗?我们的工资条、在节日发放的购物卡或者物品,我们的人事都是让前台妹子到各个办公室口头通知“到人事部领工资条了”、“到人事部领购物卡了”、“到人事部领粽子了”......人事部真爷们!真汉子!感谢老天的是,人事部某妹子怀孕回家生孩子去了,招进来的新妹子就非常好,总是会把工资条(这位妹子就负责工资这一块。说到这个,就忍不住吐槽一下。人事部都好多个妹子,每人负责不同的人事事项。这就导致一个现象,人事部的妹子居然比我们软件开发人员多!)及时地当面地“送”到我们手中。另外,网管(好吧,我们公司很奇怪,网管是属于人事部的)也不顶事,你说你不把公司电脑整理整理实现全部局域网互联就算了,我可以认为你是没有权限;但是,但是,这些个内部电话混乱不堪您老怎么就看得下去啊。分机号不能查询也就算了;市场部、售后部的电话还三天两头串到我们部门。还有办公用品的申请,我足足申请了三次(一个月才能申请一次,苦B),才终于领到记事本和墨水笔,我实在是不知道,是我的表达有问题,还是采购或者其他的什么有问题。老总们一再强调,我们的研发费用非常非常地充足(真的是很充足,刚刚向国家申请到一个项目,总金额一亿多;我其实很想知道的是,这笔钱最终会用到哪儿去),就算不够了,还可以向集团贷款(我们有个集团内部的银行)。但让人郁闷的是,领导们从来就没有想过要改善我们的开发条件(我用的Dell的台式机,VS2010的很多特性必须关闭,按一下F12或者查看所有引用至少要30秒;一台19寸的液晶屏,在调试程序的时候,呃,工作区不大够,万一碰上调试界面的,直接让人崩溃)。还有一点不得不提一下,你说公司没有OA我也认了,MSN虽然关闭了,但我们至少有QQ吧,申请个QQ不要钱吧?!你就不能规定一下,找人上QQ会死啊;还非得跑我们办公室“小P、小P”地叫啊!Joel说了,要为程序员建立一个抽象层(http://blog.csdn.net/tiewen/article/details/8624654)。我想,不光是程序员,所有的开发人员都一样需要这么一个抽象层。我可以认为我们公司完完全全地避过了抽象层的建立么?
门禁也让人恶心。在门禁系统升级之前,打卡机老坏;但至少好用。后来我们升级了ERP(好像是上SAP了,不过主要是给财务用的),为了和集团统一,将门禁改成了考勤。然后,我们早上进公司要打考勤机“进”,晚上出公司要打考勤机“出”。这本来没什么,还相当合理。但是,哦,好像有很多但是了,但是啊,恶心的是:一、你只能打一次进,一次出,否则,你当天的考勤信息就可能是错误的;而且,由于考勤信息是存在集团那边的,一旦错了,就不好更改,万一被扣款了,就自认倒霉吧。二、在上班之中,如果需要开门,请打原先的门禁机;此处有个小小的问题,就是原先的门禁机“进”和考勤机“进”、考勤机“出”是并排在一起的,不注意就会打错。
工作上,职责不清。我们头头,就是小P,他的那个事情那个杂啊。因为有车,所以送什么东西,他得上;因为和学校的人熟,所以和学校的相关事务,他得上;因为他是研发部的技术头头,所以和研发相关的问题,他得上;因为他精通业务,所以和业务相关的问题,比如售后啦,出差啦,他得上......到今天为止,我没有发现他在开发上有任何出色的地方,当然,这也许是我个人眼睛太过近视而发现不了别人的优点。当要做一个功能的时候,我们的副部长会要求他写一份简要的说明书。对我而言,每次拿到手的说明书,其简要程度基本上都会让我乍舌不已。这也就算了,关键是还特没效率,基本上是要花上一周的时间才会给你一份文档,而文档的内容比“请实现XX功能”(你没看错,就这么几个字)强不了多少(我实在分辨不出是他的态度问题还是能力问题,还是实在是太忙了)。副总还老是奇怪,怎么我们研发部的工作效率就是上不去呢?每次听到他这么感叹的时候,我就有冲上去一屁股坐死他的冲动。管理者,分两种,一种是有能力的,一种是没能力的。有能力的就不说了,怎么着都好。对于没能力的,你是不是凭裙带关系或其他啥子原因上来的我们管不着,但是,我想至少要有点自知之明吧,你不会管理至少要学会监督吧?就算你自己不懂监督,那总知道找个人替你监督吧?就算你找不到信得过的人替你监督,那也要知道任何事情都应当有个责任人的吧?NND,你不把土地承包到户、责任落实到人还怎么搞家庭联产承包责任制。过年前,我们的软件增加了一个新的功能。而这个新功能无法单机测试,必须连接到硬件并使用实验样本。结果到今天为止,还没有人向我反馈这个功能的任何信息,我也不知道该找谁去获取反馈信息。说到这个新增的功能,我就不得不再爆料一下。其中的一些计算,首先会求出A相对于B的值AB、B相对于C的值BC,然后需要根据AB和BC求出相A对于C的值AC。新增功能的“整个需求”(我拿到手后,发现是一张数据表格,外加几句话。在将“文档”通过QQ传给我之后,头头就跑到我的边上跟我说,写出完整的需求比较费事,对着表格直接和我解释一下几句话就OK)是我们头头写的,我就问他求AC的具体公式。结果他说,不是AB/BC就是BC/AB。但按我的推论,A/C = (A/B) * (B/C) = AB * BC。我该选用哪个呢?由于职责不清,也就导致很多不负责任的事情发生,比如说生产。经常发生的事情是,销售和市场部的同事跑到我们研发部,而不是生产部,询问是否能够在XX日之前装配出几台产品,因为客户要求在XX日之前发货。为什么会这样呢,大概是因为我们开发人员好欺负吧。装配产品需要一些零件,生产部的同事以“上次的零件就是研发部买的,因此这次的零件也应当交给研发部购买”的可笑的理由就把事情推到我们研发的头上了。这样一来,就可以少干点事,也就可以少担点责任,还可以空出大量时间上个网、聊个天或者抽根烟。必须要提的是,那句理由是对我们的副部长说的,我们的副部长气得不行;可那又如何?老总们才不管这事。悲哀,真悲哀。
开发上的那个混乱,我都要无力吐槽了,唉。我们曾经把硬件上的嵌入程序外包给了两个人,M和H,每人负责一个。M是大学的老师,据说搞这行十几还是几十年了。结果代码垃圾的一B,还要靠我的同事C帮他修正。既然要修正,当然首先要获得源码。得,问题来了,因为M不想给。而他之所以能够不想给,是因为当年签订的外包协议上就没有要求对方提供源码这一条。我那个去啊,这合同签订的够奇葩啊。当然,对H的合同也一样是没有这一条的。不过还好,在我们的强硬要求下(其实是,嵌入程序实在是太糟糕了,严重影响到了我们的产品,副总很生气,后果很严重,严重到可以不讲情面的程度(我们公司的副总们、头头们、还有硬件研发骨干和M,不是老同事就是老校友,那是相当地讲情面啊)),M妥协了。然后呢,就是我同事C负责对嵌入程序的维护,而M继续安然地拿着外包的Money。H的嵌入程序的源码,我们也想拿回来,可惜到今天为止,好像还未能成功(我不知道H是不是某人的老同事或者老校友,打官司他又不会输)。在把M的源码拿回来之前,产品出问题想联机调试一下,可困难了。我记得有一次,我们老早就联系了M,希望他当天过来一下,一起把问题确认并解决(应当说,我们这边能确认的都已经确认了,确认的结果是我们这边的东东没问题)。为了确保在当天就可以把问题解决,副总决定,在未把问题解决之前,所有相关人员一律不准回家。我是搞上位机软件的,其实这事和我没有任何关系。副总和我们就等啊等,等啊等,从5点到6点,又从6点到7点,到8点,到花都谢了的时候,M终于出现了。感谢上苍啊,如果他再晚来一会,我都赶不上回家的公交车了。M来了之后,C和他一起看了下源码,哦,一个小错误,改一下,编译生成,刷进硬件,搞定。真是痛苦万分!C经常感叹,公司的命门竟然掌握在一个外包人员的手上。另外,我们还缺少统筹全局的人(系统XXX的随便来一个都行啊)。一个简单的体现就是,没有人负责硬件和软件的通讯设计。无人负责,或者说无人有权负责,大家只能坐下来,慢慢商量。商量的过程我没有参加(C负责将硬件通信封装成DLL,供上位机软件调用),不过从C的反应来看,应当还不错。我负责编写上位机控制软件,应当说,我是按照协议来的。但是,在硬件上,却总是会有点出入。这是M和H的问题,又一次印证了C的观点。
我再说说软件开发上的一些情况。我们软件研发部(研发部由硬件研发部和软件研发部构成)总共有8个人:副部长,2应用工程师,装配工程师,头头,C,Y和我。我们的分工,客观地说,还是比较明确的。我们头头给出总体大概的业务需求,并提供软件框架。C负责硬件的通讯DLL(现在还分担硬件上的嵌入式编程)。我和Y负责软件实现。2应用工程师负责实际应用上的一些需求,也会和头头进行一定的需求分析;并负责最终的用户测试。副部长是搞管理的,只不过似乎没有什么权力。这里面有个关键的问题:在任务的分配上,我们采用的是“终生责任扩展制”。这是种什么样的制度呢,我用例子来说吧。我们有很多种型号的产品,每个产品都会有一个控制程序。第一个控制程序是我写的(那时大概是09年10月。我们软件部只有三个人(先前是4个,不过一个和我同期进入公司家伙,Z,在干了三个月后,也就是在09年7月底,就辞职回老家了,因为他老婆怀孕了):头头,C和我)。由于控制程序是我写的,所以,在以后,只要有新产品出来,那么配套的控制程序也就自动成为我的任务了。因为控制程序是我写的,所以,在工作站软件中和控制程序相关的活也是我的了。我们有两个工作站软件,简单称为工作站A和工作站B吧,用的是同一个框架。在Y进公司之前,头头、C、Z和我实现了工作站A。后来开始做工作站B,但Z已经离职了,而C主要是负责硬件相关的,所以Z的活就是我的了。Y是个新手,又对框架和业务不熟,所以头头让他负责比较独立的部分,一个算法(稍微有点复杂)和水晶报表。好吧,剩下的就是我的了。这叫啥事啊,因为代码开始是我写的,所以我就要对它负责到死,坐穿牢底?因为代码A开始是我写的,所以和代码A相似、相关的代码B,也就要我负责?所以和代码B相似、相关的代码C,也就要我负责?所以,......万一哪天我挂了,谁对公司负责?谁对客户负责?当然,地球没了我一样转,公司没了我一样开,软件没了我一样有人会写。但是,这总会在一定时间内给客户、给公司带来困扰不是?有句话是这么说的,对于用户而言,界面就是整个系统。我对这个可谓映像深刻。因为界面时我负责的,所以,当出现问题的时候,不管这个问题是啥问题,他们都会来找我,都会来找我。必须承认,我不是天才,也不是神仙;我们也没有专业的测试,所以,我写的代码也有不少错误。但是,关于数据方面的错误,实在是不关我的事啊,而且找我也解决不了问题啊,找相关负责人去吧。好吧,这是我的心声,但我不能这么跟他们说。我得先听完他们的唠叨(虽然是在跟我解释发生的问题,但对我而言,这毫无意义,我还不能拉下脸来打断),然后问问C对问题有什么头绪;然后C可能会看看嵌入程序源码,看是否有问题;如果C每看出问题,或者没有源码,那就只能扔到头头那了;头头接到问题后,根据情况作出不同的应对,具体的就不说了,累。说到这里,我就很奇怪,公司为啥就不弄个bug跟踪系统呢?我研究过DevTrack,虽然它不能完全满足我们的要求,但至少也要好过没有不是?还有项目管理,随便找个用用会死啊?怕花钱先免费试用行不?当初我还在我们办公室给所有人安装了我在第三家公司编写的那个基于IM的项目管理软件。但可惜的是,没有行政上的支持,大伙都不愿意用(那个软件虽然失败了,在网上的评价也不太好,但它还是可以用用的)。我只能感叹说,我们不是没有软件可用,而是根本就不晓得去用。公司的很多人,对我们的开发有一种错误的认识。他们认为,当板子焊好装配完成后,产品就算完成了。当我们说,软件还需要几天时间才能完成时,他们显得很惊讶。当然,我也很惊讶。作为一种特定的硬件,需求可以说是非常明确且固定的。如果来个总负责人,定义好软硬件之间的通讯接口和一些规格标准,我可以保证,只要硬件是按照定义和标准搞的,软件绝对会在硬件完成之前就完成。可惜我们没有,所以需要在硬件完成后,连接上硬件进行实际地测试和验证,保证软件和硬件都没有错误。
我只想对公司说,作为失败的典型,您老真是太成功了。不过,本着减少乃至避开失败就是成功的想法,我得感谢公司;它让我亲身经历了一些“反模式”。
好吧,我对我们公司是满满的怨念啊。那你可能会问,既然如此,在合同期满后我不赶紧滚蛋居然还续签了干嘛?这不典型的犯贱吗?犯贱,嗯,可能有一点。不过主要的原因有3点:一、我还没考虑好我今后的人生到底该怎么走。这是最主要的。作为一个已经在奔四路上的中年老男人(请允许我这么自称,毕竟头上白发不少),已经不在一人吃饭,全家不饿的年纪了,上有老,中有妻,下暂时没有(但很快就要有),要考虑养家糊口的压力。二、我对公司还抱有一点希望。我进公司一两年后,头头就一直再说,公司将把我们部门独立出去,成立事业部。之前,我个人觉着,如果真的成立的话,我可以有很大的发展空间。于是我就等啊等,期待机会的来临(别跟我说要主动创造机会的P话,公司是否成立事业部的决定绝对不是一个小小的职员可以影响到的)。结果到今天为止,还是没什么明显的迹象。哦,错了,还是有的。我们头头说要开发一个电子商务网站,好像已经得到老总的批准。他(注意,不是公司)也一直在51Job上招人。但招的是什么人呢,其中有研发部经理,电子商务网站总监之类的。但问题是,问题是,虽然他和领导们是老校友,但是,但是,他只是一个技术头头,他只是一个技术头头!我很好奇啊,万一真的有人进来来,公司会怎么处理呢,我们的技术头头又打算怎么办呢?三、公司活不多,我也还不算太老,尚且还可以利用空闲时间自学或者捣鼓点东西。我喜欢看书:经济类、管理类、软工和技术类、励志类、哲学类、佛禅道类、还有小说。很多的书写的都不错,不过我只求看时理解,不求永久记忆。
但是,现在我决定辞职了。当初进公司是抱着学习的目的;可惜公司太让我失望,这4年来,除了反模式,我没能从公司学到任何东西。开发上,一样的小作坊式,个人英雄主义;没有文档,没有设计,没有测试;毫无工程性,不讲过程,甚至不讲结果。这是一家适合养老的公司,我只能这么评价它。在看到公司的管理者毫无作为,并且对要有所作为还毫无意识的时候,我很恨。我给了他们4年的时间,用来产生这种意识,但失败了。或许,你会说,我为啥不能主动点,主动找管理者促个膝谈个心?好吧,在这一点上我确实不够主动,算是我软弱无能吧(需要考虑到公司的文化、氛围、“上访”的通道以及“上访”的结果);不过我会在我的辞职信中附上我的一些委婉的看法(这篇基本是发泄)。很多时候我会再想,管理者的职责是什么?我知道,根据级别的不同,它们会有很大的差异。但是,我认为,无论差异有多大,从根本上来说都是为了实现企业目标(当然,很多时候是尽可能地实现企业目标)。实现企业目标的途径,只有一个,就是尽可能早地发现问题,然后辅助并确保解决问题。当问题出现的时候,管理者应当为解决问题扫清障碍铺平道路,作职员的公仆。我有这个觉悟,我萌发这种愿望,我会努力把事情搞好,我也相信我终将能够把事情搞好;就算搞不好,我也会承担责任。当然,我毕竟是技术出身,不适合搞纯粹的管理;我可以搞偏技术的管理。我决定向技术经理转型(在此顺便打个广告求个技术经理类的职位,若贵公司有意向,请联系。我的要求只有两点,一是可以保证我的家庭得以大众化般生存,二是愿意给我足够的权力的前提下;其他皆可商谈)。
最后说说在SY的这4年中干的项目。独立完成的有:硬件控制程序,5个以上;硬件通讯DLL;DA通讯DLL;其他DLL若干;阀控制程序;谱图对比程序;Web服务OPC XML DA。合作完成的有:工作站,2个。开发环境先是VS2008,后来改为VS2010(但用的是VC9.0的库)。所有的程序和DLL都是用VC开发,除了业务,没什么特别之处(其实可以使用Boost改善一下代码;不过我们头头一再强调,如果代码能够工作,就不要去改它)。项目中使用的第三方库有:Xerces-C++,Ultimate Grid,Chart等。在做OPC XML DA的时候,学习了一下WSDL(我在用MS WSDL.exe的时候,发现可以使用JScript作为语言选项,就以为可以用它生成客户端的js代码;结果,是生成JScript.NET的客户端代码,白高兴一场)。