Golang scheduler 浅析
Golang 并发数据结构和算法实践
Golang 的强人锁难
说在前面
冯敏老师从一个不加锁并发修改导致出现问题的例子讲起,用最佳实践匹配我们工作中的实际场景,提出一些避免踩坑的建议,从而引出锁的进化和原理。
最佳实践
减少持有时间
缩小临界区,注意 defer 的使用
通过缩小临界区的方式,可以避免在加锁和解锁之间,由于有较为耗时的代码,导致锁持有时间过长,从而造成性能问题,例子如下:
1 | var Users = map[string]string { |
乍看之下这段代码是没有什么问题的,但是如果代码像下面这样
1 | Func SomeFunc() { |
如果 defer 之后的代码特别耗时,那这个 mu 锁的时间就会非常长了,会拖慢整个程序的速度。
苦练基本功,延迟满足感
所谓基本功,即为我们日常工作中的专业技能,比如程序员的编码能力、系统设计能力,产品经理的文档能力、产品设计能力,销售的推销能力等,为什么说要苦练呢?因为练习基本功是一个长期持续,可能伴随着重复和枯燥的过程,热血上头坚持几天不是什么难事,难就难在长期坚持,不断缓慢的提升自己,正所谓“合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下”,就像我之前提到过的,坚持做重要不紧急的事情,可以让最终的效果达到 120% 甚至更高。苦练,不仅仅是一个形容,更是一个要求,我们都知道人最喜欢的事情就是得到快速的即时反馈,但是我们在练习基本功的时候往往无法得到即时反馈,所以才会很难坚持,才会很苦,为了跨过这个苦,我们需要设立长期目标和短期目标,长期目标是让我们有一个被指引的方向不至于走岔路,而短期目标是让我们尽可能快的获得反馈,提升成功的可能性。
延迟满足感则是苦练基本功必须具备的素质,同时也是苦练基本功可以锻炼出的一种能力,两者相辅相成,相互促进。举一个学生时期的例子,我们做题的时候,如果一道题很简单,轻轻松松就做出来了,我们是不会有什么满足感和成就感的,但是如果是一道难题,我们费尽九牛二虎之力终于做出来了,那种满足感和成就感相信大家都曾经感受过,这就是延迟满足感。同样的,在我们工作过程中,如果总是做一些自己能力之内的事情,轻易的就完成了,那我们不但没有什么满足感,还会没有任何进步。如果我们能够去做一些要花比较大的力气才能做成的事情,甚至一些自己无法独立完成,必须和他人合作才能完成的事情,这样的成长和满足感足以让我们久久回味。就像我们的 OKR 一样,其实就是为了让我们可以再往上够一够,让我们的满足感更强烈一些,让我们的成长更快一些。
Golang On The Toilet
Slice、Map 和 Channel 那些事儿
方法论的作用
今天周年庆的仪式上,一鸣提到了他觉得方法论可以说是没有什么作用,抽象相当于在思维上加杠杆,是一种思考上的偷懒,并列举了一个“赋能、闭环”的例子来论证这个事。我部分赞同他的观点,但我还是觉得方法论是有其意义和使用场景的,在我看来,方法论其实是一种对日常工作工程中的经验模型的一种总结,可以帮助我们快速找到一个正确的方式来应对某些事件,比如做预案的时候,需要考虑到哪些方面的内容才能做到不缺不漏,需要联系哪些方向的同学进行共同处理,这些一点一点沉淀下来的经验我认为是一种有用的方法论,是有其实际意义的,如果没有这种方法论进行参考,下次做预案的时候又要重新去想类似的内容,还可能会有缺漏。当然如果只按照方法论沉淀下来的既定内容做事,就会出现一鸣说的“思考上的偷懒”这个问题,所以我们不仅仅要按照方法论做事情,还应该去思考这个方法论是不是适用于当前的环境,是否有更加优化的方式来进行实施,能否把当前的方法论再进行优化,这样方法论不仅能够避免犯一些人为的错误,同样也能够锻炼我们的思维,做到思考上不偷懒。
此外,我觉得方法论对于不同的人来说其实意义也是不一样的,对于已经有很多成熟经验的人来说,方法论可能会在一定程度上限制他的思想;但是对于小白或者首次经历做事的人来说,方法论可以指导他快速上手,有章法的做事,避免在并没有形成良好的工作习惯的时候犯下超过限制的错误。在框架内做事是能够防止犯大错的,总的来说方法论就像是一个框,在这个框里做事不容易犯错,但是无法做跳出这个框的事,当我们在这个框中已经形成了良好的习惯之后,我们却要敢于打破这个框,打破他的限制,让我们的思考和思想能够不断的发散,甚至于把这个框变得更大,限制更小,更加灵活。
再看 whwhorere 方法论
Whwhorere 是美团提出的一个适用于产品规划和思考的方法论,其构成为 Why, What, Object, Resource, Roadmap, Evaluation,其实和我们经常提到的 5W1H 比较类似,但是更加适合用于产品规划方面。
- Why:我们为什么要做这个产品,为什么是现在做,是业务发展到了什么阶段导致瓶颈还是有其他的原因
- What:我们的产品是什么,要解决哪些痛点问题,提供了哪些能力,
- Object:我们产品的目标是什么,用哪些方案来解决提到的问题,为什么选择当前的方案,有没有其他的替代方案
- Resource:为了实现这些目标,需要使用多少资源和人力
- Roadmap:详细的产品实现路径和 milestone 规划
- Evaluation:如何评估产品做出来的效果,每个功能如何证明达到了既定的目标
使用这个方法论,可以让我们对于产品的思考更加的清晰明确,建立起一个更加直观的框架结构,也便于我们将自己的产品规划讲述给他人。
关于权责利的思考
今天看到了一篇文章,讲的是一个团队指定了 A 作为 B 的上级,但是 A 却没有批复 B 的申请,给 B 打绩效的权利,B 的绩效好坏也不影响 A,久而久之 B 不再听从 A 的安排,A 也不去管 B,导致 AB 虽然是一个团队,却没有团队的合作。这个就是团队管理中常见的权责利不统一而导致的问题。
- 权,指的是团队主管拥有的权利,一般指财务权和人事权。
- 责,指的是团队主管需要承担的责任,比如团队的整体绩效。
- 利,指的是实现了绩效之后,整个团队可以和获得的收益及其分配方案。
三者之间的关系是缺一不可,相互制约又共同生效的,缺少了权就像指挥家缺少了手,无法顺畅的指挥交响乐,缺少了责容易成为“渣男”,只分派任务却不用担责,导致人心不平衡,缺少了利就是“想让马儿跑,却不给马儿吃草”,三者任缺其一都会导致管理出现问题,要做到权责利平衡,需要先做到薪资等利益和岗位责任对等,其次对应的岗位责任需要赋予对应的权利,岗位责任最大,工作难度越高,赋予的权力也需要越大,成功获取的利益大,失败承受的后果也更严重,三者相互制约,可以理清工作的边界,让我们认清工作的本质,知道什么是我需要做的,做成功能获得什么收益,这样我们工作的积极性也就提升起来了。