大江大河观后感

2019/01/01

程序员从大江大河能学到什么?

今年我们做了哪些事情?哪些好的,哪些不好的

自我检讨:没有评估好项目上线的各种风险,对项目没有做一个悲观的预期,认为上线后不管出什么问题都可以解决,没有花更多的精力把风险在事前解决掉

为啥我们要持续学习?

为了不被淘汰

如何学习技术?

第一点,打好基础知识,由于我自己非科班出身,所以我深有体会,当基础知识不牢固的时候学习新技术的时候往往是知其然不知其所以然,比如三年前开始学习docker的时候就只会跟git一样用个docker pull,docker run命令,但是我想学习两个docker之间怎么通讯的时候,我放弃了,因为我觉得这个问题太难了,超纲了,另外一个例子就是每次面试当我问别人怎么才能知道一个java对象到底占多大空间的时候,他们就完全蒙圈了,我们平时写程序其实就是把一个对象里面一个字段的值经过计算改为另外一个值,结果我们都不知道这个字段在内存里怎么存储的。所以我建议大家有时间可以看下linux下的磁盘,文件系统,cpu,缓存等知识

第二点,看源码 我们一般对一个技术点的时候,第一感觉就是实现这个东西肯定很复杂,当我们去翻一下源码的时候发现就一两个类就搞定了,然后去细看源码或者自己去实现的时候发现有好多细节,而这些细节就是你比别人研究的更深入的地方,当我们去排查一些疑难问题的时候,这些细节或许就会帮上忙,当然源码看的多了你就会发现好多场景的解决办法是相同的,而这些相同的地方最后都可能被抽出来作为一个单独场景解决方案,比如某些选举算法,一致性协议(缓存,数据副本)

如何学习业务?

  • 第一点,找一线的业务人员,这个是最一手的信息了,没有比这个更捷径的方案了,去了解他们现在的场景,解决方案,痛点等,例如支付到底有哪些实体账户,哪些虚拟账户,他们之间怎么做对账和划转的
  • 第二点,需求评审一定要认真参加,并且提出当前做这个需求的背景是什么
  • 第三点,了解外界其他大厂的解决方案,对比当前方案看是否有优化和适用,并反思如果用他们这种方案我们有哪些成本

如何加深理解?

  • 1.做对比,一般一个产品,或者某一项技术除了了解他是解决什么问题的,怎么解决的,最好要和其他产品做对比,看下各自的适用场景,各项指标上有哪些优势
  • 2.一般学完一项技术,我们最好能用自己的语言做一下总结,这样不仅可以加深理解,能自己重新画一下图的建议可以自己画一下,还可以留存下来以后复习。
  • 3.上台分享,上台分享不仅仅锻炼了自己的表达能力,一项技术只有你能用更简单的故事给大家讲明白你才是真的弄懂了,而且还可以校验下你的理解和大家的理解是否有偏差,能否接受住大家的提问。
  • 4.动手写 当然有时间建议自己动手实现一下,比如自己手动实现一个raft协议

如何提升自己的影响力?

  • 1.积极解决问题的能力
  • 2.积极承担压力
  • 3.不管什么办法,让更多的人认识你,羽毛球,游泳
  • 4.主动分享一些技术和一些解决方案,业务
  • 5.细心,很重要,有句话说得好 女孩子都喜欢心细的男生,这是真的 (提现在工作上就是考虑的更周全,无论是在需求评审上还是写代码上,你帮别人提出了产品可能的缺陷,产品妹子肯定感谢你,你的代码没有bug,可能的异常场景你都考虑到了,上线没bug,测试妹子肯定想嫁给你这样的,其实人家只想嫁个有钱的
  • 6.长得帅,女孩子都喜欢长得好看的,长得不帅的至少要穿的整齐,不能邋遢
  • 7.积极,阳光 (天天人间不值得肯定是不行的,你要想我都买了保险了怕啥,其实是希望当有业务人员或者客服这种一线人员有问题咨询,要积极响应,就像你请求一个网站五六秒才返回给你页面,你说你气不气)
  • 8.善于提出解决方案,而不是抛出问题,遇到问题先尝试自己解决,然后把解决方案分享给大家
  • 9.经常请大家吃饭,有钱人大家都喜欢

如何沟通?

  • 1.尊重对方,不要带语气,不耐烦的语气,鄙视的语气
  • 2.请记住上面一条
  • 3.如果是咨询和请教,第一请虚心,第二请自信 (当然自信这种状态可能需要不停学习来提升)

如何做事?

  • 1.调整好心态
  • 2.对自己负责
  • 3.善于培养自己独立解决问题的能力
  • 4.一旦发现自己无法解决应该提出来

团队管理篇

  • 如果员工之间能力相差太大,肯定会有鄙视链产生,可以运行 80 85 90 的差距,但是如果是60和90那么他们之间的共同话题肯定会减少,一旦有鄙视链就会产生情绪,有情绪就会影响工作成效.
  • 协助低级别员工的成长,帮助他们赢得其他员工的尊重,因为低级别员工因为各种原因会不可避免的存在,那么怎么样消除或者减小鄙视情绪?管理者需要帮助低级别员工赢得别人的尊重,赢得尊重最好的方式是,让别人看到他的成长,所以需要帮他指定提升计划,另外是给他机会,并辅助他漂亮的完成项目,尽量多花精力在项目上线前减少问题的发生,避免项目上线后出问题,会打击他的自信和影响别人对他的看法.
  • 如何协调积极员工和不积极员工,做事积极的员工肯定会比不怎么积极的人成长的更快,导致能力差距增加,管理者可以稍微将机会让给一些不积极的同学,往往积极的同学往往比不积极的人更自信(脸皮更厚),所以管理者应该多鼓励下腼腆的同学.
  • 如何挑选项目第一负责人? 充分考虑到项目的重要程度和影响面,以及同学的积极性,能力,时间空闲等,如果某个同学去负责一个项目能力有缺失的话,需要花精力进行协助.
  • 团队的去中心化,每个同学都需要找到团队中某一项技术或者能力特别突出的地方,如果某一个同学同事在ABC三个技能上都是最优秀的,那么他可能是一个单点,需要协助同学一起找到自己的突出点.希望每一个员工都是一个山峰,而不是大家都在一个水平面,当然同一个比较热点的技能可以同时有多个副本,比如A和B同时研究k8s,而B和C也可以同时研究分布式事物.这样B就可以是那种积极的人.
  • 注重员工的被动学习,目前由于团队同学基础不一致,以及兴趣不一致,积极度不一样,可以针对性分享一些常用和底层知识,这些基础是每个同学都应该掌握的,只有基础越好上层才能建的越高,上层可以自己研究,底层可以进行科普教育.
  • 分配任务的时候,需要了解到员工对所需要知识的熟知程度,不能错判,如果不清楚可以一对一进行详细沟通
  • 如何选择绩效为D的员工,除了根据当年的成长速度,可替代性,以及项目完成情况,工作态度也是最需要考虑的,因为技术上的成长相比改变态度还是简单很多的,态度这种性格上的缺陷经过多年的习惯导致很难调整,而且工作态度带来事情的严重性会比技术实力更大,而且更难在事前发现问题,因为你会错误的信任他而缺少关注度.

为什么说话啰嗦:

  • 语言组织能力太差 — 多看点小说
  • 理解不透彻,不自信 — 多回顾,熟悉
  • 害怕对方听不懂 — 错误评估别人的理解力,可能是自己理解力有缺陷,以自己的理解力评估别人,那是不是自己理解力太差,非科班出身?