10x程序员工作法
郑晔
火币网首席架构师,前ThoughtWorks首席咨询师 ,TGO鲲鹏会会员
立即订阅
7975 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序员解决的问题,大多不是程序问题
免费
思考框架 (1讲)
01 | 10x程序员是如何思考的?
以终为始 (11讲)
02 | 以终为始:如何让你的努力不白费?
03 | DoD的价值:你完成了工作,为什么他们还不满意?
04 | 接到需求任务,你要先做哪件事?
05 | 持续集成:集成本身就是写代码的一个环节
06 | 精益创业:产品经理不靠谱,你该怎么办?
07 | 解决了很多技术问题,为什么你依然在“坑”里?
08 | 为什么说做事之前要先进行推演?
09 | 你的工作可以用数字衡量吗?
10 | 迭代0: 启动开发之前,你应该准备什么?
答疑解惑 | 如何管理你的上级?
划重点 | 关于“以终为始”,你要记住的9句话
任务分解 (11讲)
11 | 向埃隆·马斯克学习任务分解
12 | 测试也是程序员的事吗?
13 | 先写测试,就是测试驱动开发吗?
14 | 大师级程序员的工作秘笈
15 | 一起练习:手把手带你分解任务
16 | 为什么你的测试不够好?
17 | 程序员也可以“砍”需求吗?
18 | 需求管理:太多人给你安排任务,怎么办?
19 | 如何用最小的代价做产品?
答疑解惑 | 如何分解一个你不了解的技术任务?
划重点 | 关于“任务分解”,你要重点掌握哪些事?
沟通反馈 (12讲)
20 | 为什么世界和你的理解不一样
21 | 你的代码为谁而写?
22 | 轻量级沟通:你总是在开会吗?
23 | 可视化:一种更为直观的沟通方式
24 | 快速反馈:为什么你们公司总是做不好持续集成?
25 | 开发中的问题一再出现,应该怎么办?
26 | 作为程序员,你也应该聆听用户声音
用户故事 | 站在前人的肩膀上,领取属于你的高效工作秘籍
27 | 尽早暴露问题: 为什么被指责的总是你?
28 | 结构化:写文档也是一种学习方式
答疑解惑 | 持续集成,一条贯穿诸多实践的主线
划重点 | 一次关于“沟通反馈”主题内容的复盘
自动化 (12讲)
加餐 | 你真的了解重构吗?
29 | “懒惰”应该是所有程序员的骄傲
30 | 一个好的项目自动化应该是什么样子的?
31 | 程序员怎么学习运维知识?
32 | 持续交付:有持续集成就够了吗?
33 | 如何做好验收测试?
34 | 你的代码是怎么变混乱的?
35 | 总是在说MVC分层架构,但你真的理解分层吗?
36 | 为什么总有人觉得5万块钱可以做一个淘宝?
37 | 先做好DDD再谈微服务吧,那只是一种部署形式
答疑解惑 | 持续集成、持续交付,然后呢?
划重点 | “自动化”主题的重点内容回顾汇总
综合运用 (7讲)
38 | 新入职一家公司,怎么快速进入工作状态?
39 | 面对遗留系统,你应该这样做
40 | 我们应该如何保持竞争力?
答疑解惑 | 如何在实际工作中推行新观念?
划重点 | “综合运用”主题内容的全盘回顾
总复习 | 重新审视“最佳实践”
总复习 | 重新来“看书”
结束语 (1讲)
结束语 | 少做事,才能更有效地工作
10x程序员工作法
登录|注册

39 | 面对遗留系统,你应该这样做

