“Software is eating the world” has a key corollary: writing software will become a new kind of literacy. By the 2000s, the average knowledge worker had to know the Microsoft Office suite; by the 2020s, the average knowledge worker will need to do basic programming to get a job. This has massive societal implications.
If you wanted to become a developer today, what would you do? There are several approaches.
Computer Science Degrees
The most traditional approach starts at universities. More people will change their major to something that promotes computer literacy. And we see it in the numbers: computer science enrollment is up. From 2009 to 2014 the number of computer science degrees grew 46%. But this is a relatively slow and limited instrument. It takes 4 years to get a degree and it’s fairly rigorous. It may be more than the average person needs to get a job in the new knowledge economy. Perhaps this is why in 2014-2015 only 3% of all undergraduate majors were in computer and information sciences.
The Codecademy Approach
Codecademy was one of the first to recognize the unsuitability of universities to create the requisite number of developers. The company developed a platform for learning programming. And so it launched a platform for learning programming online. It’s a great tool, but there are some fundamental issues that give reason to believe that Codecademy won’t get us to the promised land either.
Most people learn to code through project based learning. Codecademy teaches syntax without teaching the coding mindset. Too many of my friends and former colleagues have started Codecademy because they felt like they “needed to learn to code”. But it was little more than a good intention. And good intentions do not create the burning necessity and drive needed to get someone to go through the challenge of learning an entirely new way of thinking.
Dev Bootcamps emerged as a happy medium between an undergraduate major in computer science and fully online courses like Codecademy. It’s much quicker than the four year computer science degree and a lot more hands on and rigorous than Codecademy. But it’s very intense. And it’s hard to imagine everyone in the world quitting their jobs and social lives and dropping $12,000 plus forgone salary for 3 months. The world did not all quit their jobs and pay thousands of dollars to learn Excel after all.
Using Salesforce to Learn Programming
“What?” you may ask. “Isn’t Salesforce something that corporate sales jocks use? How is it going to turn more people into developers?”
You may be surprised to learn that Salesforce is a development platform. It has issues but companies do some pretty complex things with it.
The Step Ladder Approach
Most people we know learned programming the way we did: they had a problem that they wanted to solve and they rolled up their sleeves. For many, it was creating and playing video games as a kid.
Typically it starts with a question: “Why can’t I do this?” And then you hack and claw and eventually get something that kind of works. A rush of endorphins kicks in as you look upon your work with pride. Completing difficult tasks is addicting.
But the feeling is fleeting. What you built is actually very ugly: experienced software developers would look at your nested “If-Then” statements and hard-coded values and shudder; computer science professors won’t even recognize it as software. And what you build won’t quite do what you wanted it to do so you think of ways that you can improve it. Typically this means going on the Internet and reading about other techniques and approaches. You learn new things that you can do and implement them. You just keep repeating this process, eventually, you are a programmer.
Each step is another rung on the ladder. You don’t necessarily recognize what’s at the top of the ladder. There is no grand plan. You are just impatient to get to the next rung of the ladder. You need this level of urgency and enthusiasm to persevere. This approach has two components:
1: A low barrier to entry for solving burning problems,
2: Additional rungs of complexity that offer a path to increasing customization, complexity and elegance that allows you to dive deeper as you need to learn more.
Salesforce checks both of these boxes. It’s possible to get something up and running really quickly. But it’s also possible to continually take the thing you have running to the next level without realizing you are actually learning to program. For example, now that I’ve created custom tables in my database, how do I operate on the data? How do I create a GUI for editing records? What if I want to change how that interface looks? Salesforce has numerous ways to go deeper.
Salesforce as a Development Platform
In 1999, Salesforce was a customer relationship management (CRM) tool. Essentially it was a database of all of your customer’s contact information. It became popular because it was cloud based before that was a thing. This made Salesforce much cheaper and more convenient than Oracle. It looked like this:
In 2006, Salesforce announced Apex - a proprietary Java dialect that would allow developers to run code directly on Salesforce’s multi-tenant architecture. They also created Visualforce - a tool that allows developers to change the UI using HTML and CSS. In 2008, this became more mainstream as huge enterprise companies started leveraging the platform to build custom applications.
Today the platform has evolved a lot. It’s far from perfect. But companies like GM use it to build a road-side assistance, stolen-vehicle tracking, insurance and automatic crash response to over 7 million end users.
Salesforce is popular because it has broad appeal. Java programmers with decades of experience will find themselves right at home on the platform. But so will business analysts with no programming experience who can comfortably add columns to a database or schedule a task or trigger an event.
Why Salesforce Matters
Salesforce App Cloud general manager Adam Seligman’s goal is for the Force.com platform to host 100M developers. They have 4M today. Salesforce makes code literacy achievable because the platform fits so nicely into the two principles described in the Step Ladder Approach:
1. A low barrier to entry for solving problems that you have
When I learned to code the first major roadblock was setting up an environment. I started with Django and though it feels fairly simple to start a new project now, it did not at first. What was a virtual environment, what version of Django was I running, what version of Python? And how do I run a server locally for testing? How do I then run the app on the Internet? Salesforce solves all of that because new environments can be launched simply through the UI. From here, you can then just start making changes.
2. A path to increasing customization, complexity and elegance that allows you to dive deeper and deeper as you need to learn more and no sooner.
You can use the GUI to make simple changes at first to get the rush of seeing something working. But Salesforce is quite deep. You can always go further and customize more.
Getting Paid to Learn to Code
Most appealing for many is that with Salesforce you can get paid to learn to code. This makes Salesforce a realistic option in a way that Codeacaemy, computer science degrees, and dev bootcamps are not. Salesforce Admins in the US make $95k on average and are in high demand across the world. You can start here and then become a more advanced programmer over time. We’ve talked to a lot of developers who have taken this path.
Graphic from SalesforceBen.
Salesforce is growing at 26% year over year on $8.4B in revenue in 2017. For every dollar spent on Salesforce $3.31 are spent on ancillary tools and professional services. Admins and developers are in high demand.
If we want to get to code literacy, we’ll need a tool like this to emerge. It’s not perfect, but so far Salesforce is a great option for “learning to code” because there are so many rungs on the ladder and ways to advance your knowledge. If you start in the Salesforce ecosystem, you may wake up one day and realize you are a programmer.