Last summer, a 23-year-old software engineer in New York made a now famous offer to a homeless man he passed regularly on the street: Give him a $100 bill or stop to visit the man every morning and teach him to code.
Some have been skeptical about the proposal. But Leo's journey -- which can be followed on this Facebook page -- demonstrates how programming is becoming increasingly accessible. A confluence of factors, including the shift to the cloud and the advent of online learning, is making it easier to develop the skills to become a programmer. Gone are the days of needing to purchase an expensive, high-end computer and installing complicated software and databases before even writing the first line of code.
The modern day coder looks less and less like computer programmers of the past -- by way of cloud-based platforms and more accessible Learn to Code courses, we're seeing a democratization of coding, leading to a range of new stakeholders involved in the creation of innovative technologies.
1. The new "it" job is in software
The ability to code is more in demand than ever. That's because "software is eating the world," as Marc Andreessen, co-founder of venture capital firm Andreessen-Horowitz and Netscape, famously declared. In fact, software has already, or soon will, replace or supplement many of our daily routines, from buying coffee with our smart phones to self-driving cars.
As a result, the Bureau of Labor Statistics predicts that from 2010 to 2020, there's an anticipated growth of 30 percent in software developer jobs. By also including opportunities in system analysis, computer support, system administration, and web development, more than 700,000 jobs are anticipated to be generated this decade.
While there haven't been enough computer science graduates to meet that demand, the good news is that the number of students pursuing computer science and engineering careers is climbing. Recent reports found that computer science is the most popular major at top universities like Stanford and MIT. Reversing the drop seen over the past decade, the number of computer science graduates in the United States has steadily increased since 2009. In 2010, U.S. universities graduated a little more than 12,000 computer science college students. By 2012, that number had jumped by close to 20 percent. No doubt it helps that high-tech jobs are among the highest paying in the nation.
2. Coding isn't as costly as it once was
Recently, there's been a push for more computer science learning for students before they reach college. For instance, as part of the City of Chicago Technology plan, released last year, the city is working with its public schools to integrate computer science courses into the core curriculum, allowing students to count them toward graduation requirements. At the same time, the State of North Carolina announced various efforts to expand computer science education. And last December, the non-profit Code.org and a coalition of partners launched the "Hour of Code" initiative to promote computer science education in the schools.
As Andrew Oliver, a software consultant and blogger for InfoWorld, said, "Especially in America, where an education incurs tremendous debt and most educational institutions teach you so little of what really matters, you have to ask: 'Can't I just do this myself?'"
Online courses -- many of them free or at least at a lower cost than typical college courses -- are opening doors for more people to learn to code, such as older adults and students outside the United States.
Recently, initiatives such as the Harvard Extension, Stanford Engineering Everywhere, MIT OpenCourseWare, and Coursera have become popular places for students to take computer science courses. Even professors at Harvard have made beginner to advanced programming courses free of cost and publicly available online on platforms like EdX, YouTube, and iTunes.
3. The cloud increases accessibility
What's making the biggest impact on coding is the emergence of the cloud. For one, through cloud-based online learning, students no longer need to set foot in a traditional classroom to learn to code.
With the advent of cloud development platforms, developers don't have to set up costly development machines and configure software. This means would-be coders needn't own a computer and can use public workspaces such as those in libraries or schools.
Rails Girls, an organization giving tools and a community for women in tech, noted that when coding using cloud-based platforms, "You don't have to install anything so you save time and ship around various operating systems and configurations. The students have a text editor and terminal in the same screen and don't have to switch all the time, which also makes it less confusing."
4. The PaaS movement brings coders closer together
The first hurdle many programmers face is downloading, installing, and configuring the software and databases they need to start programming. Cloud development platforms have made the entire process of building and deploying software applications entirely free and accessible from any modern web browser.
Students taking online computer science classes also benefit since institutions such as Coursera and Udacity integrate online code compilation tools into their courses, allowing students to write their computer program online, compile it, and see the results directly on their web browser. Traditional feedback mechanisms are often plagued with long lags between student submissions and teacher comments -- new technologies provide immediate feedback that allow students to quickly determine areas for improvement and stay engaged.
Online developer schools like Tealeaf Academy are finding that cloud-based platforms streamline their development tools. Chris Lee, co-founder of Tealeaf, notes: "Our philosophy is that people should learn to code like real professional developers: on their own machines, using a real code editor. Some of our students have older machines or have conflicting libraries, and have a hard time setting up their development environment." By using a cloud-based PaaS (platform-as-a-service), the students no longer face the same hurdles as before and become more connected and efficient programmers.
Currently, more than 40 percent of independent software developers surveyed by Forrester said that adopting a cloud-based development paradigm was part of their plan for 2013.
5. Your new workspace is in the cloud
A recent Forbes report indicated that the need for cloud-based developers increased by more than 80 percent from 2011 to 2012. Perhaps most importantly, new developer jobs in cloud-based software are expected to remain in high demand. This demand will grow 26 percent a year from 2012 through to 2015, according to research sponsored by Microsoft.
Ultimately, the shift of development to the cloud doesn't merely mean opening the doors to more people being able to code. It also means the technology industry will be able to innovate faster.
This is an exciting time for software and the people who write it. As software continues to create new and larger markets, there will be massive opportunities for new wealth creation for those responsible for creating it. Historically, the companies and people who developed this software were a privileged few who could afford the education and infrastructure required to build, deploy, and maintain software applications.
Now, with little more than a working internet connection and dogged persistence, virtually anyone can take their idea to reality -- and in the process make their own "little dent in the universe."
With contribution from Akshay Bhagwatwar of Hippo Reads.