1.应用场景

主要用于针对程序员工作法的综合运用.

2.学习/操作

1.文档阅读

划重点 | “综合运用”主题内容的全盘回顾-极客时间

2.整理输出

原文

你好,我是郑晔。

又到了我们划重点的时间了,因为篇幅关系,“综合运用”这个模块最为短小精悍。

在这个模块中,我们把前面学到的各种知识综合起来,运用在实际的工作场景中,让你知道这些内容并不是一个个孤立的实践,在实际工作中,唯有将它们结合起来,才能发挥最大功效。

重点复习

在这个模块中,我们学习到了一些新知识。

  • “学习区”学习模型

    • 舒适区,舒适而缺乏成长。
    • 恐慌区,超出能力范围。
    • 学习区,有难度而可以达成。
    • 在学习区练习才能得到足够的成长。
  • T 型人才,一专多能

    • 知识的广度。
    • 专业技能的深度。
    • 有“一专”,“多能”才是有意义的。

在这个模块中,我们还了解了一些重要的思路,让我们把工作做得更好。

  • 进入新工作,从全面了解开始

    • 业务:做什么。
    • 技术:怎么做。
    • 团队运作:怎么与人协作。
    • 从大到小,由外及内地了解工作。
  • 面对遗留系统,稳扎稳打,小步前行

    • 基础理念

      • 烂代码只是现象,要了解根因。
      • 能重构,先重构,大规模改造是迫不得已的选择。
      • 小步前行。
    • 实际操作
      • 构建测试防护网。
      • 将大系统分解成小模块,逐步替换。
      • 新旧模块并存,由分发模块调度。
      • 建立好领域模型。
      • 寻找行业对于系统构建的最新理解。
  • 程序员的职业发展

    • 程序员的焦虑来自于对未来的不确定性,这种不确定性是一个特定时代加上特定行业的产物。

      • 快速发展的中国经济。
      • 程序员在中国是一个新兴职业。
    • 成为行业专家,制定高目标。
    • 向大师学习,开拓视野。
    • 找到好的问题,和高水平的人一起工作。

实战指南

  • 了解一个项目,从大图景开始。
    ——《38 | 新入职一家公司,怎么快速进入工作状态?》

  • 小步改造遗留系统,不要回到老路上。
    ——《39 | 面对遗留系统,你应该这样做》

  • 在学习区工作和成长。
    ——《40 | 我们应该如何保持竞争力?》

额外收获

在这个模块的最后,针对大家在学习过程中的一些问题,我也进行了回答,帮你梳理出一个思路,更好地理解学到的内容:

  • 推行新观念,找愿意改变的人,做具体的事。
  • Lead by Example.
  • 外部系统应该用接口隔离,这种做法体现了接口隔离原则(ISP),也是防腐层概念的体现。
  • 外部系统的测试,能模拟的就模拟,能本地的就本地。

留言精选

关于入职一家新公司,怎么快速进入工作状态这个问题,西西弗与卡夫卡 同学分享了他的方法:

有朋友正在转型,从乙方商业化产品的交付经理转向新公司的产品经理。原本得心应手的思维方式和工作习惯,遇到了巨大挑战。以前只需依据已有产品的功能出解决方案,能做就能做,不能实现就是不能实现,到某个时间交付什么功能很明确,考核是以交付签字为准。现在需要面对各方需求,自己想明白用户真正的问题是什么,最终要交付的价值是什么,没有一个实体的谁人来签字,只有不断地迭代。

借鉴领域驱动设计,可以采用以下方法。简单描述的话,是一个点、一个圈再加一个箭头线,是不是有点像丘比特?

一个“点”,指的是用户核心价值。这是最关键的一条,基本上只能靠自己想明白。想,不是闭门造车式的苦思冥想,可以是已有的领域经验,可以从书本中学习,可以是大家的各种吐槽,可以是自己从旁边观察用户的实践,还可以是自己变身为用户的实践。

有些人会纠结“点”想的对不对,迟迟不敢动手。其实一开始想得对不对不是那么重要,关键是要有这“点”,然后快速到市场上验证,根据反馈再调整。

一个“圈”,指的是围绕核心价值划出的范围,即领域驱动设计中的限界上下文。产品经理面临的一个现实是,各种人都会给你提需求,只要他们觉得和你有关,还时不时来问什么时候可以实现。

