I think that's the web. The development that used to happen in VB6 & Delphi simply has migrated there, desktop apps from that segment are dead.
I think that's the web. The development that used to happen in VB6 & Delphi simply has migrated there, desktop apps from that segment are dead.
Think about that for a moment: We've regressed from VB.
The usual tradeoff is: easy to write, hard to extend and maintain. But the web is hard to write and hard to extend/maintain.
We have some of the smartest people in the world in our industry, and evidently we're all idiots.
I keep thinking back to an Access application that I threw together in a couple of days, back in the 90s for managing a team of about 40 technicians. It was being used for task tracking, and had some wiki-like features as well. When I started that project I knew nothing about Access or VB, and yet in two days I had a bunch of forms and tables that allowed managers to get a quick feel for what their staff were up to. The thing ran over the LAN, and could handle 10 simultaneous connections without any dramas. If I were to try the same thing in the web world, I might lose myself in getting just one table view working correctly for a week. Getting an http server configured and up and running, and talking to a db server would be at least two days. And there would be many potential roadblocks just waiting to trip me up along the way.
These days, rather than dealing with that mess, many companies just go for an off-the-shelf hosted solution that sort of fits their needs, such as Basecamp, or Jira, or Igloo. The existence of these products is a sign that we've gone off in the wrong direction somewhere - the sorts of products they make are very similar to that online apps you could make with Access 20 years ago.
Salesforce has made a huge business out of business apps in the same category as whatever would have been cobbled together in the basement with Access by some 'IT guy' 20 years ago. The fact that this is the case is a reflection of the fact that people prefer the hosted, turnkey, polished experience that web-based SaaS provides over some half-baked internal app.
Well, you might accept that I'm "idealizing" Access because, you know, I had a decent experience with it 20 years ago, as described in my first comment. No need to go searching for mysterious ulterior motives when they're explained in the post!
For what it's worth, I do remember significant flaws in Access. For one thing, it was an absolute pain when we wanted to modify the database - we had to get everyone to log off, and then upgrade all of the clients at once. This is one of those problems that the web solves elegantly. Also, Access had major issues with concurrent users. Performance fell off a cliff, and from memory, certain operations were unsafe (I think you could set up a SQLServer which would address the concurrency problems, but we never bothered).
But these days we have better options available to us - app stores fix the updating problem, without introducing the css + html + javascript mess. We have decent, free web servers, and web application frameworks such as Django and Rails that make writing the server side code that drives the RESTful APIs used by the client relatively easy. But what we don't have is:
a) an easy way to create a server (this needs to be as easy as sharing an Excel spreadsheet) b) a coherent development environment from client to server code. Something that allowed you to write apps purely in Javascript (no css or html) with a GUI editor, and which also let you write the server code in node.js would be a close match to what I'm thinking of. Bonus points if most of the node.js code is derived from the client-side code, so that the novice programmer doesn't need to be aware that a server even exists, it just works.
The problem is, that's the kind of application that's really hard to write. It's big, an IDE in fact, and really Microsoft is the only game in town for making that sort of stuff. But they won't write Android / iOS / Mac clients, so it doesn't happen.
At our company, we have an Access "thing" (it's not even an application, really) for generating listings of the phone numbers and birthdays of all the employees.
Recently, for no apparent reason, it stopped working. I consider myself moderately competent at getting up to speed with new development tools and reading myself into other people's code if I have to, but Access somehow is completely incomprehensible to me.
Maybe I was just missing something fundamental, but I found Access hugely frustrating and not intuitive at all. The general idea behind it seems actually kind of good, but the Microsoft chose to implement it is not exactly optimal. Also, as usual for MS, the complete lack of a manual made me want to strangle somebody. So, yeah, I totally agree with your statement. :)
No, its a sign that the web has enabled easier application delivery with greater reach at lower cost; Access is still around, after all, and most businesses have it right at hand, so if the alternatives were worse, they'd still be using it.
I think the most important issues with the web that are not already being addressed (and winning) are a statically typed Javascript replacement and a way to locally isolate the effect of CSS in large applications with many modules (web components don't solve this correctly).
The web is distributed and distributed is hard. The problem is that it is also what people want. We haven't regressed from VB6 -- we've advanced, but the demands of the market may have gotten more complicated faster than the popular tools have advanced in their ability to simplify them.
I know once I've tested it on one machine it's going to work fine on all the other ones. It's the most stable API and platform I've ever seen. Code we wrote for Windows NT4 works fine on Windows 8.1 and behaves exactly the same.
Compare that to our poor web guy who spends at least 50% of his time trying to get everything working on a selection of browsers going from IE6 to the latest Chrome while necking red bull, using the F word a lot, smoking and going bright purple.
No, beginners don't want to layout things in CSS, a declarative XML language, or any other 'text' way. They want to drag and drop components with the sort of ease of use that Visual Studio or Interface Builder offer. And they want a language coupled with that which features the simplicity of Python.
I too did some of my first serious programming in a VB like language in the 90s (RealBasic for Mac). I now develop beginner training materials in web development as a side gig and while we have fun - it's definitely not as satisfying as laying out a form in VB and having a real GUI in a matter of minutes that "Just Works."
I agree with you, I think the bigger picture here is how well the IDE, GUI, and code hang together as a complete unit; focusing on any in isolation (e.g. "VB sucks, use Python") misses the point.
Working in SF in earlier-stage companies, I've never seen anything even close to the rigor with which Microsoft approached testing. Definitely consider working there if you want to learn from some of the best QA/QE/verification engineers in the industry.
Perhaps automated systems have become much better since Joel wrote this, but something from the talk I really liked -
"The old testers at Microsoft checked lots of things: they checked if fonts were consistent and legible, they checked that the location of controls on dialog boxes was reasonable and neatly aligned, they checked whether the screen flickered when you did things, they looked at how the UI flowed, they considered how easy the software was to use, how consistent the wording was, they worried about performance, they checked the spelling and grammar of all the error messages, and they spent a lot of time making sure that the user interface was consistent from one part of the product to another, because a consistent user interface is easier to use than an inconsistent one."
The zealotry in this field is getting close to unsustainable in my opinion. Companies thought the proliferation of ms access apps was bad, wait until they try to do something with the proliferation of overarchitected web apps based on a wide assortment of fashionable at the time but now unpopular languages and frameworks that hardly anyone has experience on and is most certainly not interested in working on.
In the old days, you could learn C or SQL and for every hour of learning get a hundred or a thousand hours of real use, and you have at least a fighting chance of picking up some other guys code, or vice versa.
A lot of the internal desktop LOB application development that used to happen in VB or Delphi still is done on the desktop, but happens in Excel with VBScript. That trend was very much visible when VB (pre-VB.NET) was still current.