鞋匠的孩子们:一个开发者的寓言
计划很简单:给我的个人网站改版,然后写一篇博客文章记录这个过程。
我在了解了用户界面框架后不久就搭建了自己的网站,虽然我基于Bulma 的网站比一些网站要好,但我并不满意。这是“之前”的图片:
此外,我有点不好意思承认,尽管我热爱CI/CD,但我个人页面的“发布”流程却是将其ssh部署到服务器上并执行一次git pull. 这可算不上最先进的做法。
我开始研究静态网站框架,心想或许可以用Gatsby来搭建网站,然后用Netlify部署。有了 Gatsby,我甚至可以直接在自己的网站上写博客!这肯定是开发网页的现代最佳实践方式。然后我读了@flexdinesh的这篇文章,我的计划瞬间崩塌。他的文章展示了一个优雅的开发者落地页,并开源了它,还提供了在GitHub Pages上托管的说明。起初我不太想用他的项目,因为我觉得应该自己搭建页面,但最终我意识到它完全满足了我的需求,而且能帮我写出一篇比“我是如何搭建网站的”更有趣的文章。所以,我向大家呈现:开发者寓言。
如果你不熟悉“鞋匠的孩子光着脚”这句谚语,它指的是人们常常把专业知识运用到个人生活中。我的个人网站就充分体现了这一点——我完全忽略了开发方面的最佳实践。本文将重点讨论以下四点:
- 持续部署(CD)
- 保持简单,笨蛋 (KISS)
- “非我发明”综合症(美国国立卫生研究院)
- 不要重复自己(DRY)
持续部署
在持续部署中,每次将代码提交到项目的主分支时,都会运行一套测试。如果所有测试都通过,则部署新版本。这使您可以快速获得更改反馈,并将发布代码(通常是一项风险较高的操作)变得轻而易举。有很多方法可以为项目添加持续部署,包括Travis、Circle、Jenkins和 Netlify。
正如上文所述,我最初想要重做网站的原因之一就是为了改进我的“发布流程”。我之前的流程存在一些问题。首先,它非常繁琐:每次我向 GitHub 仓库提交更改后,都必须执行额外的步骤才能将这些更改部署到“生产环境”。其次,这些额外的步骤中包含一个git pull可能导致意外后果的组件,详情请参见此处。我希望部署一个持续部署流水线,以简化流程并减少出错的可能性。
保持简单,笨蛋
虽然 Netlify(以及其他 CI/CD 流水线工具)完全可以满足我简单的静态网站需求,但它们功能过剩了。我不需要运行测试套件,也没有复杂的资源或构建流程。我只需要代码更改能够反映在我的网站上,而正如我从@flexdinesh的帖子中了解到的,这正是 GitHub Pages 的功能。
KISS (Keep It Simple, Stupid,保持简单,笨蛋)这句话虽然措辞略显刻薄,但它告诫我们避免复杂性。在极限编程中,它也以YAGNI(You Aren't Gonna Need It,你不需要它)的形式出现;在设计领域,安托万·德·圣埃克苏佩里的一句名言也印证了这一点:“完美最终的实现,不是当没有什么可以添加的时候,而是当没有什么可以去除的时候。” 通过保持代码、流程和用户界面的简洁,可以减少bug隐藏的空间,也能减少用户和开发者的困惑。
“非我发明”综合症
我第一次看到@flexdinesh的帖子时,对 GitHub Pages 非常感兴趣,觉得他的落地页看起来棒极了。尽管如此,我还是找了各种理由来解释为什么我不能使用他的框架:列出和链接到我的项目会很麻烦,我无法集成博客,没有地方可以放我的个人信息,而且我的“如何搭建作品集网站”的博客文章和他的内容重复了。我这是患上了“非我发明”综合症。
人们不愿使用现有的外部实现方案可能有很多原因:成本、自尊心、对未知的恐惧。然而,这种“我不愿重复发明轮子”的心态与开源文化完全背道而驰。在开源模式下,我们无需强迫每个开发者或团队重新发明轮子,而是可以借鉴彼此的解决方案,最终创造出远超任何个人单打独斗所能达到的成就。当我意识到自己也存在这种“我不愿重复发明轮子”的心态时,我便能够与之抗争。
不要重复自己
和 Dinesh 合作的项目让我放弃了在个人网站上发布博客文章、展示我参与过的项目和应用、以及列出我的资质和职业经历的计划。我越想越觉得这样做很合理。我已经有 dev.to 来发布博客文章,GitHub 来展示我的项目,LinkedIn 和简历来列出我的资质和职业经历。为什么还要在我的网站上重复这些操作,每次信息有变动都要在多个地方更新呢?我还了解到 GitHub 允许你选择要在个人资料中展示哪些项目(“自定义置顶仓库”),这最终促使我决定使用 GitHub。
意识到自己一直在重复编写信息,让我想起了编程中的DRY 原则。DRY 原则避免了在多个地方重复执行同一更新操作,从而节省时间并防止错误。当然,DRY 原则也可能(而且根据我的经验,这种情况经常发生)被过度运用。为了消除重复代码,开发者通常会创建一个抽象层,但如果重复更多是巧合而非等效,那么这样做就可能很危险。你可以在 Sandi Metz 的文章《重复远比错误的抽象便宜》中了解更多信息。
包起来
我对最终成品非常满意,也可以在www.joncass.com上查看:
正如鞋匠的孩子那句谚语所说,我的个人项目往往得不到我在工作中投入的那份热情和严谨。虽然有些项目这样也无妨,尤其是在初期阶段,我可能不会继续下去,但我希望我的“个人网站”能得到更多用心。如果更新起来很方便,我就更有可能坚持下去(感谢CD!)。我觉得我这个简洁明了(KISS原则万岁!)、干净整洁(简洁明了)的页面,让我能在网络上展现出最好的一面,即使它并非我原创。
有任何问题或意见?请在下方留言!
非常感谢@flexdinesh开源了他的开发者登录页面项目(并撰写了相关文章)。
文章来源:https://dev.to/joncassdev/the-shoemakers-children-a-developer-allegory--65g