Go程序员的修炼之路

350 阅读4分钟

来源:毛剑b站技术总监

1.如何完成自我升级

  • 每一个艺术家都是从学徒做起

  • 通读专业知识的官方文档 先从官方文档开始

    • go的官方文档 一节一节通读 规范、类库
    • 专业书籍
  • 知识的组织结构

    • 方法论 细节、原理、末梢的东西 系统的整理、总结
    • 参考优秀公司的做法
    • 形成自己的方法论
  • 有效的思考

    • 遇到困难 问题 独立的思考解决方法, 不要遇到问题就丢弃 尝试解决和总结
    • 空闲的时候 也想想看
  • 实践、踩坑、重视、反思、改进

2. 核心技能

  • go 关键的几个特性 goroutine channel error context

    • channel
    • goroutine
    • error 错误处理 堆栈上下文保留 打印 业务的hint
    • context go生命周期的管理
      • oom 生命周期管理问题
      • 显示的从上到下传递
  • runtime核心类型 chan、 slice、 map

  • go toolchain 工具链,生产力工具 从生产的角度设计

    • gomod
  • 内存模型

    • 堆栈
    • memory model, 内存逃逸、gc问题
  • 网络开发

  • 并发语义

  • 大规模项目的工程化实践

  • kernel综合知识对工程师代码的反向要求

    • 减少syscall 成本
    • 批量发包 减少syscall
    • 内核运维
    • 内核诊断
    • 软中断 网卡、队列、绑定

3. 建立知识体系

  • 系统性的阅读官方文档/blog
  • 系统性阅读官方类库
    • 姿势要对
    • netrpc tpc链接复用 链接池,http2.0单链接复用
    • 按需去看
  • 阅读大量优秀开源项目
    • 包设计的设计方法 初始化new传参数/对象?, 参考开源项目的做法
  • 持续实践并改进
  • 行业内的优秀文章
    • 各种go群 公众号
    • 持续阅读
  • 知识的组织关联 形成神经末梢
    • 一致性hash
    • rpc框架负载均衡
      • 大数据hdfs namenode选择策略
      • yarn调度
    • 形成一套方法论

4. 学会学习

  • 问题调研方式和积累
    • 遇到问题和苦难 心里有答案, 但是会先看大厂的解决方案和分享,海外的优秀的公司
      • 行业内的解决方案
    • 尽量不要从自己掌握的知识域 从上帝视角/全局视角看待问题
      • 不一定是纯技术角度解决问题
  • 独立思考
    • 不能一直看地 留些时间给自己 对现状 未来 当下的总结
  • 系统学习

  • 持续学习
    • 技术行业 变化非常快 很容易被淘汰
    • 持续的关注和学习 论文研读
    • todo list
  • 社交 外界知识的获取
    • 可能你遇到的困难 别人的做法可以借鉴
    • 不要闷头搞
    • 多出去走走 论坛

5.成长之路

  • 机会与选择
    • 3年工作 不能频繁跳槽 不要为了2 3千
  • 一万小时定律
    • 多关注自己的成长 少些游戏时间
    • 比身边的同龄人 解决问题能力强一点点 懂得多一点点
  • 团队管理 向上管理
    • 工具化 流程化操作
    • 远期目标 战略规划, 不能以不好实现等技术问题违背老大的意志, 从老大的角度思考问题 换位思考
    • 向上沟通
  • 自我认知和修行
    • 知道自己的优点和缺点 要在团队中找一个和自己补位的人 补充自己的短板
    • 说的话 思考清楚再说 一句话就代表自己的观点 不能随意
  • 关注成长
    • 突破自己 不能太在乎一些得失
    • 尽早的切入厚积薄发的阶段
  • 分享和社交
    • 演讲的时候要一些ppt 做到的东西、学到的东西、总结的经验 以一种很简单的方式讲清楚
    • 过去一年的总结 哪些是重要的事情 工作思考(反思)、结果
    • 更多的和同行业中的人 同团队的人在做什么 能学到别人的经验、错误、技术

6.时间管理

  • 碎片化时间
    • 看一些公众号、微信群 值得留意的信息 对有用的信息记录到笔记中
    • 积少成多
    • 学习别人总结的精华
  • 完整时间
    • 晚上下班后可以系统的学习知识
    • 周末系统性的学习
  • 工作时间
    • 工作高效一点, 思考充分一点 多动脑子 出一个设计文档 想清楚收益和目标 和产品充分的了解需求
    • 避免糟糕的代码 返工的成本太高了
    • 尽量异步沟通 别人不会及时回复你, 你在忙的时候也异步回复别人
    • 不打断别人 也不要被别人打断
  • 业余时间
    • 不要每天都是紧绷的状态, work hard play hard

信息获取

  • 微信技术群
  • 公众号 收藏 打tag
  • 读好书
  • Paper 引用的一些论文
  • MIT之类的视频
  • MeetUp 峰会
    • 和讲师交流一下 问一下问题
    • 感兴趣的topic 把时间错开
  • 短视频学习
    • 知识付费

工具