我们要知道,在现代社会,责任一般是和钱挂钩的。

我举一个例子。现在很多ERP软件都提供SaaS的服务。一个公司如果要使用这个SaaS服务,即便免费的额度已经够用,大多也会选择付费。为什么呢?其实花钱就是为了买个对方的责任。不付钱,看似节省,但如果真的出了问题,比如数据丢失、数据泄露等,那么对方是没有责任或者义务帮你修复的,但花钱就不一样了,一旦出现数据安全、数据稳定相关的问题,服务提供商都是要担责的。

那么同理,我们参加工作,和公司签了合同,有了工资。工资的背后,就是“责任”二字。

任何拿了钱的事情,都要负责——这是一个最基本的社会规则。

程序员需要对哪些事情负责

看到这里,你可能会有疑问,这还用说吗,我对自己的工作负责不就好了?可是我们的工作边界在哪里?“工作”仅仅指的是在公司内的工作职责吗?

首先,我认为,身为程序员,我们的工作边界及其范围包括3个部分,分别是个人的基本能力、工作内容以及工作时间。

对自己的基本能力负责

首先,程序员要对自己的基本能力负责,基本能力主要是技术能力和熟悉公司系统的能力。

持续精进技术能力

技术能力就是工作中用到的技术,是我们看家的本事。公司毕竟不是学校,没有教学的义务。既然拿了工资,就要学会相应的技术,完成安排的工作。

我在工作中也遇到过一些人,很多基本技能都不会,自己还没有任何补短板的意识和动作。安排工作的时候,直接甩出一句:我不会。理直气壮,令人惊叹。久而久之,大家对这个人的印象就是——没有工作能力。

当然,很多时候,并不是所有的技术需求都来得那么强烈,也不是所有的技术每个人都熟。我们在实际工作中,也难免会遇到自己不会的问题。这个时候可以向别人请教,但是千万不要觉得请教完就算完了,我们还要意识到自己为什么不会,想办法补齐这块的知识和技能。

如果一个事情不会做,那么基本上就相当于“违约”了。

但如果公司安排确实不合理,工作岗位不能发挥自己的能力优势,这种情况下又该怎么办呢?我的建议是,首先还是考虑发挥自己的优势,再抽时间补短板。态度要积极,不能摆出一副“我不会我有理”的态度。但如果新的工作全是短板,技术不熟悉,业务不熟悉等等,那么不妨和经理和HR聊聊转岗的可能性。

除了补短板之外,我们更可能遇到跟随公司做技术转型,学习新技术。如果是一些重要的公司层面的技术转型,有些公司可能会安排培训,或者给出一定的激励措施。当然,如果公司没有相应的政策,那么自己也是有责任把技术学起来,胜任新的工作的。

其实公司技术升级,也是给自己的技能升级的好机会。我一直强调的一点是,学的东西一定要在实际工作中使用,因为这样最能够激发学习的积极性,也最能验证自己学的成果。公司决定转型采用的技术,也大都会比现在使用的技术更优秀。很多工作久了的同学会抱怨说工作中用不到新技术,如果遇到公司技术转型升级,赶紧抓住机会努力一把,给自己的技术也升级一下。

就我个人的例子来说,我学会Hadoop、HBase、Hive、Spark、Scala和JS等等很多技术,都是抓住公司新的项目要用到新技术的机会,“强迫”自己学下来的。有些项目公司会留一部分学习的时间,大部分情况下全靠自己挤时间学。一边学,一边通过公司项目的实际操作来考验学习成果,过程非常的充实,学得也牢固。

所以公司技术升级,对我们个人来说,其实是一个非常难得的机会,如果你有遇到过,那么请一定要抓牢它。

熟悉公司的内部系统

很多公司都有自己的内部系统,熟练掌握和使用这些系统,也是我们程序员的责任。

在有些程序员看来,公司内部的系统不能算技术,因为这些东西不是通用的,就算学了对以后找工作也没什么用处,所以一般对内部系统的学习积极性并不高,甚至有些排斥。

但能够熟练使用内部系统,也是拿工资后要承担的一部分责任。公司内部系统的价值在于,它们一般都是和公司的整个框架集成好的,比如公司内部的SOA框架或者微服务框架,都是和公司内部的监控系统等等集成好的,即使这个框架再“不好”,公司内部的项目还是要使用,这样我们才能够在宏观上建立对公司内部所有服务进行的理解,从而更好地利用自己的技术,不至于“盲人摸象”。

