2019年的工作总结
写在前面
今天是2020.10.12,我已经从上家公司离职了。
下文内容是2019年春节那一段时间写的工作总结。
现在把这个总结发出来。
之前的公司是家创业公司,什么都要做。我当时的总体发展思路就是借着公司给的这样一个环境。先提高编码速度,做好编码工作。然后整理好一些框架,全面的提高个人能力。然后再扩展管理技能。
现在来说,也可以继续往这个方向走。
当时一个总的想法是:要实用——就是说我为了做出客户需要的东西来,需要什么样子的技术。
以后我想多思考一下,怎样多赚钱。但还是以技术为本。
2019年的年终总结
2018年11月5日,我来到了定鼎智能的大家庭。
经历了2019年4月24日的公司搬家。
到现在2020年1月21日我在公司已经有一年多了。
在这一年多的时间里,我结识了一群可爱的小伙伴,工作技能上有了提高,也找到了自己的发展方向。
在刚进入公司的时候,我给自己的目标和方向就是埋头苦干,切实的做好手头上的编码工作。主要是基于几方面的考虑:
1是工作大体需要专业技能和人际交往两方面的能力,在之前的工作我发现我做一些具体的工作很容易熟而生巧。就算是简单的整理文件这样的工作,在做一小段时间后也会比别人做的快很多;但是我在人际交往方面不擅长,特别是和在不同专业的人交流时,准确的术语不能让他们了解我的意思,技术上的保证无法消解他们多余的疑虑。所以,能做些什么就做些什么,就努力把这件事做好成为了我的一个信念。
2是软件一边连接着机器,另一边连接着的是用户。而我对用户这边并不熟悉,但是我很幸运地遇见了张姐。张姐对用户需求的掌握,对业务的熟悉,对流程的把控,和对具体细节的要求;使我相信我们的方向是对的,我只需要全力做好编码工作就可以了。
3是人的精力有限,我需要集中我的力量到一件具体的事情上,寻找我发展的突破口。
下面是我对工作的具体展开情况,和过程中的经验总结。
ERP
我到公司来的第一项工作就是ERP系统的维护和修改。
在上手工作后,我发现这个系统比较老,在前端界面效果上不够现代化。后台代码也不符合现在编码的规范,存在着过度使用集成机制破坏代码封装性的问题,例如过多的使用在父类中写每个子类的行为,两个类本可以单向依赖却写成相互依赖的等等。
为了对抗这些遗留的问题,我想出了修改方向:新的ERP软件要做到两个干净,一是界面干净,因为界面是用户直接看到的东西;二是模块对外的接口干净,因为一个模块内部的代码即使乱一点,但接口干净的话,调用这个模块的编码人就不会觉得很乱。在这个方向的指引下我做了很多尝试:
1是使软件界面全部扁平化,重绘了控件,替换了风格合适的图片,调整了各处细节。
2是整理出了一个很大的帮助类,覆盖文件操作,控件操作,增删改查,权限调试等方面的功能;因为一个可以随便复制粘贴的纯函数,是封装性良好的最小模块,是复杂依赖的解药。
3是尝试做一些代码生成的脚本,有些代码虽然重复出现,但是一小段一小段重复的并且经常修改,并不适合封装到父类中。
在做这些事的过程中,我也发现大量的改动容易使系统不稳定。同样的改动,按照原作者的编码风格去改动是最容易的。所以我也在反思,我头脑中的编程观念是时代的产物,不应该太死板的遵循。软件行业似乎正在向分工更加明确的方向发展,如果说之前的软件工业中,是一个人统一的负责所有事情,所有代码是我自己写的,我知道父类是什么样的也知道有冗余功能的类是什么样的,我完全可以明天继续这样写;现在改成几个人来做,甚至后端都细分出来,那我肯定希望软件框架是简明的,不包含隐含条件的,新加入的成员也不需要了解太多历史就能上手工作。
门诊项目
在做门诊项目前,张姐用心的对ERP的框架进行了细致的修改,这让后来的编码工作事半功倍。
门诊项目,基本上克服了ERP老代码的缺点,集成了ERP的框架的优点。
在做这个项目的过程中,我一边做,一边有了很多新的想法。
1是我越来越明确的意识到,阻碍我编码工作速度的主要因素是对业务不够熟悉,而不是技术手速原因。因为有些地方我花了很多时间,主要是在想应该做什么。每次都需要向张姐请教这个界面主要是做什么的,这个功能又是要做什么,之后仔细的进行前后联系,才能明白要做什么。
2我开始注意到软件功能可以分为两类,一是非业务型的功能,二是业务型的功能。非业务型的功能,以增删改差导入导出为代表;业务型的功能以审核和调单为代表。而我之前在ERP中做的努力做的写帮助类,尝试些代码生成脚本,都是解决了非业务型的功能问题。
3业务是有整体流程,又可拆分为一个个业务上下文的,整体和部分的统一。在编码工作前,画一个好的业务流程图是很有必要的。因为当我写到下文的时候,就会想我上文做的是什么?那个单子叫什么名字来着?如果我有流程图,那我就知道去哪里找。现在我们常用的思维导图能看出功能模块和需要的字段,但是不能体现业务流程。
学生情绪单机
做这个项目我的主要做的工作有:
- ble蓝牙对接,普通蓝牙对接,加密狗的对接。在硬件设备对接这一块,我总结的一个经验是,首先弄清楚设备的型号和协议才能去对接。连接成功后还要做些细节调整,像是接收数据的解析,结合编程语言的设置去发送数据。
- 了解了flash,调用底层Win32Api播放音乐等技术。这些技术对我来说是新的。总体上看学生情绪单机这个项目需要的是各种资源的整合,不包含太多的业务流程的东西。
- 依照于冲的设计图,做了些自定义控件。从图片上量取控件的大小位置,照样放在软件界面的相同位置,设置控件的形状,吸管取色设置颜色。前端工作是所见所得,有图可依的。
总体来说,这是一个技术整合类型的项目。
奥福报工模块
这是一个对接的工作,和称重器对接,和喷码器对接,和MES系统对接,和客户对接。在这个工作我看到对接沟通的重要性。
1.因为一开始需求不明确,写了很多没用的增删改查。例如不知道实际喷码器只有一个,按照别人的软件做了一个上下左右前后有6个喷码器增删改查的界面;又例如一开始只知道需要编码规则,就写了一个,后来客户说自己有自己的格式。
2.对接MES是比较简单明了的,我也看到MES提供的RestfulWebAPI的简单和规范。
3.和喷码器的对接费了很多功夫,喷码器没有回传喷码状态的功能。客户又加了光电开关设备来检测喷码有没有喷上,还需要专门的电工来调试继电器。
容立ERP实施
ERP实施对我来说是一项有挑战性的工作。在几个星期的时间里,我们完成了基础资料导入,库存导入,软件细节调整,软件操作人员的培训,文档的完善,云服务器的部署等工作。解决了软件运行中的大大小小的问题,解答了用户的很多疑惑。
在这个过程中,我看到了我在与客户沟通方面的不足和自己在财务知识方面的不足。财务知识方面的不足可以通过学习弥补,沟通方面的不足需要我本人思想的转变和切实的实践。
在和客户沟通的过程中:我们认为复杂的工作,客户可能认为它是简单的;我们认为简单的工作,客户可能认为它是复杂的。客户上次说是这样的东西,下次可能会说不是这样。客户表达软件需要怎样怎样修改时也往往不能注意到其中的逻辑错误。
但是作为一个服务型行业,客户是没有错的,是我们不会去听。当客户分不清1对多和1对1的时候,分不清特例和通用的时候,客户在逻辑上犯了错误。但是我们在听话的时候,要考察用户的目的,他为什么会提出这样的问题,存不存在这样的问题;他想要达到的目的使用我们现有软件的功能是否能够达到?如果现有功能能够达到,那就把现有的功能介绍给用户。如果我们现在没有这种实现,我们可以怎样实现,怎样实现是好的稳定的,不容易操作错误的?
这些让我逐渐意识到这是一个对话的行业,编码是与机器对话,实施了解需求是在和客户对话,与人对接口是在和其他开发人员对话。
学生情绪团体版后台
学生情绪的团体版有手机端,也有PC后台;王凯文负责手机端,我做PC后台。后台这边主要的功能是:
- 教师,班级,学生的增删改查,导入导出。
- 是发起评测,评测信息查看,实时数据的查看。
- 是给手机端提供接口。在这里,我给他提供了RestfulWebApi和Websocket两种接口。我放弃了我常用的Webservice技术转而使用RestfulWebApi主要是看到:之前java的同事调用C#写的Webservice的时候容易出错,因为C#自动序列化的xml格式java可能不识别,需要做额外的配置;而上次做奥福报工软件的时候,调用了MES的ResfulApi我感觉它形式更简单,更规范,也更靠近Http请求底层原理。
对我来说,后面接口对接部分有关的工作是我需要提高的,这次我接口的主要缺点是:
- 可调试性不够强。这个随着我的日志打印的完善,写法的调整,配置的完善已经在解决。
- 另一个是只有接口文档,没有对业务上下文的清楚描述。例如,在实际对接中,我多次解释了提交评测结果有两个接口,一是提交单项结果,二是提交总结果。我可能需要一个接口调用的流程图来解释我PC端和手机端是怎么配合的。
这个项目中我的进步之处是:
- 完整的实现了winform单表增删改差的代码生成器。之前做的代码生成的脚本只能生成局部代码然后手动复制到代码文件中,门诊项目完成后张姐也曾让我完整的写出代码生成器,但是后来赶项目进度没有实现。这次我在EF实体类的基础上,基于特性和反射技术完整实现了。EF的实体类本身有自动生成数据表的功能,而这次实现的代码生成器支持增删改差的代码的生成,支持5种数据类型和控件对应,支持非空,最大长度,正则等输入校验的生成,方便了很多。
- 尝试搭建一个小框架。使用EF自动建表;自动生成增删改差的代码;依靠帮助类完成非业务型功能;还有些系统功能;这样我就可以更好的写好业务功能和局部代码了。
总结
项目方面,除了上面这些,还有山东亚通真空玻璃销售管理软件,身份证读取打印软件等小项目没有提到。但是基本上总结了我这一年所做的工作,思考的东西。在整个的过程中,我的工作涉及到了表和界面设计,编码调试,软件打包,软件实施的整个过程,全面的提高了相关的工作技能。
现在来看,软件方面的工作主要有:沟通,设计,编码,运维。在过去一年中我主要发展了自己的编码能力,努力使自己的编码技能派上用场,在设计和运维方面也有一定的提高。
而在将来的日子,我将对提出更高的要求,在软件的设计和与人沟通方面也要做出提高并且派上用场。