The problem isn't ASP.NET: it's probably the way you were taught how to use it. The Microsoft tools do so much crap that it's like being put into a room full of levers and knobs with cryptic labels on them. Hard to know where to start or how to make things work.
Sit down with somebody who is using one of the automated DALs (like NetTiers, NHibernate, CSLA, etc) and knows what the heck they are doing. You'll find it very intuitive and the speed of development can keep pace (or surpass, depending on the domain) any other kind of web development.
Now for the BUT part. BUT you have to be doing straight-forward business development. Stuff in the middle of the road. Writing a check. Checking your email. Posting a message.Viewing your box scores. Etc. If you want something like an animated dancing baby that does different dances depending on your current stock portfolio and can sing out your RSS feeds in different languages, you're back to basics, and all that abstraction is going to get in your way big time. Also, if you want to scale up to 100K users quickly you're going to be learning a lot more about tweaking IIS and ASP.NET than you probably wanted. But for a lot of stuff, it's just fine. Not everybody is writing the next YouTube, and you can't beat the libraries available to you over on the "dark" side.(grin)
"If you want something like an animated dancing baby that does different dances depending on your current stock portfolio and can sing out your RSS feeds in different languages..."
"Sit down with somebody who is using one of the automated DALs (like NetTiers, NHibernate, CSLA, etc) and knows what the heck they are doing. You'll find it very intuitive and the speed of development can keep pace (or surpass, depending on the domain) any other kind of web development."
Oh come on, this applies for ANY tool in ANY domain. This is non-information.
Most ASP.NET training sucks. Does that say it any better? It's not a matter of the lanugage or the platform, it's that the instruction and tools are lame. Certainly that isn't true for any platform, is it?
Me neither. I must have booted up Big Endian again. I hate it when I do that.
Take two programmers who are novices. Throw them into any two languages. If we use an automated DAL and a mentor-apprentice training paradigm in both languages, I can have the ASP.NET guy up and running and more productive faster than the other guy. <disclaim>for writing average run-of-the-mill web apps</disclaim>
I'm not sure that getting ASP.NET guy up and running and more productive faster is a laudable goal. Say productivity of ASP.NET guy is f(t) where t is time and productivity of <something-else> guy is g(t). I would submit that there exists some T where g(t) > f(t) for all t > T (t starts at 0, for simplicity.)
That is my stupid way of saying, who gives a crap how long stupid ASP.NET guy takes to get productive? In the long run, inevitably, someone else will be better.
"That is my stupid way of saying, who gives a crap how long stupid ASP.NET guy takes to get productive? In the long run, inevitably, someone else will be better."
I liked it better with the forumlas. (grin) Seriously -- that's a good point. But I don't think it is language-dependent. Might be. I don't know. From what I've seen languages and platforms are just new and interesting ways for programmers to shoot themselves in the foot. Good programming remains the same now as it was decades ago. That is, unless somebody has started using the force and I don't know about it.
You mean that subset of straightforward business development that Microsoft thinks ASP.NET is for. If you want to put subtotals in a grid of financial numbers, for example, you either have to jump through hoops or move it off to Microsoft Reporting Services or Crystal Reports.
There's a wide gap between where ASP.NET's usefulness ends and where the really fancy stuff begins.
And yes, you totally can beat the libraries available on the "Dark Side." You'd have to try hard not to.
"There's a wide gap between where ASP.NET's usefulness ends and where the really fancy stuff begins." -- yes. This is the frustration of ASP.NET programming _without_ the underlying HTML/JS/CSS/XML knowledge. It's like you can almost do everything you want, but not quite. The grid control, as you mention, does some totally sweet stuff right out of the box. But want subtotals? Time to learn about the IIS HTTP Pipeline.
It all boils down to what you are doing. Lots of shops can have 3 or 4 coders doing the mainline stuff and 1 guy who can do the tricky stuff. It's an effective use of lower-skilled programming resources.
I'd have to disagree with you on the libraries. While I'm sure there are some good libraries out there, when I'm plugged into VS I've got some kazillion or so things I can do without having to Google, link, recompile, or do squat. And I can easily make libraries to share with others. It depends on your needs. Since MS does a little bit of everything for everybody, the libraries are probably the broadest that are easily available.
Java libraries, CPAN, and the Unix/C universe of libraries are three examples. But you should only check them out if there's a library that does the specific thing you want.
Yeah, I really have to second this one. It's not just the UNIX/C universe, though -- it's the UNIX scripting universe. As a particular example, how do you tie your graphing software to your analysis software to your screen scraping software? You could try writing them all in Python -- or you could just use pipes and tie together GNU plot and wget with some custom filters in Python. It takes a few years to get confident with this stuff; but once you are, you will never write so little code :)
The problem isn't ASP.NET: it's probably the way you were taught how to use it. The Microsoft tools do so much crap that it's like being put into a room full of levers and knobs with cryptic labels on them. Hard to know where to start or how to make things work.
Sit down with somebody who is using one of the automated DALs (like NetTiers, NHibernate, CSLA, etc) and knows what the heck they are doing. You'll find it very intuitive and the speed of development can keep pace (or surpass, depending on the domain) any other kind of web development.
Now for the BUT part. BUT you have to be doing straight-forward business development. Stuff in the middle of the road. Writing a check. Checking your email. Posting a message.Viewing your box scores. Etc. If you want something like an animated dancing baby that does different dances depending on your current stock portfolio and can sing out your RSS feeds in different languages, you're back to basics, and all that abstraction is going to get in your way big time. Also, if you want to scale up to 100K users quickly you're going to be learning a lot more about tweaking IIS and ASP.NET than you probably wanted. But for a lot of stuff, it's just fine. Not everybody is writing the next YouTube, and you can't beat the libraries available to you over on the "dark" side.(grin)