.Net developers and why we're crap
Posted On Monday, 10 March 2008 at at 13:58 by Rick WalshListenToManchester is a website designed to help promote bands in Manchester (UK).
It is now almost 3 years old and recently I decided to have a look at how its being used by our users.
Our stats have made it clear that key areas of the application just aren't being used. People weren't reviewing music, writing articles and rating music. They are however listening to the music and searching for gigs. Interestingly, a large percentage of our users come from the US.
When we created the site we had lots of ideas and we tried to use all of them. As a result the many sections of the site aren't particularly usable or functional.
Like many websites, it feels like it was designed by a developer - it doesn't really solve the problem it was designed to.
Initially I was considering rebuilding the site using Ruby on Rails, but after much thought, we've decided that we don't particularly want too invest to much time in the site, but we do want to fix some of its many problems.
So, 1 hour before me and my co-developer (Tom Adams) were due to play our weekly Power League 5-aside football match, we grabbed a mac laptop opened the website I decided it was time to cull functionality in order to focus the site on the popular content.
We decided that since reviews and articles weren't used often, and when they were people didn't understand the difference between them. More specifically, they didn't understand our definition of articles and reviews.
So, we decided that these two sections of the site should be combined and renamed to news.
On the homepage we decided to drop our music chart, since users weren't rating tracks, which meant that the chart hadn't really changed in over a year.
With these decisions made, we fired up Text Wrangler and opened up some of the usercontrols and web forms (the site was written with ASP.NET).
Our aim was to make as many of the changes without having to recompile all the C# since we were working on a mac.
I was appalled by the code in front of us.
Almost all the changes we needed to make required re-compilation, when really it should have just been configuration and modification of the HTML and CSS! Almost zero thought had been given to the maintainability of the code!
No wonder Tom, who is responsible for the CSS and HTML, had a dislike for ASP.NET during the development of ListenTo!
Worryingly, many designers who have worked alongside developers who use .NET have faced similar problems.
.Net isn't to blame though. In the case of ListenTo, the fault was my own.
The biggest problem with .NET isnt with the framework or the languages it supports. The problem is one of education.
Most "professional .Net developers" when compared with Java developers are little more than hobbyists (from a technical perspective) who happen to get paid for their work. They don't architect solutions. They aren't software engineers. Many seem to be adept at ctrl-c followed by ctrl-v.
I've recently been interviewing people for a development role within the company I work for and it scared me how little people seem to know about basic concepts.
Am I a better developer than they are?
For the last few years a colleague of mine ( a Java Dev) has pushed me deeper and deeper into the world of open source .NET projects such as Spring.NET and introduced me to concepts as inversion of control, loose coupling, designing immutably, design patterns etc etc. Using different frameworks such as ROR has introduced me to entirely new approaches to building web applications (MVC).
It's been quite an eye opener and, as a result, I'm now a much better developer.
Are you a .Net developer? Stop thinking of yourself as a .Net developer! Start developing with other frameworks and languages alongside .Net!
Our next project is being brought to you using Ruby on Rails (mmm bandwagon goodness).
and why are java developers technically inferior to C++ developers... and so on...
Bla bla bla...
Actually got the title wrong. YOU'RE THE ONE WHO IS CRAP! LOL
Congrats on your flamebait. I hope it nets you the hits you are looking for.
So the logic goes like this: Person A develops in technology Z and is not a very good developer, therefore everyone who develops in technology Z is not a very good developer.
Do everyone a favor and look up the logical fallacy 'Hasty Generalization' before writing any more posts like this.
lol no, if you had to have your thought opened to you by someone else, you'll probably be hopeless in any programming position.
I have made MMO game servers, crazy medical-grade winform applications, DAL generators (though lately I moved to using SubSonic), etc, all in C#
I find it no-less powerful than any other platform.
Currently just need windows applications - I will use java if I need some other platform - syntax is the only relevant issue when moving code platforms.
Basically, if you think (I use think loosely, since you've proven you can't before) your innovative mind is derived from which programming language you work in - then get another job.
-Shai
I have been programming in a range of languages and technologies for the last 30 odd years.
I can honestly state that every program I have ever written was, when reviewed after a few years, piss poor. "I don’t know nothing, but me, I learn"
Isn’t it great to be working in an industry where you cant get bored!
sounds more like it was an issue with the way you coded it, not being a .net developer. anyone can take any lang/framework and churn out spaghetti code, don't blame the framework.
Wow... apparently your article was taken as a challenge to the size of an ASP.Net programmer's "e-penis". These comments are pretty harsh, but there is truth to what they say.
As a PHP developer I'm all too familiar with having these sort of charges levied against me and other PHP coders, and so time and time again we need to reiterate that it's not the tool, it's the programmer behind it that writes bad code.
You looked at your code a year later and realized that it was garbage. Great! That means you made progress. This happens almost every time I need to modify legacy code. A year can be a long time in terms of what we learn about our trade.
I think the trick is to recognize which parts *need* rewritten and which parts you want to rewrite because you detest some coding style that has fallen out of your favor. Find some balance, that's my two cents :)
At no point did I say .Net was to blame. In fact I explicitly said the opposite!
".Net isn't to blame though. In the case of ListenTo, the fault was my own."
I dont think Java is better than .Net Certainly C# is vastly superior in regards to generics than Java.
I also dont think that developers who work with .Net are poor developers because of the .Net framework!
BUT, because its so easy to get started with .Net there are a lot developers who get to the point where they can "get by" and dont push themselves - mainly cos they just want a job and a quiet life.
This doesnt mean that there arent good developers who use .Net.
Maybe we're just interviewing the wrong people?
Rick surely you're smart enough to realize that the limited scope of people you know IS NOT representitive of the entire .net developer community, right?
As a .net developer WITH a computer science degree, I found your post unfounded, biased and
myopic.
I have programmed every type of langaguage and framework. I've gone flex, ruby on rails and many others.
I still find ASP.NET Webforms is the best. The problem starts if you follow MS practices. It is not the .NET developers are crap, it is Visual Studio Developers are crap. You have your own mind.
Technically I can definitely say there is nothing beats .NET. Why ? C# 3.0 is nice, oh you are telling ruby ? well .net has a more powerful language called Boo.(It also has IronRuby which is alpha). It is very performant very close to native code. It works everywhere (mono runs .net code well on almost every platform). You don't like webforms, you want to type html ? go for ASP.NET MVC or MonoRail. You want an object database go for db4o. You want a persistence framework go for nhibernate, subsonic, castle active record. You want testing go for Nunit, mbunit. You want logging go for log4net. You want mocking go for rhino mocks.
just don't follow MS practices and you will be fine
"Rick surely you're smart enough to realize that the limited scope of people you know IS NOT representitive of the entire .net developer community, right?"
You're correct the people I know and have interviewed etc do NOT representitive all .net developers.
They just suggest a trend...
Some interesting points.
You know i never got on with ROR and Castle etc. not because they were poor (though Castle was nowehere near where we needed to be) but because it didn't address Line of Business needs - which require fast development according to specs laid down by 25 year old data. It just isn't realistic to have the "community" state that composite keys are bad practice. I don't care - the data needs them!
So I do disagree with your point that if you don't stray from .NET you're a crap developer
some people (myself included) can't afford the time (both personal and professional) sand a tech switch is often met with some degree of reluctance - and rightly so.
To touch your point about difficulties between designer and developer, MS are really working hard on bringing the designer and dev roles together with Silverlight and the .NET 3.0 technologies. Tom can design in Blend and you can almost seamlessly overlay your dev work on the same project files. I've tried it, and it works - to a point.
Some really pointless comments slagging you off though. What you did was provoke thought, they replied with insults.
As a front end developer who's spent the last five years working with various ASP.NET websites, I'll come out and say that ASP.NET is an arse, and it makes my job less pleasant than it needs to be, every day.
My aim, my job, my definition of 'good code' is proper, clean, standards-based XHTML. XHTML that passes validation and is used in a way that is semantic and accessible.
That means taking the templates that I create and not fucking them up with extra divs, spans, ids, random bits of javascript. It's never using tables for anything other than data (and even then marking them up properly). It's using forms as they are meant to be used, not encasing the whole page in one and so breaking standard browser behaviour. It's achieving and maintaining proper separation of design, content and functionality on the front end. It's remembering that best practice in HTML has moved on a bit since 1997. It's following the rules.
I'm sure that all of these things are possible. But I've still never met a .NET developer who can give me XHTML as I would like it (while PHP and ROR developers seem to manage much better). Every single site I've worked on with a .NET backend has been compromised in some way.
And that's because the language, in its vanilla state, breaks all those golden rules. To get decent HTML you have to fight against its normal behaviour. Standard .NET output is a disgrace, an embarrassment to anybody who cares about the quality of the internet.
And that's a pretty major flaw in a technology designed for creating websites, isn't it?
(And yeah yeah yeah, I know that .NET2 has improved xhtml output, but seriously - it's still not nearly good enough)
here here