I’ve fallen into a bit of a rabbit hole, and my guide has been Uncle Bob. I watched these talks and they’ve changed the way I think about programming.

Software Architecture. Programs should be view-agnostic. If you write a rails application, the logic behind the application should contain no rails code, and be implementable in rails as a mere gem. The application should not care about the database. The application should not care about the delivery mechanism (e.g., rails, the web, CSS, javascript).

The Last Programming Language. Programming paradigms are methodological constraints imposed on programming. They are constraining, not additive. Is constraint all we have? Perhaps it’s time to discard the tower of Babel and pick one language, one notation, and use that going forward. It’s happened in mathematics, chemistry, biology, and many different industries. Why is programming so branched in its application and support of general purpose programming languages? This would also mean the end of corporate control of languages. (Bob recommends Clojure.)

The Future of Programming. Programmers were originally a diverse set of disciplined professionals drawn from other fields that demonstrated technical interests. They came to programming with rigor, ethics, and knowledge of their problem domain. In the 80s the demand for software programmers drew in new graduates from EE and CS programs that lacked these qualities. This is why programming is seen as a slugfest of undisciplined men. Programmers need to regulate themselves in the same way doctors and lawyers do, because at some point in the future software will fail and kill many people, and if we remain unregulated the government will do it for us.