陈天-软件开发能力-live 笔记

软件开发能力

在刚开始的阶段大家对于语言的关注度往往大于系统层级,业务层级。

软件系统是个大工程,包括 separate programs, configration files ,代码或者编程语言都只是一部分。

发展阶段

idea -> mvp -> business -> real system(provide value) -> HA, more value

  • 婴儿期 :poc/mvp 最简单的代码时间,是否可行
  • 少年期 :加强健壮性 是否有价值
  • 青春期:日志,错误监控,安全,部署,效率 能否提供更多的价值
  • 成人期:性能,CI/CD,监控,分析,BI 足够的商业竞争
  • 消亡期

可以积累的经验,从一个系统经验抽象出来的能力,用启发式的问题自问

系统能力

  • 软件部署 了解数据流转,网络架构

  • 系统架构 (至少可以在白板中画出架构,说的清楚职责)

    • 一个请求的完整 pipeline 心中有数
    • Qos
    • log
    • 监控
  • 数据架构

    • 用户在使用系统时的行为
    • 行为收集的event (地点人物事件)
    • 多平台数据怎么统一
    • 数据聚合,存储,分析,可视化
  • 监控和报警

    • 性能日志收集,处理
    • alert
    • 突发事件的快速相应
  • 数据收集能力

    • 什么数据值得收集(当前收集的数据跟核心业务符合吗,有需要改进的地方吗?)
    • 收集的数据流向了什么系统?why
    • 数据是怎么聚合的 (batch or realtime, how improve?)
    • how store datas?
    • ad-hoc or report query ? 可视化
  • 分析数据能力

    • 如何读懂各个指标?业务场景关联性
    • 怎么解读数据趋势,同比,环比?(A/B testing)
    • 多维度数据变化对应的业务含义
    • 异常数据?
    • 数据发现新知识(数据挖掘 )
  • 快速决策和解决问题

    • 软件开发的本质:make decision, 大到技术栈的选型,小到变量,函数的命名,也是各种最佳实践,经验积累的体现,最终呈现的是我们的系统。这里就需要有个人的 Knowledge base
    • 决策:需要的是经验和胆识
    • 解决问题 <=> 完美的方案,所以考虑时间成本 workround 的方案可能更合适
  • 什么都略懂一些(万金油)

    • 多了解其他的领域,前端,运维,运营,产品,可以更好的理解他人的工作,还有发现更多的机会,对自己的发展有利,不要桎梏 自己的角色。
    • 交叉混合地带的知识和经验往往具有很大的价值,从历史的发展来看,交叉学科是必然的趋势,知识迁移组合往往发挥 1+1>2 的功效. 举个例子,代码写的6,又会表达,在沟通中就如鱼得水。
  • 责任心,担当

    • proud to be the owner & eat your own dog shit
    • 出问题不怕,怕的的总是出一样的问题,持续改进很重要
    • 不管是否自己 oncall,出了问题第一时间投入进去不解决不罢休
    • 换位思考,把自己当成用户,将心比心
  • 敢为人先:接受挑战

    • 面对挑战,不要退却,推责

!当我们阅读别人的项目设计或者源码的时候,就是在还原作者当时的决策流程(mock的感觉)

! 人靠谱最重要

业务能力

要了解的逻辑:

  • 公司怎么赚钱的?
  • 离钱越近的职位越重要

每个人都需要了解的业务知识

  • 公司如何获取用户?公司给用户提供的价值是什么?
  • 如何留住用户?提高用户产生的收益?
  • 公司和部门是如何花钱的?
  • 用户的单价,投入产出?获客成本
  • 用户的 life time value ?
  • 公司业务所处的市场环境?对手发展的情况?
  • 公司的差异化在哪?市场优势在哪?
  • 行业是怎么样的? 行业标杆,标准是怎样的?

从市场角度,财务角度,运营角度来分析公司优缺点,所处环境和未来方向。

    原文作者:orangleliu
    原文地址: https://blog.csdn.net/lzz957748332/article/details/80911755
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