撇开硬性工作要求不谈,事实上,有些公司的内部系统,做得还是很优秀的,甚至于让人离职之后还很怀念。积极学习公司内部相关的系统,也是自己在这个公司的收获之一。以后如果有机会在别的公司从事相关系统的开发设计工作,也可以借鉴学习。

你看,这同样也可以提高我们工作的基本能力。

对安排的工作负责

说完我们个人的基本能力之后,接下来,就是我们非常熟悉的内容了,工作责任。无论什么职业,都要对安排的工作负责。

程序员这门职业的特殊性在于,工作本身的具体内容和难度,会随着被安排的工作内容的改变而改变。从对工作负责的角度来说,我们大部分人会付出比当时预想的更多的时间,才让自己能够按时完成工作。

当然,这里并不是鼓励加班,只不过是一个小建议,如果你有额外的付出,那么到时候可以将自己做的计划外的事情说出来,这样一方面让大家认可你做的工作,另一方面,也是能够让大家对这类事情的工作量估计更合理。

当然还有另一种情况是,事情超出了自己的能力范围,比如一件事情的复杂度远超过之前的估计,在规定的时间内,自己确实无法完成。那么这个时候,正确的态度不是硬着头皮上,而是将情况理清楚,早点找经理或者负责人,让他们知道事情的进度和之前没有预想到的难度,把事情重新安排一下。毕竟,谁也不能承担“到了deadline事情还没有做完”的风险。

从管理者的角度来看,一个事情安排得不合理,就应该早发现,早计划,重新安排资源。毕竟大家的目的是把事情做完,而不是冒着事情可能做不完的风险去压榨一个人。

当然,还有一种情况就是,给自己安排的事情实在太多了,自己没有时间完成。这时候,一方面要自己思考事情的优先级,这点我们之前也讲过,另一方面要及时和经理沟通,建议将优先级低的向后推,或者找别人来帮忙。总而言之,不要在最后给经理“惊喜”。

很多新人可能很难把握这样一个度,什么叫“偷懒耍滑”,什么叫努力负责呢?在工作经验不丰富,技术能力也相对薄弱的情况下,怎么才能知道事情有没有“失控”呢?

我的建议是,当遇到自己吃不准的事情,可以多问问组内资格老的同事,如果老同事说问题不大,那么自己也更有底气。如果老同事说这个问题自己也没有遇到过,那就得找经理聊聊下一步的安排了。

对工作时间负责

很多软件公司,其实都是弹性工作制。毕竟程序员这个工种要求一直在线,有时候出了问题,随时随地掏出笔记本就得开干。既然没有一个明确的“下班”时间,那么很多公司也就不规定硬性的上下班时间了。

这里说的“对时间负责”,也是因公司而异的。我的建议是,一定要在“实际上班”时间之前到,避免有人找你却找不到的情况。比如说,大部分人都是在九点半之前到公司,那么你也尽量在这个时间左右到公司,不要延迟太久。

还有就是如果有会议,一定要准时参加。如果临时有事无法参加,要及时和大家同步。

对时间负责的背后,其实不止是为了保证工作时间。毕竟我们程序员都知道,坐在座位上并不代表就在工作,没在座位上也不代表没有在工作。这里想强调的一点是,程序员的工作不只是写代码,还有很大一部分是交流沟通,保证基本的工作时间,才能更多的和大家交流。

总结

随着级别的升高,程序员的工作也更丰富,从不同的角度来看,也会有不同的责任。比如我现在担任组里的技术主管,除了要做好安排的工作之外,还要协助组里的同事完成工作,同时要思考如何推进系统的技术升级,以更好地满足用户的需求。对于级别更高的同事来说,还有更具有挑战性的责任。付得起责任,才对得起自己那份工资。

俗话说:受人之禄,忠人之事。责任是一点点增加的,负责任的态度和习惯,也是从平时工作中的一件件事情中养成的。当你养成这样一种习惯之后,你会收获一个别人对你的金字评价:这个人,负责,靠谱。

如果你承担的责任更重了,那么距离你加薪升职还会远吗?

思考题

这里给你留一个思考题吧。你觉得程序员还有那些基本的责任?就文中的内容而言,你觉得你是一个负责任的程序员吗?

欢迎你在评论区与我分享你的思考,也欢迎把这篇文章分享给你的朋友或者同事,一起交流一下。