The Salesforce Platform: The Return of the Citizen Programmer

The current popularity of the Salesforce software development platform has taken the industry by surprise. The current IT culture favours the esoteric, yet here is a development platform geared to the idea that anyone can use it: a populist language like BASIC. Does this threaten the careers of professional developers? Paradoxically, not at all, says Dan Appleman.

We developers tend to be a bit elitist. It’s part of our culture. Think about it. Programmers strive to be the “top coder”. Companies want to hire “A” people. Everyone knows that the “best” developers can write a thousand lines of code while the average one is still getting his first cup of coffee in the morning, (and we secretly wonder if it’s really true, and whether we’re good enough). Hackathons reward the best teams and projects, subtly implying that “best” means the ability to come up with a brilliant idea and demonstrate it in 48 sleepless hours. Developers want to work for Google or Facebook in part because we all know they hire the very best.

Our culture may be elitist, but it’s not exclusionary. Anyone can learn to code. Everyone should learn to code. But, and this is the elitist part – the expectation is that all of these beginners should strive for excellence. They should learn “real” programming languages, like Python, Ruby, Haskell and C#. They shouldn’t stop until they too are the best of the best, with expertise in all of the latest languages, tools and technologies.

And what of those who just learn a little bit, or the wrong bits? Those who study PHP to support an old web site? The IT tech that learns to write BASH or PowerShell scripts? Or those who learn to write SQL stored procedures or, God forbid, BASIC or VBA! Well, they’re not “serious” programmers. Not really.

Occasionally a platform vendor has the radical idea of creating a programming environment designed to allow ordinary people to develop their own software solutions. The theory is that with such a tool, vast numbers of ordinary citizen programmers will rise up and create all kinds of applications, solving a myriad of business problems without having to turn to those elite, and presumably very expensive professional developers.

The last time this happened was in the 90’s, when Microsoft created Visual Basic. Legions of citizen programmers created large numbers of custom applications and solutions. Kids used VB, Grandparents used VB. Even managers used VB. Most of the code they wrote was awful, full of global variables, goto statements, and not a hint of object oriented programming, even after it was supported by the language. But it was fast and it was easy, and even the most elitist senior programmers were often forced to use VB because it was so incredibly productive compared to anything else. Fortunately for the professional development community (and unfortunately for everyone else), Microsoft dropped Visual Basic in favor of Visual Basic .NET, which was and is a serious professional development language (though some won’t admit it). VB .NET was complex enough and hard enough to challenge even the best developers, and to scare off the citizen programmers, most of who vanished to do whatever it is that non-programmers do.

Visual Basic caught the serious development community by surprise. Even now most have forgotten that for a while it was the most popular programming language on the planet. You may think that kind of thing can’t happen again, but it’s happening right now. This time the subversive company isn’t Microsoft however – it’s a company you may have paid little attention to –

I know that many of you will just dismiss this. The first reaction of almost every serious programmer I’ve mentioned this to has been “Salesforce, they’re just a CRM application”. Even IT folk look at it with suspicion – a cloud based service that they’re force to deal with because someone in the sales department signed up for it. Then I tell them that no, Salesforce has evolved into a software development platform, and the look I get is a cross between skepticism and pity – I can almost see their respect for me as a developer fade away.

So I talk about the challenges that real technologists face when working with data. What do you have to do to connect your application to a database? How do you map database fields to language constructs? Do you use strong typing? Or loose typing with a lot of error handling. How do you handle changes to the database schema? What steps do you take in the application to deal with the possibility that the schema may change – a table dropped or field modified or deleted? Do you wire things up dynamically, or do you use tooling, wizards and code generation to build the plumbing, and if so, how do you ensure that it remains up to date when schema changes occur?

Think about what you do to connect your user interface layer to the application. How do you adapt the display to different field types and validate the data? How do you handle concurrency and transactions?

Think about what you do to secure the data. How do you handle users, roles and profiles? How do you control access to records and fields, and how do you authenticate users? Don’t tell me it’s easy – if it was we wouldn’t read every other day about a major security breach.

How do you allow for end-user configurability? Do you embed a macro language? Or just build very complex configuration systems with large numbers of settings? Or do you just implement a solution and plan on endless iterations to adapt the system as needed?

These are all tough problems, and tough problems call for serious professional developers. The elite. The best of the best.

Except on the Salesforce platform, where anyone can program, because these problems don’t exist.

  • When you add tables or fields to the Salesforce platform database, they appear in the language as objects with properties, already strongly typed to the correct data type.
  • If you reference those objects and properties anywhere, the underlying tables and fields can’t be deleted or changed to an incompatible type. The platform creates and enforces data integrity.
  • When fields are displayed on the user interface, which is easily customizable without programming, validation and the correct user interface for the fields just happens automatically.
  • Security is baked in – if a given profile isn’t allowed to access a table or field, they just quietly disappear from the user interface for users that aren’t allowed to access them. That’s applies to forms and reports (reporting and charting being built-in as well).

