去年做了什么?OA。

假前一天下午被经理和PM叫上楼,首要一个问题是我去年干了啥,我大致支吾了几句描述了下,一时也说不出个大概。后面就是一片悠长的面谈,什么没达到期望,公司状况不好.......哦,这是KPI评价啊,剩下的你们懂的。

那就趁着有假期,自己也好好回想做了什么吧。顺便分享下自己毕业后第一个完整的系统设计。

-找我来做OA

12年11月左右,我接到了现在公司经理的电话,大致是问我有没有意向跳槽。半年前受邀在这里面试过,过了半年再翻出了我简历,来问我有没意向。正好当时帮TL背了个黑锅(我一干了仨月的Trainee能为项目能付个毛责任,反正TL自己也辞职走了,还劝我别多留),被调离开发岗位录资料录了仨月了,正好,对比了深圳另一份也是找上门待遇差不多的工作,要迅速解决刚毕业财政紧缺问题,还是选了广州的公司。

来到这里今年只有一任务——年后开始,做OA。年前就支援下现有收尾项目就过了(收尾的项目啊,OTOTOT啊,泪泪泪泪泪)。

公司是在6月份上市了,现在希望规范上轨道(呵呵),所以就希望有个OA。后来我觉得实际上出发点值得商榷,希望有个规范的系统来倒逼公司变规范。现有需求再有系统还是现有系统再有需求,这是个问题。不过跳出二论的问题,那么就可以创造需求,这也是我喜欢干的事情。

-我是谁

以分析程序员的Title入职,理论上我只是个基层,不过实际上到后来成了架构师的角色。干起活来较真的性格至今未变,也没少跟大家争论,不过主要的部分都争赢了,所以大致架构基本上按我的来了。

还是证明了一件事情——一般的技术人员更倾向于选择自己认识的方式,从而拒绝新知识,除非新的知识所在领域是空白。这是一个很有趣的挑战,特别是别人资历年龄都比你大,刚毕业半年(今年才补足学分拿到俩证件...呵呵...)的小屁孩会有心理落差,好歹某方面来说我“资历”不必任何人浅。

如果你要让他们接受一个他们潜意识拒绝的事物(比如从ADO.NET转向EF),就要比较容易做到能在一次沟通说服,快速将新事物的优势完全展示,做到“One Click”。

-资源

年初定得预算应该是除去人员工资外是几十万经费,到今年结算时大致用了三十万,除了买SQL Server,基本上给了外包。

总体来说,我们有1+2*0.5+2人力,分为一个全职(我),两个兼任其他工作的同事(PM+一个工程师),两个外包。好吧,没有美术人员。

-方案

一些事情做到了,比较顺畅,而大部分还算失败了,只能磨很久,讲很多很多,争论很多,直至全部讲清楚,赢得所谓的“胜利”。

看起来这里有个错误,就是“技术人员应该选择自己熟悉的技术,而不是所谓‘更好’的技术。”。实际上,自然这也考虑到了,所以在设计之初,也这么解决,加上其他想法,大致是这么实现的:

  • 许多个小系统,而不是一个大系统
  • 所有小系统每次开发到发布周期都应该能控制在三个月以内,最多半年
  • 统一信道进行消息中转,而不是P2P
  • 所有业务系统都是热插拔的
  • 使用Nuget,公用代码而不共同维护代码
  • 很多数据库,而不是一个大数据库
  • 先有对象,再有表
  • 使用ORM而非SQL
  • 使用扁平化风格,拒绝多余的样式

许多选择都是出于成本和风险等多方面考虑,方法都有争议性(不然也不会跟大家争论那么久了)。当然我是嫩了点,做决定源于不多的经验和更多的直觉,但也是我能做的全部了。

-产出

推广整个架构设计和相关技术浪费了一个月,终于“公关”完了大伙,才开始了比较正式的动工。

一开始做得是一个消息中转系统,就像主机的总线,好歹有才能通信,才有其他的小系统。初始的功能基于WCF只有中转的功能,不过一直稳定,提交版本是1.0.1,至今没有出现Bug。

能通信后,解决了单点登陆和权限系统,顺便搭载了Nuget服务器(搭载是托同事做的,我木有测试机的权限)。

差不多之间,引入了BootMetro样式(后来摒弃了),建立了工作中心系统,也就是整个系统的入口,类似于个人空间。

接着,为了实现即时通信,调研了微博和企鹅的API报价后,迅速决定并开发了自己的Web IM,顺便挂上了Azure小试了一下Azure

