极客时间-《程序员进阶攻略》学习总结

学习历程

时间:2021-05-26~2021-06-04
内容:极客时间 一 胡峰 《程序员进阶攻略》
在这里插入图片描述

课程介绍

如何才能持续成长,是每一个程序员都绕不开的话题。

入行之初,你可能会困惑于技能选择的方向和掌握的方法;编程前期,你可能会苦恼于Bug的调试与修复;技术水平达到瓶颈期,你可能又急于寻求突破和上升。除此之外,职业倦怠了,如何去面对?技术停滞了,如何去解决?人到中年,是选择工作还是选择生活?换工作?换城市?换方向?如是种种,磨蚀着曾经的乐观和现在的不甘,是放任自流还是逆流而上?

但,还好“永远有走在你前面的人”,别人留下的 “脚印” 和路径可以给予正在成长阶段的你很多启发与指引。

在这个专栏里,胡峰将结合十余年从业经验,设身处地去思索、去剖析、去拆解程序员不同阶段可能面临的实际困惑和问题,并给出可供参考的答案。本专栏是胡峰长时间的资源积累,字字珠玑,有着清晰的路径和完整的体系,去启发、去指引,由“知” 改变 “行”,让你的程序之路走得更稳、更远。不仅传授知识,而且授人以渔——提供为程序员量身定做的进阶路径。

本专栏共63期,分为六大模块。

征途:启程之初。入行之初,需要具备哪些最基础的技能?会面临怎样的困惑?最初的感受如何?找到走上程序之路的初心,成就更好的自己。
修炼:程序之术。程序之路前期,多会是以编程(炼术)为主:程序系统的架构与设计,功能模块的开发与编码,缺陷 Bug 的调试与修复。
修行:由术入道。除了编程写代码之外,还有一些其他维度的修行道路:计划的体系,精进的思维,习惯的养成,展现的形式,上升的阶梯,工程的方法。
徘徊:道中彷徨。行道中途,会面临成长平台期的困惑,该如何选择?
寻路:路在何方。前路多分岔,关于方向、角色、自省与定位,该如何决断?
蜕变:破茧成蝶。成长之路不连续,有阻挡你蜕变的边界与断层,该如何跨越?

总结

1. 征途:启程之初

  • 初心:本科学的是计算机,在学校里学得并不好,甚至可以说基本什么都没有学会,走上开发道路完全是因为没有别的路可选,身无长物,为饱腹只能选择与自己专业最近的行业,跌跌撞撞也走了将近8年。
  • 初惑:刚毕业时,就在纠结是否做测试,或者做纯前端,因为实习的时候做过测试,在学校的小项目中也摸索过前端代码,总希望能在自己感觉擅长的方面继续深入,也幸好能力不行,面试相关岗位都没过。14年左右app端爆火,当时培训班6000报名,学完工资15k+,也曾有过心动,后来因为对换行业的不确定性也就一直没敢尝试,后来为了提升自己,创过业,为了博一丝希望,也有一部分原因是为了独立搭建一整套架构与开发。17年,P2P暴雷,深感小公司发展无望,评估了区块链、机器学习等,一方面杭州相关岗位少,另一方面技术跨度大,也就没有迈出这一步。而后奋发学习,争取到了阿里菜鸟的P6岗,工作两年,结婚买房买车,终生大事甫定,再次感觉技术不升反降,再加年龄带来的恐慌感,鼓起勇气再次重启学习计划。这次选择向架构师方向发展,前所未有的花了几千大洋购买了课程,前路未知,砥砺前行。
  • 初程:编程道路上,各种各样的技能与知识多不胜数,有些技能是我们必须掌握的,这些技能我们必须深入学习其底层原理与实践应用。有些技能我们只需了解,会用并知其所以然即可。怎么区分哪些技能是掌握,哪些技能是了解,红色区域相对更小而聚焦,是需要掌握的部分,要求深度;蓝色区域的部分更广而泛,需要广度。如下图:
    在这里插入图片描述
  • 初感:作为程序员每天使用最多的工具,一台好的电脑能大大提高我们工作的效率;像野草一样野蛮而快速地生长起来;青春无价,持续学习,厚积薄发。