And as for the programming itself, most of it can be done using interactive process builders, whether it’s creating a sequence of screens and operations, or more complex logic. You can define complex solutions using drag and drop flowcharting tools and wizards – the kind that you sometimes see used to teach kids programming, except much more powerful and flexible. And if you somehow aren’t able to perform the task at hand using the interactive tools, you can always write code in a Java-like language they call Apex.

And as the final kicker – almost everything you build can work on any type of mobile device with minimal added cost or effort.

It’s so insanely productive and effective that large numbers of citizen programmers have been turning to it to build all kinds of amazing solutions, without needing to turn to professionals at all.

Many of you reading this will dismiss it. You may argue that the Salesforce platform isn’t suitable for every type of application, or that the pricing model isn’t right for every type of application. And you’d be right – but so what? Can you name any platform that is right for every type of application?

To date, the Salesforce world of citizen programmers had just barely touched the elitist world of professional developers. Only a relatively small number of us play in both worlds. But there are two reasons why it is worth your while to learn about the Salesforce platform.

First, because like Visual Basic of old, when it comes to a wide array of business applications, it’s far more productive than anything else out there: And second, because unlike Visual Basic programmers of old, citizen programmers on the Salesforce platform make good money. Really good money. Seriously – a Salesforce administrator with basic certification can make a good living wage (and that’s without a college degree). The average senior Salesforce platform architect/developer is probably making more than you are.

Go to a Salesforce conference or user group meeting. You’ll see them – the citizen programmers. Many of them struggling to learn. Many of them creating custom solutions – some good and some truly awful. And you’ll see a handful of us – computer scientists, database experts, polyglot programmers. Serious developers, who’ve abandoned the elitist culture for that of the citizen programmer. We help teach and guide them. We come in to clean up the mess when they’ve built something that doesn’t work or is unstable. We have a lot of fun – the Salesforce platform offers its own set of unique challenges. We get paid ridiculously well for our services. And there aren’t nearly enough of us to go around.

So what are you waiting for?

