0%

《重构–第二版》在我的书单里面待了好长一段时间了,趁着放假有时间读了一遍。这本书作为我司首席科学家老马的大作,同时又有大熊和林丛羽的翻译加持,值得每个人认真的反复的学习。

重构作为敏捷实践的精髓之一,在我们这个以敏捷为立身之本的公司里应当属于大家信手拈来的基本技能了。虽然说重构的基本思想长期不过时,但是第一版《重构》毕竟已经是20年前的事情了,20年以来软件开发行业兴起了无数新的编程思想、语言、工具、框架等,现在回过头去看第一版,会发现不仅纸质书籍难以买到,而且知识上也总觉得有点脱节。新版本以JavaScript语言作为示例,重新思考并改进了第一版本中的众多重构手法,结合了多年来一些新的观点和思考,带给了我们一套更为丰富完善的重构体系。

通读一遍本书,很多让我产生共鸣的地方,同时本书让我对于我们日常的一些实践有了新的看法,对于我们经常讨论的一些问题也有了新的结论。下面想摘录一些重要的观点,并分享几点我的理解,与大家一起学习。

阅读全文 »

前文讨论了敏捷数据工程实践的相关概念。有哪些具体的敏捷数据工程实践呢?本文将分享“代码化一切”的实践。

Everything as code

代码化XX

在应用软件开发中,“代码化一切”被讨论得很多。常见的代码化XX有:

阅读全文 »

随着数据在越来越多的企业中被应用,数据技术的发展可谓突飞猛进。不仅基于Hadoop的大数据生态在持续完善,我们也能看到很多新兴的分布式技术如潮水般涌现。以下是来自中国信通院《大数据白皮书(2020年)》整理的大数据技术体系图谱:

Data Tech Stack

阅读全文 »

一个故事

最近有一次我观察项目组中一位经验较浅的小伙伴写代码,发现:

  1. 快捷键用得少,缺乏一点去研究快捷键的意识
  2. 自动补全功能没有充分利用,基本靠记忆+手敲
  3. 使用mac笔记本自带的并不好用的键盘

这带来的结果就是手上的速度跟不上思维的速度。

阅读全文 »

背景

在最近的一个项目上,我们再次碰到了需要处理长时任务的场景。事实上,随着要处理的业务问题越来越复杂,要集成的系统越来越多,在Web服务器端开发中,长时任务处理已经成为了一个普遍的问题。

以下场景均可看作长时任务场景:

  • GitHub提交了一个PR,要分别向上百个相关用户单独发送邮件
  • 用户上传了一个文件,需要扫描这个文件是不是带病毒
  • 用户想以pdf格式下载某一个文档,需要先将文档转换为pdf格式
阅读全文 »

在文章开始之前,我们先回顾一下TDD带来的好处。当我们理解TDD之后我们至少会发现下面这三点:

  1. TDD是一种更加自然的编程方式,因为我们总是要先弄清需求再编写代码,而这跟TDD先写测试(通过测试清晰的定义需求)再写实现的顺序是完全一致的。
  2. 先写测试还要求我们站在使用者的角度来编写测试,这样我们可以自然的驱动出来更好的设计。
  3. 由于TDD天然的特性,测试在编写代码之前就有了,自然我们也就无需担心测试覆盖率不够带来的质量问题了。

TDD给我们编写代码带来的好处多多,我前面有一篇文章主要分析了如何从改善设计的角度理解TDD,相信大家能感受到TDD给改善程序设计带来的好处。这里我想再次分享一个用TDD改善设计的例子,我们将从中看到不用TDD时我们的代码可能会变成什么样,而用了TDD又将变成什么样。

阅读全文 »

上周的某一天,我在浏览IT新闻的时候,无意间被一篇来自阿里团队的文章刷屏了。关注的好几个平台都转发了名为“阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源”的文章。

OpenSumi定位是垂直领域的IDE研发框架。请注意,它本身不是IDE,而是一个辅助开发IDE的框架。除了内置常用的开发工具,如资源管理器、编辑器、调试、Git 面板、搜索面板等模块,重要的是,它可以支持开发者通过简单配置就搭建属于自己的本地或云端IDE产品。

OpenSumi的思路竟和我之前分享的“开发者工作台”的思路如出一辙。

阅读全文 »

在当下很多的应用场景中,我们常常会想要应用具有一定的灵活性,以便我们可以在线调整计算逻辑,而不需要重新发布应用。这可能也可以称为以极限的速度发布软件的方式。

AB测试可以说解决了一部分这样的需求,使得我们可以在线的针对部分用户改变应用的行为。但AB测试需要我们预先定义并实现两套逻辑,然后通过线上配置来应用不同的逻辑。显然,在可自定义的程度上,AB测试是非常弱的。如果我们想要更大规模的调整应用的逻辑,AB测试就不够了。

阅读全文 »

进门,双手帮你脱下外套,挂起。洗发师双手提起一件深色防水的丝质套衫,你伸手,换上。拿起腰带,穿过你的腰,两圈,拉扯一次,拉扯两次,系紧。抹平套衫肩部,拉住袖口,拉扯一次,拉扯两次,展平。拉住套衫底部,拉扯一次,拉扯两次,拉齐。

将你带到洗头处,你看到一个用于平躺的台面,台面上深色皮质的垫子分为两部分,前面部分可拆卸,上放一块叠起来的深蓝色毛巾,毛巾上面是一朵颜色鲜艳的大荷花。在台面前部放有一个与垫子同样深色皮质的单人凳。

洗发师伸开右手,将你迎向凳子坐下。介绍洗头服务:我是37号洗发师为您服务,本次洗发50分钟,请您稍坐,我去准备毛巾和其他用品。

阅读全文 »

TDD有很多好处,但是广大程序员却总是难以接受。即便在我们ThoughtWorks,有着非常浓厚的TDD氛围的公司里,接受起来也依然不是一件简单的事情。我曾经见过一些在我们公司工作过一年甚至两年的同事,对TDD的理解都还停留在比较粗浅的认识上,平时的实践也难以跟上。

阅读全文 »