Alex's Blog


Archive for the 'Software' Category

Guathon – new .NET stuff and Windows Phone 7

Sunday, August 15th, 2010

On Friday I went to Guathon, a free Microsoft conference all about the latest .NET stuff and Windows Phone 7, held at the Odeon cinema on Shaftesbury Avenue. I was lucky to get a place, as when registration opened last week, the website immediately buckled under the strain. It reminded me of trying to get tickets for Glastonbury – and you’d think Microsoft would be able to get this kind of thing right. But after a lot of refreshing, opening new tabs, and filling in the same registration form multiple times, I eventually got my confirmation email.

Arriving at the Odeon bleary-eyed yesterday morning, I knew I was in the right place when saw a long queue of poorly dressed men – I blended in seamlessly.

Presentations without boredom

[image by Jeff Sandquist]

Scott Guthrie is the man in charge of the .NET teams at Microsoft, and spent three quarters of the day doing presentations. It must have been pretty gruelling, but he didn’t show it – and he really knows his stuff, eschewing slides almost completely for a very hands-on style, mostly writing code in Visual Studio and answering questions as we went along. He’s a hugely effective presenter, and I just wish more people would learn that making a presentation isn’t all about knocking together slides in PowerPoint and then reading out each bullet point in a monotone.

The first session covered Visual Studio 2010 – a mix of new features, such as the improved IntelliSense, plus old features that surprisingly many people haven’t heard of, such as conditonal breakpoints. He also talked for a while about the new IntelliTrace debugging and automatic diagramming features which are sadly only available in the seriously expensive versions – a shame as it looks like these could be a real productivity boost for a lot of programmers. I’m still waiting to get my hands on VS2010 myself, as for some reason it’s taking Microsoft weeks and weeks to process my new Action Pack subscription.

By the end of the first session we were already overrunning massively, and everybody was in desperate need for some fresh air, a trip to the toilet and some coffee. If the Odeon had been prepared, they would have known that 250 developers logically entails a requirement for 250 lattes, but clearly this had been missed somehow as a huge queue quickly developed at the tiny coffee bar, with only one member of staff and the world’s slowest coffee machine.

ASP.NET MVC, 1, 2 and 3

Sessions two and four were all about ASP.NET MVC. This is a framework that sits on top of ASP.NET and provides a quite amazingly neat and elegant way of building web-based applications. I didn’t know anything about it before, but there was a good quick introduction before diving into the new stuff in versions 2 and 3, so I now feel like I’m up to speed and am quite keen to have a play with it – if only Microsoft would hurry up with letting me access the software I’ve ordered…

Instead of a load of slides, the presentation was entirely in Visual Studio, taking us from starting a new ASP.NET MVC project. “What kind of website shall we make?” asked Scott. “An event registration site” was the highly appropriate response, and Scott took us through creating the web application from scratch. He covered a huge amount of functionality in the way that makes the most sense to programmers – by actually writing code. Not only was it a great way of covering lots of material, the fact that he could cover so much during the sessions is testament to how well-designed the MVC framework is – it’s really very quick to start putting things together.

Windows Phone 7

To give Scott a bit of a break from presenting, between the two ASP.NET MVC sessions Mike Ormond stepped in to talk about developing applications for Microsoft’s forthcoming Windows Phone 7 platform. It was a mixture of slides and a more hands-on demonstration, as he demonstrated writing a simple game which he then showed working on both an emulator and an actual prototype phone.

The presentation was good but I was left feeling underwhelmed by the product itself. Despite the name, Microsoft has effectively thrown away its old phone platform to start again, so it’s very much a “1.0″ product at the moment. Unfortunately they seem to have taken all the worst bits of the iPhone and then added in some extra limitations of their own. Like Apple, they will be controlling the “Marketplace” (equivalent of the App Store) so they won’t accept certain types of applications. Like Apple, you can’t do proper multi-tasking – the phone will quit applications when you switch to another one, and as a developer you have to manually write code for saving the application’s state. Even the process of using the camera within an application causes it to restart, which seems very cumbersome. And for the moment they’ve even locked down things such as access to the camera flash LED, meaning no flashlight applications are allowed. This just seems dumb.