需求轰炸之下很容易焦虑,不光自己焦虑,所有的利益相关者都会焦虑。依据核心价值,框出需求范围,在和各方交流过程中可以有一种确定性,减少焦虑,利于行动。

大家(不光是研发团队,也包括其他需求方)就能明白,哪些和当前核心价值密切相关,我们优先考虑;哪些与核心价值有关但它不在我们的范围内,属于其他团队,需要他们协助;哪些有关系,但目前没想清楚价值大不大,并且代价可能很高建议先搁置。范围不是一成不变,它随着时间会发生变动,所以我们不要追求固定,只要保证在某个时间段内,大家一致认同即可。

一个“箭头”,指的是实现路径,箭头指向核心目标(核心价值)。目标(核心价值)和范围描绘的是终极,而从现实到终极还有很多路要走,可能的路径还有很多条。我们需要琢磨怎么走更稳当,怎么走代价比较低,路上关键的里程碑是什么。路径对不对是其次,重要的是思考过程,可以把关键点需要交付的价值、需要支持的资源等等梳理清楚。

另外,西西弗与卡夫卡 同学还对于程序员如何保持竞争力的问题给出了非常不错的建议。

补充我的一些做法。工作中不要满足当前需求,要经常从自己上级主管甚至老板角度来审视自己的工作,思考业务的终极目标,持续琢磨扩展边界,挑战工作难度。

平时多看书多思考,除了钻研某个领域,还要多有涉猎,拓展领域,成为终身学习者。

适当运动维持健康,你有更多体力和更强抗压能力的时候,就可以超过不少人。

保持竞争力除了上述之外,要保持乐观,相信大多数事都有解决方法,在多数人都容易放弃的时候,你的坚持,就是竞争力。

对于新入职一家公司的场景,Y024 同学分享了他快速进入工作状态的方法:

1.我会在权限允许的范围内,时不时的到处翻翻 ftp、内部 wiki 等资源,星星点点构建全貌(业务、技术、团队)。

2.梳理系统数据流。去年很火的电视剧「大江大河」里,宋运辉初入职场的方式就很值得借鉴:先走通全部流程,有个全貌,利用图书馆、师傅等资源再自己动手各个击破并绘制流程图,最终实践检验认知,以技术说话融入团队。

(他就每天只要天气晴朗,绕着设备上上下下、里里外外地跑。一个星期下来,全部流程走通;两个星期不到,原理搞通,仪表能读,普通故障能应付;第三星期开始,他可以开出维修单,但得给师父过目;第四星期起,谁有事请假他可以顶上,坐到仪表盘前抄表看动态做操作。师父说他学得很快。

第四星期起,没人可以让他顶替时候,他在仪表室后面支起绘图板。先画出工艺流程图,经现场核对无误,又让师父审核后,开始按部就班地根据液体走向,测绘所有设备的零件图、装配图、管段图等。

这工作最先做的时候异常艰难,首先是绘图不熟练,很多小毛病,尤其是遇到非标零件,还得到机修工段测绘,有时一天都绘不成一个小小非标件。如果车间技术档案室有图纸还好,可以对照着翻画,可档案室里的图纸残缺不全,前后混乱,想找资料,先得整理资料。

资料室中年女管理员乐得有个懂事的孩子来帮她整理,索性暗暗配把钥匙给宋运辉,要是她下班不在的时候,让宋运辉自己偷偷进来关上门寻找资料。

机修工段的人本来挺烦这个宋运辉,说他一来维修单子多得像雪片,支得他们团团转,有人还趁宋运辉上班时候冲进控制室指桑骂槐,被寻建祥骂了回去,差点还打起来。但后来集中一段维修高峰后,维修单子又少了下去,上面还表扬跑冒滴漏少很多,一工段和机修工段各加一次月奖,可见设备性能好转。

再以后遇到维修,他们不能确定要用什么零件,打个内线电话给控制室问宋运辉,一问就清楚。双方关系渐渐变得铁起来。基层有时候很简单,只要拿得出技术,别人就服。 )

另外,Y024 同学还很认真地整理了专栏提到的部分图书:

郑老师拍案惊奇书单及简评,最近各大书店有活动,可以借机囤起来了。

1.重构
作者: Martin Fowler
重构 (豆瓣)
严格说来,我并没有完整的读完这本书,不过,正如作者自己所说,这样的书原本就不指望能够读完,因为有一大部分其实是参考手册。正是我读过的部分让我知道了重构,让我知道这么做可以把代码写得更好。

