接触计算机很早很早了,应该可以往前推到公元2000年,那时刚刚参加工作。第一份工作是在电脑城,在电脑公司帮别人攢机。有一次公司派我到一个挺偏辟的县城里,给一个学校架设校园网,同时还需要实现远程无盘工作站。架设校园网不是问题,问题出在远程无盘工作站上。无盘工作站采用Novell网无盘站形式,采用PXE远程启动。这个无盘工作站有个服务器软件需要破解,而我不会。后来从公司又给派了个懂点软件的同事过去,把这个事情搞定。从那时起,我就开始特别喜欢软件。
2003离开电脑公司,去到一家大型网吧做主管,主要解决网络内各种设备的软硬件故障。这里电脑比较多,纯粹也是一腔热情,就想着写写软件,这时候我还不知道什么是面向对象,什么是VB。而E(易语言)是中文编写、面向过程、图型化的,正好适合我,于是就开始学着用E(易语言),上E论坛慢慢学着写写程序。那段期间也写了几个小程序,比较有成就的就是写了一个游戏自动更新的程序,基本实现了游戏补丁包的服务器自动比对更新。可是,慢慢又不满足了,跟同类其它做得较好的软件比,总感觉自己写的程序文件大、内存占用多、运行效率还不高。总想更进一步改进,但一直没有太大的进展。
到了2007年,由于某些原因,我离开了这家大型网吧,休息了一段时间。利用这段时间,我参加了一个软件研发培训班。在这个班里教了很多知识点,比如说JAVA、C#、DOM、JS、HTML、ORACLE、SQLSERVER都有接触,不过说实话,这些东西我并没有学得怎么样,只能说是基本了解吧。不过收获最大的是,我知道了什么是对象,也对程序语言中的对象和现实环境中的对象有了一些较深刻的理解,也开始学会用现实环境的思维去考虑程序语言中概念。比如说程序中需要对『人』进行管理,那么我就会考虑到现实中的人会有一些共同的属性(如肤色、身高),同样还有一些共通的行为(如走路、吃饭),当然还会有一些共同的标识(如运动员、歌唱家),当然也会有一些不确定的特定特征(如母语)等,于是程序中的定义可能是以下:
public interface I运动员
{
void 比赛();
}
public interface I歌唱家
{
void 唱歌();
}
public abstrace class 人
{
public enum 肤色;
public int 身高;
public virtual void 走路(){}
public virtual void 吃饭(){}
public abstract void 母语();
}
public class 中国人:人
{
public override void 母语()
{
说中文;
}
}
public class 中国运动员:中国人,I运动员
{
public overrice void 比赛()
{
}
}
public class 中国残疾运动员:中国运动员
{
public overrice void 走路()
{
靠轮椅行走;
}
}
2008年9月份, 我来到了北京,在一家以军工项目为主的发展型公司就职软件工程师。刚到公司独立完成一个小型项目后,2009年底正好赶上公司发展地方业务,我被派往外地参加一个省级超大型软件项目的建设,担任带头人(其间主要是需求收集、协助设计,少做开发),附带也帮老板(经理)做一做项目管理。这段时间可真是要人老命了,超级赶工期、需求不固定/变化快、时间要求紧、部门斗争激烈,基本上项目中能碰到的问题我们都碰到了。这个项目一直跟到2011年底,这期间开发工作少,技术一点没学到(其实学了也没有用),到是将项目业务搞得挺熟的。唯一让人欣慰的是,项目中一个最为核心的子系统是我设计并参与开发的,而且这个项目的开发语音是JAVA,一个我仅仅了解的语音。终于明白,“初生牛犊不怕虎”。
2012年初项目结束,回到了北京。北京的工作主要以带项目为主,公司不再让我参加具体的项目开发工作。当时,公司有好几个项目同时在开展,一个是军工的基本型,这个我没有参与过完全不了解;第二个是一个省级的跨多部门的小型项目,以及另外一个军工的项目(没有做完有其它的工作安排),主要也是需求收集、整体设计、指导开发; 第三个项目是公司JAVA辅助开发平台和11年JAVA项目的二版本。第三个项目公司比较重视,由副总亲自挂帅,由资深的技术人员任技术经理,前一版本的开发人员组成核心团队。出其意外的是,我竟然不是团队成员,公司仅安排我旁观这个项目,这是让我非常憋屈的事,要知道需求和基础技术设计都在我脑子里啊。终于明白,“脑子决定步子”,“思想决定成败”!
2012年底,公司另外一个项目出现问题,我被派往项目现场解决。这个项目也是一个超大的省级系统集成项目,包括核心业务系统和外围辅助系统,其中:核心业务系统己有原型,我们需要对其进行二次开发; 外围辅助系统差不多有20个左右(因为没有基础设计),项目现状是没有需求、没有统筹、没有设计、超多错误、维护困难,有的只是不停的变、不停的改!最终客户给出的结论是“完全无法使用”。最为可怕的是项目没有交接、没有资料、没有文档(为什么会这样,其间有些原因我也不方便说)。我用了两周左右的时间了解了项目的整体现状、存在的问题、问题产生的原因、解决问题的方案、涉及的风险,认为项目本身上设计、实现上都存在问题,向公司提出“利用现有代码进行重构、优化”,可公司给出的答复是“任何项目只要代码写得足够好,就能解决所有问题”。我无法独自承担重构带来的风险,无耐只能改、改、改、改、改、改、改、改、改、改、改、改、改、改、改、改、改。所幸的是经过两到三个月的时间,整个外围系统“基本能够满足要求”,为甲方在全国现场会上添了一份彩。其实公司不知道的是:我的重构计划本来也就三个月左右的时间,只是我无法保证在没有支援的情况下三个月之内能够完成; 五个人花了五个月做的工作,花费了四个人三个多月的时间断断续续的全改了一遍。公司知道的是:这些所有的工作还需要近两年的时间持续改善。终于体会,“壮士断臂”的无耐以及重要性。
回首这几年,软件相关的工作都做过,项目管理、需求分析、系统设计、软件开发、运行维护,除了测试以外全都做过。这些所有的工作,好象什么成就也没有:做为项目管理员,没有特别成功的大型项目;做为需求分析员,没有拿出一套象样的“需求分析”;做为系统设计员,没有一套完整的体系设计;做为软件工程师,却没有好好做过开发;做为运维人员,却也没有真正安心的做过。静下心来好好想一想,其实也并不是一无所获:
1、熟悉Word、PPT、Project、弹道、SVN、TeamFoundtion等等办公软件;
2、熟悉Axure RP6.5原型设计工具;
3、熟悉PowerDesigner16设计工具;
4、熟悉C#开发语音、MVC,了解其中很多技术、做过大型项目、独立整过框架、指导过新人开发;能用JAVA、C++、QTForLinux编写软件,其实Delphi程序也写过,虽然不是很熟悉;
5、了解SqlServer、ORacle,HTML+CSS+JSCript+Easyui也会,NHibernate、IBitas、EF、Autofac、AutoMapper、Ninject都用过;
6、其它的如,搞过CTI、TTS、GIS,整过网络、修过电脑、装过系统,会操作Linux,电脑从不中毒(呵呵),还有...
往上看看,好象会的东西还真不少。再仔细一看,却发现了一个问题,所有这些东西都仅是熟悉,没有一项精通的。看来我这人是一个“杂家”,而不是个“专家”,不适合做研究,挺适合做事的。真真仔细想想,确实是适合做事:
1、认为和我有关的都是我的事;
2、认为成功是大家的功劳,失败是自己的责任;
3、认为没有办不成的事,只有办不成事的人;
4、认为有困难要上,没有困难制造困难也要上;
5、不爱做同样的事,同样的事我会找个自动的办法来做;
6、不爱做类似的事,重复的事我会找个通用的办法来做;
7、做的事会逐步形成自己的风格,比如编码格式;
8、深恶痛绝个人主义的做事风格,比如因个人原因导致的关键任务延期;
9、希望别人顶替我,做我现在做的事,我好去做别的事;
看看时间,我去........,都00:47分了,不写了,洗洗睡~~~~~~~~