One of the positive things to come from Apple’s control freakery is that at least mobile network operators can’t stuff the phone with crappy applications themselves, but there are no such limitations on Windows Phone 7. Network operators have more power than ordinary developers, as they will be able to create proper native applications instead of the Silverlight and XNA apps that other developers will be limited to.

They have also taken some decisions with the interface that they probably think of as “innovative”, but I would describe as “strange”. For example, instead of the iPhone’s single “home” button, there is a “back” button which will navigate back through your app, until you reach the first page when it will quit. But there’s also a “Start” button which takes you back to the app launcher. I can’t see the advantage of the additional hardware button here – the iPhone approach of having all app navigation in the touchscreen works perfectly well, so I wonder if Microsoft are forced to go this way to avoid stepping on one of Apple’s many patents.

I have doubts about the “panorama” interface, as shown in the picture above. It looks like this just makes a lot of the menus hard to find – it will be interesting to see how well this works on the devices when they appear later this year.

In summary, I find it hard to see Windows Phone 7 taking off. It would have been a great product five years ago, but Microsoft is clearly desperately chasing Apple and Android and is way behind. I like the idea of .NET on a mobile device – it would certainly make it easier for me to port my own existing applications to a mobile phone – but there’s nothing (yet) that makes it stand out in any area ahead of the competition, so any mobile app developer is going to have an extremely limited potential user base. It’s too little, too late.

Something positive

Saturday, July 31st, 2010

I finished work yesterday, so I’m now a free man who has no idea what’s going to happen next. I’m excited about the future but I’m sad to be leaving my old colleagues behind.

Just before leaving, I sent out the routine email with my contact details and a list of my various websites (this one, Axe Software, Facebook, LinkedIn profiles etc.). Unfortunately, the most recent article at the top of this site was How to lose staff and make your software company fail which is rather negative about the company I’ve just left. My boss was not particularly happy about this.

Woops. I did think twice before including the link to alexwarren.co.uk but concluded:

  • I was linking to this site in general, not that article specifically
  • I didn’t want to delete the article
  • I did want people to know about my personal blog
  • This blog is linked from the Facebook and LinkedIn profiles anyway
  • I still stand by that particular article, as I’d never have published it otherwise
  • Many of my colleagues had already seen the article
  • The views I expressed in that article would not have come as any surprise
  • I’d already discussed many of the points in that article both with my boss and with the head of development

So, it was sad that my most recent article was so negative (perhaps it’s an indication that I should blog more often so that I don’t leave negative articles hanging around at the top of the page for long). And maybe I could have chosen a less pejorative, less melodramatic title – but that was how I felt at the time I wrote the article, and I didn’t want to edit history.

But in the interest of balance, I should point out that things are beginning to change at the company. They have begun to listen to what people like me are saying, and are starting to put things in place in an effort to make it a better place to work.

After writing that blog post, I emailed the head of development to give him some feedback, and I made the same points that I’d made in the blog – that if more effort wasn’t made very soon to migrate properly to .net, the company will have massive problems in the future. I was a bit trepidatious about sending the email – after all, it takes some balls to criticise senior management – but I thought it needed saying and I was interested in what kind of response I’d get. I didn’t have much to lose anyway.

I was pleased that the head of development took the time to construct a proper response, and we had quite a lengthy exchange of emails. Obviously he was never going to fully agree with me and immediately initiate a big project to undertake a big migration, but from what people have told me it’s suddenly become a much higher priority, and the head of development has suddenly taken a much greater interest in the state of the existing codebase. It seems that for whatever reason he wasn’t fully aware of the scale of the problem before. So emailing him had turned out to be a very good idea.

And it’s not just my complaints that are being listened to. From the private conversations I’ve had, it looks like they are beginning to listen to other developers and are willing to implement their suggested changes to make things better.

So, expressing negative opinions can lead to positive results. Indeed, how can problems be fixed if nobody expresses the problems in the first place? Surely it’s worse to keep these kinds of things to yourself?

Of course the real reason my boss was upset to click through my leaving email and see that post there was that it’s so public. He was unhappy that I hadn’t expressed these views in private before blogging about them. But often it’s only through writing things properly that one can clearly arrange one’s thoughts and come to a proper viewpoint in the first place. And there’s not much motivation to write properly if you don’t have an audience. Without that blog post, I would have found it harder to express my views to the people that could do something about them.