2. 修炼:程序之术

  • 架构与实现:架构是软件系统的结构与行为设计。实现是围绕这种已定义的宏观结构去开发程序的过程。
    架构师的工作包括以下四个方面:

    • 确定边界:划定问题域、系统域的边界。
    • 切分协作:切分系统和服务,目的是建立分工与协作,并行以获得效率。
    • 连接交互:在切分的各部分之间建立连接交互的原则和机制。
    • 组装整合:把切分的各部分按预期定义的规则和方法组装整合为一体,完成系统目标。
      而实现是不断交付代码的过程,主要包括以下内容:
      在这里插入图片描述
  • 模式与框架:设计模式是前人解决某类问题方式的总结,是一种解决问题域的优化路径,学会设计模式不代表就会用,需要不断的实践增强功底,才能灵活使用。框架是给程序员定制的开发脚手架,是打开“快速开发”与“代码复用”两扇门的钥匙。框架和模式的共同点在于,他们都提供了一种问题的重用解决方案,其中框架是代码复用,模式是设计复用。

  • 多维与视图:为了能够表达一个软件的设计,作者从多个维度来创建视图:

    • 组成视图:表达系统由哪些子系统、服务、组件部分构成。
    • 交互视图:表达了系统或服务与外部系统或服务的协作关系,也即依赖与被依赖。
    • 部署视图:表达系统的部署结构与环境。
    • 流程视图:表达系统内部实现的功能和控制逻辑流程。
    • 状态视图:表达系统内部管理了哪些状态以及状态的变迁转移路径。
  • 代码与分类:按代码的作用,分三类

    • 功能代码:实现需求的业务逻辑代码,反映真实业务场景,包含大量领域知识。
    • 控制代码:控制业务功能逻辑代码执行的代码,即业务逻辑的执行策略。
    • 运维代码:方便程序检测、诊断和运行时处理的代码。
  • 粗放与精益:

    • 粗放:在通往更好的道路上,总会经过更多这条路。
    • 精益:好不是完美,好是一个过程,一个不断精益化的过程。
  • 炫技与克制

    • 除了增加不必要的复杂性外,炫技的代码,也可能更容易出 Bug。
    • 克制是不要留下多余的想象,是不炫技、不追新,且恰到好处地满足需要,是一种平实、清晰、易懂的表达。
  • 三阶段进化:

    • 调试代码 Debugging
    • 编写代码 Coding
    • 运行代码 Running
  • Bug的空间属性:环境依赖与过敏反应

    • 环境过敏。环境:即程序运行时的空间与依赖。
    • 应对之道:先从了解环境开始
  • Bug的时间属性:周期特点与非规律性

    • 周期特点:是一定频率出现的Bug的特征。
    • 非规律性:神出鬼没,海森堡Bug
  • Bug的反复出现:重蹈覆辙与吸取教训

    • 重蹈覆辙:粗心大意,认知偏差,熵增问题
    • 吸取教训:优化方法,塑造方法,

3. 修行:由术入道

  • 成长计划:前面讲了编程的术,本章节是关于成长修行中的“由术入道”,先从“计划”体系讲起,如何设定计划于执行。
    • 根源:计划的愿景-仰望星空:设定计划的初衷,无非是希望做到“理想的自己”。
    • 方式:计划的方法-脚踏实地:1. 设定目标,HARD方法论。2. 方法,短期、中期、长期的的计划,遵循SMART原则。
    • 检视:计划的可行-时间与承诺:1. 时间与周期:选择合适的事项,匹配正确的周期,建立合理的预期,得到不断进步的反馈;2. 兴趣与承诺:兴趣让计划更容易启动,而承诺让计划得以完成。
    • 评估:计划的收获-成本与收益:计划即选择,而但凡选择就有成本,计划才能给你真正的自由,你对计划的控制力越强,离自由也就更近了;计划得到了执行,产生了预期的结果,才会有期望的收益。
    • 障碍:从计划到坚持,再到坚持不下去的时候。酝酿期:是计划的早期雏形阶段,这阶段最大的障碍来自内心:理性与感性的冲突。启动期:是计划从静止到运动的早期阶段,这阶段的最大障碍是所谓的“最大静摩擦力”。执行期:是计划实现过程中最漫长的阶段,这阶段的最大障碍就是容易困倦与乏味。挫败:不是一个阶段,而是坚持路上的一些点,正是在这些点上你遭遇了巨大的挫败感。
    • 执行:从坚持到持续,再到形成自己的节奏。一个计划被制定出来后,我们通常会根据它的周期设定一个执行的节奏。找到并控制好自己的节奏,才能长期匀速地奔跑,才能更高效地利用好自己的时间和注意力。
    • 信息:过载与有效。现状:信息过载;状态:疲于奔命;筛选:心智模型;应用:一击中的;
    • 领域:知识与体系。点线面体:在领域知识体系中,“点” 是利器,“线” 是路径,“面” 是地图;而就我们个体而言,“点” 是孤立知识点的学习掌握,而 “线” 是对这些点的连接,“面” 则构成了完整的知识体系网。
    • 转化:能力与输出。个体:对于个体而言,刚建立起一个初步的知识体系,到能真正充分发挥出这个体系的力量,才仅仅是刚开始;团队:团队能力输出就是这样一个 “机器” 体系运行的过程。那么团队的强弱就由两方面决定,一是团队中所有个体形成的体系力量之和,二是由流程规则、工具系统和规范共识共同决定的转化效率;个体和团队的强弱,一方面取决于我们在体系中积蓄的力量的总量,另一方面在于体系运作的转化输出率。体系决定了力量的总量,而转化决定了拳拳到肉的痛感。
    • 并行:工作与学习。工作:程序员的主要工作是:编程,产出代码,完成需求,交付程序系统;学习:持续学习,是让你突破不断循环怪圈的不二法门;路径:保持学习,不断成长,工作也许还在重复,但成长却在迭代上升,然后才会有机会面临更多可选择的路径。
    • 时间:塑造基石习惯(上)感知与测量。

设定目标的HARD方法。HARD 是 4 个英文词的首字母缩写:Heartfelt 衷心的,源自内心的;Animated 活生生,有画面感的;Required 必须的,需求明确的;Difficult 困难的,有难度的;
制定计划的SMART方法。SMART 也是 5 个英文词的首字母缩写:Specific 具体的;Measurable 可衡量的;Achievable 可实现的;Relevant 相关的;Time-bound 有时限的;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值