编程思想
我们是程序员, 我们需要紧跟最新的技术,每天都学习新的编程语言,框架,类库,对于最新的工具,我们学得越多越好。
能够紧跟Angular, React, Vue, Riot, Ember, Knockout这些最新的东西是一件有趣的事情。
但是,我们在浪费时间!
时间是我们最宝贵的资源,时间是有限的,不可再生,你也不能购买更多的时间。
技术界就像时尚界,以“光速”在变化,我们必须跑得飞快才能跟上, 这种竞赛没有赢家,因为竞赛没有尽头。
我的导师曾经给我“上过一课”:
导师: “爱德华,你在做什么?”我(很自豪): 我在读一本书,是关于使用GWT构建现代的Java应用程序的。导师:“为了啥?”我:“作为一个Java Developer,我需要紧跟最新的潮流,GWT就是这样的一个东西。”导师:“GWT之前你还读过什么书?”我:“一本关于Apache Tapestry的500页的书。TapeStry当时是流行的东西。”导师:“Tapestry 现在还流行吗?”我:“现在是GWT更厉害了。”导师:“你能复用Tapestry的技能来解决当前的问题吗?”我:“不行,现在没人用它了。”导师:“Tapestry能让你更好地理解GWT吗?”我:“不,不行,但是我看到了一些重复的模式。”导师:“那是设计模式,它们能帮助你解决当前问题吗?”我:“可以。”导师:“新技术来了又走了,但是有很多思想是共通的。 你要设置正确的优先级,把80%的时间投资到基础知识学习上,把剩下的20%留给框架,类库和工具。”我:“嗯...只有20%?”导师:“是的,你可以在实战中再去学习那些细节。 ”我:“谢谢。”导师:“你以后还会感谢我的。”
这个建议改变了我的生活,我把我书架中关于框架的书都拿掉了,罪恶感从50本书降到了0本,真是个极大的解脱。
我买了一系列“永葆青春”的书,这些书占据了我80%的学习时间:
1、《The Pragmatic Programmer》(程序员修炼之道 )
2、《Clean Code》(代码整洁之道 )
3、《The Clean Code》(程序员的职业素养)
4、《Domain-Driven Design》(领域驱动设计和实践)
5、《Growing Object-Oriented Software, Guided by Tests》(测试驱动的面向对象软件开发 )
6、《Continuous Delivery》(持续交付)
我也购买了当前热门技术的书, Lindy效应表明Spring Framework应该是很好的投资:
技术的未来预期寿命与其当前年龄成正比。每增加一段生存期就意味着更长的剩余寿命。 技术在市场上的时间越长,投资就越安全。
不要急于学习新技术 - 它很有可能死亡。
时间将显示哪种技术值得投资。时间是你最好的顾问。学会等待。
从那以后十年过去了。我帮助了50个不同的软件项目。
感谢导师的建议,我学到的一切都可以在公司,团队和领域之间移植。我的知识今天仍然有用,我没有浪费我的时间。
所有项目看起来都不同,除非你能看到表面以下:
编程语言是不同的,但设计思想是相似的。
框架是不同的,但相同的设计模式闪耀在其中。
开发人员是不同的,但与人打交道的规则是一致的。
记住,框架,库和工具来了又走了。时间很宝贵。
把你的黄金时间投入到那些基础的、不随时间变化的、可移植的技能中当中,这些技能将会永远有价值。
不要学习微服务框架,学习演进式架构(Evolutionary Architecture)。不要学习新的编程语言,学习代码整洁之道、设计模式、领域驱动设计(DDD)。不要学习 LeSS 和规模化敏捷框架(SAFe),学习精益生产原则(Lean manufacturing principles)。不要学习 Hystrix,学习容错模式(Fault Tolerance Patterns)。不要学习 Docker,学成持续交付。不要学习 Angular、React 和 Vue,学习 Web、HTTP 和 REST。