Now Available

Cover for Advanced Apex Programming

ISBN: 9781936754106
332 Pages 6"x9" softcover
List price: $39.95

Online store

Buy on (US) (Australia) (Canada) (UK) (Brazil) (France) (Germany) (India) (Italy) (Japan) (Mexico) (Netherlands) (Spain)

Kindle Editions (US) (Australia) (Brazil) (France) (Germany) (India) (Italy) (Japan) (Mexico) (Netherlands) (Spain) (UK)

Barnes & Noble

Facebook is the next Visual Basic

I just came back from the Dreamforce conference with an epiphany – 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 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 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, 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, and the underlying language is called Apex. It was fun. It was magic. I was home.

(Cross posted to

10 comments to is the next Visual Basic

  • Dan,

    Love the book! I also agree with you. I was around back in the early days of VB as well. I came from the DOS programming background of Clipper, C and Assembler. The movement away from these single threaded apps couldn’t come fast enough, though I do remember pondering the concept of wait states and events back then. Clipper wouldn’t have known what to do with an ‘event’.

    Anyway, I think one reason for the success of Apex is how it is similar to existing languages. Anyone with a handle on VB/C#.NET, Java or even JavaScript can jump into Apex relatively easily. The move towards the platform aspect of, versus just a layer to build customizations on top of the CRM functionality, is what has given its recent exponential growth in applications. For me, understanding the overall application, not just the platform dev languages, is a key to being successful. However, that’s because I tend to focus more on the CRM solution versus building cool apps that run on the platform; at least for now.

    Microsoft’s community was a big part of the VB success back then. I know that Clipper had a strong community back then as well, even in the days before the Internet. We had events such as PC Expo where vendors like Microsoft and Nantucket (pre-CA purchase) would have a presence and developers could network. These days we gather at events like Dreamforce, Cloudforce, JavaWorld, etc. The openness of the Internet and the migration towards open source software and code sharing such as Git, remove the barriers for many new developers. They can just download a free IDE, sign up for a free platform account, download free sample code. 20+ years ago that never could have happened – not that BBS’s and CompuServ didn’t try to fill that need.

    Keep up the great work!

  • Paul Robinson


    I did not know anything about this platform but I get your newsletter and have alot of respect for you. Is this a viable platform to build a web based application on that is used by thousands of customers? I/we develop in the .NET world. Does this reduced development time significantly using this platform?

    Can these applications have nothing to do with Salesforce?


    • Dan

      Hi Paul:

      Without knowing any details about what you are doing, I can’t say if it is a viable platform for your particular application, but it is absolutely a viable platform for web applications for thousands of customers. The technology isn’t really the issue – it’s the business model. You’ll need to research the various licensing and business models supported to see if it works for your scenario.
      In terms of the development time, again, it’s very dependent on what you are actually doing. A great deal of the “plumbing” becomes much easier, but it depends on the features you need to implement. So, depending on your application it could be a huge reduction, or possibly an increase (especially if you factor in the learning curve).
      Keep in mind that you’re not just talking about development time – but about infrastructure. includes all of the cloud-based infrastructure, so you don’t have to worry about servers, managing VM instances, etc.
      The application can have nothing at all to do with Salesforce. Think of Salesforce CRM as one of many applications that run on the platform.
      You might want to check out my course on Pluralsight ( ) – especially the first module – it’s designed for .NET/Java developers who are considering or migrating to

  • Dan:

    This is good news but I am still looking for a replacement for my main development tool VB6. I started back with Basic80 for CPM all the way to VB6. I used to write glue code in C and C++ to get to the Windows API and other DLLs that are available to me but that all ended when your API book came out and VB started to use long integers for pointers. I code strictly in VB6 now and have been doing so since it’s first release.

    I work in the industrial control market and my main (SCADA) app contains four modules. Three of them are ActiveX .EXE servers that run in the background and one main rendering engine. One of the ActiveX .EXE servers contains 4 purchased ActiveX components (and one I wrote myself) for communicating to industrial networks. The main rendering engine has six purchased graphical ActiveX components. Nothing I do is connected to the web, in fact all of my customers are deathly afraid of connecting their machines to the web and for good reason.

    Am I the only one who still writes apps that have nothing to do with the web? I need a rapid development environment that compiles to fast efficient code, has a good selection of graphical components that I can update in real-time, and component development tools so I can rewrite those communication components.

    Is there anything out there that is better at all of that than VB6?

  • Hi Dan

    It was pleasure reading your views. As per me not only .net or java even peoplesoft, siebel folks are migrating to It is a great exciting period for

  • […] concept, of aPaaS being the catalyst for massive democratization, was well articulated in a recent post that went out on a significant limb by saying that “ is the next Visual Basic”. Rather […]

  • […] concept, of aPaaS being the catalyst for massive democratization, was well articulated in a recent post that went out on a significant limb by saying that “ is the next Visual Basic”. Rather […]

  • Patrick

    You hit the nail on the head! I’m just sorry I missed seeing you at Dreamforce! Keep on writing and educating; we DEFINITELY appreciate it.

Leave a Reply




You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>