After a decade spent outside of tech, I have returned to writing code.
Things have improved! Rails, StackOverflow and Heroku all make today a paradise compared to an era when Java was the ease of use standard, installing Apache securely was a weeklong ordeal and my original iPod had like 50 megs of storage.
But even with the improvements of the past years, programming today feels broken. I returned expecting programming to be simpler so it’s accessible to more than just the best educated and smartest. I expected developer tools to be more intuitive, visual and intelligent so they’d help programmers move faster.* Programming would be done in something more akin to natural language so people don’t need to learn complicated syntax. And so on.
I returned expecting an iPad and I got a programming world that is still a 1980s-era VCR.
The Visa Crisis
“We can’t hire enough programmers!” We must raise the visa cap to avert this crisis. Big Tech companies are spending big money to save us from Doom.
Sadly, this would fail any Lean Startup solution fit interview. It’s not scalable. We could 5x the visa limits and we’re still going to run out of programmers.
The problem isn’t that the USA has too few programmers. The problem is programming is still too hard to leverage the people we already have.**
Big Tech companies and developers have little incentive to expand the population of programmers.
No tech giants are really working to expand the developer population because no one makes big money making developer tools. When programming is hard, big companies keep up their competitive advantage because they have the developers on staff already. Visa workers are especially attractive because they are trapped with their sponsor company for years.
Developers have little motivation to grow the world of those who can program. Once you’ve invested years becoming a top-notch programmer, there’s little reason to create a tool so other programmers can skip that agony. So, the programming world focuses on developments that help those already in the know like node.js or Golang and not investing in truly groundbreaking tools.
Changing The World
Want to truly change the world? Figure out how a novice programmer never has to understand MVC just like they don’t have to understand how ethernet’s collision handling works. Figure out how someone can build their first beautiful, complex web app going in a weekend and not in years.*
In other words, figure out how programming can be less broken and more like this:
- Many startups are working on this. My favorite for HTML5 mobile and web apps is Drifty. Others are doing it for WordPress and web sites (Strikingly, RapidWeaver)
** I’m pro-immigration BTW. You’re smart and motivated and want to come to America? We should get you here as quickly as possible.
* Many people never start programming because it’s too hard and has developed a terrible reputation. To quote from a developer who picked up programming late in life: “I still feel my problem with picking up programming was my limiting beliefs, “I can’t do this”, “it’s too hard”, etc. BUT when I picked it up I found that wasn’t the truth. Yes a more friendly environment, better/friendlier tools and differing perception of how ‘hard’ programming is would probably have had me starting earlier.”
[Thanks to Greg Cerveney, Richard Ortega, Tex Morgan, Jason Straughan, Vid Luther, Ben Sperry, Max Lynch, and Cole Wollak for reading drafts of this blog post.]