Question posed by a coworker, “How do we involve the next generation of young minds? These young minds will define each new business idea and will expand our technologies. How do we help these young people become all they can be?”
Two words came to mind, Category Theory. We might as well go full Grothendieck and teach them the mathematics of technological design.
Functional languages like Scala are eating Java, C++ is getting lambdas, C# designer Eric Meijer is developing a new MOOC. Cateogory Theory is no longer an abstract nonsense hipster lovechild of the 1960s. It is the future of our industry.
As technology has grown serious projects cannot fit into our head. It’s vital to simplify problems into their essense. Conal Elliot calls this denotaional design. Ritch Hickey calls this decomplection. Bartosz Milewski doesn’t sugar coat it and demonstrates how tools like C++ make it very hard to write simple programs.
The books I plan on using with my middle school aged kids are How to Bake Pi and Conceptual Mathematics: A First Introduction to Categories. For concrete examples The Haskell Road to Logic Maths and Programming is great, perhaps with some Swift since our oldest likes playing around with iOS SpriteKit.
As software engineers we owe our next generation the task of viewing code through a category lens, and decomplecting our ugliness. In a followup post I will detail how I am using g++ and cmake to generate a category diagram for a massive codebase, and gcov to chase the morphisms.