掐指一算,工作的第四个年头了,也已经是第三份工作了。
从第一份工作开始,就在使用C#语言,从事石油行业绘图以及数据共享、管理软件的开发,Winform + WebService 的模式。期间折腾过Windows Server 2008、Windows Server 2012、Windows SqlServer 2005、Windows Sqlserver 2008、Oracle 9,10g,用着号称宇宙最强大的IDE--- Visual Studio(2008),却常常生产出一堆无法直视的代码。项目主管的评价就是,没有一点程序员的素养。直到去年,石油行业遭遇了所谓的寒冬,城门失火,殃及池鱼。公司为了存活下去,选择了做一只断尾求生的壁虎,裁掉了一干非核心人员,虽然心中会有些不爽,但终究跟自己没能获得公司的信任有关系。
第二份工作仍然在使用C#语言,只是,这次使用了WPF。面向的行业是工业制造,主要的业务是采集工业制造过程中一些关键工艺的实时参数。其实,一开始我是拒绝的,说到数据采集,必然会牵扯通过硬件接口(如RJ45、USB、串口)读取数据,也就意味着要和硬件打交道。一向只喜欢和软件打交道,不大喜欢跟硬件纠缠不清。只是后来抱着挑战一下自己的态度,选择了接受。抛开数据采集功能,前期可以抽象为经过数据采集,得到一个数据源,我把重点工作放在了得到数据源之后的处理显示上面。也高大上了一把,参照三层模型自己捣鼓了一套。使用Power Designer设计了表结构,套用+DIY模板,用Code Smith生成了业务对象实体,数据持久层(引用DBHelper,同时支持Oracle以及Sql Server),业务逻辑层,当然表现层选择了WPF。同时,也做了一部分权限管理模块,包括用户、角色这些。基础的模块已经可以运行。头疼的是,在做开发的同时,还担任了实施的角色。部署一套Cent OS + Oracle 10g +JBoss + XXX.War 的项目管理系统,各种命令行,折磨得人受不了。为了顺利部署,自己还装了虚拟机模拟生产环境,从操作系统的安装,数据库的安装,JBoss的配置完整走了一遍。虽然只工作了几个月的时间,因为这部分的开发兼部分实施几乎是自己一个人在做,有足够的自由度去折腾,所以,感觉收获很大。最终因为跟项目经理有点合不来,拍屁股走人了。
第三份工作,也就是现在的这份工作,还是C#语言,还是Winform。唯一的区别是,沾了云计算的边。简单说就是,Winform 程序跑在云主机(可以理解为远程服务器)虚拟化的主机里。最扯淡的就是,因为没有物理显卡,Aero效果是不支持的。当然,也因为这样,才走了一条自定义窗体(Form)样式的路。自己实现标题栏,并造一些轮子,如图标按钮、下拉列表、避免闪烁的列表等。才有了原来窗体也可以做成这样的感慨。在工作了近一年的时间,今天也正式提交了辞职申请。就像马云说的,员工的离职不外乎钱没给够,心受委屈了这两种原因。
说了这么多,只是想说,打牢基础很重要,不能太依赖度娘,如果遇见个不能连外网的主,就真的只能现场直憋了。
以前也没考虑过知识体系,职业规划这些,最近慢慢开始计划了。这个过程中,想了解学习的东西太多,有时太贪心了,东一榔头,西一棒槌,反而什么也学不到。懂得取舍和划分优先级很重要。等啃完了《C#高级编程第9版》、《CLR Via C# 第四版》、《设计模式之禅》这些,会陆续去琢磨Docker、.Net Core这些。也从C/S 的观念往B/S转变,毕竟,这已经是移动互联网的时代了。尤其.Net Core支持跨平台了,感觉会是一个Web开发的风口。
最后的最后,还是想说,在工作中,做人真的比做事还要重要。包括但不限于对自己做的事情认真负责。当涉及软硬件多部门的程序运行出错时,都在互相推诿,首先想到的是划分责任,而不是尝试解决问题,别提多闹心了。如果有可能,尽量远离那些办公室政治,内耗太严重了。