ASP.NET vs anything

April 22nd, 2009

I read yet another ASP.NET vs PHP post. It got me thinking…

In case you can’t tell by looking at the category listing over on the right, my primary focus is the back-end of intranet applications using the .NET framework. I tinker with winforms and console applications, but that isn’t what I spend most of my time doing. Code behind files, libraries, windows services, and web services take up most of my daytime life.

There is a LOT to know about .NET. There are a multitude of certifications, and the track for web applications is different from windows forms applications. It takes years to master. I am constantly learning, even after over 3 years coding with it.

Notice how I said “the .NET framework”? I didn’t say C#.NET or VB.NET. The .NET framework is exactly that — a framework. C# is a language. C++ is the bastard stepchild no one talks about but many use and love. You can see where this is going, can’t you?

You cannot compare .NET to PHP or Java and have it mean anything to me. Comparing a framework to a language is apples and oranges. If you want to compare language features, even VB, C++, and C# have differences within the .NET framework.

If you want to post about which development framework someone should choose for their web application, I want to see you pick another actual framework to compare it TO. There are a multitude of frameworks available for PHP. There are over 100 for Java, according to this pdf sheet from Sun called “Choosing A Java Web Framework“. I haven’t used any of them. I want to know what the framework can do, not what the core language supports.

I love the .NET Framework. I’ve played with PHP enough to be dangerous. I can mess with WordPress and make quick scripts for servers that only have PHP on them. I know enough Java to be dangerous, too, and coded with it for 5 years, but it was long enough ago that most everything has changed (I started back on java 1.2, before they even had regular expressions and I had to hack Netscape Enterprise Server on a Solaris box to get JSP working, because they wouldn’t let me use Apache).

I do know, though, that there are frameworks for those languages, and they have different capabilities, strengths, and weaknesses. If I want to compare ASP.NET to Java, I need to detail frameworks like EJB. If I want to compare it to PHP, I need to actually research the various PHP frameworks, like Zend, to see if they offer particular features.

I’m pretty sure that PHP and Java frameworks are complex enough that someone who normally develops with .NET would not be able to tell what they can and cannot do without looking it up in the data sheets. I am also pretty sure they take a decent amount of time to master, just like .NET does.

My point is — if you want to write up a great comparison for people to choose a web development platform, you have to compare apples to apples.

What do you think? Since PHP and Java are separate from their frameworks, but C#.NET and VB.NET are really subsets of the .NET framework in its entirety, is it fair to compare? Shouldn’t people be comparing Zend to ASP.NET, or EJB to ASP.NET, not PHP or Java to ASP.NET?

I’d love to hear what you think. Let me know in the comments!

When the gas pedal becomes the brake pedal

October 17th, 2008

In my company, we have a large in-house intranet application that drives me insane. Literally. In the interest of not having to train people how to use a web browser, they’ve used modal windows (real ones, for MSIE only, not the modern version using javascript and divs) and other components that completely break expected behavior of a web page to any experienced user.

I can’t copy and paste text, my right-click is broken, I can’t use the arrow keys to navigate, the tab key doesn’t tab form elements properly, and the enter key doesn’t submit forms. The modal windows render IE tabs useless. So we end up opening this particular application in its own MSIE window and open a different instance for everything else.

Every time I mention that something is “broken”, I am told it is by design to help our poor newbie users not break anything.

The design completely violates any semblance of usability, standards, and sanity. Experienced users are frustrated to the point of wanting to bash someone’s skull in. So, when I’m surfing the internet and see posts like this one, detailing how to break your application on purpose because you don’t feel like training users, it makes me want to scream.

If people are “accidentally submitting” the form, it’s a lot better, at least in my opinion, to force a confirmation than to break the form. Even better, try TRAINING people. I know, that’s just nonsense, isn’t it?

The tab key moves between fields, not the enter key. If you need to allow carriage returns in input, then use the correct form element to allow it, such as textarea.

As far as I’m concerned, as a user, the form is SUPPOSED TO SUBMIT WHEN I HIT THE ENTER KEY. A simple google search shows I am not alone — people consider the thing broken if that doesn’t happen.

Breaking expected GUI behavior to cater to your inexperienced users is like saying you have a subset of people who drive cars who prefer the gas pedal to be on the left side and the brake pedal on the right, so that’s how you’re going to design YOUR car. That’s just great. Now, I’m used to the gas pedal being on the right, but when I get in YOUR car, it’s on the left. Thanks for confusing the hell out of me and making me think your car is broken.

Standards exist for a reason. In a car, the steering wheel steers it, the pedals are in the same spots, and other controls work similarly enough that a person should be able to get in the car and drive it with little fuss, as long as they already know how to drive another car. For computer applications, Mac applications, Linux applications, and Windows applications all have conventions so that a person learns which keys tend to do which actions. An example of this is the control+c key combination on Windows. That should copy things to my clipboard. If it did something else, I’d be confused and peeved. You wouldn’t hijack that key combination for your winforms app (unless you enjoy frustrated users), so why would you hijack the enter key for a web form?

Am I alone in getting this annoyed? Do you think there is ever a good reason to choose to break a form for experienced users in the interests of inexperienced ones? Share your thoughts in the comments.

Edited to add: Due to the comments left, I want to be very clear here. It’s the CLIENTS I am pissed at, most of all the people who requested the abomination I have to use every day. I fail at English.