Is ASP.NET too easy?

Feb 12, 2007

Some time ago, I wrote a post called “Is ASP.NET too difficult?” and I strongly believe that it is. Yet at the same time it cause problems by making it too easy to do relative advanced programming. It doesn’t seem to be a problem. On the contrary it appears to be a good thing, but an important thing is missing.

Step-by-step learning

Before ASP.NET when we used PHP and ASP, there was a certain step-by-step learning curve that everybody followed. You started out by learning basic HTML and then moved on to PHP/ASP. When you built your first projects it was time to learn about how to implement databases into them. When you mastered that, you were pretty good at building dynamic websites. This was the way that many of us took and it made us understand the platform before proceeding to more advanced features.

In ASP.NET there is no step-by-step learning in the old sense, because everything has become very easy. Database development has never been easier with all the wizards and easy-to-use ADO.NET features that handle it for you. It is more likely for an ASP.NET newbie to building database and AJAX driven websites before learning basic HTML or JavaScript.

From good to great

Still, that may not sound like a problem but I beg to defer. Because the previously difficult things have become very easy, it is no longer necessary to have a basic understanding of the request/response model of a web server or be concerned about how garbage collection works. You can still build good stuff.

From building good stuff to create great solutions is a huge leap. That will be much more difficult to be a great developer if you started out using all the wizards and other cheap tricks because you have to learn it all backwards. You really have to want it to begin reading books about basic programming techniques when you’ve just created a cool AJAX website without that knowledge.

Microsoft isn’t helping

This tendency to learn programming backwards is bad. The advantages are short lived and in the end, you have to pay the price. It seems that Microsoft is doing much to promote this backward learning by always doing their demos using the designer in Visual Studio. “Just drag n’ drop controls to your web page and it’s all great”. The designer cannot, I repeat cannot let you utilize the whole ASP.NET platform and all its features – far from it.

If you get stuck in the designer, you get stuck as a developer. I have never seen a professional web developer use the designer for other than personal hobby projects and there is a reason for that. It hides many decisions from you and leave them to the controls and wizards. The fewer decisions you are forced to make, the easier it becomes but as stated above, it comes at a price.

Make the decisions

This is the hard part. Before you are capable of making decisions based on your experience level, you have to know what the alternatives are. Otherwise it wouldn’t be a decision at all. Learn about the alternatives instead of leaving it to Visual Studio to decide. As Rocky Lhotka once said; developers are paid to think. What’s left afterward is code. Wise words.

Not all programmers want to take it further than as a hobby and that is perfectly fine. Just consider the consequences before taking the easy way. My advice is to throw away the designer and start writing code.

* Only $4.95/month ASP.NET & Windows 2008 + IIS 7 Hosting! FREE SQL Included

Comments (13) -

 matt
matt
2/12/2007 10:19:37 PM #

man you have been on fire lately.  great post.  i agree.

 ReneMT
ReneMT
2/13/2007 5:52:10 AM #

I also fully agree. For let's call them "non-insiders" it is really impressive when you see on a kind of presentation event like the "TechTalk" for example how fast and simple a complex, data-based web application can be assembled by using drag'n'drop and this stuff. But if you sit in front of your development station afterwards and mess around with performance problems, layout issues, JavaScript-based client functionality difficulties and strange database errors you will recognize quite soon that a lot more of knowledge is necessary to tie it all together in a satisfying way.

Many customers who made a decision for ASP.NET as the platform for their project often ask "Why does the development of my application last such a long time? I thought ASP.NET was the most-productive, time-saving solution to build it!?" Well - may be. But it's like everywhere in our business: The devil's in the details. And until you can deal with him it's a long way Wink

 Sean
Sean
2/13/2007 9:55:07 AM #

Nothing can be too easy, but I'm not going to say that I disagree with you.  I've found that ASP.NET has a way of naturally weeding out those that aren't up to par, which, in my opinion, is a good thing.  Like I'm sure you have, I've come across the typical newbie that refuses to learn the basics, but they soon realize that completing their goal is impossible without some very crucial background knowledge.

I'm mostly old fashioned in the skill set I prefer my developers to possess.  For example, I don't know of any developer that I consider to be good that doesn't have a fairly strong understanding of the C language.  In fact, I'll even take it a step further and say that those that have a decent background in Assembly are even better.  That is, of course, if those developers were able to switch gears from the procedural syntax that they became accustomed to in order to learn strong OOP techniques.

I feel that to be good in any language that a solid understanding of the basics is absolutely critical.  But like I said before, in my experience, ASP.NET has had a natural ability to weed out those that were not up to the demand that ASP.NET required.  They'll be able to drop a few controls on a web form and (if they understand at least some SQL) bind it to some DataSource to display results; but, as you've already argued, as soon as it comes time to do something that the IDE doesn't do for them automatically, they'll hit a brick wall and either quit entirely, or be forced to learn more of the basics.

 Donn FElker
Donn FElker
2/13/2007 12:10:03 PM #

"I have never seen a professional web developer use the designer for other than personal hobby projects and there is a reason for that."

