Skip to content

Latest commit

 

History

History
15 lines (8 loc) · 2.28 KB

need.md

File metadata and controls

15 lines (8 loc) · 2.28 KB

The need for intent

Since the early 1980s (when C++ was invented and personal computers became available), waves of innovation have complicated the hardware, software, and human landscape in which software development takes place. Here's just a quick sample from the history of our exploding complexity (try to hum this to the tune of Billy Joel's "We Didn't Start the Fire"...):

Dramatically faster chips, the maturation of RDBMS technology, the explosion of storage capacity, solid-state drives, cheap RAM, the internet, GPUs, MICs, FPGAs, virtualization, the death of long-lived careers at a single company, FOSS, malicious hacking, web apps, SOAP and RESTful web services, unicode, the rise of cybercrime, distributed architectures, cloud computing, big data, NoSQL and NewSQL, the ebb and flow of outsourcing trends, MMORPGs and MOOCs, social networks, the mobile revolution, battles over privacy and intellectual property, BYOD, TPMs, TLS, IPSec, ipv6, proliferating ultra scale, the internet of things...

Whew!

Against this juggernaut of change, the brains and creative energies of the entire programming industry has accomplished amazing things. Modern compilers and IDEs and WYSIWIG layout editors and help engines do impressive stuff.

But at best we've achieved a stalemate.

Everywhere, we see steepening learning curves, fragmented information, nagging bugginess, a growing ratio of "grunt work" to creativity, and alarming divides between code, tests, and people. Software development is getting more complex, and the complexity is a problem. [1, 2, 3, 4, 5, 6, 7, 8]

We need a better way.