郑晔 2019-04-15
在上一讲中,结合着“新入职一家公司”的场景,我给你讲了如何在具体情况下应用我们前面学到的知识。这一讲,我们再来选择一个典型的实际工作场景,将所学综合应用起来。这个场景就是面对遗留系统。
在《34 | 你的代码是怎么变混乱的?》中,我给你讲了代码是会随着时间腐化的,无论是有意,还是无意。即便是最理想的场景,代码设计得很好,维护得也很精心,但随着技术的不断升级进步,系统也需要逐步升级换代。
比如,我们一直认为电信是一个独特的领域,与 IT 技术是完全独立的,学好 CT(Communication Technology,通信技术)就可以高枕无忧了。但随着 IT 技术的不断发展,今天的电信领域也开始打破壁垒,拥抱 IT 技术,提出了 ICT 的概念(Information and Communications Technology,信息通信技术)。
所以,无论怎样,系统不断升级改造是不可避免的事。问题是,你连自己三个月前写的代码都不愿意维护,那当面对庞杂的遗留系统时,你又该何去何从呢?
很多人的第一直觉是,我把系统重写一下就好了。不经思考的重写,就像买彩票一样,运气好才能写好,但大多数人没有这么好运气的,我们不能总指望买彩票中大奖改变生活。那有什么稍微靠谱的一点的路呢?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《10x程序员工作法》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • 西西弗与卡夫卡
    改造遗留系统或者防止代码快速腐化的一点体会就是从领域模型入手。我们有两套遗留系统:合同系统以及CRM系统。刚开始时两者比较独立,随着业务发展,两者有了比较密切的关联。方案评审时发现,大家理解业务需求没问题,但是没有分清楚领域模型,只是把需求简单归了下类,哪个是合同系统,哪个是CRM,流程搅和到了一起。我认为其中的关键是,想清楚或者定义清楚每个系统的核心价值或职责是什么,而不是看和哪个有关就丢进去

    作者回复: 想清楚,最容易说,也最难做到。

    2019-04-15
    5
  • 1.了解原系统已实现的功能,没有文档就心中划分好内部功能模块;
    2.各模块的边界及关联,对于业务交叉点先思考通信机制;
    3.看代码,通常是瓶颈优先,业务上是先复杂后简单;
    4.选定切入点;
    5.正式改造时先把原有功能抽象出来使用现有实现,改造的过程完成前不会受影响;
    6.改造完成后切换但新实现进行测试;
    7.稳定后替换旧实现;
    8.重复4-7。
    2019-04-18
    2
  • 极客不落🐒
    郑老师拍案惊奇书单及简评,最近各大书店有活动,可以借机囤起来了:
    1.重构
    作者: Martin Fowler
    https://book.douban.com/subject/1229923/
    严格说来,我并没有完整的读完这本书,不过,正如作者自己所说,这样的书原本就不指望能够读完,因为有一大部分其实是参考手册。正是我读过的部分让我知道了重构,让我知道这么做可以把代码写得更好。

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

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

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

    作者回复: 你总结得真好!

    2019-04-16
    2
  • Haile
    老师,“有些行业已经形成了自己在领域模型上的最佳实践”,有相关资料分享一下么,谢谢老师!

    作者回复: 行业里的模型都在各个行业中,去做了就知道了。我手头没有成文的,但我知道有行业有。

    2019-04-16
    2
  • TimFruit
    问个问题,一般web服务依赖数据库,这部分如何做好单元测试?如果去掉数据库,很难测试相应的sql语句

    作者回复: 到答疑的时候,我们来聊。

    2019-04-15
    2
  • One day
    现在确实有很多最佳实践,而且资料也很好找,修改遗留代码,也要根据实际业务改变而做相应修改,分成小块,逐步替代,测试更紧,保证修改有效,才不至于越改越烂。当然,最好的代码也有时效性,在变化之中寻求不变才是至关重要的

    作者回复: 办法都有,套路也有,就看要不要去了解了。

    2019-04-15
    1
  • 闷骚程序员
    老师,我想问一个关于单元测试的问题,假设我要测试的函数是一个关于tcp的网络发送函数,这个函数里面又调用了系统的send函数。但是这个函数要测试成功就需要创建socket建立tcp连接。这样为了测试这个函数我就要实现一个tcp的服务端,这样牵扯的东西也比较多,测试用例就比较复杂。所以我想问一下,老师在写类似这样功能的单元测试是怎么实现的。看了老师文章后发现单元测试很重要,也在自己项目中实践,但是这个问题一直困扰着我。谢谢

    作者回复: 我们在答疑的时候讨论这个话题。

    2019-04-15
    1
  • 维吉立安
    拜 REST 所赐,行业对于 HTTP 的理解已经大踏步地向前迈进,CDN 才有了巨大的进步空间。
    请问如何理解呢?

    作者回复: 用对了HTTP,Get才是不变的含义,缓存才有价值,CDN才有发展。

    2019-11-24
  • shitao
    正在着手重构一个系统。重构前信心满满,把老系统的一些显而易见的问题一一罗列下来,并想好了对应方案。即where are we,where are we going。

    但执行过程中并非一帆风顺,重构过程中也不断发现新的问题和代码坏味道,导致重构之前的重构。

    总结,过于追求完美,导致前进较慢。应该执行优先,在保证重构出比之前好的系统并解决关键问题的前提自下,速度优先

    作者回复: 可能你误解了重构,回头去看看加餐,重新理解一下重构。

    2019-07-15
  • helloworld
    重构或者重写之前,先写好测试,保证对系统的修改是正确的。重构或者重写之前确保各个系统或者模块的边界
    2019-05-12
  • hisir
    保持小步快走,每步一个测试,逐步优化
    2019-04-24
  • Jxin
    老师,怎么获得电商行业领悟模型的领域建模实战资料?有书或则文章之类的吗?我这边就是电商供应链业务。公司发现比较快,进而几乎是以上问题的重灾区。第一步加监控,补核心或经常有问题业务块的日志,并对一些会导致脏数据的异常点加告警。第二步,补部分测试代码,重构了啥,就补啥。第三步,小步重构代码,子父类属性迁移,带事务的方法聚合,异步的方法聚合,业务代码顶层调用函数提炼。第四步,书写业务白皮书,降低其他人参与进来的成本,提高调整效率。
    2019-04-20
收起评论
12
返回
顶部