《程序员的职业素养/代码整洁之道》阅读笔记
1-4章节专业主义
2021.1.21日,在上海疾驰往家乡的高铁上,仔细阅读了这本书的第一到到第四章,感慨颇多,收获也颇多。
作者在书中详细的给我们介绍了一个真正的程序员应该具有的哪些素养,通过他平时所踩过的坑,来逐一分析错在何处,又该如何改进。作者首先提出了专业主义这个概念。要知道,我们程序员作为一个技术人员,开发人员,我们的专业技能是最基本,也是最应该掌握的,这是毋庸置疑,可是我们如何让别人相信我们确确实实是一个专业的人士,从而放心地不监督而确信你能够完成你的工作呢?
众所周知,在程序开发的时候,因为用户的需求不停改变和增多,产品经理的不断push,程序员往往会在交付日期之前疲于奔命,甚至提交一些错误百出、只能勉强运行并且后续会带来无数麻烦的代码。理所当然,一个经常交出不成熟的产品和逾期拖交的程序员,是无法让客户和产品经理相信你是一位专业人士的。又因为他们不相信你是一位专业人士,不相信你能为你所交出的代码负责,于是他们有时候会更加显得咄咄逼人,甚至会像旧社会的监工一样,站在你的身后,挥舞着无形的长鞭,时刻鞭挞着你去不停的干活,毫不顾惜你的健康,只是为达成最后的任务。
为什么事情会发展到这种程度呢?为什么一个技术人员并不能被认作是专业人士?为什么老板会放心的把案件纠纷交给律师团队,相信他们并且敬佩地称呼他们为专业人士,而对真正从事技术工作的程序工程师们,却咄咄逼人、毫不放松的监视和催促,不信任我们是能为他解决问题的专业人士呢?
答案当然是明显的,因为你表现的完全不像一个专业人士。
Why?为什么这么说。大家可以仔细想想,如果经理接受到了客户的需求变化,要求你在原定的交付日期前再多实现几个功能,并且不停的改来改去,并且鼓励你试一试的时候,你没有坚定的拒绝,而是说我努力努力。这个词你自己以为只是谦辞和委婉的拒绝,不过除了你没有人会这样承认,他们都会觉得你已经承诺好了解决一切,而最后到了ddl,你没有能完成你所委婉答应的东西而造成了公司和客户相当大的不愉快的时候,会有人觉得你还是个专业人士吗?可能更多人觉得你其实是个骗子。这个时候也完全没必要为自己辩解,要知道,除了说话的自己之外,一般人只能听见坚定的拒绝,而其它任何多一点婉转和所谓的我试试,我努力努力都会被听成是承诺。
一个专业人士并不一定要掌握多少高深的知识,而是要在自己能力范围内完成自己答应的承诺,并且总能有自信为自己的工作负责。
如何达到这样一点呢?首先是要学会说不,而且是在有效沟通的时候说不!因为行业领域壁垒,有时候程序员真的很难让经理明白,完成客户突然增加的一个需求会多增加多少工作量。而又由于软件工程的特性,向同一个项目里无限制的增加新人往往并不会使的工程提前完成,反而会更加滞后。这是因为沟通成本的剧烈增加和基础再好的新人也需要相当多的时间来熟悉项目之前的代码,这些都需要时间,不是一蹴而就的。
因此,程序员如果想要不频繁延期交付,就必须较为准确预估项目所需要的人力和时间,并且对一些中途添加会大大增加工作量的需求说不,坚定的让经理意识到这个需求在规定时间是完不成的,而不是说你还有余力可以去试一试。如果你能够宽裕出时间去试试,岂不是说之前你所要求并且安排的时间还有很多空余么,还需要老板多加监督和push吗?这也是不专业的表现。而如果你知道试试是成功不了的,那为什么还要答应试一试,这只会让老板徒增不切实际的希望和失望,以及认为你爱说大话和能力不足。
所以,请在认真评估后,不管经理如何耍花招来要求你完成不可能及时完成的任务的时候,都要认真拒绝,甚至录音以证明自己并没有答应实现这个需求,并及时对上司做出反馈。这样,哪怕真的最后因为需求无法满足而引发的客户不满,但这些都与你无关了,是胡乱答应的经理的错误,而不是你。你依然是专业的。
当然显得更专业的除了答应并且如实、如期完成任务之外,还有很多,比如有团队精神,合理调度时间,每日都花时间去真正了解你的业务领域,适当的每日练习和学习,等等。
以及,当你的同事勉强答应试试以及做出不确定回复的时候,及时认识到他在答应你做的事情的时候,是有难处的,必须要及时沟通,排除因为不擅长说不而造成的不确定因素。肯定的答复永远是一种承诺,而婉转的总是另有隐情,埋伏着各种危险。
我们永远只能确定和保证自己不做出超出个人能力的承诺,但是并不能让别人也做到这一点。于是,我们应该在沟通中敏锐地发现它,在婉转不确定的语气里找到它,并且排除它,这也是专业主义。