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)
“Note that like other database stored procedures, Apex does not attempt to provide general support for rendering elements in the user interface.” Apex documentation
I have great respect for Dan Appleman and his achievements.
But, from an initial review of the Apex documentation, I can only conclude:
1. as an OO computing language in terms of syntax, and structure, it’s the same old stuff, like Java, like C# .NET, but very unlike VB.NET. Like the early C#, it emphasizes use of arrays. Note my bias: I perceive VB.NET as a monstrous overly-complex distortion of what VB was prior to .NET (and I was quite expert at, and made money iwth, using VB 5,6).
2. The IDE provided is something grafted onto Eclipse, not an original effort reflecting a large investment of resources of SalesForce.com.
3. The “chunking” of what you have to do to go from coding to deployment is awkward.
The Conference:
1. I’m happy that Dan Appleman enjoyed it and found in it, perhaps, he could re-create the role he once played in the VB world as the developers’ developer !
2, The keynote speech was worthy of a used-car salesman spiel.
3. What are speakers like Dr. Dean Ornish (health and diet), and cult-leader/cheerleader Tony Robbins doing as keynote speakers in a technical conference.
4. I’d like see independent verification of the number 90,000 mentioned here: it’s one thing have 90,000 turnstile entrance clicks: quite another to know how many people actually signed and paid to go the conference.
Apex is like VB6 ?:
1. Where’s the integrated drag-drop interface, and UI based setting of presentation parameters, and other aspects that control the behavior of GUI elements, and the auto-generation of Event template code from clicking on an Event name.
2. VB6, as you say, was a good layer of abstraction, for generating about any interface you could imagine, over an underlying Windows OS’s API’s which were themselves a layer of abstraction over OS low-level internals: where’s the parallel with Apex: it seems to me more an API for controlling a very specific cloud-based product which is database centric. It’s an add-on, not a development environment for general purpose use.
In any case, I hope Dan Appleman has a happy time, and a profitable time with Apex ! It’s data-centric model, and integration with cloud, and unit testing requirements, and claims to be “social” are very interesting.
By the way: nothing I saw on the SalesForce.com site showed me any reason to believe there’s something inherently “social” about its products, or Apex.
best wishes, Bill Woo
Lots to comment on here:
Apex documentation
1. It’s not about the Apex documentation. Remember how VB’s magic wasn’t in the Basic – it was in the amazing GUI tool and components that wired everything together – then you added some code to make things work. Same thing here – the magic is in the GUI environment – database, workflows, etc. The Apex is just the code that lets you turn all of that into an application. Look at the bigger picture.
2. The IDE is the best of a still primitive set of development tools. One reason I call it VB2/VB3 instead of VB6. Debugging and development on a cloud multitenanted system is something that hasn’t really been figured out yet.
3. Yep, deployment is still evolving. Again – it’s still very early.
Conference
1. Thanks
2. I don’t know – didn’t actually attend any of the keynotes other than the developer keynote.
3. Remember – a lot of attendees were sales/marketing folk. It’s still mostly a Salesforce conference. But the developer side is growing fast. A good friend of my swears by Tony Robbins though – I was thinking of attending but got caught up in the devzone.
4. I’m sure some of them were just free expo people, but it was a huge conference. Moscone is big, and they filled it and several nearby hotels as well.
Apex like VB6
1. I wasn’t trying to suggest that Force.com is the next generation in desktop, or even web application development. Rather, that it provides a level of abstraction that makes line of business applications shockingly easy. You can build a real application – with custom database objects, complex relationships, workflows, email notifications, and so on – without a line of code (just as with VB6 you could create Hello World without any code). Add code, and you can do most anything.
2. That used to be the case – but Force.com need not have anything to do with Salesforce (the standard objects it provides). It’s a platform where you can create database-centric applications yourself. Whether it is truly an environment for general purpose use today depends on your definition of general purpose. I’d say for a variety of reasons it is not yet as broad as it could be. But it’s certainly far beyond an application addin.
As for the social stuff – it’s not actually part of my argument. I see social as just another component on the platform that may or may not be important.
Anyway, thanks for your comments. I do encourage you to take another look, but this time as a platform for application development rather than a language for application development. Aside from that, the language itself is misleading – it looks a lot like any other OO language, but because of the nature of the platform you end up using surprisingly different design patterns. Habits brought from other languages can get you into trouble quickly (which is why I ended up writing a book on the topic).
Thanks again for the comments and kind words. Dan
Part of the magic of the VB environment, and why it was so productive, was that the environment abstracted (I would prefer the words “provided relief from”) all that tedious mucking about with the drudgery of compilation. In a sense, it was a load-and-go compiler. The environment encouraged experimentation and exploratory programming.
The VB.Net language itself is not that bad. True, some of the features are gone, but I can learn to live without them. Some things approach awful, for me ADO.Net bears little resemblance to its predecessor, espeically in usability. But Visual Studio stresses project organisation, building an executable, and all those things while all I wanted to do was to try out a simple example.
Both VB and VB.Net refreshingly lack the noisy syntax of some of the languages in vogue today. But Visual Studio lacks that ability for a programmer to get going, play around, experiment, and do stuff without worrying too much about what project it’s in or where it is on the disk etc. It’s also sad to see that after over 50 years of mainstream language development, the noisy C-based object oriented assembler languages are, for the moment, winning.
Do you know Lightswitch?
I’m somewhat familiar with Lightswitch. It’s an attempt to bring back that ease of use that I’m talking about. But I don’t see it providing that same leap in abstraction, nor approaching the levels of excitement and community support of Force.com.
Looking at Apex and things like it, I’m always left wondering why so many developers are enthralled with line-ending semicolons and braces everywhere. That is so INCREDIBLY ancient and just a general PITA. At least they didn’t make the language case sensitive.
I’m at a loss. VB was something you used to create a quick application to solve a particular task and then expanded it as others asked for it for their use, additional features, etc. Force.com looks like a service where you pay continuously to do even the smallest thing. And not a cheap service too for a small shop where you’d see VB. VB worked because it was cheap to try and free to deliver. Force.com is nothing like that.
Force.com is free to try and develop in. The delivery is the bigger issue. At some point Salesforce will have to decide if they want the platform to be purely an enterprise environment or want it to become a universal platform.
However note that VB was never “free” to deliver. There were deployment, update, support and maintenance costs. The person who got your application had a desktop or server that they maintained and paid for. Trust me – I was the architect behind VersionStamper – the product that addressed DLL-Hell issues – VB was NOT free to deploy:-)
With Force.com, the costs are shifted to different places – as one would expect in a shift from the desktop to cloud/mobile models. I expect and hope that exactly what those costs are and where they land is something that will evolve and improve.
I was a VB programmer for a long time. I did lot of applications in VB3. When vb4,5 and 6 come I see lots of differences I had to learn. Very good and simple as Dan says. I used lot of books and articles with pieces of vb6 codes. Now I retired myself and did some applications. A big problem they did not run anymore in windows after XP. Some did in XP compatibility mode. I did some courses in .NET and for me it is confusing and complex as said. I am sure I will not invest my time in .NET. It will be very good to have similar platforms to use in new versions of windows as I had with VB6. I miss it. I have to thanks Dan Appleman for the very good books and articles in magazines. (sorry my bad english).
Hey, just a quick note. Try a comment without entering your email address. Instead of a “Hey, you forgot your email address, you nitwit” error message, you get an ugly, uninformative, and misleading 500 error.
I hope FORCE.COM does not become the next MSACCESS. You know that most evil of all “end user development tools” (an oxymoron) where amateurs created maverick “little” “applications” off the IT radar that morphed into business critical applications that went south and the mess got dumped onto IT professionals to fix ASAP. You know … those types of “applications” where the original “developer” is long gone, there is nothing resembling requirements let alone any other supporting documentation, the underlying database is nearly unusable due to poor “design” and years of inconsistent data input and manipulation, and no one has freaking clue about how the POS works.
Regarding Force.com becoming the next MSAccess (and similar issues with VB)…. sorry, it’s already happening. That’s inevitable when you get large numbers of non-programmers programming. It’s one of the reasons that competent Force.com consultants and Apex developers are in such high demand.
” Russell Says:
September 26th, 2012 at 6:36 am
Looking at Apex and things like it, I’m always left wondering why so many developers are enthralled with line-ending semicolons and braces everywhere. That is so INCREDIBLY ancient and just a general PITA. At least they didn’t make the language case sensitive.
”
Those are clearly distinguishable statement delimiters that are independent of coding layout style. They actually add visual clarity and certainty as to the coders intent.
” It’s one of the reasons that competent Force.com consultants and Apex developers are in such high demand.”
I guess I should look on the bright side 😉
If Force.com is the new VB, then what is the new Delphi? That is, where is the platform that provides both rapid application development and low level access?
Ah – low level access. But low level access where? What does that mean in the context of cloud development? Mobile?
With its database-centricity and business-process orientation, it sounds more like the next dBASE III than the next VB.
“…when you get large numbers of non-programmers programming.”
Some people see problems. Others see opportunities.
A robust IDE would be needed for serious Apex dev. which will do a better job than Force.com IDE or SF Dev. console.
They do not even support full intelisense.
In Winter’13 an expection was to see a better integrated dev. tool /Force.com IDE plugin upgrade. But it is yet to be seen.
It is time-consuming to dev. largely in a notepad like tool.
There’s a lot of room for improvement in the developer tools (a lot) – and they do need to work on the IDE – the developer console is not going to handle serious development. But that’s not a big factor in this discussion. The VB coding IDE was primitive by today’s standards and it was wildly succesful. Veteran programmers can do work in a notepad like tool, and the non-programmers don’t know what they’re missing.
Hi,
Appreciate you writing this article. I can relate to your feelings, I remember 4 years ago when I started working with Drupal. I had this feeling, “this is like” the VB 6 of the web.
cheers,
Ben
Hi Dan,
I like your point of view. I am one of those non programmers who was using VBA and MSAccess successfully and now am trying to do the same with SFDC and Apex. Can you recommend a resource for beginners to learn how to write simple triggers and understand the basics of Apex?
Thanks,
Tamar.
That’s a good question. I don’t know offhand what the best resources are, or if there are any really good resources for beginners who want to learn Apex. I am working on additional resources to help programmers with experience in other languages to learn Apex, but it’s designed more for Java/C# developers than VBA/MSAccess developers.
Regarding “a resource for beginners to learn how to write simple triggers and understand the basics of Apex” try out the Apex Workbook found on the Force.com developer site, and explore the other workbooks as well.
Here’s a link to the workbook page:
http://wiki.developerforce.com/page/Force.com_workbook
And check out all the documentation here:
http://wiki.developerforce.com/page/Documentation
I have a soft spot for VB having started my programming career on VB4. Its an interesting point you make and it will be very interesting to see what direction force.com will take in future. Thanks for a thought provoking post!
Personally, in regard to resources for beginners, I’d suggest the book ‘Development with the Force.com Platform’. You can easily find it on Amazon at a decent price. It goes into basic knowledge as well as more complex issues (even though it is out-dated a little I believe). I am quite new to Salesforce.com and just beginning my development career (my current business is slowly getting some work for Salesforce solutions). I tend to find that the online material is either too vague, the examples are a tad too simple, or they rush through them without explaining it in great detail (when they do it is quite painful with the common use of the underscore). It is quite common when book material is much better than online material since when someone publishes a book in order to gain some profit, they tend to not publish crap.
I would suggest getting Dan’s book in regards to triggers but due to it being quite advanced, despite giving you an approach to triggers the correct way, I would not advice that.
In regards to the similarities to VB, I can see the similarities despite having only used it a long time ago (in school). I personally preferred C# though, since I favored C++. Having said that, it is hard for me to judge the Salesforce platform. I loathe it, feel a strong desire to embrace it, and have a grand desire to understand it.
Most of the issues I have are in the regards of its database. I am not entirely happy with it(actually that is a bit of an understatement). The IDE for it has quite a way to go. I was quite unhappy when I heard I had to go back to Eclipse – mainly because I favor Visual Studio a bit more.
On the upside, I thoroughly enjoy the limits and constraints the platform makes you consider when developing in Apex. It posses great challenge – a much welcomed challenge. Hopefully, in the near future I can really become better through experience. It also made some language choices that I am glad they adopted and took into consideration. Needless to say, I am excited to see what comes next, though I wish there was better written material on Apex aside from TWO books. Needless to say, Head First should get on the case.
Hi Dan,
I loved your recap of VB. Your description seems perfect. I’m one of those guys who transitioned to VB.Net. I like VB over C# (though I’m doing that now anyway as I learn Windows Store App development, since it seems to be more popular these days).
As an aside, I finally decided that I think I like VB better simply because I took typing in high school and VB is just way more productive for me — and case insensitivity. Even with intellisense, it ends up slowing me down just a touch, though people do things differently, so it could just be me.
Anyway, I’m just learning about Force.com today. This is how I found out about it: I suddenly just thought “I wonder what Dan Appleman does these days”… you made such a great impression on me years ago with your book “Visual Basic programming Guide to the Win32 API” and I hadn’t heard anything in a while, so I googled. So thanks for this article (and for the book). I plan to look into this.
Hi Dan,
I came to the same epiphany regarding Force.com about a year and a half ago. It seems REALLY obvious to me now and I have since focused my attention primarily towards Force.com.
I came out of college doing COBOL and VB was just ramping up. I ended up switching to VB, then ASP, then ASP.NET/C#, but I came to lose serious interest in .NET in recent years. I am having tons of fun with Force.com now and I feel energized by all the new developments. I REALLY love all that is possible with Heroku. To quote Don Robins, “It is like falling in love again”.
Love your writing and especially the energy and humbleness you bring to what you do.
Best,
Sara
Thanks – and Don’s right. Love the way you put it – “having tons of fun”.
There is a lot of negative reaction from the original VB6 community towards VB .NET (VB .NOT) since in 2014 the community is larger than before and growing.
Force.com has no chance to steal VB6 programmers (others have tried and it not worked), the main reason is primarily the name “force.com” … everyone expects the name “Visual Basic 6.0 phoenix”. Secondly, the product must run all previous VB6 projects … and the syntax must be the same … and so on.
Zulu – if you look at VB6 purely in the context of a language that is VB6, then you’re right. But, if you look at VB6 in terms of the reasons it was so successful – an environment that offers extraordinary productivity with a light learning curve to non-developers, then I stand by my comments – Force.com is, for a great many applications, as much more productive than VB6 as VB6 was to C++ at the time. If you dismiss it out of hand, you’re making the same mistake the C++ developers did then who dismissed VB6.
I almost forgot, this is an outstanding article on VB. However, no one resisted in the face of the great Visual Basic 6.0, not even its creator, Microsoft.
These may be interesting too: http://www.codeproject.com/Articles/710181/Visual-Basic-6-0-A-giant-more-powerful-than-ever
Wow. The original post was written almost 2 years ago, but I just now found it, and I actually got teary-eyed. I was one of those VB programmers that fell away with the introduction of .NET, but more because of timing than technology. Motherhood became my priority and I am not in the slightest embarrassed about that. As I re-entered the workforce, with my technology skills now obsolete, by sheer accident I started work at a non-profit that uses Salesforce. As my now 13-year-old daughter would say, “MIND BLOWN!” I agree – the magic is back. Thank you.