不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

程序员10x工作法

核心

  • 01:面对问题时,用思考框架问问自己,现状、目标和路径。
    1
    2
    3
    Where are we?(我们现在在哪?)
    Where are we going?(我们要到哪儿去?)
    How can we get there?(我们如何到达那里?)
  • 02:遇到事情,倒着想。
  • 03:在做任何事之前,先定义完成的标准。
  • 04:在做任何需求或任务之前,先定好验收标准。
  • 05:尽早提交代码去集成。
  • 06:默认所有需求都不做,直到弄清楚为什么要做这件事。
  • 07:扩大自己工作的上下文,别把自己局限在一个“程序员”的角色上。
  • 08:在动手做一件事之前,先推演一番。
  • 09:问一下自己,我的工作是不是可以用数字衡量。
  • 10:设计你的迭代0清单,给自己的项目做体检。
  • 11:动手做一个工作之前,请先对它进行任务分解。
  • 12:多写单元测试。
  • 13:我们应该编写可测的代码。
  • 14:将任务拆小,越小越好。
  • 15:按照完整实现一个需求的顺序去安排分解出来的任务。
  • 16:要想写好测试,就要写简单的测试。
  • 17:想要管理好需求,先把需求拆小。
  • 18:尽量做最重要的事。
  • 19:做好产品开发,最可行的方式是采用 MVP(最小可行产品)。
  • 20:通过沟通反馈,不断升级自己的编解码能力。
  • 21:用业务的语言写代码。
  • 22:多面对面沟通,少开会。
    1
    2
    3
    我昨天做了什么?  
    我今天打算做什么?
    我在过程中遇到了什么问题,需要请求帮助。
  • 23:多尝试用可视化的方式进行沟通。
  • 24:做好持续集成的关键在于,快速反馈。
  • 25:定期复盘,找准问题根因,不断改善。
  • 26:多走近用户。
  • 27:事情往前做,有问题尽早暴露。
  • 28:多输出,让知识更有结构。
  • 29:请谨慎地将工作自动化。
  • 30:将你的工作过程自动化。
  • 31:有体系地学习运维知识。
  • 32:将部署纳入开发的考量。
  • 33:将验收测试自动化。
  • 34:把函数写短。
  • 35:构建好你的领域模型。
    1
    2
    3
    4
    5
    6
    7
    万维钢有期节目里提到芯片设计时讲到了分层以及模型的概念。分层或模型,实质是因为人的认知能力有
    限不得已而为之的。学习计算机,我们都知道晶体管,即便早就忘了它的原理。实际上晶体管涉及非常深
    奥的物理学知识,这是绝大多数人一辈子都不需要了解的物理学。抛开复杂艰深的物理学,晶体管的本质
    却很简单,它就是一个包含通和不通两个状态的开关,这就是它构建的模型。
    在开关的模型基础之上,信息论的创立者香农用一篇硕士论文构建了逻辑门这层。他证明了可以用最简单
    的开关,实现所有逻辑运算。
    逻辑运算层次之上,就是我们所知道的CPU模型。再往上,就是我们所熟悉的信息世界
  • 36:用简单技术解决问题,直到问题变复杂。
    1
    2
    3
    4
    一方面,有人会因为对业务量级理解不足,盲目低估其他人系统的复杂度;另一方面,也有人会盲目应用技
    术,给系统引入不必要的复杂度,让自己陷入泥潭。
    作为拥有技术能力的程序员,我们都非常在意个人技术能力的提升,但却对在什么样情形下,什么样的技术
    更加适用考虑得不够。采用恰当的技术,解决当前的问题,是每个程序员都应该仔细考虑的问题。
  • 37:学习领域驱动设计。
  • 38:了解一个项目,从大图景开始。
  • 39:小步改造遗留系统,不要回到老路上。
    1
    2
    3
    4
    构建测试防护网,保证新老模块功能一致;
    分成小块,逐步替换;
    构建好领域模型;
    寻找行业中关于系统构建的最新理解。
  • 40:在学习区工作和成长。
    1
    2
    3
    4
    5
    从目前的发展来看,IT 行业依然是一个非常有前景的行业,但想在这条路上走好,需要我们成为 “T ”型
    人才,也就是“一专多能”。一专多能的前提是“一专”,让自己成为某个方面的专家。这个专家要放在行
    业的标准去看,这才能降低因为一个公司的波动而造成的影响。
    成为行业专家,要向行业的大师学习,给自己定下一个高的目标,然后是脚踏实地,找适合自己的问题去解
    决,让自己一直在学习区成长。

答疑解惑

单元测试做不好,是否会影响到 CI 的效果?

1
2
CI 作为一个单独的实践,本身是很简单的,但它可以成为提纲挈领的主线,帮助团队不断改善自己
的开发过程。

老板参加复盘,不敢说真话怎么办?

1
问题,是改进的前提条件。

国内的技术信息落后吗?

1
国内程序员真正落后的不是信息,而是观念。

如何管理上级?

1
2
3
第一,管理上级的预期。
第二,帮助上级丰富知识。
第三,说出你的想法。

面对不了解的技术,我该如何分解任务?

1
先把它变成你熟悉的技术。

项目时间紧,该怎么办?

1
2
3
4
5
6
7
8
9
混淆了目标与现状。
目标是应该怎么做,现状是我们正在怎么做。我们都知道
现状是什么样的,问题是,你对现状满意吗?如果每个人都对现状是满意的,就不会有人探索更好的做法。
假设现在不忙了,你知道该怎么改进吗?

自动糊改进:
把测试覆盖率检查加入到工程里,得到现有的测试覆盖率。
将测试覆盖率加入持续集成,设定当前测试覆盖率为初始值。测试覆盖率不达标,不许提交代码。
每周将测试覆盖率调高,比如,5%或10%,直到测试覆盖率达到100%。

多个功能同时开发,怎么办?

1
2
在主分支开发模型中,有一些常见的解决多功能并行开发的方法,其中,Feature Toggle 是最常用的一个,
也就是通过开关,决定哪个功能是对外可用的。

如何在实际工作中推行新观念?

1
找到愿意和你一起改变的人,做一件具体的事。

测试怎么写?

1
2
关于外部系统的测试,你可以先通过接口隔离开来,然后,通过模拟服务或本地可控的方式进行
测试。

IntelliJ IDEA 怎么学?

1
2
3
4
5
6
一个工具怎么学?我的经验就是去用。我没有专门学过 IntelliJ IDEA,只是不断地在使用它。
遇到问题就去找相应的解决方案。
也有一些辅助的方法可以帮助我们练习,
比如,我们会给新员工发放 IntelliJ IDEA 的快捷键卡片,写代码休息之余,可以拿来看一下;
再比如,IntelliJ IDEA 有一个插件叫 Key Promoter X,
如果你用鼠标操作,它会给你提示,帮你记住快捷键

相关文章

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!