Thus begins my re-telling of the classic children’s story “The Big Brown Bear” as a software development parable. I’ve always self-identified a lot with the big brown bear, and his errant ways have often reminded me of the way software development projects run.
Download my modified version of this classic story here: brownbear.pdf
I’ve only named one really successful web-site in my life. Way back in the heady days of 2008 a [not so] young blogger had decided to throw in his job at vertigo software and team up with Joel Spolksy to create a new Q&A site that was to be the antithesis of the popular-but-hated expertsexchange. That [not so] young man was Jeff Atwood and when it came time to find a name for his site he turned to some of the best experts in branding and marketing on the internet for suggestions. They were all busy, so he ended up emailing Leon Bambrick AKA the secretgeek and myself whose work he had long plagiarized admired.
One of the names I suggested was stackoverflow.com, which ended up being chosen as the ‘winning’ name in a poll on Jeff’s blog. It’s amusing to look back at the list of other names I suggested, and also to note that I preferred one of the other suggestions on Jeff’’s list - gosub10.com – to any of my own.
Of course when it came time to name the next system-administration-centric site in the growing Atwood-Spolsky empire they knew who to turn to. But once again those guys were busy so they asked me (as well as a bunch of other people). I liked Phil Haack’s suggestion of rackoverflow.com (but it has weird connotations). This time the best I could come up with was nextnextdone.com. I can’t imagine why they never went with that one, and chose serverfault.com instead.
A few months ago I ordered an APad - a type of Android tablet/slate/giant-mobile-phone/iPad-like-form-factor-whatever-you-want-to-call-it from dealextreme (ThinkGeek mixed with Archie McPhee…but really cheap, and without the sense of irony). A month or so later when they got some stock in it arrived. I’ve had a play around with it and decided to share my thoughts.
Some context
I don’t have an iPad (although I’ve played ‘round with a few) so my expectations might be lower than they would be if I was using one of those all the time. My hope was that I could use this for casual web browsing around the house, and read pdfs and RSS on public transport, but overall my expectations weren’t high. I don’t have any other android devices. I own a windows mobile phone which I only keep around so I can fantasize about the different ways I could destroy it – clay pigeon shoot, bandsaw, does it blend? which shows I have a high tolerance for pain from mobile devices.
The Good
The chrome-lite browser is fairly capable (although, not nearly as capable as the new IE in WP7 looks, hotdam!), once I got the hang of it for panning/scrolling/zooming etc (the device is single-touch so no pinch gestures). No flash, but I didn’t really notice on most sites – as you would expect youtube opens in its own app. The Repligo and Beam PDF readers that I downloaded from the android store were both pretty good for reading PDFs (once again, no pinch). The screen is nice and quite comfortable for reading (800x480 pixels at 7”..no ‘retina display’ but not too bad either). Rendering of text (especially in the mobile browser) was quite nice. Video playback was smooth. Ticks in both boxes for the primary functions I envisaged for the device.
The Bad
The battery life is not that great. Even with the screen and wireless off the battery seems to drain away pretty quickly over the course of a day. The whole form factor is so iPhone-like it really isn’t funny, the geometry feels very similar to the iPhone3 and the iPod Touch. Software-wise the thing thinks it is a phone too (when I turn on the screen it says ‘No Service’ even thought this is unremarkable - it never will have any ‘Service’ because it doesn’t have the requisite networking hardware). The build quality is fair to good, but not ‘Apple’. I think a metal case would have made a big difference here – the thing is so light (about 300g) they should have packed it with more batteries and gone for a metal case and it would have really lifted the device in my eyes.
Also - it’s running android 1.5, which even thought it was released in mid-2009 is the android equivalent of running Windows XP on your desktop. Dominic said Android 2.x got important improvements like ‘JIT’ so even though most things don’t feel that slow on the device I can’t help but thinking ‘this could be faster’ when I think about 2.x. Since android is an open platform I should just port it myself, right? right? The one thing that did feel a bit slow was changing orientation between portrait and landscape. The on-screen keyboard is fine for typing in URLs and logging in, but sucks for even the smallest amount of content-creation-typing.
For longer than I care to think about I’ve been working on an app in my spare time to make scouring through Windows and IIS logs from multiple machines easier and more fun. I set deadlines “hey, wouldn’t it be cool to release on Cutler’s birthday” and then some time later “I’m going live on the Windows NT initial release date” (last week) only to enjoy the sound of them rushing by as I sweated over one last feature, or tried to fix one more bug. Over the week-end I decided to throw caution to the wind and release what I had, warts and all. First of all you can download it here. And now a bit of exposition…
Searching, Sorting and Filtering Windows and IIS logs
logEnvy is eventvwr (the one built into windows) dipped in WPF UI goodness, and turbo-charged with the ability to read IIS logs too. It has a single view over multiple windows and IIS logs – I was sick of looking at IIS and event logs for particular user sessions across multiple machines from a server farm. You can sort and filter just like in eventvwr, but it also has full-text search over the contents of all events. You get a resharper-like indicator in the scroll-bar showing where search results occur in the current set of events, and you can click on the green indicator to select that event, or mouse-over for a tool-tip summary.
It’s ‘agent-less’ – you don’t install anything on the machine you want to read logs from (heck, it doesn’t even have an installer itself), and can read events from remote machines from different domains (providing you have a network connection, and the right security credentials of course).
Event Details View
One of my major gripes with eventvwr circa XP/Server 2003 was the ‘port-hole view’ you were given to read the details of the event you selected. And to add insult to injury it was a modal pop-up! The ‘details’ view in logEnvy shows a textual description for all the selected events, and you can search within the text of the selected entries.
Summary View
This view tries to summarize the current set of events in meaningful ways – currently it shows a breakdown by event type, a breakdown by date or time, and a list of the top 10 event sources in the current set. If a particular summary no-longer adds value (for example if you’ve filtered events to just show errors) it won’t show the breakdown by event type anymore. I’m planning to add more summaries over time.
Timeline View
This view is kind of like the map of the London underground meets event logs, to try and help people see the temporal relationship between events (especially across multiple machines). Events and IIS log entries show up as dots on three ‘tracks’ per event source – information, warning and error. If lots of events occur at a similar time they’re grouped into a single item. You can click on dots to get the textual information about the event(s) in the details view. You can pan and zoom, and there’s a histogram built in to the scroll-bar at the bottom to show you where the most interesting data is.
Two Warnings
First warning – eventually I want to sell logEnvy, it’s still in beta now, and will probably remain this way for a while, but it will eventually be released and cost money. There will always be a ‘free’ version with all the features, but only for local event logs. The good news is if I’ve ever worked on a project with you, talked to me in person or if I know you on-line you’ll automatically get a free license. If you don’t fall into any of these criteria and would still like a free license email me at [email protected] and I’ll put you on a list. The other way you can get a free license (which I’d really appreciate) is to send me suggestions and bugs, which brings me to my second warning. The second warning is – there will be bugs. The Timeline view I only added in the last month or so, and it and the summary view are both a bit rough. Also I’m interested in what features I should be adding. Killer visualisations? Different event sources (SQL Server, ISA, Squid, log4net, SNMP?) What should I be adding? Send hates/likes/suggestions and bug fixes through to [email protected]. If you still have any doubts why not download it here and give it a go.
One last thing - when you download it you’ll get a serial number - because of my crass commercial visions for logEnvy I built the serial-number authentication bit into it already. You can hit the download page as many times as you want and get as many serial numbers as you like, they will stop working when the beta period ends. When you launch the app you’ll need to enter one to use the ‘full’ version.
Want people to read your emails? And not just read them, but pour over them with a fine tooth-comb, analysing for meaning, reading and re-reading every sentence, weighting every word? In a corporate setting there is only one way I know to achieve this – email recalls!
Recalled emails are a quaint notion, something akin to being able to recall a bullet after it has been fired from a gun. Usually the only people who recall emails are those who don’t understand how email works and have inadvertently sent something really stupid and/or personally damaging to a list of people they may not have intended to send that item to. »
I was intrested to see today that in the new Productivity Power Tools update that the toggle buttons on the configuration dialog for this add-in have taken on a very iPhone-ish appearance.
And here for comparison are some iPhone toggle buttons.
Some investigation in Snoop shows that these are indeed styled CheckBox controls (CheckBoxes derive from ToggleButton in WPF and don't really add any behaviour, so semantically they're toggle buttons). »
BAs and cocaine…they go together (from what I’ve seen from most requirements documents) like developers and coffee, and sales executives and three-hundred-dollar lunches. Unfortunately just because your BA does a bad job it doesn’t magically remove the need for analysis to happen, somebody’s got to pick up the slack. If you’re a developer then that somebody is probably you, and to be honest you’ve got enough on your plate already, haven’t you. The best outcome for everyone would be if the BAs cleaned up their act and actually did their job. These are some suggestions for how to get your BAs to drop out of the Tony Montana finishing school for BAs, stop smoking crack and start creating clear, unambiguous and actionable requirements. If this doesn’t work try an intervention or rehab.
Side node: Although Tony Montana was a vicious psychopath without any specific technical skills he wasn’t actually a business analyst, per se.
Some problem domains are legitimately complicated. Sometimes people use ‘pretty complicated’ as a synonym for ‘stuff I don’t understand very well’. Knowledge is power, and I’ve seen BAs hold ‘pretty complex’ over the development team as some kind of Ace up their sleeve.
‘The foobaz report is pretty complex, but in practice all you have to do is multiply this value by 10%’.
There are plenty of aspects of software systems that live outside of code, like processes and procedures, policies, human workflow and the stuff that happens in the heads of the people using the system. As a developer you’re on the line to deliver the CODE part of the system, and the business rules and logic you have to encode in the foobaz report are either complex or they aren’t. If you code it up to multiply all the values by 10% it’s not suddenly going to start to show complex emergent behaviour once it gets deployed to production. Drill down into the complexity that needs to be, or can be implemented, and tell them to STFU about the stuff that isn’t/doesn’t/can’t if they keep banging on about it.
Push back on subjective adverbs and adjectives
For example: ‘all pages on the site will load quickly’ is meaningless. Quickly relative to what? Get your BA to re-write this to provide something quantifiable, or get them to remove it.
Push back on motherhood statements
For example: ‘The system will be easy to use’ is ambiguous, and can’t be verified. It adds no value. Best get your BA to remove statements like this altogether.
Get them to think about the negative cases
I’ve read plenty of requirements with little snippets like:
‘if the user has the foobar role and the order has more than one line item they can click on button A to finalize the order’.
This describes the ‘happy path’ well enough, but what about all the un-happy paths? If they don’t have the foobar role what should the button do? Should the user even see it, or should it be disabled? What if the order has no line items? What about zero-dollar line items? What about future-dated orders? Try and train your BA to enumerate the negative cases along with the positive ones, because you’re going to have to build both.
Join forces with the developer’s arch-enemy, the tester!
Testers hate the ambiguous crap that most BAs spew out more than developers, because the personality traits that go towards making them a good tester also make them obsessive-compulsive, detail-oriented, and inclined to be none-to-impressed by prosaic and insubstantial requirements. Wishy-washy requirements are like kryptonite to testers because requirements that can’t be verified can’t be used to raise bugs. Detailed negative cases (the kind I noted above) in the requirements are the bedrock that negative test-cases are built on. Negative test-cases often make up the majority of (sometimes as much as 80%) of the volume of test cases, so without these negative cases testers are not going to feel like they’re giving the system the necessary coverage.
Get them to focus on the What and Why, and stay clear of the How – requirements shouldn’t dictate the implementation
Sometimes if the BA is a former developer, or when an existing system is being replaced BAs will devolve into specifying requirements in prescriptive technical detail. For example:
Really? At 12:00, always and forever? Perhaps this other system we need to integrate with has a web-service we can call to keep the two in synch real-time? And what if tony leaves? Best to specify WHAT needs to be achieved form a business perspective (and possibly WHY to give the developers some context when making trade-offs) but steer clear of the HOW.
Sometimes there are real non-functional requirements that effectively dictate the implementation – if your BA is adamant that something needs to be done using a certain technology then perhaps (in a moment of clarity) they’ve done this analysis. Drill down to find out WHY they, on the face of it, seem to be suggesting the most brain-dead technical solution that has ever crawled out of the UML swamp. Even a stopped watch is right twice a day, and one with a substance abuse problem may be right slightly more often. Drill down into the details.
A similar (but worse) variation of over-specifying the implementation based on an existing system is the ‘nobody knows why it does this, but that is what the existing system does so that’s what we’re going to do’ syndrome, also known as ‘cargo cult business analysis’. Here’s a clue – discovering the answer to these questions is what the ‘analysis’ part of business analysis entails. Don’t accept ‘that is what the existing system does’ as a rationale for something.
Document significant decisions & changes
You approach Anthony the BA after a discussion with the business reps. He seems in his usual hyper-alert state, and he has that usual focused, manic stare. It’s 6 weeks out from ‘go-live’ and you have some specific questions about the security model. You feel that some of the requirements are unclear and can be interpreted in two contradictory ways. He rattles off some answers to your questions even though you’re not sure he’s thought through the implications. You try to draw him into a longer conversation about this but he says he’s in a rush, and to just make it happen. What do you do? You go back to your desk and write an email like this:
To: [email protected] CC: [email protected]; [email protected] Subject: Clarification of <Feature name> Hi Tony, Just confirming the conversation we had re: <Feature name>, in particular <elaboration of your problem/question>. You said <what Tony said goes here>. I’m a little worried that <your concerns/impact of bad decision goes here>. I’m going to proceed on the basis that what you’ve said is correct, but can you verify this ASAP and get back to me either way? Thanks <your name>
Call me an ass-covering whatever, but I’ve been burned by this often enough that it’s almost a reflex now. What if your documentation ‘ownership’ process allows you to update the requirements directly? Why not just run with whatever Anthony said and run with that? Doing it this way if your fears are well-founded someone else might join the dots and realize what you’re on about. If not then you’re giving them visibility of the process. Plus letting Tony or another BA make the updates to the requirements shows that you’re not just making stuff up and then implementing it.
Don’t be fobbed off
Remember that time you stayed up ‘til 3AM in the morning with reflector figuring out how the data contract serializer worked, or debugging that memory leak using WinDBG? Good BAs should be like that but with business processes. Don’t be fobbed off with ‘well, I suppose I could ask the business’.
The ABC’s ‘Gruen Transfer’ show chose to award this ‘ad’ for Microsoft SongSmith their ‘worst ad ever’ appellation in the first of a series of spots where they present really, really bad ads. While it’s amusing to poke fun at MS (in a kind of retro ’M$ sux0rs, slashdot roolz and 1999 is the year of linux on the desktop’ way), this one strikes me as unfair. This isn’t a real ad intended for airing on television to promote Songsmith to the general public, but instead a cheezy spoof video created by the team who work on Songsmith at Microsoft Research (they say so on their site). For one thing the ad is much longer than a usual TV ad spot, at over 4 minutes long. Secondly I’m fairly certain none of the people in it are professional actors (certainly none of them can sing). The video was filmed at the Microsoft campus for pete’s sake! The green coffee cup with the Microsoft logo on it is a dead give-away. I guess advertising folks aren’t known for letting the truth get in the way of a good story. I wonder if I make a crappy iPad video can the feature it next week? Also I found the comments almost more amusing than the ad, in a scatological kind of way.
The IT department in your medium-to-large organisation doesn’t care about your productivity. In most organizations IT is a cost, not an enabler, or something that gives your organization a competitive advantage, and your organisation is no different. Shelling out more money for better networking hardware, or more storage, or new software licenses has real, measurable costs that the IT department has to front up for, and which they have to pass on. When you have to wait 30 seconds between double-clicking a network folder and the contents displaying on the screen the cost is so small it’s hard to measure, and it isn’t a cost that the IT department pays. Sure, it robs people of their productivity, bringing in to sharp contrast for most of them just how unimportant they are, and invites them to task-switch to something else which has proven detrimental effects on productivity, but that isn’t the IT department’s problem now is it.
Your productivity is collateral damage in the IT Department’s war with entropy. Flexibility is the enemy. Flexibility leads to change (forward progress is one kind of change, but allowing users to change their desktop background or their system font is another
kind of change). Change leads to increased costs – one out of every thousand users who change their desktop background is going to accidentally lock themselves out of their account somehow, and cost the IT department in support calls to the helpdesk (a total misnomer since there is no desk, and no help). In order to try and put a lid on entropy things are closed and locked down. Legitimate sites and MIME types are inadvertently blocked at the corporate firewall, because there is a risk for the IT Department in letting them through, and there is no cost to the IT department for preventing you doing your job.
This goes double if you’re a developer. The IT department like homogeneity. They like taking away user ‘rights’, and locking things down. They crave order and structure and minimal surface area. As a developer you don’t fit their model. You need access to configure web or database servers, to start and stop services, to install programs, to attach debuggers. You need exactly the same kinds of rights they have themselves, but you lack the fear of change that normally ensures the IT Department never does anything with them. And maybe you actually know what you’re doing. For the IT Department, preventing you doing your job as a developer is critically important, because as a developer you are an agent of change. Every key-press you’re writing a new future for some part of their IT ecosystem. Creating? Enabling? Improving? Maybe – those are subjective, and the IT Department probably won’t reap any of the benefits of those anyway. But changing – yes &
ndash; that is not subjective, and that IS a risk/cost the IT Department must bear. Improvement and enabling are not possible without change, and the IT Department is diametrically opposed to change. Since they can’t directly oppose the change you’re carrying out they need to reign it in, and slow it down. Make you work in a virtual machine. Make you work in a virtual machine via VNC. Make you work in a virtual machine hosted in another country via VNC, over a slow link.
Processes are one of the chief tools the IT Department has to reign in your positive change: Complex change control processes; opaque ‘network tests’ for anything that is deployed; Refusal to roll out supporting componentry; tiny windows for change to occur in; N months of ‘security testing’ before anything is rolled out. It’s fine for the IT Department to cause rolling outages during the working day because someone there can’t be bothered staying back late to deploy a change, because people’s productivity doesn’t matter to the IT Department. But not you, your work can’t be deployed for another 6 weeks because there is a change embargo in place until the end of the holiday season.
The IT department is driven by that fear. Fear of change. Fear of additional effort. Fear of being taken out of their comfort zone. Fear of being wrong. Fear that they’ll be found out as imposters. Fear that if they let you look at that proxy configuration, or that network trace you’ll see why that network folder takes 30 seconds to open for no good reason, and they’ll lose their mystique, their authority. And without that how can they retain control?
Of course their fears are somewhat misplaced. Where else are you going to go? It’s not like there are two IT departments vying for your business. It’s their network, and their hardware. Plugging in your own stuff can be grounds for dismissal, as can attempting to circumvent their controls. When two organizations merge the dominant IT Department will fight aggressively to bring things back into equilibrium. There can be only one. All those change control processes they enforced on you get thrown under a bus while the IT Department’s immune response system kicks in. And once again, if your productivity is impacted by this the IT Department just doesn’t care.
'Once upon a time there was a big brown bear who loved writing software'
Thus begins my re-telling of the classic children’s story “The Big Brown Bear” as a software development parable. I’ve always self-identified a lot with the big brown bear, and his errant ways have often reminded me of the way software development projects run.
Download my modified version of this classic story here: brownbear.pdf
Back in the day I preferred the name gosub10.com to stackoverflow.com
I’ve only named one really successful web-site in my life. Way back in the heady days of 2008 a [not so] young blogger had decided to throw in his job at vertigo software and team up with Joel Spolksy to create a new Q&A site that was to be the antithesis of the popular-but-hated expertsexchange. That [not so] young man was Jeff Atwood and when it came time to find a name for his site he turned to some of the best experts in branding and marketing on the internet for suggestions. They were all busy, so he ended up emailing Leon Bambrick AKA the secretgeek and myself whose work he had long
plagiarizedadmired.One of the names I suggested was stackoverflow.com, which ended up being chosen as the ‘winning’ name in a poll on Jeff’s blog. It’s amusing to look back at the list of other names I suggested, and also to note that I preferred one of the other suggestions on Jeff’’s list - gosub10.com – to any of my own.
Of course when it came time to name the next system-administration-centric site in the growing Atwood-Spolsky empire they knew who to turn to. But once again those guys were busy so they asked me (as well as a bunch of other people). I liked Phil Haack’s suggestion of rackoverflow.com (but it has weird connotations). This time the best I could come up with was nextnextdone.com. I can’t imagine why they never went with that one, and chose serverfault.com instead.
»My $147 Android Tablet
A few months ago I ordered an APad - a type of Android tablet/slate/giant-mobile-phone/iPad-like-form-factor-whatever-you-want-to-call-it from dealextreme (ThinkGeek mixed with Archie McPhee…but really cheap, and without the sense of irony). A month or so later when they got some stock in it arrived. I’ve had a play around with it and decided to share my thoughts.
Some context
I don’t have an iPad (although I’ve played ‘round with a few) so my expectations might be lower than they would be if I was using one of those all the time. My hope was that I could use this for casual web browsing around the house, and read pdfs and RSS on public transport, but overall my expectations weren’t high. I don’t have any other android devices. I own a windows mobile phone which I only keep around so I can fantasize about the different ways I could destroy it – clay pigeon shoot, bandsaw, does it blend? which shows I have a high tolerance for pain from mobile devices.
The Good
The chrome-lite browser is fairly capable (although, not nearly as capable as the new IE in WP7 looks, hotdam!), once I got the hang of it for panning/scrolling/zooming etc (the device is single-touch so no pinch gestures). No flash, but I didn’t really notice on most sites – as you would expect youtube opens in its own app. The Repligo and Beam PDF readers that I downloaded from the android store were both pretty good for reading PDFs (once again, no pinch). The screen is nice and quite comfortable for reading (800x480 pixels at 7”..no ‘retina display’ but not too bad either). Rendering of text (especially in the mobile browser) was quite nice. Video playback was smooth. Ticks in both boxes for the primary functions I envisaged for the device.
The Bad
The battery life is not that great. Even with the screen and wireless off the battery seems to drain away pretty quickly over the course of a day. The whole form factor is so iPhone-like it really isn’t funny, the geometry feels very similar to the iPhone3 and the iPod Touch. Software-wise the thing thinks it is a phone too (when I turn on the screen it says ‘No Service’ even thought this is unremarkable - it never will have any ‘Service’ because it doesn’t have the requisite networking hardware). The build quality is fair to good, but not ‘Apple’. I think a metal case would have made a big difference here – the thing is so light (about 300g) they should have packed it with more batteries and gone for a metal case and it would have really lifted the device in my eyes.
Also - it’s running android 1.5, which even thought it was released in mid-2009 is the android equivalent of running Windows XP on your desktop. Dominic said Android 2.x got important improvements like ‘JIT’ so even though most things don’t feel that slow on the device I can’t help but thinking ‘this could be faster’ when I think about 2.x. Since android is an open platform I should just port it myself, right? right? The one thing that did feel a bit slow was changing orientation between portrait and landscape. The on-screen keyboard is fine for typing in URLs and logging in, but sucks for even the smallest amount of content-creation-typing.
Comments
Announcing my latest side-project: logEnvy, bringing ‘sexy’ to windows and IIS logs
For longer than I care to think about I’ve been working on an app in my spare time to make scouring through Windows and IIS logs from multiple machines easier and more fun. I set deadlines “hey, wouldn’t it be cool to release on Cutler’s birthday” and then some time later “I’m going live on the Windows NT initial release date” (last week) only to enjoy the sound of them rushing by as I sweated over one last feature, or tried to fix one more bug.
Over the week-end I decided to throw caution to the wind and release what I had, warts and all. First of all you can download it here. And now a bit of exposition…
Searching, Sorting and Filtering Windows and IIS logs
logEnvy is eventvwr (the one built into windows) dipped in WPF UI goodness, and turbo-charged with the ability to read IIS logs too. It has a single view over multiple windows and IIS logs – I was sick of looking at IIS and event logs for particular user sessions across multiple machines from a server farm. You can sort and filter just like in eventvwr, but it also has full-text search over the contents of all events. You get a resharper-like indicator in the scroll-bar showing where search results occur in the current set of events, and you can click on the green indicator to select that event, or mouse-over for a tool-tip summary.
It’s ‘agent-less’ – you don’t install anything on the machine you want to read logs from (heck, it doesn’t even have an installer itself), and can read events from remote machines from different domains (providing you have a network connection, and the right security credentials of course).
Event Details View
One of my major gripes with eventvwr circa XP/Server 2003 was the ‘port-hole view’ you were given to read the details of the event you selected. And to add insult to injury it was a modal pop-up! The ‘details’ view in logEnvy shows a textual description for all the selected events, and you can search within the text of the selected entries.
Summary View
This view tries to summarize the current set of events in meaningful ways – currently it shows a breakdown by event type, a breakdown by date or time, and a list of the top 10 event sources in the current set. If a particular summary no-longer adds value (for example if you’ve filtered events to just show errors) it won’t show the breakdown by event type anymore. I’m planning to add more summaries over time.
Timeline View
This view is kind of like the map of the London underground meets event logs, to try and help people see the temporal relationship between events (especially across multiple machines). Events and IIS log entries show up as dots on three ‘tracks’ per event source – information, warning and error. If lots of events occur at a similar time they’re grouped into a single item. You can click on dots to get the textual information about the event(s) in the details view. You can pan and zoom, and there’s a histogram built in to the scroll-bar at the bottom to show you where the most interesting data is.
Two Warnings
First warning – eventually I want to sell logEnvy, it’s still in beta now, and will probably remain this way for a while, but it will eventually be released and cost money. There will always be a ‘free’ version with all the features, but only for local event logs. The good news is if I’ve ever worked on a project with you, talked to me in person or if I know you on-line you’ll automatically get a free license. If you don’t fall into any of these criteria and would still like a free license email me at [email protected] and I’ll put you on a list. The other way you can get a free license (which I’d really appreciate) is to send me suggestions and bugs, which brings me to my second warning.
The second warning is – there will be bugs. The Timeline view I only added in the last month or so, and it and the summary view are both a bit rough.
Also I’m interested in what features I should be adding. Killer visualisations? Different event sources (SQL Server, ISA, Squid, log4net, SNMP?) What should I be adding? Send hates/likes/suggestions and bug fixes through to [email protected]. If you still have any doubts why not download it here and give it a go.
One last thing - when you download it you’ll get a serial number - because of my crass commercial visions for logEnvy I built the serial-number authentication bit into it already. You can hit the download page as many times as you want and get as many serial numbers as you like, they will stop working when the beta period ends. When you launch the app you’ll need to enter one to use the ‘full’ version.
Comments
The Absolute Ironclad 100% Guaranteed and Fool-proof way to Get People to Read Your Email
Want people to read your emails? And not just read them, but pour over them with a fine tooth-comb, analysing for meaning, reading and re-reading every sentence, weighting every word? In a corporate setting there is only one way I know to achieve this – email recalls! Recalled emails are a quaint notion, something akin to being able to recall a bullet after it has been fired from a gun. Usually the only people who recall emails are those who don’t understand how email works and have inadvertently sent something really stupid and/or personally damaging to a list of people they may not have intended to send that item to. »
Microsoft Shows off iPhone-style toggle buttons in VS2010 Productivity Power Tools
I was intrested to see today that in the new Productivity Power Tools update that the toggle buttons on the configuration dialog for this add-in have taken on a very iPhone-ish appearance. And here for comparison are some iPhone toggle buttons. Some investigation in Snoop shows that these are indeed styled CheckBox controls (CheckBoxes derive from ToggleButton in WPF and don't really add any behaviour, so semantically they're toggle buttons). »
How to convince your BA to drop out of the Tony Montana School of Business Analysis
BAs and cocaine…they go together (from what I’ve seen from most requirements documents) like developers and coffee, and sales executives and three-hundred-dollar lunches. Unfortunately just because your BA does a bad job it doesn’t magically remove the need for analysis to happen, somebody’s got to pick up the slack. If you’re a developer then that somebody is probably you, and to be honest you’ve got enough on your plate already, haven’t you. The best outcome for everyone would be if the BAs cleaned up their act and actually did their job. These are some suggestions for how to get your BAs to drop out of the Tony Montana finishing school for BAs, stop smoking crack and start creating clear, unambiguous and actionable requirements. If this doesn’t work try an intervention or rehab.
Side node: Although Tony Montana was a vicious psychopath without any specific technical skills he wasn’t actually a business analyst, per se.
Pay attention to terminology
Ideally all requirements should be written in a language structured around the domain model and used by all team members to connect all the activities of the team with the software. If your BA uses widget and sprocket interchangeably find out if the two have a different meaning or are synonymous. If your BA uses the two interchangeably but your business reps eyes glow with white-hot rage when you confuse the two chances are your BA doesn’t understand the problem domain properly.
Watch out for stuff that’s ‘pretty complicated’
Some problem domains are legitimately complicated. Sometimes people use ‘pretty complicated’ as a synonym for ‘stuff I don’t understand very well’. Knowledge is power, and I’ve seen BAs hold ‘pretty complex’ over the development team as some kind of Ace up their sleeve.
‘The foobaz report is pretty complex, but in practice all you have to do is multiply this value by 10%’.
There are plenty of aspects of software systems that live outside of code, like processes and procedures, policies, human workflow and the stuff that happens in the heads of the people using the system. As a developer you’re on the line to deliver the CODE part of the system, and the business rules and logic you have to encode in the foobaz report are either complex or they aren’t. If you code it up to multiply all the values by 10% it’s not suddenly going to start to show complex emergent behaviour once it gets deployed to production. Drill down into the complexity that needs to be, or can be implemented, and tell them to STFU about the stuff that isn’t/doesn’t/can’t if they keep banging on about it.
Push back on subjective adverbs and adjectives
For example: ‘all pages on the site will load quickly’ is meaningless. Quickly relative to what? Get your BA to re-write this to provide something quantifiable, or get them to remove it.
Push back on motherhood statements
For example: ‘The system will be easy to use’ is ambiguous, and can’t be verified. It adds no value. Best get your BA to remove statements like this altogether.
Get them to think about the negative cases
I’ve read plenty of requirements with little snippets like:
‘if the user has the foobar role and the order has more than one line item they can click on button A to finalize the order’.
This describes the ‘happy path’ well enough, but what about all the un-happy paths? If they don’t have the foobar role what should the button do? Should the user even see it, or should it be disabled? What if the order has no line items? What about zero-dollar line items? What about future-dated orders? Try and train your BA to enumerate the negative cases along with the positive ones, because you’re going to have to build both.
Join forces with the developer’s arch-enemy, the tester!
Testers hate the ambiguous crap that most BAs spew out more than developers, because the personality traits that go towards making them a good tester also make them obsessive-compulsive, detail-oriented, and inclined to be none-to-impressed by prosaic and insubstantial requirements. Wishy-washy requirements are like kryptonite to testers because requirements that can’t be verified can’t be used to raise bugs. Detailed negative cases (the kind I noted above) in the requirements are the bedrock that negative test-cases are built on. Negative test-cases often make up the majority of (sometimes as much as 80%) of the volume of test cases, so without these negative cases testers are not going to feel like they’re giving the system the necessary coverage.
Get them to focus on the What and Why, and stay clear of the How – requirements shouldn’t dictate the implementation
Sometimes if the BA is a former developer, or when an existing system is being replaced BAs will devolve into specifying requirements in prescriptive technical detail. For example:
‘Every night at 12:00 the system will generate a tab delimited file containing the orders from that day that will be FTPd to ftp://192.168.1.54/tony/apps/interchange/’
Really? At 12:00, always and forever? Perhaps this other system we need to integrate with has a web-service we can call to keep the two in synch real-time? And what if tony leaves? Best to specify WHAT needs to be achieved form a business perspective (and possibly WHY to give the developers some context when making trade-offs) but steer clear of the HOW.
Sometimes there are real non-functional requirements that effectively dictate the implementation – if your BA is adamant that something needs to be done using a certain technology then perhaps (in a moment of clarity) they’ve done this analysis. Drill down to find out WHY they, on the face of it, seem to be suggesting the most brain-dead technical solution that has ever crawled out of the UML swamp. Even a stopped watch is right twice a day, and one with a substance abuse problem may be right slightly more often. Drill down into the details.
A similar (but worse) variation of over-specifying the implementation based on an existing system is the ‘nobody knows why it does this, but that is what the existing system does so that’s what we’re going to do’ syndrome, also known as ‘cargo cult business analysis’. Here’s a clue – discovering the answer to these questions is what the ‘analysis’ part of business analysis entails. Don’t accept ‘that is what the existing system does’ as a rationale for something.
Document significant decisions & changes
You approach Anthony the BA after a discussion with the business reps. He seems in his usual hyper-alert state, and he has that usual focused, manic stare. It’s 6 weeks out from ‘go-live’ and you have some specific questions about the security model. You feel that some of the requirements are unclear and can be interpreted in two contradictory ways. He rattles off some answers to your questions even though you’re not sure he’s thought through the implications. You try to draw him into a longer conversation about this but he says he’s in a rush, and to just make it happen. What do you do? You go back to your desk and write an email like this:
To: [email protected]
CC: [email protected]; [email protected]
Subject: Clarification of <Feature name>
Hi Tony, Just confirming the conversation we had re: <Feature name>, in particular <elaboration of your problem/question>. You said <what Tony said goes here>. I’m a little worried that <your concerns/impact of bad decision goes here>. I’m going to proceed on the basis that what you’ve said is correct, but can you verify this ASAP and get back to me either way?
Thanks
<your name>
Call me an ass-covering whatever, but I’ve been burned by this often enough that it’s almost a reflex now. What if your documentation ‘ownership’ process allows you to update the requirements directly? Why not just run with whatever Anthony said and run with that? Doing it this way if your fears are well-founded someone else might join the dots and realize what you’re on about. If not then you’re giving them visibility of the process. Plus letting Tony or another BA make the updates to the requirements shows that you’re not just making stuff up and then implementing it.
Don’t be fobbed off
Remember that time you stayed up ‘til 3AM in the morning with reflector figuring out how the data contract serializer worked, or debugging that memory leak using WinDBG? Good BAs should be like that but with business processes. Don’t be fobbed off with ‘well, I suppose I could ask the business’.
Further Reading
Writing quality requirements
Role of the Analyst in Agile Projects
Agile Requirements Modelling
»Gruen Transfer vs. Microsoft Songsmith - never let truth get in the way of a good story
The ABC’s ‘Gruen Transfer’ show chose to award this ‘ad’ for Microsoft SongSmith their ‘worst ad ever’ appellation in the first of a series of spots where they present really, really bad ads. While it’s amusing to poke fun at MS (in a kind of retro ’M$ sux0rs, slashdot roolz and 1999 is the year of linux on the desktop’ way), this one strikes me as unfair. This isn’t a real ad intended for airing on television to promote Songsmith to the general public, but instead a cheezy spoof video created by the team who work on Songsmith at Microsoft Research (they say so on their site). For one thing the ad is much longer than a usual TV ad spot, at over 4 minutes long. Secondly I’m fairly certain none of the people in it are professional actors (certainly none of them can sing). The video was filmed at the Microsoft campus for pete’s sake! The green coffee cup with the Microsoft logo on it is a dead give-away. I guess advertising folks aren’t known for letting the truth get in the way of a good story. I wonder if I make a crappy iPad video can the feature it next week? Also I found the comments almost more amusing than the ad, in a scatological kind of way.
Comments
The IT Department doesn’t Care about your Productivity
The IT department in your medium-to-large organisation doesn’t care about your productivity. In most organizations IT is a cost, not an enabler, or something that gives your organization a competitive advantage, and your organisation is no different. Shelling out more money for better networking hardware, or more storage, or new software licenses has real, measurable costs that the IT department has to front up for, and which they have to pass on. When you have to wait 30 seconds between double-clicking a network folder and the contents displaying on the screen the cost is so small it’s hard to measure, and it isn’t a cost that the IT department pays. Sure, it robs people of their productivity, bringing in to sharp contrast for most of them just how unimportant they are, and invites them to task-switch to something else which has proven detrimental effects on productivity, but that isn’t the IT department’s problem now is it.
Your productivity is collateral damage in the IT Department’s war with entropy. Flexibility is the enemy. Flexibility leads to change (forward progress is one kind of change, but allowing users to change their desktop background or their system font is another kind of change). Change leads to increased costs – one out of every thousand users who change their desktop background is going to accidentally lock themselves out of their account somehow, and cost the IT department in support calls to the helpdesk (a total misnomer since there is no desk, and no help). In order to try and put a lid on entropy things are closed and locked down. Legitimate sites and MIME types are inadvertently blocked at the corporate firewall, because there is a risk for the IT Department in letting them through, and there is no cost to the IT department for preventing you doing your job.
This goes double if you’re a developer. The IT department like homogeneity. They like taking away user ‘rights’, and locking things down. They crave order and structure and minimal surface area. As a developer you don’t fit their model. You need access to configure web or database servers, to start and stop services, to install programs, to attach debuggers. You need exactly the same kinds of rights they have themselves, but you lack the fear of change that normally ensures the IT Department never does anything with them. And maybe you actually know what you’re doing. For the IT Department, preventing you doing your job as a developer is critically important, because as a developer you are an agent of change. Every key-press you’re writing a new future for some part of their IT ecosystem. Creating? Enabling? Improving? Maybe – those are subjective, and the IT Department probably won’t reap any of the benefits of those anyway. But changing – yes & ndash; that is not subjective, and that IS a risk/cost the IT Department must bear. Improvement and enabling are not possible without change, and the IT Department is diametrically opposed to change. Since they can’t directly oppose the change you’re carrying out they need to reign it in, and slow it down. Make you work in a virtual machine. Make you work in a virtual machine via VNC. Make you work in a virtual machine hosted in another country via VNC, over a slow link.
Processes are one of the chief tools the IT Department has to reign in your positive change: Complex change control processes; opaque ‘network tests’ for anything that is deployed; Refusal to roll out supporting componentry; tiny windows for change to occur in; N months of ‘security testing’ before anything is rolled out. It’s fine for the IT Department to cause rolling outages during the working day because someone there can’t be bothered staying back late to deploy a change, because people’s productivity doesn’t matter to the IT Department. But not you, your work can’t be deployed for another 6 weeks because there is a change embargo in place until the end of the holiday season.
The IT department is driven by that fear. Fear of change. Fear of additional effort. Fear of being taken out of their comfort zone. Fear of being wrong. Fear that they’ll be found out as imposters. Fear that if they let you look at that proxy configuration, or that network trace you’ll see why that network folder takes 30 seconds to open for no good reason, and they’ll lose their mystique, their authority. And without that how can they retain control?
Of course their fears are somewhat misplaced. Where else are you going to go? It’s not like there are two IT departments vying for your business. It’s their network, and their hardware. Plugging in your own stuff can be grounds for dismissal, as can attempting to circumvent their controls. When two organizations merge the dominant IT Department will fight aggressively to bring things back into equilibrium. There can be only one. All those change control processes they enforced on you get thrown under a bus while the IT Department’s immune response system kicks in. And once again, if your productivity is impacted by this the IT Department just doesn’t care.
»