There have been some very thought provoking blog posts focussing on .NET recently and this post is my reaction to them. In “How I Feel About The .NET World Lately” Davy Brion rants a bit about some stuff he doesn’t like and Ayende has some ideas for how he would change things going forward.
Davy’s post is, by his own admission, a rant. He refers to the Microsoft recommended development practices and products as “Fisher Price Development”, a sentiment I share to some degree. In my opinion a developer is someone who can write code and not someone who can only use the wizards in Visual Studio. Microsoft has plenty of documentation on how to use their tools and write code as long as you want to do it the Microsoft way, but it isn’t much help if you’re trying to do things in the real world. Now I don’t think it’s Microsoft’s place to try to teach people how to be a good developer, but I would like to see better quality documentation. We know they can write good code so why settle for poor quality on MSDN, proper use should be made of using statements and care taken to ensure that objects are properly disposed – even in these simple examples. Hello world samples are useful when you’re trying to learn something new and sometimes so obscure that it’s hard to see how to apply their example to what you’re trying to find an answer to. To quote my friend Karl:
When I was trying to learn how to use delegate functions, the MSDN example was something to do with an array of dinosaurs which were sorted using a delegate function. It was so utterly unrealistic it was no use and didn't teach me anything about delegates!
There are times when I need to ‘hack’ something, occasionally it makes sense to just throw in some raw ADO.NET code to pull back a simple value from a database and setting up an ORM for just that one bit of data is over kill. Like sorting your record collection alphabetically even though you only have one album. That said I still think there’s room to have an advanced / real world examples that show production quality code; including defensive programming, error logging and proper validation – people need to know what proper code looks like and this would be a good opportunity for Microsoft to lead people to a professional programming style. They could turn their developers loose on MSDN once a week and let them add in the advanced concepts, I’m not asking for much – just one afternoon a week. Granted this might not give documentation to suit all tastes but most developers can adapt code samples to something that works for them, so those in the alt.net community could use it as a jumping off point and maybe somewhere like codebetter.com could start it’s own MSDN style resource?
Where are things going?
A lot of attention seems to be focused (at the moment) on the entry level .NET developers – my concern here is that this appears to be at the expense of those at the other end of the spectrum. Both WebMatrix and LightSwitch (it should be noted that I haven’t actually used either of these, so you’ll have to take my opinions with a pinch of salt) are designed to allow people to:
solve specific business needs by enabling them to create professional-quality business applications, regardless of your development skills
The trouble I have with this strategy is that it hides the complexity of creating professional software from those using the tools so when you need to do something that isn’t possible through the wizards you’re in real trouble. I have seen quite a few people call themselves developers, even get jobs as developers, who can’t actually code and I worry that tools such as these will only encourage more people. Please don’t misinterpret me here, I am not saying there’s anything wrong with having a cool IDE that lets anyone put together a nice program – everyone has to start somewhere right, but that’s not the same as becoming a developer yet that’s the impression that’s being given and doing that devalues professionals and the years of effort they’ve put in to learn their craft. I have a Sony A200 and I can take pretty decent photos with it, but I am not a professional photographer, nor do I delusions that I am one.
Ideally I’d like these newer tools to provide a nice easy path into the more serious end of programming but I fear that mastery over something like WebMatrix isn’t really going to help someone migrate to using Visual Studio.
What can we do about it?
So that’s a rough summary of where things are at the moment, and a glimpse of where it looks like they’re heading, so what can / should be done about it?
Good question, in fact that’s pretty much the question Ayende tries to answer,
if you were in Scott [Guthrie]'s shoes, what would you do?
- I’m very much behind Ayende’s call to kill duplicated effort, his example of the embarrassment caused by LINQ to SQL & Entity Framework fiasco illustrates this point nicely, they should have identified the overlap while they were still internal projects and unified them before they saw the light of day. This is how I feel about their tools, internally they need to collaborate / communicate more to know what other teams are doing. I know a developer who refuses to look at new technologies because they get killed off and he ‘wasted his time learning UML and other stuff’ – essentially he’s afraid to invest his time into learning something new in case it gets pulled within a year or two, and to be honest you can’t really blame him if his fingers have been burned before.
- This point was made by Karl and I’m simply repeating it here: “Stop trying to out-X X! Microsoft software does its own stuff and does some brilliant things. But you can't out-Google Google, out-Linux Linux or out-Apple Apple. That's why the Phone 7 stuff is so interesting to watch develop because, unlike Android, they've actually done something new rather than just copy the current state of the art.”
- I’ve said I feel there is a lot of attention focussed on the entry level developers – well I also agree with Ayende that Microsoft should focus some love towards the non entry level developers, this shouldn’t be allowed to continue.
Now in a cheesy attempt to generate some comments… what would you do dear reader?
a3c98568-63b6-44a0-b5cc-5361d096cdff|0|.0
Permalink |
Comments (1)