Tags: ,


  • Rate
    [Total: 1    Average: 5/5]
  • Jose

    Absolutely right!
    I am one of the many Citizen Programmers out there.

    Salesforce has brought apps to the business level, Id say "real world" if I dare, since people like me (an ERP Admin and Jr DB turned Business Analyst and a SF Admin) are coding and learning, day by day but with a lot of enthusiasm and fun.

    I never went to University, so I do my study on a part time basis. I read books on Java, watch video tutorials, subscribe to forums etc. All it takes to grasp common programming practices and write proper code.

    I will never become a "guru".
    But hell, I get paid VERY well and I work (and can work) in top Fortune 500 companies who are in awe of Salesforce.


  • Sudipta Deb

    Absolutely true
    Very well said. Salesforce is the very demanding technology right now.

  • Krishan Malhotra

    Absolutely Correct
    I m also new to Sales Force and Apex . But I believe that one day I will conquer this complete Technology , All though this crap has taken me in depression many times .

    I believe in one thing I usually give many chances to people
    But Once I am done , I AM DONE!!!!!!!!1

  • Anonymous

    I agree with u krishan malhotra well said 🙂

  • Anupama H

    Well said Krishan Malhotra

  • Sanchit

    Nice article Dan. I’m always thankful to you for distributing the great knowledge you possess.

  • Robert young

    Be Vewwwy, Vewwwy Cawful
    Remember, it was citizen programmers, aka Wall Street/The City stock peddlers who crashed the world’s economy with their home grown Excel spreadsheet "programming". Once bitten, twice shy. Or, as my Momma used to say, "if you’re smart, you don’t let the kiddies near the sharp cutlery".

  • Rene

    Go on, fellow citizen
    Yeah, go on, your citizen programers. When I’m done fixing all your stuff you have screwed in various areas, I’ll come after your SalesForce tweaks and continue there. Thanks for keeping me in my job!

  • Ben Salins

    Dynamics CRM is already in this space.
    Microsoft might have retired VB, but the XRM framework of MS Dynamics CRM (2004-2013) does the exact same things that the author mentioned.
    Instead of APEX, the citizen programmer will need to be proficient in JAVASCRIPT.
    The entire concept of prototype-to-production is pretty much out-of-the-box.

    Sales Force might have found a worthy adversary in MS Dynamics after all.

  • Anonymous

    Its not a general language …
    Interesting articles, but PHP not a serious language? The fact that it’s for sales force also limits its usefulness as a general language, which basic was. But no doubt usefull if you use their technology!

  • Anonymous

    I wish
    I wish the same happens to my product and language, that it becomes citizen programmer friendly.

  • Anonymous

    Is Salesforce a new concept?
    Not in my mind, after 35 years of designing and helping developers develop applications to solve specific business problems. There will always be some company developers within Salesforce that have had to develop the esoteric cleaver stuff to make it easy for all the citizen programmers. There a lots of clever programmers who have tried to produce the same toolset in other apps and other companies (SAP?) that, dare I say it have started to fade as the consultancies fees get to high to justify the complexity of implementing a solution. Seems another wheel being invented as the rest of us retire to the golf and fishing. Good luck to Salesforce…

  • Anonymous

    Just like DataEase for dos in the 1980/90….
    DataEase was just so easy for simple applications, none of the “frameworks” for C# or Java have every come close to it for basic data entry and storage. Likewise for some reason since the move from Dos to Windows (and now the web), life has just got so much more complex, along with being more flexible. But a lot of simple applications don’t need the flexibility.

    I am always scared about having data and my code tied into a single hosted system and don’t like not being able to escape the walled garden when the need comes, but is can be so nice to be inside the protected walls of a good 4GL.

  • Anonymous

    At least they can’t say, “It doesn’t scale.”
    Heard that a million times about MS Access. Everyone doesn’t have the resources and it doesn’t always make sense to pay an expert right away. It’s when business users create something and then learn they need to rely on it for their business that it becomes valuable enough to bring in someone to fix and/or improve. Before that, there’s little business need.

  • Anonymous

    Hopefully this goes better than it did for VB
    I was a VB6 developer and the main memory I have of the whole VB versus IT department debate is the "our language is superior to yours". Eventually business would let IT take over a project. A year after agreed deadline the IT "superior product" would be delivered with half the functionality of the inferior VB project. Ten years later the "superior product" had not achieved the feature set of the software written on the "inferior product". IT really needs to start realizing computers are for making work more efficient. Still boggles my mind how many developers I run into that don’t understand that. As long as that is not understood there will be demand for citizen programmer IDEs. Eventually one of those IDEs will be good enough the business can sit there and say, why do we need these professional obstructionists.

    I’ll qualify what I’ve said that there are a lot of really good professional IT people who get it. There are just enough of the don’t get it crowd to be a real problem. In an organization of 1,000 it only takes 10 to really screw things up, especially if one of them has the title CIO.

  • A proper elitist

    VB6 != Apex
    I am one of the elitists who years ago coded in VB6 because it was just better than anything else for UIs. Today, I do C# and C++ like a good elitist should. But I don’t agree with your comparison, I think SF is more like Access apps from back then. In VB6, you could write excellent apps. In Access, not so much. OK, so SF is more like something in the middle, but the limitations are startling. And in VB6, everything short of proper threading was possible to do well. That is very far from true in SF, and I went to CloudForce for a full mind-numbing week of BS, so I know a little too.

    I remember Benioff laughing at Oracle CEO Larry Elison in his speech at CloudForce saying that "Ellison thinks the cloud is just servers on the Internet!" And 90% of the crowd of mindless drones laughed uncontrollably.

  • Anonymous

    Developers, Managers, Obstruction – and analysis / testing
    Is there a need for software that allows citizen programmers? YES! That should be obvious from all the "Excel solutions" out there.

    Is IT sometimes "obstructionist"? It depends on whether you think proper analysis, design and testing are important.

    Some users are able to design their own solutions, and those may even scale. These are usually the folks who are willing to become citizen programmers. However, in my reality these are few and far between (your reality may differ). The more likely scenario is a citizen programmer who is frustrated, comes up with a short-term work-around, and then that becomes a long-term solution that DOES NOT scale, and may in fact be giving incorrect results. Which they don’t realize because they don’t have the training to understand how to cross-check the results.

    Everyone is looking for a silver bullet, and we should know by now those don’t exist. The trick is to not shoot yourself in the foot (or other more important body parts) while looking for the silver.

    So is it "obstructionism", or is it Quality Assurance? Only time will tell.

    (The issue where half the features built by IT aren’t needed / used is a different issue that can be dealt with in the Agile framework using a continuous feedback mechanism.)

  • Clinton Gallagher @virtualCableTV @METROmilwaukee

    A rising tide floats all boats
    I lost a project developing an interactive kiosk for a very well known retailer because I did not know Java nor did I know how to develop Salesforce apps which required Salesforce data to build the kiosk screens and such.

    As a lowly C# .NET framework developer with extensive client-side skills and talents this announcement appeals to me.

  • Rene

    Go on, fellow citizen
    Yeah, go on, your citizen programers. When I’m done fixing all your stuff you have screwed in various areas, I’ll come after your SalesForce tweaks and continue there. Thanks for keeping me in my job!

  • Robert young

    re: Developers, Managers, Obstruction – and analysis / testing
    — Is there a need for software that allows citizen programmers? YES! That should be obvious from all the "Excel solutions" out there.

    It bears reminding: these "solutions" are exemplified by Your London Whale making a hash of the financial world. If there were meaningful sanctions against such citizen programmers’ screw ups? Fewer attempts to badly go where no IT coder has gone before.

  • Salesforce keeps adding new new things that it becomes difficult even for veterans to keep a track of and stay updated. Now we have Salesforce Einstein and lots of blogs about it but most of them are crap. I think this post explains the true meaning of Salesforce Einstein.

  • Hans Liss

    Great article! Unlike Visual Basic of old, you rarely run into dead ends when you try to build complex solutions in Salesforce. It really does work as a decent development environment even for a senior developer/architect, and there is lots of documentation and free training available. And like you say, there is room in the market for all skill levels.

  • Amit Jain

    Great article! Like the line “We come in to clean up the mess when they’ve built something that doesn’t work or is unstable” A line that describes real Salesforce Architect and they are only handful. This line describe my job role these days.