Dan Appleman: Kibitzing and Commentary

My personal blog

I just came back from the Dreamforce conference with an epiphany – Force.com is the next Visual Basic. Some less experienced software developers might think that’s an insult, but those of us who have been around know that it’s not merely a compliment – it’s an observation that, if true, represents a potential tectonic shift to our industry.
To understand why, I need to take you back over 20 years.
When Visual Basic 1.0 came out (I participated in the original beta program), the reactions to the product fell into three categories:

  • Most professional C++ programmers dismissed it. VB was a “toy language” or a “glue language” for components – not for serious software development.
  • Increasing number of software engineers embraced the language because, to put it simply, when it came to desktop applications you could be an order of magnitude more productive in VB than in C++. It may not have had the stature and features of a “real” professional language, but it sure was profitable to work in it.
  • VB was easy enough for anyone to use, so everyone did. Doctors, lawyers, students – millions of VB developers sprang up out of nowhere and wrote a lot of code. Much of it was very bad code, but that’s what happens when a bunch of amateurs get in the game. Entire book, magazine and training industries grew up to help them get better, and many of them did and built entire careers around the platform.

By the time VB6 came around, it was the most popular software development language and platform in the world. Simply because it was easy, and it was productive.
Why was it productive? Because VB put an abstraction layer over the Windows API that was infinitely easier to use than coding to the native API or other available frameworks such as MFC or ATL. You couldn’t do everything in VB6, but you could do most of what you needed, and could call the API directly if you really needed to. Having a rich set of available components to purchase didn’t hurt either.
Microsoft did a lot of things right building the VB community. They had great developer and ISV relations. They supported several conferences. There were books, documentation, whitepapers and so on. They really set the standard on how to build a platform.
Then they created the .NET framework.
There was a lot of negative reaction from the original VB6 community towards VB .NET, some calling it “VB .NOT” or VB.Fred (coined by Bill Vaughn). Some programmers made the transition. Some switched to C#. But two things were clear. First, VB .NET was indeed a powerful, serious, professional language and platform for software developers. Personally, I love it, and still use it all the time. But it was equally clear that VB .NET is not easy. In fact, the entire .NET framework is robust, powerful, sophisticated and complex. It’s a great platform for software developers, but is it a platform that makes it easy for non-programmers to write line of business applications? Not even close.
Both VB .NET and C# are native languages to the .NET framework – the Windows API of today’s software. Missing was the magic of the original VB – that layer of abstraction that made it easy for anyone to write software.
I’ve been searching for that magic for a long time. I kept waiting for it to appear out of nowhere the way VB 1.0 did. I sure didn’t expect it to sneak up on me from behind.

I wrote my first Apex trigger about 5 years ago to help out a Salesforce consultant. At the time Apex was really not much more than a scripting language for the Salesforce.com CRM application. It was just one of many technologies of which I had a working knowledge. As time went on, I spent more and more time on it, recently working with some brilliant marketing folk at Full Circle CRM to develop a major application that is essentially the Holy Grail for marketing performance management and analytics. I even wrote a book on advanced Apex programming to help other developers learn how to write applications on the platform. I knew that Salesforce had started calling what they had a “platform”, but to some degree I attributed that to marketing hype – after all, everybody has a “platform” these days.
It was only at Dreamforce that the pieces truly fell into place. And I’m not talking about the entire 90,000 person strong Dreamforce conference. Many of those people are sales and marketing people – I don’t even speak their language. I’m talking about the Developer Zone that filled all of Moscone West. That’s where I finally had a chance to really talk to people, and sense the passion and excitement in the community. Here’s what I saw:

  • A web based GUI environment that provides a high level of abstraction for developing real applications that seamlessly integrate core features like database, email, reporting, the web, chat and mobile.
  • An environment that lets you do a great deal without code, but provides the language and “hooks” that allow serious programmers to go much farther.
  • A flood of non-programmers who are using the environment to solve real problems, and who are stumbling into actual programming.
  • Lots of truly awful code being written, so there’s a huge need for training and a thirst for knowledge on how to do things correctly.
  • A language and platform that doesn’t seem to get much respect from the “real” programmers doing Java, C# or other languages, even though the demand (and pay) for Force.com and Apex programmers is huge.

After speaking, attending sessions, and talking to the consultants and the Salesforce team, I realized that I had entered a constant state of Déjà vu.  There was excitement. There was community. There was technology. There was productivity. There was fun. There was magic. It was just like the early days in the VB community.
In a sense, it’s not surprising that it took me this long to realize it. There’s so much noise and marketing positioning in our industry that it’s hard to filter out the reality. Also, Force.com isn’t the mature VB6 that was wildly popular – it’s still early, maybe equivalent to VB2 or VB3, and they have a lot of work to do. There are still roadblocks to truly widespread adoption of the platform. But the signs are present.
Quite a few people came up to me during the conference and expressed surprise to see me there, and even greater surprise to see I’d written a book on Apex programming (at least they were polite enough not to express surprise that I’m still around – I’m not that old!)
But now that I think about it, it’s not surprising at all that I was at Dreamforce. My favorite times during my career were being part of the Visual Basic community – developing code and components, and writing books and articles to help self-taught programmers to become great developers. When that went away, so did a lot of the fun, and I drifted to other interests. But I always missed the magic.
I didn’t know what to expect at my first Dreamforce. But what I did not expect was that I would find my old friend Visual Basic (or rather, that it would find me). Only this time, it goes by the name of Force.com, and the underlying language is called Apex. It was fun. It was magic. I was home.
(Cross posted to AdvancedApex.com)