2.敏捷软件开发
作者: Robert C·Martin
敏捷软件开发 (豆瓣)
这是一本名字赶潮流,内容很丰富的书,这本书让我开始理解软件设计,从此不再刻意追求设计模式。

3.测试驱动开发
作者: Kent Beck
测试驱动开发 (豆瓣)
读的是英文版,因为当时中文版还没有出版,所以,我不敢说,我通过这本书很好的理解了测试驱动开发,但它却为我打开了一扇门,让我知道了一种更好的工作方式。

4.修改代码的艺术
作者: Michael Feathers
修改代码的艺术 (豆瓣)
这是一本讲解如何编写测试的书。至于这本书的具体内容,我的评价是实用。如果说不足,那么,这本书缺少一个列表,就像Martin Fowler为《重构》所做的那样,出什么样的问题,应该采用怎样的手法进行处理。

对于如何面对遗留系统, 毅 同学提到:

1.了解原系统已实现的功能,没有文档就在心中划分好内部功能模块;
2.各模块的边界及关联,对于业务交叉点先思考通信机制;
3.看代码,通常是瓶颈优先,业务上是先复杂后简单;
4.选定切入点;
5.正式改造时先把原有功能抽象出来使用现有实现,改造的过程完成前不会受影响;
6.改造完成后切换到新实现进行测试;
7.稳定后替换旧实现;
8.重复4-7。

Wei 同学对于“T型人”的说法感触很深:

“T型人”这个太说到点了,到底是做“专”还是做“广”,哪条路线一直是我思考的方向;工作上跟大牛工作过,给我感觉几乎是全能的,我一直都想像他们那样,做一个多面手,但是如何做广,这一直是困扰我的一个问题。

我是dev出身,但是现实遇到的问题往往跟数据库,发布的平台相关;这样说下来,各种相关领域,数据库、k8s、网络协议、DNS ,都需要大量时间去积累;有时候什么都懂一点,反而让自己应该定位什么角色感到迷茫了,掌握的水平不足以让自己去应聘DBA、Ops,但是只是应聘dev似乎又有点“浪费”,跟那些熟悉最新语言/框架的对比起来没特殊竞争力。

今天学习“T型人”这个概念,让我好好思考了自己到底应该怎么定位。我首先是一个developer,这个是根;对语言特性的熟练掌握,各种best practices,例如课程中提到的TDD等应该熟练应用起来;然后在这上面拓展,学习架构知识,多思考对不同系统应该怎么设计,老师提到的DDD会认真学习应用;再有软件最终还是给用户使用,而不是单单提交代码。相关的数据库、k8s、监控运用根据实际遇到的问题再学习解决。

最重要的是,在学习区终身学习和工作!

对于如何持续保持竞争力的问题,enjoylearning 同学提到:

程序员如何保持竞争力很重要,在这个年轻人学习能力不断提升的IT行业,作为老程序员经验阅历眼光以及技术前沿判断力就显得越来越重要。

说起来这个职业是一个需要终身学习的职业,年龄不重要,能力才重要,是不是让自己永远呆在学习区更重要。

对于技术推广,desmond 同学的理解也很棒:

技术推广,不要先推广最难的部分,先推广能让对方感到最明显好处的部分。取得对方的信任,是友好沟通的基础。

感谢同学们的精彩留言。我们的专栏更新已经进入尾声阶段,后续我会为大家做一些对整个专栏进行全盘复习的内容,敬请期待。

感谢阅读,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给你的朋友。

后续补充

...

3.问题/补充

TBD

4.参考

划重点 | “综合运用”主题内容的全盘回顾-极客时间

后续补充

...

