If we take a look at mainstream programming culture in the past 10 years, we can identify a rise in anti-intellectualism -- the belief that programming is a manual craft which stands on its own and must keep a healthy distance from anything resembling an academic paper, mathematics, abstraction or any other such taboo word.
This is truly concerning, as any tech-related industry drifting too far from research is doomed to become intellectually stale. Combine that with the rampant problems of sexism, racism and ageism in tech, reducing the perceived elite to wealthy white/asian male twenty-somethings in the Bay Area. The tech industry is effectively cutting itself into a corner where it can no longer perform true radical invention (as opposed to mild commercial innovation). It's all about Getting Things Done and extreme pragmatism.
A paradigmatic example of mainstream programming culture are the hackathons, marketed as open, grassroots initiatives aimed at young, bright programmers, targeting industries to disrupt (whatever that means). When you look past the marketing façade though, hackathons are a rough form of exploitation -- fueling sleep-deprived young programmers with caffeine and pizza in exchange for apps for the platform of whichever company sponsors the event. They are not about true innovation.
Not all is lost
Parallely to mainstream programming culture, possibly in an effort to slow down its intellectual decline, a number of initiatives have gained notorious popularity lately.
Functional programming is undoubtedly on the rise. Slowly, but steady. The need to program for multicore architectures and thus the development of robust concurrency models to express those programs are definitely factors driving this rise. Efficient implementations of immutable, persistent data structures, and agressively optimizing compilers such as Haskell's GHC effectively remove performance as the long-standing deal-breaker that prevented functional programming from going truly mainstream.
Its inherent connection with the academia also makes functional programming languages much closer to the bleeding edge on programming language research. Borrowing concepts from mathematics such as category theory, functional languages enable truly impressive levels of abstraction and composition in our programs. Most importantly, they are becoming an attraction for talent, talent which finds itself fleeing from the already mentioned intellectual decline of mainstream programming culture.
One of my favourite initiatives is Papers we love, a repository of academic computer science papers, and increasingly, a trend of organized programming meetups all across the globe to present, discuss and even implement some of the ideas in those papers.
Imagine a world where hackathons were not about fueling some company's closed app ecosystem, but about advancing the state of the art in itself. Hackathons could be not about building yet another photo app for your iPhone, but rather about implementing the latest new hot distributed data structure, rediscovering a forgotten gem from a 70s paper or experimenting with new forms of auto-scaling infrastructures.
What can we do?
What can we programmers do to disrupt (to use their horrible buzzword) this broken mainstream programming culture? Start a new Papers We Love meetup in your town, learn functional programming, learn Clojure, Elm, Haskell, Idris and whatnot. Introduce a functional programming language into your organization's tech stack, encourage experimentation with new technology, teach a workshop about something exciting you just learned.
Most importantly, develop and keep a beginner's mind. The best weapon to fight anti-intellectualism is to always keep learning, and to share your findings with others.
Next time you feel you don't have time to learn something new because you're too busy shipping real stuff, think about the cavemen who were too busy carrying rocks on their back to hear about this new shiny invention called the wheel.