You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
9.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 05丨责任的边界程序员的职责范围仅仅只是被安排的任务吗
我们要知道,在现代社会,责任一般是和钱挂钩的。
我举一个例子。现在很多ERP软件都提供SaaS的服务。一个公司如果要使用这个SaaS服务即便免费的额度已经够用大多也会选择付费。为什么呢其实花钱就是为了买个对方的责任。不付钱看似节省但如果真的出了问题比如数据丢失、数据泄露等那么对方是没有责任或者义务帮你修复的但花钱就不一样了一旦出现数据安全、数据稳定相关的问题服务提供商都是要担责的。
那么同理,我们参加工作,和公司签了合同,有了工资。工资的背后,就是“责任”二字。
任何拿了钱的事情,都要负责——这是一个最基本的社会规则。
## 程序员需要对哪些事情负责
看到这里,你可能会有疑问,这还用说吗,我对自己的工作负责不就好了?可是我们的工作边界在哪里?“工作”仅仅指的是在公司内的工作职责吗?
首先我认为身为程序员我们的工作边界及其范围包括3个部分分别是个人的基本能力、工作内容以及工作时间。
### 对自己的基本能力负责
首先,程序员要对自己的基本能力负责,基本能力主要是技术能力和熟悉公司系统的能力。
**持续精进技术能力**
技术能力就是工作中用到的技术,是我们看家的本事。公司毕竟不是学校,没有教学的义务。既然拿了工资,就要学会相应的技术,完成安排的工作。
我在工作中也遇到过一些人,很多基本技能都不会,自己还没有任何补短板的意识和动作。安排工作的时候,直接甩出一句:我不会。理直气壮,令人惊叹。久而久之,大家对这个人的印象就是——没有工作能力。
当然,很多时候,并不是所有的技术需求都来得那么强烈,也不是所有的技术每个人都熟。我们在实际工作中,也难免会遇到自己不会的问题。这个时候可以向别人请教,但是千万不要觉得请教完就算完了,我们还要意识到自己为什么不会,想办法补齐这块的知识和技能。
如果一个事情不会做,那么基本上就相当于“违约”了。
但如果公司安排确实不合理工作岗位不能发挥自己的能力优势这种情况下又该怎么办呢我的建议是首先还是考虑发挥自己的优势再抽时间补短板。态度要积极不能摆出一副“我不会我有理”的态度。但如果新的工作全是短板技术不熟悉业务不熟悉等等那么不妨和经理和HR聊聊转岗的可能性。
除了补短板之外,我们更可能遇到跟随公司做技术转型,学习新技术。如果是一些重要的公司层面的技术转型,有些公司可能会安排培训,或者给出一定的激励措施。当然,如果公司没有相应的政策,那么自己也是有责任把技术学起来,胜任新的工作的。
其实公司技术升级,也是给自己的技能升级的好机会。我一直强调的一点是,学的东西一定要在实际工作中使用,因为这样最能够激发学习的积极性,也最能验证自己学的成果。公司决定转型采用的技术,也大都会比现在使用的技术更优秀。很多工作久了的同学会抱怨说工作中用不到新技术,如果遇到公司技术转型升级,赶紧抓住机会努力一把,给自己的技术也升级一下。
就我个人的例子来说我学会Hadoop、HBase、Hive、Spark、Scala和JS等等很多技术都是抓住公司新的项目要用到新技术的机会“强迫”自己学下来的。有些项目公司会留一部分学习的时间大部分情况下全靠自己挤时间学。一边学一边通过公司项目的实际操作来考验学习成果过程非常的充实学得也牢固。
所以公司技术升级,对我们个人来说,其实是一个非常难得的机会,如果你有遇到过,那么请一定要抓牢它。
**熟悉公司的内部系统**
很多公司都有自己的内部系统,熟练掌握和使用这些系统,也是我们程序员的责任。
在有些程序员看来,公司内部的系统不能算技术,因为这些东西不是通用的,就算学了对以后找工作也没什么用处,所以一般对内部系统的学习积极性并不高,甚至有些排斥。
但能够熟练使用内部系统也是拿工资后要承担的一部分责任。公司内部系统的价值在于它们一般都是和公司的整个框架集成好的比如公司内部的SOA框架或者微服务框架都是和公司内部的监控系统等等集成好的即使这个框架再“不好”公司内部的项目还是要使用这样我们才能够在宏观上建立对公司内部所有服务进行的理解从而更好地利用自己的技术不至于“盲人摸象”。
撇开硬性工作要求不谈,事实上,有些公司的内部系统,做得还是很优秀的,甚至于让人离职之后还很怀念。积极学习公司内部相关的系统,也是自己在这个公司的收获之一。以后如果有机会在别的公司从事相关系统的开发设计工作,也可以借鉴学习。
你看,这同样也可以提高我们工作的基本能力。
### 对安排的工作负责
说完我们个人的基本能力之后,接下来,就是我们非常熟悉的内容了,工作责任。无论什么职业,都要对安排的工作负责。
程序员这门职业的特殊性在于,工作本身的具体内容和难度,会随着被安排的工作内容的改变而改变。从对工作负责的角度来说,我们大部分人会付出比当时预想的更多的时间,才让自己能够按时完成工作。
当然,这里并不是鼓励加班,只不过是一个小建议,如果你有额外的付出,那么到时候可以将自己做的计划外的事情说出来,这样一方面让大家认可你做的工作,另一方面,也是能够让大家对这类事情的工作量估计更合理。
当然还有另一种情况是事情超出了自己的能力范围比如一件事情的复杂度远超过之前的估计在规定的时间内自己确实无法完成。那么这个时候正确的态度不是硬着头皮上而是将情况理清楚早点找经理或者负责人让他们知道事情的进度和之前没有预想到的难度把事情重新安排一下。毕竟谁也不能承担“到了deadline事情还没有做完”的风险。
从管理者的角度来看,一个事情安排得不合理,就应该早发现,早计划,重新安排资源。毕竟大家的目的是把事情做完,而不是冒着事情可能做不完的风险去压榨一个人。
当然,还有一种情况就是,给自己安排的事情实在太多了,自己没有时间完成。这时候,一方面要自己思考事情的优先级,这点我们之前也讲过,另一方面要及时和经理沟通,建议将优先级低的向后推,或者找别人来帮忙。总而言之,不要在最后给经理“惊喜”。
很多新人可能很难把握这样一个度,什么叫“偷懒耍滑”,什么叫努力负责呢?在工作经验不丰富,技术能力也相对薄弱的情况下,怎么才能知道事情有没有“失控”呢?
我的建议是,当遇到自己吃不准的事情,可以多问问组内资格老的同事,如果老同事说问题不大,那么自己也更有底气。如果老同事说这个问题自己也没有遇到过,那就得找经理聊聊下一步的安排了。
### 对工作时间负责
很多软件公司,其实都是弹性工作制。毕竟程序员这个工种要求一直在线,有时候出了问题,随时随地掏出笔记本就得开干。既然没有一个明确的“下班”时间,那么很多公司也就不规定硬性的上下班时间了。
这里说的“对时间负责”,也是因公司而异的。我的建议是,一定要在“实际上班”时间之前到,避免有人找你却找不到的情况。比如说,大部分人都是在九点半之前到公司,那么你也尽量在这个时间左右到公司,不要延迟太久。
还有就是如果有会议,一定要准时参加。如果临时有事无法参加,要及时和大家同步。
对时间负责的背后,其实不止是为了保证工作时间。毕竟我们程序员都知道,坐在座位上并不代表就在工作,没在座位上也不代表没有在工作。这里想强调的一点是,程序员的工作不只是写代码,还有很大一部分是交流沟通,保证基本的工作时间,才能更多的和大家交流。
## 总结
随着级别的升高,程序员的工作也更丰富,从不同的角度来看,也会有不同的责任。比如我现在担任组里的技术主管,除了要做好安排的工作之外,还要协助组里的同事完成工作,同时要思考如何推进系统的技术升级,以更好地满足用户的需求。对于级别更高的同事来说,还有更具有挑战性的责任。付得起责任,才对得起自己那份工资。
俗话说:受人之禄,忠人之事。责任是一点点增加的,负责任的态度和习惯,也是从平时工作中的一件件事情中养成的。当你养成这样一种习惯之后,你会收获一个别人对你的金字评价:这个人,负责,靠谱。
如果你承担的责任更重了,那么距离你加薪升职还会远吗?
![](https://static001.geekbang.org/resource/image/63/6e/63d3bcf51ac687a1853a5eb73f01d56e.jpg)
## 思考题
这里给你留一个思考题吧。你觉得程序员还有那些基本的责任?就文中的内容而言,你觉得你是一个负责任的程序员吗?
欢迎你在评论区与我分享你的思考,也欢迎把这篇文章分享给你的朋友或者同事,一起交流一下。