从个人经历漫谈传统教育与编程
这一两年以来,我越来越避免在 Web 的公开领域(甚至在微信朋友圈)说一些有关个人经历的事情,即便有时候为了情境必须得说出一些关于自己的东西,也会在事后把它删除或隐藏。不是担心个人隐私什么的(或者只是很小的一部分原因,这个年代还有个人隐私可言吗?),而是在玩遍社交网络之后,我觉得没必要在虚假的网络说上太多个人相关的东西。真实的世界才是真实,对于网上的东西没必要过于认真,很多事情我们永远无法知道背后的真相到底是什么。
这一两年以来,我越来越避免在 Web 的公开领域(甚至在微信朋友圈)说一些有关个人经历的事情,即便有时候为了情境必须得说出一些关于自己的东西,也会在事后把它删除或隐藏。不是担心个人隐私什么的(或者只是很小的一部分原因,这个年代还有个人隐私可言吗?),而是在玩遍社交网络之后,我觉得没必要在虚假的网络说上太多个人相关的东西。真实的世界才是真实,对于网上的东西没必要过于认真,很多事情我们永远无法知道背后的真相到底是什么。
对于工作稳定的开发者而言,我们每天大多数时间都是在做着我们熟悉的事情。一个又一个不同的业务丢过来,我们却基本上总是使用着我们早已熟悉的技术栈。很多技术先驱们提倡开发者要学会远离自己的 comfort zone,学习一些新的我们所不曾了解的东西。是的,一个没有更高技术追求的开发者很难长久的在技术这条路上走得长远,更是难以达到一定的技术高度。
选择了开发者这条职业之路,也就同时意味着这将是一条不断学习新知的道路。这篇文章将指出一个已经对自己常用的技术栈熟知的开发者,在学习新知的过程中可能会遇到的一个典型的问题。也许这个问题不仅仅是针对开发者,任何一个对自己常接触的业务领域技能熟知的职业人,在接触到新的知识领域时,都有可能会遇到这样的问题。
本文总结一下在几个月的 Web 开发实践后,我认为的目前进行 Web 开发的一些工作流程上的最佳实践。
需要事先声明的是,「最佳实践」这个词是相对的。一方面,Web 开发的世界纷繁复杂,我仅有的经验还远远只是管中窥豹的水平;另一方面,使用不同技术栈的人对某一些问题的答案往往存在争议,不同的人从不同的视角来了解 Web 开发这个庞大的领域,产生不同的理解和世界观也是十分正常的事情,需要理性看待。
There are only two hard things in Computer Science: cache invalidation and naming things.
—— Phil Karlton
缓存是高性能 Web 服务的基本要求,然而对缓存的处理和使用不当将带来一系列的副作用,尤其是同时考虑到服务的高可用性和同步的问题时。
本文将简单探讨 Web 服务中哪些功能适合用缓存(此文均指 Web 后端自行实现的缓存,如使用 Redis)来完成。
编程快乐是一种创建事物的纯粹快乐,这种快乐的来源之一来自于在易于驾驭的介质上工作
《人月神话》
《人月神话》是几乎每个程序员都或多或少了解过的一本书,著名的「没有银弹(No Silver Bullet)」的软件工程理论就被其作者Fred Brooks收录在这本书中。
这本书的第一章「焦油坑」就讨论了「编程的快感是什么?」这样一个对大多数程序员来说不言而喻,但如果要具体说说或许又难以准确表达出来的一个问题。简要归纳一下,原书提供了这样几个答案: