在软件开发中,技术变化如此之快,你花费了大量时间学习技术和工具,一旦这些技术被取代,你的知识将变得毫无价值,由于它们大部分都是实施的细节。
我最近老是在想这段话,软件开发算不算是真正的知识?程序员
若是它是一种真正的知识,那么理论上,咱们学到的东西大部分应该不会过期,就好像微积分不会过期同样。但是实际上,咱们都知道,软件开发技能有时效性,十年前学习的编程知识,十年后几乎确定不能用于生产。那样的话,软件开发就不能算真正的知识,只是一种实施的细节。编程
公司旁边有一家税务所,天天都有不少人排队交税。若是你是第一次来交税,确定搞不清楚怎么交,交税是一门学问,必须有人教你,要带哪些证件,要填哪些表,去哪些窗口排队等等。ide
我如今认为,学习编程跟学习交税是同样的,都是学习实施的细节。一旦外部环境变了,原来的实施细节就没用了。当代编程因为层层的抽象和封装,咱们已经没必要接触底层真正具备通用性的知识了。大部分时候,所谓编程就是在写某个抽象层的配置。好比,网页样式就是在写 CSS 配置,你很难说这究竟是真正的知识,仍是像《办税指南》那样的实施细节。工具
实施细节并非知识,而是操做步骤。若是技术栈发生变动,实施细节就会毫无用处。可是,你又不能不学习它,不知道实施细节,就无法作出项目。我以为,程序员应该要警戒,不要落入实施细节的陷阱,不要把所有精力花在实施细节上面,而后觉得本身学到了真正的知识。对待各类语言和工具,正确的态度应该是"进得去,出得来",既要了解足够的细节,也要可以站在宏观的角度看待它,探寻底层究竟是怎么实现的。学习