I wish I could have all of the developers I work with read this line and understand it the way you and I understand it.

I work with "Professional Web Developers" and they LIVE in the designer. If they have to view the markup they are in deep trouble. The thought of CSS scares the crap out of them and the thought of actually having to write JavaScript by hand is a frightening ordeal for them to go through. Yet they turn-and-burn applications everyday. These apps are "good" because they get the job done, but thats the only thing they are good for. There is no n-layer architecture, no SOA, nothing at all. String literals are littered, connection strings riddled throughout the application, and they see NO PROBLEM doing this.

I think the worst part bout all of this is that one of the developers even has his MCSD certification. I've discussed things with him on a daily basis about proper and more advanced ways to do things, yet, they choose to do it the "easy" way because (and this is directly out of their mouths) "Microsoft made it this easy, why shouldnt I do it this way? The other way is too hard, it takes longer and I dont like things that are hard."

Is ASP.NET too easy? Yes. It is. Its easy for developers to do the wrong thing.

Its one thing to create an application that is for a single use. That can be dirty, nasty, and well, ugly code. But if its an application an enterprise is going to use, it needs to be thought out. Unfortunately, MS does not enforce "thinking things through". The marketing department does a great job of saying "look, here's what we can do in 5 minutes! Our app is done!" Maybe, correct. But what about the advanced features?

You'll never see MS attempt to give an easy solution to a complex problem, such as "How to create a search engine in 10 minutes". Nope, sorry, it wont happen, because topics such as that, are advanced in nature, they require thought and in depth knowledge of systems.

So, Mads, yes, I agree, ASP.NET is too easy (in the context in which we are discussing it here).

 Donn FElker
Donn FElker
2/13/2007 12:12:12 PM #

Quoting Sean -
"For example, I don't know of any developer that I consider to be good that doesn't have a fairly strong understanding of the C language. In fact, I'll even take it a step further and say that those that have a decent background in Assembly are even better. That is, of course, if those developers were able to switch gears from the procedural syntax that they became accustomed to in order to learn strong OOP techniques. "

I agree with this IIF they can make the transition. One developer I work with worked with C, C++ and Assembly for 12 years before becoming a .NET Programmer. They still do not understand basic Markup, basic SQL, and OO Principles and they refuse to learn.

I do agree, its an "IIF" statement in this case. If and only if.

Artur Karazniewicz
Artur Karazniewicz
2/13/2007 2:04:27 PM #

