Thoughts on Software

Archive for the ‘javascript’ Category

Waterfragile: Agile development in the Enterprise

with 3 comments

Waterfragile is my term for the most popular development methodology in use in Enterprises today.

Waterfragile is a heavily modified Agile methodology that adopts the best practises of Agile and Waterfall: the flexibility of Agile to adapt to changing (increasing!) requirements with the rigour of Waterfall to deliver promised features on a promised date. Waterfragile teams take on Agile overhead such as scrums, sprints, retrospectives, etc. but do not take on the bits they can’t be trusted with such as responsibility for the release or deciding which features should be included in each release or the deployment schedule. In fact, one of the central tenets of Waterfragile is that feature sets should only ever grow throughout the release cycle. Advanced Waterfragile practitioners refine this further by removing the ability to de-scope features as this focuses the team on developing 20 hours a day to meet the all-important external deadlines.

To do Waterfragile properly, only the development team should do scrums, sprints, etc. (it’s a development paradigm after all, no point wasting business analysis and test team time on this stuff!) and they should be slotted within a fully waterfall analysis, test and release cycle. If you fail to properly integrate the development team into the waterfall cycle, they may well miss their deadlines or skip features. Test teams should be fully prepped to pick up on all small visual defects – there’s no point spending too much time testing deep feature behaviour as that’s what development’s unit tests are for. Test teams should work to their own schedules and not waste time preparing tests ahead of the start of their test cycle so as to maximize their workload throughput.

Remember: what you are aiming for is separation not only of concerns but also of goals and responsibilities – teams should never be measured holistically on the successful delivery of a project but only on their part of it and the person responsible should never be the one making the decision as this can lead to dropping of features, missed deadlines, etc. The ability to add features, never remove them and still hit deadlines is Waterfragile’s killer feature – a minimum feature set and absolute delivery schedule can now be included in PowerPoint presentations about the project and as we all know “set in slide” is simply “set in stone 2.0”.

Done right, Waterfragile delivers all the benefits of Agile (faster release cycles, ability to make late changes to requirements) without losing any of the benefits of Waterfall (feature sets and delivery dates known months if not years in advance), a development methodology that has never failed to deliver even once over the last 40 years.

Written by andrewlocatelliwoodcock

November 14, 2013 at 19:08

AJAX post from window unload event not reaching controller

with one comment

I hit an interesting problem today: an AJAX post sent using jQuery’s $.ajax method was failing to reach the controller action method but only intermittently. The kind of problem guaranteed to drive me nuts until I’ve figured it out …

What was happening was that I was building a queue that I then wanted to post to a controller once the queue reached a certain size or once the user navigated away from the current page. The page navigation feature was implemented using jQuery’s window unload event:

$(window).unload …

The postQueue function was always being hit whether it was called from the queue manager or the unload event but it was only managing to correctly post to the controller if called from the queue manager … a half day’s work was fast turning into one and a half days …

Turns out that the issue was that you cannot post asynchronously from a function called from the unload event because there is no longer a callback function in scope even if you are not actually using a callback handler …

The solution is to make sure that you only post synchronously from within the unload event by setting the async property of the ajax object to false.

Written by andrewlocatelliwoodcock

May 13, 2011 at 17:30

Posted in ASP.Net MVC, javascript

Tagged with , ,