The Holy Grail of Software

I was reading Business 2.0 yesterday and I read Om Malik’s editorial on a bunch of new businesses that let you roll your own app without any programming involved (Coghead, Teqlo, Dabble DB, BEA, and QEDWiki are the ones he mentions).  Although he seems to be pretty hyped about them, I don’t think they’ll fly.  Let me give you my programmer’s perspective on this real quick.

There are a few stages in a programmer’s career.  They go something like this:

  1. Competence
  2. Blind enthusiasm
  3. Enlightenment
  4. Blind enthusiasm

When you first start programming, you work in the real world for a while until you’re finally competent.  You can figure out how to do the things you need to do.  I believe this is the desired output for these apps, the end result is to duplicate what a programmer at this stage is capable of.

After a while, you realize that programming doesn’t really place any rules on you, you decide how the software works and you decide how it should behave.  You also realize that software can be written to be dynamic, which means that absolutely nothing has to be hard-coded!  That means that theoretically, you can make one application that will work for EVERYTHING, and never have to program again!  And then you can just sell it and make a million bucks!  The Holy Grail of Software!

Holygrail

I would guess that every developer out there has this exact same idea at one point in their career.  I know I’ve had it myself multiple times, and all of the programmers I know had this idea too.  And in fact I even wrote a couple of apps that did it pretty well for specific purposes.  I’m guessing that this is where these apps originated.  (Although some seem to be focused more on creating mashups than full-fledged applications, which is a perfectly good use for them.)

Then you reach enlightenment.  This is actually pretty discouraging, because what happens is once you start coding all this cool stuff you dig a little deeper and, whoa, hang one, there’s a whole other layer to this onion that you’ve never seen before!  What’s all this stuff about transactions, contracts, standards, redundancy, and services?  You never needed any of that stuff before, and your apps worked just fine.  It turns out that if you want to write an application that actually gets used a lot, scales well with that use, integrates with other systems, and meet complex business requirements, you need an almost completely different skillset.

You also realize that your initial thoughts to create the Last Application Anyone Would Ever Need were pretty misguided.  Once you’ve been involved in actual development for long enough, you know that there’s just no way to write an application that will meet every need out there.  It’s just not possible.  Your user interface won’t work for everyone, or the logic won’t work for everyone, or it won’t be able to handle the custom business rules, or it won’t be able to integrate with the custom systems you have, or it will need to work differently on the second Tuesday of October and you didn’t design it for that, or all of the above at once if you’re really unlucky.  In fact, there are massive systems called WebSphere and BizTalk that specialize in making complex workflows function and fitting systems together.  The likelihood of rolling all of that into one single application is practically nil.  So you are enlightened, but not particularly happy about.  This is why those apps will fail.

Now I don’t know if everyone else goes through this process, it’s just my guess.  I’ve seen other people that stop there and just resign to custom-writing each individual application.  But I actually went on to reach another stage of blind ambition which is where I’m at now (well, I hope it’s not blind, but that’s kinda beside the point).  I finally feel like I’ve absorbed that inner layer of the onion.  The Last Application Anyone Will Ever Need still seems like a dumb idea to me, which is why I don’t like these companies, but now I have a different Holy Grail.

I don’t think one application should run everything, but I do think that they can all work together.  I think that in the mess that is the semantic Web there are bits and pieces that can actually work together to be a framework that a standardized application infrastructure can sit on top of.  Although I don’t think that it’s possible to write one application and never have to write anything ever again, I DO think it’s possible to write the core functionality of certain pieces of software so that you never have to write CERTAIN PARTS again.  Think about what SalesForce is doing with AppExchange:  they’ve created an API that everyone who uses SalesForce can use as the core of their application, and they don’t have to write those pieces over again.  It’s brilliant.  However, I’m not comfortable letting all my data live inside of SalesForce’s data centers, and I don’t have enough any access to the core AppExchange code base if I need to customize it in some really funky way.  It also severely limits your market if you’re trying to build software for the general public.

So here it is, my new Holy Grail of Software:  A distributed application infrastructure that sits on top of the Internet as its back-end database.  If you read between the lines quite a few of my posts recently have been me thinking out loud about it.  And it’s really been quite a fun exercise to try to figure out how it should work, I think it’s very doable and actually not very far down the road.

And by the way, don’t you think that if these apps really turned out software that was really good at what it did they would just sell the end product outright and churn out one fantastic app after another until they were the only software company left?

Share and Enjoy:
  • Print
  • Digg
  • Facebook
  • Google Bookmarks
  • HackerNews
  • Reddit
  • http://www.coghead.com Paul McNamara

    Jason, great article. At Coghead, we don't intend to create one application that can do everything. Rather, we have created an environment that allows people to create very rapidly a specific class of applications. If you want an app that does computational fluid dynamics, Coghead's not the right environment. Rather, we're aimed at people who need a business app that has forms, a back-end database and business logic. And, we auto generate a web service API for every app you create. So you can integrate with other apps using the Internet as a backbone.

  • http://www.teqlo.com Jeff Nolan

    Jason,
    I'll echo what Paul wrote and add that this is an evolution of what has been happening on the desktop for years, Excel macros have been used to create a wide range of situational applications and Apple is taking the concept of programming the desktop to a new level with Automator. At Teqlo we are putting forward a "programming the internet" concept that doesn't require programming, and equally important to our belief system is the notion of publishing your apps and then inviting your friends and colleagues to use them. Assemble, publish, invite. If you want to write the next ERP package then we're not the right environment for you, but if you want to do a mashup or assemble your own dispatch application or project management or expense report workflow or event management app, then try us.

  • Anonymous

    How are project management different from ERP from technical aspects. Both need persistance, transactions, web architecture, security,auditing logging. Is there anything ERP needs that is not requireed for project management like software

  • http://www.capehenrytech.com David Whitehurst

    Jason:

    We gotta talk. I'm 45 and I went independent this year. SSO has been a grail for me. I did it for VW/Audi. I did a different one for Kia. I did a different one for Honda and Acura/ and for Honda/Acura Canada as well. I worked for a third party customer care company. Anyhow, I'm trying to get a couple open source things off the ground and we're looking at CAS SSO (came from Yale). And, this guy answers me today, yes you can use CAS for SSO as long as both applications share the same user tables. … doh … screech … oh boy. Now, as I work on my true grail (a perfect euphoric dev collaboration suite) I have to make apps that all share the same user and role tables. Tell us more about the internet foundation for these applications you spoke of.

    David

  • http://www.dissertationwriting-help.com/ custom dissertation

    Excellent Blog every one can get lots of information for any topics from this blog nice work keep it up.

    thanks