- Get tests in early. Unit tests, UI tests, Fitnesse, whatever. Do TDD if you are allowed to. Make the tests the requirements. We're currently finding that changes to fix a bug are breaking other related (though far from obviously related) functionality. Tests would tell us early. I've just finished fixing something that was broken a month ago. It took bloody ages to sift the history and find when and where it was introduced.
- DO NOT USE UPDATE PANELS - EVER. THEY ARE THE SPAWN OF SATAN. THEY WILL DESTROY YOU AND YOUR WEBSITE. You have been warned.
- Avoid making user controls because they MIGHT be reused. Excessive user controls leads to a heap of stinking doo-doo that is a mother of a pain in the arse to debug and manage.
- Just because this thing LOOKS almost exactly like that thing does not mean it's the same thing. Sure, copying and pasting the mark-up is ugly duplication, but not nearly as ugly and buggy as a user control that has a state to indicate what to display. Use a template and push your data into it. See http://encosia.com/2010/05/03/a-few-thoughts-on-jquery-templating-with-jquery-tmpl/.
- Use jQuery (or another JavaScript framework/toolbox) for AJAX and for as much UI as possible. Use the server only when you have to. For that matter; avoid ASP.NET WebForm controls - they are designed for server side use and are heavier than POSH (Plain Old Html Semantic) controls.
- Do not let timescales pressure you into creating features that have no tests. If you have no test, it will eventually be broken and you won't know and you will spend hours finding what broke it and wish the fleas of a thousand camels on the person who did this, only to find it was you. So write the bleeding tests!
- If you're using a home-grown, or 3rd party for that matter, data binding or view-controller framework, make sure that you're clear about the sequences and dependencies between different types and user controls. Do not mix binding to the UI with binding from the UI or you will eventually find yourself in a stack overflow situation chasing your own tail. Technically it's when one type being pushed to the UI wants data for another type from the UI, that wants data from another type that wants to first push the original type. You will go insane.
Thursday, 13 May 2010
Things to avoid in development
Sunday, 9 May 2010
I left Facebook
I left Facebook a few months ago. I thought I was done; my account was deactivated and I assumed they owned whatever I'd put on the site and that was just how it would end. Recently I've learned that it is in fact possible to delete your Facebook account. I thought these recent entries on the web were worth trying to bring to your attention and I sincerely hope you decide to delete your Facebook account as well. We should never allow websites or companies to turn what was once private into public information.
Read the top ten reasons you should quit Facebook: http://www.rocket.ly/home/2010/4/26/top-ten-reasons-you-should-quit-facebook.html
Facebook’s Gone Rogue. It's Time for an Open Alternative. http://www.wired.com/epicenter/2010/05/facebook-rogue/
If you come to your senses and want to delete your Facebook account: http://hnsl.mn/cUY6Ib