今天继续介绍《程序员的职业素养》一书,不知道大家还记不记得前文提到的内容了,??不记得没关系,我们简单回归一下。
专业人士要讲解专业主义,最重要的就是要为自己做的事情负责,这包括了担当责任、职业道德两块。
担当责任主要说了要少写bug和多重构代码,但我认为这些还是远远不够的,因为这只是从完成任务的角度来说明责任,而作为开发或者算法应该更主动的去了解业务,知道自己的产出对整个产品和用户的影响,这个后续会讨论。
职业道德这块就是要大家该工作的时候好好工作,每周自己要额外花时间来提高自己。
这期讲的内容挺有意思,说“不”。生活中中国人都比较不喜欢拒绝别人,怕伤了别人,这可能是我们受到的教育导致的。但在工作和生活中,大家都应该学会什么时候以及明确的说“不”。
本来想把说“不”和说“是”一起写的,但是发现写个“不”就已经这么长了,所以还是放下期吧。
说“不”这里作者先讲了他原来做的一个实时的会计系统的故事,大佬Frank要求必须按期完工,leaderBill人不错,知道大佬的性格,要求大家一定要按期上线。在上线前一周系统搭起来了,但是有很多问题和bug,所以大家拼命加班解bug。虽然系统按期上线了,但是一上线就悲剧了,由于数据量大,直接导致系统奔溃,需要不断的重启系统才能维持下去。大佬Frank大发雷霆,要求必须在周五前搞定,但作者说必须要4周多的时间,Frank和Bill都表示一定要在周五前:“至少也该试一试吧?”,于是组长:“好吧,试试看吧”。虽然险象环生周五解决了一些问题,但是还是花了几周时间才慢慢把系统稳定下来。随后,作者和他同事们都辞职不干了??。
专业人士敢于说明真相而不是屈服于权势,要有勇气对领导说“不”!也许大家怕对领导说“不”,毕竟是领导,应该照着他说的做才对呀。但是,专业人士不应该照做。优秀的领导对于敢于说“不”的人是很喜欢的,因为只有敢于说“不”,才能真正做成一些事情。
对抗角色一个团队是否可能总是和谐共事,没有矛盾呢?如果有,那么组员是否能够有效的工作是很值得怀疑的,因为不可能没有需要做决定的时候,而在面对艰难决定的时候,直面冲突是最好的办法。我们公司的对抗角色其实是很少的,我们新来的产品经理庆功说在原来公司他是被用户、开发追着砍的人,而刚来我们公司感觉大家太好说话了,产品说啥就做啥??,这是个非常不好的现象。
每个岗位的同学都有自己的职责,产品经理、开发、算法都应该尽其所能去追求和捍卫自身的目标。产品或者leader让你明天训练好一个分类模型,因为业务上很需要这个,但是你明知道不可能明天搞定,但是却答应说“好,我试试”,那这就是你的失职,因为你知道标注数据还没准备好,模型调调参还得花点时间,调好了上线还得时间。尽职的唯一选择就是说“不”。
最好的结果应该是双方的目标要对齐,这个目标可能是要通过协商,argue才能找到。
协商可以很愉快,leader派活,你说OK,我试试。但这个试试并不代表能完成,leader和你都在自欺欺人。当然你也可以说短时间做不完,过两周怎么样?leader说OK,然后到时候甩锅说是你搞不定。更好的协商应该是努力的寻求对双方都最佳的结果,比如leader可能只需要某几个类别能分出来就OK,而不需要所有类别都搞定,那你发现这个需求现有的数据是可以搞定的,这样达到双方都能接受的结果。但这个只有说“不”,并且在沟通和冲突中才找到都能满足的解决方案。
对于算法的同学来说,有些问题在没有深入研究的情况下是没法得到一个比较准确的答案的,因为需要不断的试错。当然如果没有高质量的训练数据,这时候就更难预测了。但这个时候更应该说明情况,而不是简单“试试”。
“为什么”重要吗?也许你觉得给别人解释一下可能会帮助他们理解你,但前提是对方有技术背景和好脾气来听你解释。但“为什么”只是个细节问题,真正重要的是“事实”。有时候过多的解释会招致更多的微观管理,是的,指不定他会进来告诉你应该怎么一步一步做??。
高风险时刻最要说“不”的是那些高风险的关键时刻。越是关键的时刻,“不”字就越具价值。
是的,越是关键的节点,需要越早把关键信息传递给大家,而“不”字蕴含的信息往往是最重要的。
要有团队精神团队精神意味着什么?恪尽职守、互相帮助、互相交流、互相关心。有团队精神的人不会总是说“是”。你和组里其他成员是团队,你和产品也是团队,你和公司的其他人都是团队,为团队努力的人应该坚守自己的立场,明确哪些是能做到的、哪些是做不到的,什么都能做=什么都做不好。
试试看没有“试试看”这回事。
或许有人觉得“尝试”是积极的举动,这个词本身也有很多定义,这里作者指“付出额外的努力”。这块内容花费了我一些时间来好好理解,作者说如果你许诺“尝试”,其实也就意味你承诺你会确保成功,因为在他人看来你或许会加更多的班、或许会换个新方案来实现你的承诺。而如果你没有什么新方案,也不会改变自己的现有的做法,其实就是在自欺欺人。
更好的做法是不断提醒对方预估的不确定性,并且不要退让;假设你有新的想法或者改进方案,也要明确的提出来,并把其中的风险和预估提前说出来,而不是简单的一句“试试看”。
说“是”的成本大多数情况我们都希望能够说“是”,健康的团队也会努力给他人肯定的答复,大家会相互协商,达成共同认可的行动方案。但有时候获取正确决策的唯一路径是勇敢的说出“不”。作者引用了一个例子,John被要求在两周时间内开发出一个app,同时期间还面对了各种加需求,是的,他加班加点的干,各种copy-paste,最终导致的结果是赶着做了个版本,但是却没法发布。
每个人都想成为英雄救世主(或者说“解决问题的那个人”),但是如果牺牲专业原则来委曲求全不是问题的解决之道,舍弃这些原则只会带来更多的麻烦。
“有可能写出好代码吗?有可能坚守专业主义精神吗?”
“是的,但你要学会如何说‘不’。”
小kaola和羊的守护者