至此,整个系统的基础模块都基本完成了,然后便参与到了他们已经开始进行了一部分的考勤与财务系统,成了噩梦的开端。这两个系统基本由外包完成,从SVN同步了项目的开始,我就心情不好了。对于质量...我只能......总之就是被挖坑、填坑、被挖坑、填坑......

说起外包,一开始我是抗拒的。因为你不可以说请,我就让你请。不然你做出来,咣~,能用,但没有用,别人会说这根本没要过这种东西。我说首先要有明确的设计,我设计的时候是这样的,然后外包做出来也是这样的。......不过,我的也没这权限,所以无法干涉什么。

这段时候,已经第一次绩效评估了,今年调整了结算周期,所以这两次间距离比较接近。大致的内容似乎跟这次差不多,技术超群,但产出不高。因为自己当时家庭问题状态确实不佳,所以没有纠结太多,确实状态也不好。

后面两个系统的开发是我觉得很痛苦的,我的感觉就是干脆推倒重做。不过既然进来了,就尽量做吧......

当你看到Controller里有SQL,而且是用EF的DbContext执行的;当你看到js上拼接SQL;当你发现有人把Bll全部写成了Repository;当你发现LinQ串中大量全表实例化再filter;当你发现后端返回HTML+JS结果;当你发现无数的不知所云的变量简写;当你发现......

然后你发现我崩溃了,每天工作都是一种折磨。要么被人催进度,要么像补漏水的船一样去“做”一艘船出来。

最终,在2013完成了考勤并导入了数据发布了生产机。而财务,PM终于下定决心重来。我全年被骂也才在Redmine收了几十张单而且清干净了,而单财务留给他们的,仍然有三百多张。

在结束了考勤之后,我把原财务中我的那一半工作给搞定了。接着就写了一套样式框架,还不是很完善,年后应该会把Table也做了。利用这一框架,重做了Work Station,并且把Chat也做了插件化。

然后在过年前,重构了Workflow系统(未完成)和重新规划了架构和下一年的。在放假前,Workflow的业务逻辑已经写完了,差API在年后完成;财务的架子也搭好了,第一次试用了DDD。

-自我评价呢

要回忆这一年的工作,确实是在用自己喜欢的方式做自己想做的事情,不过确实全年心情不太好,状态也不好。经过上一家公司,我已经对背黑锅坦然,虽然受着压力依然不爽,但反而能看见机会。要不是有些事情不合理,自己也不会成长得强大到把不合理变成合理。

后来会想,有些事情虽然一开始错的不是我,只是山芋传到了我手上最后烫到了我而已。我个一没后台二没钱三不拉关系,只能想办法能做到下次把问题遏止在源头。

-结果是什么样的

因为放假了不在公司,也没有证书,访问不到,所以就从聊天记录中找几张图出来吧,跟现在的应该是有区别的了,意思意思。

因为木有美术人员,样式什么的都是自己解决的,所以不要见外。

去年做了什么?OA。

去年做了什么?OA。

去年做了什么?OA。

-后续

趁着开年有空,想正式地写些Blog,顺便分享下许多事情。

这里没有年终奖,所以过年只给家人买了些衣服鞋子,还得供弟弟上大学,毕业一半了相对许多同学还是挺拮据的,也不知道年后有没有多少加薪。不过公司搬到个比较郊的地方,空气十分好。近一年身体状况下滑了些,体重涨了些,所以打算用半年时间稳一下节奏,利用附近的大学和自然环境锻炼下身体,把身体调整回最佳状态。

全年都大部分时间过得很压抑,许多地方是变得成熟了,自然会再尝试面对,而且不一定结果就是不好的,可能只是该到的还没到。比如我提倡使用多个数据库而不用一个大数据库,经过一年的实践,PM也终于决定把重构的系统的表给拆出来了,因为确实大库开发维护难度太大,虽然要牺牲数据挖掘的方便性。

去年做了两份兼职,一个是师姐拉上我,帮人家做了四个网页,觉得做得不爽所以还顺道帮人家把网页加了移动优化(就是增加了响应式、调整了样式、重写了所有实践兼容touch);另一份是年底帮一律师做了个个人网站,就是发发视频、文章的CMS,从域名到开发全包,没有用开源的什么项目改就这么空写出来,另注册域名、空间、设计都包了。两份都收了2k,没办法,愁钱用。

年底本以为做一朋友的外包,结果发现是创业项目,结果被拉进去一起做项目,结果现在连公司都注册了,不过全年都会很忙,不知道能抽多少时间参与呢。

最后想问问,园子这编辑器黏贴图片即上传是咋实现的?

上一篇:javascript快速生成一棵树


下一篇:js 数组转树型结构数据