I've never used MS .NET nor ASP.NET for more than just to play to with it a little. I'm long time Unix Developer and used to use all that fancy stuff starting from CGI era to JSF, for last 10 years I, almost exclusively develop in Java. I always wondered who the hell use stuff Visual only stuff to develop *real* Web applications (don't get me wrong I don't say that there is impossible to do do real Web application is VS, definitelly it is). I participated in hundred of projects, most of them where huge corporate apps (mostly online Bank transactional systems, corporate CMSs etc.). I've Never, i repeat never  seen single one really big Web application done using Visual tools (it doesn't matter if its VS.NET, Sun JavaCreator/whatever). Simply, for me it is not possible. There are thousands of reasons for this but the very first is that using this fancy tool, while at beginning seems to be appealing, at the least expecting time this visual tool will fight You back, and will hit You with sheet - when You will do something different (different in this context means 'something that given tool vendor didn't think about'). The funny thing also is that, in most cases there are clear separated roles in Web project - backend developer and Web designer. They usually use different tools - and VS.NET/whatever with all this fancy stuff is not what Web designeres use. They usually doesn't use Visual tools at all, they do use, actully, text editors, Web browsers, Web debuggers and all that stuff. Somtimes (actually in most cases) You have to fight problems to bare metal - especially if You're ISV. You have to do Your layout pixel-accurate, for different Browsers etc.

Is it only me who had no luck with all that Visual tools and, always, evetually end-up just coding? It's why I like java MVC - especially WebWork.
Ok it's not visual, It hasn't all that fancy Wizards but when it comes to do real thing I can do anything. Simple things, probably are not as simple like as in Visual tools. But who, actually, is doing simple thing nowadays?

C.Batt
C.Batt
2/13/2007 10:09:00 PM #

Great post.

I just had a conversation with one of my developers regarding the usage of the new AJAX.NET 1.0 extensions for ASP.NET.  On one hand, it's extremely convenient to be able to drag-and-drop some blocks into the designer then wire things together to get a working form - this makes prototyping very efficient.  On the other hand, in typical MS fashion, everything that is generated by the framework is frustratingly obtuse, especially if you have a solid coding background with lots of exposure to other web app platforms/frameworks - you are pretty much forced to forget what you know and work "the Microsoft way" if you want to go beyond what is delivered by the framework.

That being said, ASP.NET's target market is not the developer of the next DIGG or FLICKR, it's the corporate enterprise development team that has to crap out some poorly conceived web app dreamed up by a pointy-haired boss.  This is, unfortunately, at least 80% of the IT market and ASP.NET covers at least 80% of their needs in its current state, thus its "good enough" for them.

That being said... I'm architecting a non-enterprise, but quite large, system that has some customer facing components that are being developed with ASP.NET.  It can be done, but it isn't fun.  (Thank goodness I have some very competent developers on my team who handle the dirty work of making ASP.NET behave as we expect.)

John Rummell
John Rummell
2/14/2007 1:02:50 AM #

Agreed!  I've been trying out some of the VS 2005 designer's features - mainly Strongly Typed DataSets and GridViews with ObjectDataSources.  I'm all about saving time with RAD tools, as long as they work as good or better than my hand coded solutions.  But more often than not, they don't.  

And Microsoft is indeed not helping - I'm currently reading through the official .Net 1.1 MCAD study at your own pace books, and I'm surprised that most of what's in there is drag and drop development. Shouldn't a licensed professional know how to write code?

 Peter Mescalchin
Peter Mescalchin
2/14/2007 8:25:48 AM #

One of the best posts you have written Mads, its a shame more bloggers don't come with a similar opinion.

The rise of the ASP.NET "point and click" developer is a scary one. I for one have always been very wary of what technologies I use from the framework, even to the point of passing on most of the ASP: control set - since in most cases its just more bloated code - ASP:Menu being a prime example. So typically I "roll my own".  Case in point is the CSS control adapters for ASP.NET 2.0, everyone seems to sing the prases of this technology - but to me it seems daft that such glorfied band-aids exist in the first place.

Your "point and click" developer doesn't know why data moved from your SQL DB to the browser or how, and hit a performance snag and they are stumped since they basically work with a series of "black boxes" and nothing more. Attempting to devlier a high demand website using any web technology without a propper grounding in web/database/architecture theories is just asking for trouble. But ASP.NET seems to be the poster boy for such antics since its the framework that goes to such great lengths to reduce web development to a series of point and click GUI extercises in the IDE.

 AN
AN
2/17/2007 4:57:15 AM #

ASP.Net has been the bane of my existence for the last year, because it's really easy to throw crap on a page, and really hard to use with proper semantic HTML and cleanly integrate with client-side javascript. If you work with this stuff for very long you end up getting buried in things like writing a cleaner tree control from scratch or wiring up a usable dialog-launch model.

And I'd like to take whoever came up with the event model and kick him in the teeth. If you have a dynamically generated interface, debugging becomes a soul-sucking nightmare where your events don't fire and you have no visibility to see why not. All the plumbing is buried in crap you can't run a debugger on.

From what I've seen so far, Atlas is pretty much more of the same, only even more arcane. So I'm currently producing a demo for a future architecture where we write a rich client in javascript and direct all communication through an HTTPHandler using JSON. We've already got a rich enough model layer in our framework that it looks like a big net win. And man will I celebrate if and when we bury the current asp.net app.

M Collins
M Collins
2/20/2007 8:41:15 AM #

This is absolute rubbish.  The vast majority of developers are not great, possibly not even good at what they do.  I have seen the fruits of their labour in several large enterprise applications built in ASP that are completly unmaintainable.  Due to the limitations of the platform you can tell a particular programer from source code they wrote in these apps - "Johnny do everything in the sproc" or "Jack the include file Hack".  

Mads you said "When you mastered that, you were pretty good at building dynamic websites."  The problem is most developers don't MASTER THAT!

Bring on ASP.NET - I have seen graduated developers building good, but not great, applications in ASP.Net with only a little supervision, by sticking to the designer.  The resulting project is highly maintainable application where you can assign a bug to another graduate developer and reasonable expect them to be able to fix the problem with no intervention or help required from Assemble programers, C++, Java or C# architect's.  

Most web applications don't require complex solutions.  ASP.NET can handle nearly all thats needed & if you stick to designer for apps you will have both predictable and easily maintainable code.  This will allow your 'good' developers focus on the places where ASP.Net will not meet your needs.

Dee
Dee
2/20/2007 2:50:42 PM #

1] to John Rummell:  Developers aren't licensed professionals.  Developers are programmers and do not require a license, nor can they be licensed.

2] Don't let this article confuse people.  There is a difference between using ASP controls and building ASP controls.  The VS designer is just that - a designer which allows people to drag tools onto their page.  These folks are not ASP developers.  Using ASP controls is no different than using html or or some other tag on the web page.

3] ASP development is being relabeled as "code free" programming by MS.  Books are spending a great deal of time explaining how to implement a web control and setting its properties.  Again this is not ASP development.  MS wants to take people back to the days of FrontPage which they loved and everyone else hated.

What needs to happen is to clarify exactly what is ASP development.  It should be defined as building controls, not using them.





 Boris Yeltsin
Boris Yeltsin
2/21/2007 1:40:39 PM #

Fantastic post.

I wish I could just completely switch off the designer view in Visual Studio. I've never used it in any version.

#1 Annoyance:
You can right-click on markup and select "View Code". But if you right-click on the code, you only have the option to "View Designer". Where is the "View Markup" option? Frown

Comments are closed

About the author

Mads Kristensen

Mads Kristensen
Program Manager at the Microsoft Web Platform team and founder of BlogEngine.NET.

More...

Month List

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer’s view in any way.