Chapter 12. Learning
In a time of drastic change, it is the learners who inherit the future. The learned usually find themselves equipped to live in a world that no longer exists.
[Hoffer 2006, Sect. 32], Eric Hoffer, Reflections on the Human Condition
The software industry may be one of the fastest-changing industries in history. Since the year 2000, we’ve seen dozens of major new programming languages (e.g., C#, D, F#, Scala, Go, Clojure, Groovy, Rust); huge updates to older programming languages (e.g., C++ 03, 07, 11, and 14, Python 2.0 and 3.0, Java 1.3, 1.4, 5.0, 6.0, 7.0, and 8.0); the development of hundreds of frameworks, libraries, and tools that accompany these languages (e.g., Ruby on Rails, .NET, Spring, IntelliJ IDE, Jenkins); dozens of new databases (e.g., MongoDB, Couchbase, Riak, Redis, CouchDB, Cassandra, HBase); the rise of new hardware platforms (e.g., commodity hardware, multicore CPUs, smartphones, tablets, wearables, drones); the rise of new software platforms (e.g., Windows XP, 7, 8, 10, OS X 10.0–10.10, Firefox, Chrome, iOS, Android); the rise of Agile methodologies (e.g., XP, Scrum, Lean, TDD, pair programming, continuous integration); the explosion of open source software (e.g., GitHub, Linux, MySQL, Hadoop, Node.js); the ubiquity of cloud computing (e.g., Amazon EC2, Heroku, Rackspace, Microsoft Azure); and much more. If you work in the software industry, a huge percentage of your knowledge becomes obsolete every year.
This is why all the best software ...