I want to continue blogging about my software development experiences. Inevitably many of those experiences will be negative, because those are the most interesting ones to write about. I expect these experiences are hardly unique – there must be huge numbers of software companies and developers facing similar problems. That’s what I hope will make this blog valuable over the coming months and years as I continue to write about the world of software.

Where things are negative, there is the potential for making things better, and if I have an idea for making things better, I want to implement it – or at least share it. What could be more positive than that?

How to lose staff and make your software company fail

Monday, July 12th, 2010

Having handed in my notice at work, nothing much has changed – I’m carrying on in the same way as before. I turn up in the morning, fix the odd uninteresting bug, and leave in the evening.

Since I’m not working on a big project at the moment, I don’t have anything to hand over, so I don’t even get the satisfaction of wrapping things up and handing them on to someone else. Instead I’m plodding along, counting down the days until I can leave.

As software developers, we need varied work with a sense of purpose. Giving staff nothing to do but bug fixing for months is a good way of filtering good developers out of your organisation.

With no real goal in sight, there’s no feeling that things are moving forward, and working life becomes an unrelenting march, bug bug bug bug, bug bug bug bug, bug bug bug bug. Every day is much like every other day, and they merge in the memory. Weeks skip by with nothing to identify them except for the management’s statistics on how many bugs you’ve fixed. The idea of introducing these statistics was, I presume, to encourage people to work harder, but it’s pretty demoralising when your entire week is distilled down to “10 bugs fixed, 1 test failure”. That’s not a way of getting the best out of your developers, that’s a way of getting your best developers out.

The latest missive from senior management tells us the strategy for the next year or so is to focus even more effort on bug fixing, at the expense of work to enhance the product. While there are certainly plenty of bugs to be fixed, I strongly feel that there also needs to be an investment made into fundamental refactoring and redevelopment of the software – the company is storing up problems for the future otherwise. So much of the system is written using crappy old VB6 – moving over to .net will take many years, and putting it off means it’s going to be harder to recruit and retain good developers. They’ll be paying premium rates for the kind of developers who don’t have an interest in technology or creating good software – they need to invest now to stop that happening.

The current strategy will undoubtedly save money in the short term, but failing to invest in your future is a terrible mistake.

But at least I now know I have made the correct decision, because I’m not afraid of making the effort to invest in mine.

My greatest weakness

Thursday, July 1st, 2010

A classic job interview question is “what is your greatest weakness?”. I suppose mine is that once I get bored, that’s it. As soon as I’ve got comfortable in a job and think I’ve got it all figured out, as soon as I’ve stopped being stressed because I don’t know what’s going on, as soon as I’m part of the furniture, there’s only one place to go – the exit.

So, after three years for my current employer I’ve handed in my notice. I’ve certainly improved a lot as a software developer since I got there, but the pace of improvement has slowed a lot recently so it’s time to move on.

I’ve decided to seek out temporary contracts instead of permanent employment. That should keep the boredom levels down, give me a nice variety of different work – and let me spend time between contracts building up my software business Axe Software. Yes, you may not think that text adventure games are the future, but you’ll see. Eventually. Perhaps.

It will be a bit more hassle – regular job interviews, the administrative overhead of setting up a limited company, and reduced job security, but really, overall it’s a no-brainer. I wish I’d thought of it sooner!

So, I have two questions – anyone need an awesome C# developer starting in August for, say, six months? And does anybody know a good accountant?

An email from a lazy student

Monday, March 2nd, 2009

I just got this email from a lazy Computer Science student:

From: s***a r** [mailto:s***a_999@live.co.uk]
Sent: 01 March 2009 22:10
To: alex@axeuk.com
Subject: hey!

hey

i waz jus goin through http://www.textadventures.co.uk/ and i came across ur id so i thought u might b able to help me.m a first year computer science student.i recently got ma java assignment which requires me to develop a text based interactive game using bluej.i hv already started coding ma game bt m stuck now.i dont knw how to add objects in to game.i will rly appreciate if u could help me wid this.m rly confused n nervous n da assignment is due this month.

hope to hear frm u soon

take care

PEACE!!

THANX FOR READIN THIS MAIL =D

Of course, I’ve got not much else to do except homework for random lazy students who can’t even type properly. Just a shame I know nothing about Java, otherwise I’d be only too keen to assist the dismal no-hoper.