May 27, 2010

Now Is Not The Time To Panic!

Deadlines!!  Panic mode!!  You’ve been there. Go on. Admit it! Some of you are probably there right now, though how you have time to read a blog post I’m not sure :-)

We know how it happens.  You started a project and provided some initial estimate which, like all estimates, was wrong.  Even so, someone in the business promised delivery of the project to their customers based on those estimates.  You realise those estimates are wrong pretty early on, but don’t want to look like you don’t know what you’re doing so you hope that you’ll catch the time up later.  You don’t tell anyone that you think you’ve screwed the pooch and stuffed up.  It’s only late in the development process when all hope is lost of ever catching up that it really becomes visible to others and a sense of panic ensues as everyone on the team starts to rush to get things done.

As this rush starts the panic grows and grips people and they forget all about those good, disciplined developer practices that you’re meant to be following and start doing things the quickest, ugliest, dirtiest way possible.  It doesn’t matter how much of a kludge or nasty hack it is, as long as it works and you finish quick you’ll be happy.  That impending sense of doom you’re feeling drives you to make all the shortcuts in the world that you promised yourself you would never do again.  You’re aiming for that short term goal of meeting a date with something, anything, which kind of works and you don’t care how many kittens have to die to get there.

So here’s the rub.  Because you delivered and maybe even satisfied the customer under these circumstances it becomes acceptable to do the same thing again the next time there is a hint of a deadline looming. All too soon it becomes commonplace to ignore good practices completely and just do whatever happens to work.

Your management doesn’t see how much sticky tape and string are needed to hold things together so to them this short-cut behaviour simply teaches them that when they pressure you, you can deliver something in a shorter time frame than you originally thought possible.  Good for them.  Less time means lower costs means more profit, right?  Armed with this knowledge management then kicks off the next project with all the ammunition they need to pressure you to deliver in an even shorter timeframe than ever before.  What’s worse, is because you as a developer don’t push back on estimates you then respond to these deadlines by making even more shortcuts than ever before.  Ugly, ugly, ugly!  And we wonder why we look at our code some times and get embarrassed. We’re a victim of our own “success”!

The other problem panic mode brings is that overtime is almost always involved. Because the hours worked by you and the team are generally well above and beyond the standard 40 hour week it looks like you complete a lot more work and thus achieve what seems like higher productivity. More ammunition for management!

And yet, your short term burst of speed, no matter how good it looks, is really quite bad.  Because you’re tired and worn out from your panic mode overtime work, all the work you do after that will be far less effective plus you’ll also be dealing with all that stuff you threw against the wall to get things done.  Extra bugs, terrible design, copy and paste development and technical debt up the wazoo!  Because management isn’t really aware of these problems or the impact of them, they start to get upset that your productivity has fallen away.  “What’s wrong with you lazy developers?!” they ask.

So, as tempting as it is, when a project is late is not the time to panic.  Panic mode rush jobs should be avoided as much as possible because of the downstream ramifications.  Obviously take into consideration the larger business implications – if not delivering means the company goes out of business and you have no job, well that’s extenuating circumstances, but if it’s just to meet an arbitrary date…? Hmmm.

The real secret, and the thing to aim for, is to manage expectations earlier and avoid panic mode altogether.  As soon as your initial estimates look messed up, admit your mistakes, talk with your customers and have those difficult conversations early, whilst there is still time to adjust plans.  Hoping you’ll catch time up later is a sure fire way to get yourself in a deep dark hole – so stop lying to yourself about catching up.  You know that the only way to catch time up is to cut corners, and you know what happens when you do that...

May 19, 2010

I’m Not Attacking You. I Promise!

registration error 

It’s nice to know that you’re sanitising your user input but I’m pretty sure that my bog standard email address isn’t a SQL Injection attack.

May 10, 2010

Life without Flash, Acrobat, Air and Adobe

So I recently reached the tipping point of frustration and I got so sick of Adobe Flash causing problems on my system that I decided I’m over it, and over Adobe products in general.  The software they release is just so poor I don’t want it any more and I’d rather live without it even if there’s no valid alternatives.

I’ve now uninstalled all the Adobe products I can from my machine and disabled Flash extensions in my browsers where I couldn’t uninstall it and have been running like this for the past few weeks now.

As such I thought you might be curious as to how this is affecting me and my online life, so let me give you a run down on how I’m finding the experience now.

PDF Files

First up, the easy one.  Acrobat Reader.  140MB of installation and a reboot every time there’s an update.  Just to view PDF files? Seriously? Plus it’s fast becoming one of the more targetted security attack vectors now that Microsoft have picked up their game.  So I replaced Adobe Reader with FoxIt reader which is only a measly 10MB in size and it does a great job of viewing PDF files.  I don’t know why I didn’t dump Reader years ago – FoxIt is just so much nicer and so much faster!  No brainer decision, that one.

Flash on the Web

And what about the web experience? Flash is the choice du jour of interactive web sites and there are so many sites with flash on them that surely I won’t be able to live without it.  Now admittedly I could have installed a flash blocker and then turned flash on as and when I wanted to, but I was just so annoyed with Adobe I wanted to so get rid of their malware that I went the whole hog and disabled/removed the plugins from my various browsers (though Chrome was particularly annoying since I have to disable all plugins to remove Flash).

The experience without Flash isn’t always great, but I’m happy to deal with it.  Let me give you some examples of what I mean:

Google Analytics

I use analytics a bit to keep track of this blogs readership stats along with a few other sites I have.  Here’s what it looks like sans Flash:

image

I lose the funky charts but the data is still available.  I can definitely live with that.

General Web Sites

image

Still playing WOW? Meh.  Play a real MMO – one with great lore, an epic story line and no 13 year olds trying to trash talk you from 6,000 kms away.  Anyway – gaming choices aside, the lack of flash on many sites means no Ads.  Such a shame to lose them.  Really.  NOT!!

Grooveshark

I hit this site every now and then to listen to streaming music.  For Grooveshark and many other sites on the web Flash it the only option for streaming audio via web pages.  Most podcast episodes are embedded into blog pages using it.  I even use it on the Talking Shop Down Under episode posts because it’s what my audio file host (archive.org) provides out of the box.

image

Podcasts aren’t a big deal for me since I subscribe to them via iTunes and listen to them on my iPod/iPhone.  As for grooveshark? I’ll just make do without.  No biggie.

YouTube

OK, so this is an important one.  Video on the web is almost always done with Flash, though hopefully people will start moving to Silverlight smooth streaming or HTML5 video sooner rather than later.  In fact YouTube already has – if you have a HTML5 capable browser that supports video (aka Chrome) then you can go to http://www.youtube.com/html5 and join the beta program and watch video via HTML5 instead of Flash.  It doesn’t do full screen yet, but apart from that it works perfectly well. Happy days.

image

image

Sites like Viddler, Tekpub and others still don’t offer Flash alternates so occasionally I run into situations where I can’t view videos, but once again I’m happy to live with that for now.

Adobe Air

So this was a pretty simple one.  I use Air for one thing and one thing only and that was so I could run TweetDeck.  I got rid of Air and TweetDeck and switched to Seesmic so I could retain the multiple account support and I’m happy with it for now.  Of course, there are plenty of other twitter clients out there that run natively on Windows and I could have just as easily used one of them if they had multiple account support too. (Halfwit, MahTweets, etc)  If they add that functionality in the future I may switch.  It’s not a hard thing to change :-)

 

So there you have it, life without Adobe.  And as a parting note, I haven’t had a browser or system crash ever since I got rid of their software.  Goodbye Adobe.  You won’t be missed.