5年工作总结-责任心

  本人从事开发工作也有那么几年了,之前大小公司都待过,每个公司也都有自己的一套编码规范和代码质量检查机制,可以看出上层领导还是有意识的想提供代码质量,毕竟软件产品的代码质量关系到产品的生命力。对于代码质量问题,感悟最深的其实不是编码规范多合理或检查工具多厉害所带来的便利,而是工作中碰到的一批程序员。

  这批程序员大多都是在上一家公司(简称A公司)一起工作的同事,A公司是一家民营(硬件)企业,老板总是把赚钱放在第一位,公司没有互联网背景知识,前几年感觉互联网是一个不错的风向,于是就成立了一个互联网部门,3,40号人开始没日没夜的搞整。部门的核心员工几乎都是其他部门选调的,年龄都30左右,几乎都有家室和小孩,剩下的大多都是校招生。像我这样的社招员工较少,主要原因有3点:

    1、公司社招只招技术略好的高手,近年互联网市场一片繁荣,好的人才都不愁找新工作,公司规模不大、业绩一般,能主动投递公司又有能力的人已经很少了;

    2、工作辛苦(996,忙时都到凌晨),待遇没有太大的优厚,一般有家室的人很少能得到家人支持;

    3、地势尴尬,没有快捷、便利的交通路线,开车也容易堵车。

  软件产品:互联网项目部做的软件产品和硬件挂钩,起步比较晚,而公司硬件市场占有量较少,所以软件产品需要兼容其他硬件厂商的配置;软件产品体量大,功能多、杂,主次功能不明确;没有职业的软件产品经理(负责人)。为了抢占市场只能快速的迭代产品来适应市场的需求,这就是导致经常加班的原因之一。开发的一线领导几乎都是技术出身,已经在开发或测试的岗位上从业多年,而这正是经常加班的另外一个原因。但是在加班成为常态的部门,我却发现部门的核心员工战斗力很强,抛开待遇丰厚不谈,我个人认为主要原因是他们都把编程当成一种职业在做。个人是很讨厌经常加班的公司,月工作时间超过240个小时的岗位上工作,依然还热爱(很积极主动)你的工作,我觉得只有两种可能:要么是待遇丰厚,要么就是太他妈的热爱了。

  在这里我即不想说待遇也不想说兴趣爱好,我想说的责任心;在A公司的时候经常加班,和其他同事一样我经常感觉身心疲惫,很多时候我都会想为什么会出现经常加班的情况,是老板太SB了,还是老板太剥削了,或者是团队实力太弱了,再加产品一直买得不好;所以我也经常会出现消极的念头,两年后我就离职,然后在家休整了半年。来到新公司后我依然从事编程工作,会经常讨论需求、功能、产品质量和代码质量等问题,开发时间比以前专门从事开发的时间少很多,但是我发现我的代码质量明显比以前要好很多,慢慢的再回想起A公司的那些打了鸡血的核心程序员,总结出在工作中责任心的重要性。

  对于软件开发来说,有很多成熟的编程规范和代码质量检查工具,通常我们的编程IDE都会集成这些工具,但是估计很少有人会常使用这些工具(虽然绝大多数人都知道怎么用);这包括A公司的那些核心程序员,他们都是使用一些较老的框架,不使用一些辅助工具,数据建模都是使用的10多年前的老工具(新版本),不苟言笑,能一整天窝在座位上,当时我对这些人表示不能理解,因为在我的认知里,做互联网产品的人,首先要有互联网思想,追求新技术,做事追求新的方式、新的实现;但是很尴尬的是他们开发的功能总是很少的BUG,至少比我开发的功能的BUG少,在抢占市场、产品快速迭代的冲击下,大家都会很快忘记谁BUG的多少,当然创造BUG更多的人忘记得更快。然而当我在新的公司、新的岗位上时,才发现团队中不同角色看待同一个问题的方式和处理问题的方式可能完全不同,以往在做纯开发工作时,我会考虑更多的功能完整性、性能,而在承担了部分项目管理工作后,除了考虑基本的功能完整性,更多的考虑的是程序健壮性,问题reopen的情况,系统结构是否合理,而对性能已经要求不再那么高了。

  慢慢回想A公司的核心员工,几乎都比较有耐心、专注、固执(执着),他们算不上很聪明,但是他们很有耐心去做事,我之前坐的座位靠后,能经常看见一些人在办公室穿来穿去、吃东西、说笑话、上厕所、玩手机,但是那些核心员工总是坐在自己的位置上忙自己的事情,认真的review自己的代码,检查功能是否正确;当时我们的开发任务很重,领导在分任务就是按照996的作息时间来安排,我很不明白为什么这些人哪儿来的精力一直坐在座位上review代码,为何不休息休息,反正接下来会有测试人员来测试嘛;但是在新的工作中,从事管理工作的我才发现,功能不可用、不正确,不停地出现小BUG(特别是显而易见的问题),不同模块都反复出现类似的BUG,相同的BUG被reopen是多么的让人蛋疼,这些问题让管理者对项目质量完全没有信心,而这些问题而在A公司的核心员工开发的功能上几乎不会出现。相比A公司,新公司开发人员更年轻,开发任务轻松很多,任务都是开发人员自行安排,但是为什么反而更容易出现一些低级错误?时间肯定是足够的,慢慢观察后,我就发现,容易出现低级问题的员工总是不能专注做某一件事,电脑上总是开着各种即时聊天软件,经常切换各种软件,时常坐立不安,把玩手机,很容易被其他人讨论问题而分心,如果再有一场会议,那几乎会毁掉他们一天的安排。

  抛开技术能力,那什么样的程序员才是一个合格的程序员,个人认为至少要有称职的职业态度,认真负责的完成任务;就拿我们最简单的登录功能来说:

    1、WEB登录页面可见、浏览器不报错,后台程序启动不报错。

    2、输入正确的用户名、密码能登录成功,输入错误的用户名或密码不能登录。

    3、输入错误的用户或密码能正确、友好的提示。

    4、优化登录页面,页面显示更友好。

    5、密码加密、是否需要增加验证码、token信息。

    6、使用到的一些校验是否其他模块也会使用。

    7、除开web页面,在其他终端登录需不需要重新开发后台代码。

    8、已经登录的用户信息存放在哪儿,如果切换其他地方会影响哪些功能。

    9、会不会出现并发问题、有没有超时设置。

    10、如果扩展成单点登录,是否需要完全重写。

  这是我能想到的一个简单登录开发时需要考虑的问题,越往后程序越健全,一个普通的程序员至少需要考虑前3个选项,如果不能完成前3个选项,我个人认为就是态度问题;而一个负责任的程序员至少会考虑到其中6个问题,与编程的热爱无关,在时间的允许下,一个有责任心的程序员应该会尽责任的完成手头上的工作,工作结果可用、易用,相对独立,容易管理和维护,打理任务的周边问题。

  判断一个程序员是否合格,除开工作成果可用,就看他是否花时间去解决工作任务的周边问题;能力问题可以慢慢培养,而态度问题往往会危害一个团队,通常你不大可能有机会去改造一个团队,如果觉得不高兴就离开吧,消极的做事不光危害团队,也危害自己。

  一个优秀的程序员,不是取决于你能使用或掌握各种框架,而是提现在你写的每一行代码上。

posted @ 2017-02-10 10:00  lion_eagle  阅读(1372)  评论(0编辑  收藏  举报