跳转至

结束语 登高望远,迈向新的高峰

你好,我是郑建勋。

经过了八个多月的筹备,我们的分布式爬虫系统终于竣工了,这门课也接近尾声了。首先恭喜你坚持学完这个专栏,相信你一定有所收获。

我们这门课的目标,除却组装起一个能跑起来的程序,其实更重要的是为你展示当前使用Go语言进行大规模系统开发的流程与最佳实践。因此我们从需求分析、架构设计、软件开发、测试分析、部署运维等方面介绍了项目开发的完整流程。

虽然在我们的实际工作中,通常只能够涉及到其中很少的一部分,但我相信登高望远,只有更开阔的视野才能够让我们对所做之事有更深的理解。

当然,这个专栏并不是要成为百科全书式的项目开发手册,我们关注的重点仍然是用Go语言写出好代码,写出整洁、一致、高效、健壮和可扩展的代码。要实现这一点,我在专栏中也给出了下面这些解决方法。

  • 遵循好的编码规范,这是优秀开发者提炼出来的最佳实践和避坑手册。
  • 使用优秀的设计模式,例如Option模式、接口等手段,增强代码的扩展性。
  • 使用官方和第三方的优秀工具(例如go race、golangci-lint)对代码进行动态与静态的扫描。
  • 通过单元测试、模糊测试、压力测试等测试手段提高系统的健壮性。
  • 通过pprof和运行时metric提升程序的可观测性。
  • 探索更好的代码组织方式,例如使用领域驱动设计来指导项目的架构设计。
  • 使用并学习优秀的第三方组件或框架(例如go-micro、etcd),借助第三方组件更方便地实现分布式系统。
  • 掌握Go的底层原理,从而在面对复杂系统问题时游刃有余。

要想写出好的项目代码,就需要遵循上述这些一线开发中总结出的最佳实践,并在过程中不断探索。没有一套规则适用于所有的场景,这是项目开发的难点所在,但这也正是它的趣味所在。在项目的构建过程中,我也有一些心得与你分享。

登高望远

我们现在构建的哪怕一个最简单的程序,其实背后都凝聚着前人了不起的智慧。让这一切成为可能的是编译器、链接器、操作系统、CPU、内存、输入输出设备的协调工作。

这启发我们,在进行软件开发时也可以站在巨人的肩膀上,让优秀的作品为我们所用。依靠经验、对优秀组件的深刻理解再加上一点点想象力,我们就可以在前人的基础上不断组合出更高维度的杰作。例如我们项目中就依赖了很多的第三方组件,用etcd来实现了服务注册与分布式协调,用go-micro和插件搭建起了我们的GRPC服务,用Docker帮助我们实现服务的容器化。

如果要完全靠自己去构建这样的系统,其付出是不可想象的。优秀的开源项目是全人类智慧的结晶,基于这些开源组件快速构建起自己的系统,就能够更快一步在这个瞬息万变的世界占得先机。

享受编程的乐趣与价值

在构建项目的过程中,我的第二个感悟是要享受编程的乐趣,充分把握编程的价值。

当今世界,快节奏、强竞争的工作环境让我们普遍有焦虑和乏味感。值得庆幸的是,相比较其他一些工作,系统开发可以充分发挥自己的创造力,并能在这个过程中不断地学习和成长,从我们借助DDD来组织代码的过程中就可见一斑。构造计算机程序就像是创造一个有生命的个体,我们用想象力与创造力把想象变成现实,而这复杂又充满智能的程序都是由简单的符号组合而成,这是多么奇妙、多么让人兴奋啊!

当然,软件工程除了有趣,还是我们创造价值的工具,可以帮助我们打造自己的核心竞争力。

我记得我刚入门计算机的时候,是从操作Excel开始的。那时我们会面临比较棘手的问题,比如把一百张表格合并到一起,这时候如果动用人工,常常需要花费几个小时。但当我学会使用VBA语言去操作Excel的时候,我把合并表格的时间缩短到了几分钟。在数字时代的变革中,程序带来的效率提升创造了巨大的价值。而我也相信创造越大的价值就能获得越多的回报,这坚定了我走上软件开发的道路。

要成为优秀的开发者,需要充分的知识、丰富的经验、优秀的方法论,还需要我们在实践中不断探索精进。从我们的课程中,你也能够看到优秀的开发者的技能树。从Go底层原理到架构设计,从分布式原理到优秀组件的设计原理,甚至有时还需要衍生到操作系统内核、CPU等层面问题的排查。如果我们能够在学习的过程中不断成长,就能逐渐找到自己的价值,在这个领域拥有自己的护城河,而作为新时代的创造者,自然也会获得超额的回报。

诚然,不是所有的工作都那么有趣,但是我想你一定能够在编程的世界中找到属于你的快乐。做着感兴趣的工作,使用高效率的工具,创造极高的社会价值,还能随着时间提升自己的价值,真是再好不过了。

拥抱变化

我想说的最后一点,就是一定要积极拥抱变化。

当今各种新的技术与概念层出不穷,我相信你一定深有体会。Kubernetes 开源不过十年就已经成为了大规模容器编排的标配,总感觉像是上帝调快了这个时代的齿轮似的。

即便计算机底层的原理并没有改变,在这之上创造出来的东西仍然超乎了我们的想象。最近很火的chatGPT就让人非常震惊,和它聊天就感觉是在和一个智者对话。除此之外,它还能写出不错的诗句,创作故事,甚至写代码。不管是比尔盖茨、黄仁勋、还是马斯克都给了它前所未有的高评价。很多人说它“是一场新的工业革命”,“将引领下一个十年”。确实,AI现有的能力超出了人类的认知,已经足以完成客服等重复劳动的工作了。如果我们更进一步畅想一下,是不是可以让它帮助我们诊断病情,帮助我们更好地去学习,帮助我们分析财报,帮助我们自动做笔记呢?

所以说,我们需要对新的事物保持一份敬畏之心,不断尝试用新的思维打开新的局面。如果停滞不前,当时代抛弃你时,连再见都不会说一声。

新的一年了,下面几句话是我对自己的要求,与你共勉。

持续学习,积累精进,顺应时代,热爱事业,创造价值,目标明确,时间管理。

愿你能找到适合自己的人生之路,在新的一年里更上一层楼。

精选留言(2)
  • Realm 👍(1) 💬(2)

    感谢老师的辛苦付出! 知识很全面,认真跟下来,收获很大,有些篇章比较基础,有些还需要二刷。 从一个单体程序,逐步演变成一个分布式、可监测、可测试、可部署的工程项目,需要掌握的知识很多. 1 希望能补充课后思考题的答案; 2 文章中多一些架构图等更好,有时一图胜千言; 3 没有班级群; 假如有以上这些,学习起来更舒坦. 我anchor0408,欢迎有老铁们一起交流、提升.

    2023-02-16

  • 空间探索 👍(0) 💬(0)

    恭喜完更,坚持做成一件事情太伟大了,希望有二期

    2023-02-16