10x 程序员工作法 - 划重点 | “综合运用”主题内容的全盘回顾相关推荐

  1. 10x 程序员工作法 - 总复习 | 重新来“看书”

    1.应用场景 主要用于总复习 | 重新来"看书-10x 程序员工作法 2.学习/操作 1.文档阅读 总复习 | 重新来"看书"-极客时间 2.整理输出 原文 我们继续复习 ...

  2. 10x程序员工作法 学习笔记

    前言 这篇文章是在学习极客时间专栏<10x程序员工作法>后,做出的学习笔记. 工作中应该如何思考: 以终为始 沟通反馈 以终为始:遇到事情,倒着想 网上流传着一个帖子,亚马逊 CTO 介绍 ...

  3. 解读10x程序员工作法-以终为始

    以终为始 以终为始:如何让你的努力不白费? 网上流传着一个帖子,亚马逊 CTO 介绍亚马逊是如何开发一项产品的,简单来说,他们采用向后工作的方法,开发一项产品的顺序为: 写新闻稿: 写 FAQ(常见问 ...

  4. 10x程序员工作法-以始为终

    以始为终 一种反直觉的思维方式 任何事物都要经历两次创造:一次在头脑中的创造,也就是智力上的或者第一次创造(Mental/First Creation),然后才是付诸实践,也就是实际的构建或者第二次创 ...

  5. 高效程序员工作法(三)

    目录 前言: 一.向马斯克学习任务分解 一句话总结: 二.测试也是程序员的事吗? 一句话总结: 三.先写测试,就是测试驱动开发吗? 一句话总结: 四.大师级程序员的工作秘籍 一句话总结: 五.一起练习 ...

  6. 高效程序员工作法(八)

    目录 前言: 一.如何做好验收测试? 一句话总结: 二.你的代码是怎么变混乱的? 一句话总结: 三.总是在MVC分层架构,但你真的理解分层么. 一句话总结: 四.为什么总有人觉得5万块钱可以做一个淘宝 ...

  7. 高效程序员工作法(六)

    目录 前言: 一.作为程序员,你也应该聆听用户的声音. 一句话总结: 二.尽早暴露问题,为什么被指责的总是我? 一句话总结: 三.结构化,写文档也是一种学习方式 一句话总结: 问题: 单元测试做不好, ...

  8. 高效程序员工作法(一)

    目录 前言: 一.高效程序员的思考框架 思考框架: 四个思考原则: 以终为始: 任务分解: 沟通反馈: 自动化: 一句话总结: 二. 以终为始:如何让你的努力不白费? 一句话总结: 三. DoD的价值 ...

  9. 什么是 10x 程序员

    原文转载自 Antirez 翻译:江宏 在编程界的传说中,一个 10x 程序员可以完成普通程序员十倍的工作量.所谓普通程序员,可以想象是一个擅长他/她的工作,但没有 10x 程序员那样神奇能力的人.更 ...

最新文章

  1. 万维钢新书《你有你的计划,世界另有计划》_《丑小鸭定理》读书笔记
  2. Qt Creator连接QNX设备
  3. java 增量编译_java增量/全量编译接口应用
  4. 阿里云中间件团队首次解密企业级分布式应用服务EDAS
  5. 中高德地图只显示某一城市_Excel实用知识:从零开始,一步步制作属于你自己的三维演示地图...
  6. C#中异步多线程的常见用法
  7. 【新无人机数据集】从行人重识别 到 无人机目标定位
  8. 世界第一行销之神杰 亚伯拉罕首次中国大陆行
  9. 计网 - 计算机网络开篇
  10. Chromium OS并行运行Linux chroot运行Linux
  11. RuntimeWarning: invalid value encountered in arccos
  12. ASP.NET 中点击按钮时邮件自动发送功能实例
  13. 山东省计算机科学与技术排名,2016山东省大学各学科门类最佳专业排行榜|大学排行榜|最佳专业排行榜_新浪教育_新浪网...
  14. hibernate操作步骤(代码部分)
  15. 雨巷-----美丽的忧伤
  16. python 导入pygame模块
  17. RHEL5.5配置sftp (已验证)
  18. OPPO WATCH 3 Pro重新安装微信儿童版
  19. python获取数组长度_Python返回数组(List)长度的方法
  20. 欢乐颂之鸿蒙系统,《欢乐颂3》立项开拍,五美主演大换血,看清阵容后:熬夜都追...

热门文章

  1. 为什么边缘正在“吞噬”这个世界
  2. 京东 App适配 iOS 暗黑模式业务实践
  3. Android studio中R类变成红色且文件报错无法实现最终效果的问题解决方法。
  4. jpa配置(jpa配置连接池)
  5. python练习3:输入分数,输出对应的ABCD级别
  6. 动态SQL语句的语法
  7. DiscuzX34在本机安装配置
  8. Altera USB Blaster 无法安装问题解决。
  9. 移动监控应用广泛 在安防行业搅起一池“春水”
  10. DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Pyt