I'm a software developer and project manager. I've consulted on million dollar software projects for banks and stock exchanges and government institutions. Some successful, some not so much. And you know what? Just between you and me, for the longest time I would get this twinge of guilt, because I had no idea whether what we had built was actually right.
Don't get me wrong, I am a good developer. Perhaps not a great developer, but a reasonably competent one. I have ten years experience under my belt. I am proficient in over a dozen programming languages. I try to keep up with the latest technologies, but there are just too may innovations to keep track of. Web applications aren't like jigsaw puzzles unfortunately. There are always pieces left over.
You didn't use any AJAX? Oh too bad. That means every webpage in your application probably posts back to the server in response to every user-click on every button. No seamless, postback free client-to-server communications for you.
No JavaScript or Dynamic HTML? Then your user interface doesn't have any drag and drop , right click popup menus or client side validation.
Stayed away from Flash? Then you probably don't have any polished UI components like popup calendars, MDI child forms or animated webgrids.Let be honest. When we're doing a software project, (that we're being paid to do anyways), we get in and get out. It's hard enough to get a concrete specification, let alone start opening up a can of technology worms of your own accord. So we use what we're familiar with and that's all.
We definitely don't even consider using a technology from a vendor outside our area of expertise, even if you like the end results. Flash is a good example. Their stuff always looks pretty, but I have no idea or interest in learning how to get from A to B. Personally, I'm a .NET guy. And even just within the .NET arena, there are people who have filled entire textbooks with topics I know nothing about.
I've seen Google Suggest and Google Maps. They look great. No postbacks. Brilliant stuff. Sun Microsystems are also making a lot of noises about AJAX and Web 2.0, and Microsoft look as though they're headed the same way with ATLAS.
But really, who has the time to keep track of what every vendor is doing, learn their stuff, then apply it in practice? Not me.
Call me stupid, call me lazy. But I'm productive. And you know why? Because I use application generation tools, specifically CrunchyCode. The first thing I do after I get a spec is build my database schema, nothing fancy there. I love that these days schema design (relative to everything else in software design) isn't really up for debate. There is a fairly clear path there which makes it the ideal place to start. Nothing much has changed in relational database design in twenty years (thank goodness).
I love my CrunchyCode. I love it. Because without me lifting a damn finger, I get a dozen working applications in a few seconds. And not just the code that my team could have written themselves by hand. I get AJAX. I get Flash. I get .NET. I get Dynamic HTML. I get MSMQ. I get working applications, against my data, my database, using a whole swathe of technologies I didn't even know existed, let alone have the time to build up expertise in.
The software industry is perhaps unique in that there are always so many ways to solve a single problem. There are only so many finite ways to change a tyre, or even to replace a human heart. But writing a web based application? There are too many options to count.
So ASP.NET / SQL Server developers pay attention. Sure, you could probably hire a whole bunch of cheap labour from India to prototype applications for you. In fact, you can still do that and power to you, if it saves you money to head down that route.
But there's no excuse, none at all, for not letting CrunchyCode have a go at your database. Even if you choose, for whatever reason, not to use one line of the generated applications, it's pretty hard not to come out of the experience thinking, geez, that looked pretty cool, maybe I'll use that next time.
Using CrunchyCode allows you to try numerous different techniques against your own database, without manually coding anything.
You can assess the pros and cons of different technologies from different vendors. By building multiple applications simultaneously, without you (or your team) lifting a finger, you can pick the user interface and coding styles that best suit your dev team and business requirements. You can measure the performance impact of implementing different technologies on large recordsets, small recordsets, high volume, low volume, usage patterns and much more