Sunday 22 November 2015

Agile: Is there always a user in your user story?

Agile, User Stories - go together like <insert favourite cliche here> and for user facing (typically GUI) interactions, they work very well.

My definition of a user story (many others are available) goes like this:

AS <A user or user role>
I WANT TO / NEED TO BE ABLE TO <Do something / Perform a function>
SO THAT I CAN <Achieve a result>

Simple: WHO, WHAT, WHY (you can also add WHEN if needed, but avoid HOW)

An example would be:

AS a customer service agent
I NEED TO BE ABLE TO Update a customer's address
SO THAT I CAN keep the customer's data correct when it changes

The most common omission is the WHY: In my book, if you can't write out the why, then why is the user story in the backlog anyway?

The second most common is the WHO. As in the following 'User Story'

'We must be able to keep the customer's address current' or (even worse in my opinion)
'The system must . .'

What's wrong with these?

For the first one, it misses the role or person who will do it. This is more important than many people realise. It can show up most often in the end-of-sprint playback and be missed by the entire team!

If the playback is done by one of the developers and the dialog goes something like this: "Here's the address change screen, (click, click, scroll, launch-of-developer-tooling) and you'd click here then overwrite the database contents here . . ." you've found your problem.

What they've actually built is this:

AS a developer
I WANT TO Demonstrate the updating of the customer database
SO THAT I CAN get my story points, mark the story done and move onto the next iteration

Compare and contrast with the actual user story above. Why isn't the customer service agent doing the playback? Because they haven't got a logon? Because they haven't been trained? Because the code is isolated and doesn't have dependencies (like a link to the LDAP where their userid is stored). In that case, in my opinion, you haven't done the user story because the user cannot actually do what they stated they wanted to do in the user story.

But hold on, you say, this will all be sorted out in PROD, won't it? We're still in DEV! We'll fix that before go-live!

Will you? When? And who is going to do it? You've claimed your story points, your velocity has been updated and as a UK politician famously wrote 'There's no money left!'

I talked to a Business Analyst who is also responsible for training users and she asked a very good question: "Where in agile does my training material get written? All this 'don't document' in agile means I can't write a manual / make a video / build help screens."

At this point, I referred her back to the idea of the user story - and there are two options.

If the user requires a training course, documentation and a trial period before they can 'update the customer details', then that's what they need. That's their user story. Part of what seems simple may seem like it's turning into an epic, but that user cannot achieve their results without the resources they need. If the user can't use it, why write it? So, you need the trainer as part of the agile team (in the same way as you need developers and testers) and the story is only 'done' when you have all of the materials ready to go.

Alternatively, you could say

AS the training manager
I NEED TO BE ABLE TO provide a video / written / CBT training course for the end-users
SO THAT I CAN enable new users who were not part of the project originally to learn how to use the system

And yes, this needs to go in your backlog.

The second 'user' story form I have issues with is this sort of thing:

"The system must log all entries and exits of every call to the mainframe"
"The system must audit all entries into the general ledger table"

Really? Why? And more importantly 'WHO CARES?', I'm not being facetious here, but asking 'who cares?' (similar to the 'so what?' technique) really drives out why the story is here in the first place. If no-one who is a user of the system cares whether is does it or not, then why do it?

The two examples above are typical 'no-user requirements' that are so often documented in a 'different way' but I encourage you to think about who actually cares that they are done. (Try omitting them from the backlog and see who screams!) Once you have that person, you have your user story.

For example:

AS the technical support person
I NEED TO BE ABLE TO see every entry and exit of every call to the mainframe
SO THAT I CAN answer the question "Did transaction nnn get sent to the mainframe?' when debugging a live incident at 2am.

AS the person in the company who is being audited for a legal investigation
I NEED TO BE ABLE TO search for and find all transactions involving company nnnn and prove that they could not have been altered after they were performed
SO THAT I CAN avoid losing my job or even going to jail!

See how that focusses the mind? Also see how this builds your test cases? If your playback developer says 'look, here is the audit text file we built - you can see it in this text editor', is that the same as someone desperately searching 10TB of unstructured data with 'update any' in the file permissions and worrying about their liberty?

So to some up (and this is just my 2c as per usual!)


  • If your user story can't explain the 'WHY', then 'As a product owner, I want to relegate all stories without reasons to lowest priority so that I can spend my budget on ones that add value'
  • If your user (not you!) can't do what they wanted to do in their user story, you haven't completed the story. If they need training or help text, that's what you need to give them.
  • If there isn't a user in your user story, who cares if you do it or not? And who's going to say 'done'?

Wednesday 18 November 2015

IBM BPM - how to find BPDs with Autotracking set to 'On'

If you're familiar with IBM BPM, you'll probably know about the Autotracking feature in business processes. The issue with this is that it tracks a LOT of data into the performance data warehouse (PDW) which might not be what you want to do.

In earlier versions, whenever you create a new Business Process Definition, the 'Autotracking' flag was set to 'on' by default. In later ones (8.5+ I think?) this default was set to off.

If you've been running IBM BPM for a while, you probably have a lot of snapshots deployed. You might want to find out which of your deployed BPDs have the Autotracking flag set to 'On' so you can make a conscious decision as to whether that's correct and if you need to make changes.

If you have DB2 (I don't know if this works for Oracle or SQLServer) you can use the following trick:

select
from lsw_bpd 
where data like blob('%<autoTrackingEnabled>true</autoTrackingEnabled>%');

(#update: This used to reference 'ls_bpd' - thanks to Dave Hay for spotting this!)

LSW_BPD is the table where the BPD data is stored in BLOB format, so it's not immediately readable. What the above does is to search all of the BLOB data for the Autotracking flag, but does it by searching for some BLOB data within the BLOB column.

(If you want to get the snapshot names, process app names  etc, you'll probably need to link to other tables).

Please note that this is a 'quick query' read-only hack and you should most definitely NOT update the table in order to change the flag. The correct way to do it is to identify the Process App, find the BPD in Process Designer, change the Autotracking flag, create a new snapshot and re-deploy.

No warranty given or implied, but it saved me a lot of trawling through Process Designer!

Monday 16 November 2015

Once you're Mac, do you ever go back?

Having 'moved to Mac' (from a corporate Lenovo Thinkpad W510 with Windows 7 to a BYOD Macbook Pro 13" and then recently on to a company Macbook Pro 15") I've noticed that I've become something of a 'Mac convert'.

Obviously not everything's perfect, but I thought I'd take time out to list some of the pros and cons I've found over the last year since I switched. As always, this is a personal view - your mileage may vary!

Battery life

Depending on whether I'm using it solidly or not, I can get just under a working day out of the 13". What about the 15"? Well, I've been running Windows under VMWare too much to make a realistic comparison and I've also been sitting at a desk with it so it's usually plugged in.

I'm not sure if it was because my particular Thinkpad was a 'workstation'/desktop replacement, or because the battery was getting old, but I was down to easily less than one hour of battery life.

It seems to be a 'thing' that Mac users don't immediately search for power on entering a meeting . .this is strangely liberating.

So how much of this is the hardware? Well, let's just say that if I'm running VMWare with Windows on it, my battery life drops considerably: this may well be down to 'constant updating' or 'corporate cruft' though - see below.

Size, weight and Retina screen.

Just being able to work on the train/plane etc with a decent screen has been great. I appreciate that I have a 'big n clunky' PC laptop, but for example on a Southwest Trains 'airline' seat, I couldn't even open the screen fully.

Weight: Add the weight of the thinkpad and the power 'housebrick' together and it's a lot to lug in a backpack. With the 13" Mac, I  kept thinking 'did I remember to pack my computer?'

Startup time, rebooting and 'resume from closed'(suspend or hibernate)

I have a startup time of easily less than 20 seconds, often a lot less - but how often am I inconvenienced by startup time anyway? On Windows, quite often: the 'you must now reboot' seemed to be a constant thing. I'm convinced this is due to badly written software more than anything Microsoft actually did to Windows. I hardly ever seem to reboot my Mac; and because of the battery life, I don't every turn it off/shut it down.

The most useful thing is the 'resume from closed' time i.e. instant! You can tell people with Macs - they walk from meeting to meeting with their computers closed'. The majority of Windows users do the 'balancing my laptop with the screen open in one hand and my coffee in the other' walk. This is because resuming from suspend can be time consuming but also because of the danger of the dreaded 'hibernate'. With mine and a large number of others, once Windows hibernates it can take a good number of minutes (easily over 5 - sometimes 10) for it to 'come back'. It's usually quicker to force the power off and then reboot.

From a Windows point of view, changing to an SSD in my Thinkpad really made a huge difference to the startup time, but still getting to actually being able to open eMail or a web-browser definitely took a long time.

'Corporate Cruft' and 'bloatware'

By the time I abandoned Windows as the 'main' o/s on my corporate machine, the amount of 'hassle' things like virus-checkers, auto-updaters, firewalls, software-scanners, asset checkers, push-updaters etc was really getting to me.

I actually wiped the 'corporate image' shipped with my Thinkpad and installed Windows 7 from the Microsoft DVD. The boot time of this was really quick. And guess what? 'Base' Windows can do things like have a firewall, connect to the network - or just run.

But why do manufacturers think they need to add more? Nearly every Windows PC I see seems to have an additional 'manage networking' software install, or a method of managing the screen resolution or something. Why? Windows seems to do it fine?

It's also that the 'corporate cruft' seems less intrusive on the Mac - I don't know why. I have to run a virus checker, a 'corporate app store', a 'register my mac', a non-Apple VPN client etc, but they 'just work' in the background. There is never that 'lock up' of the CPU spinning up to 100% and locking out the desktop. Whether this is the Unix-Like nature of MacOS having better control of background processes or they way the software is written, I don't know.

Constant Updating

Every piece of software on Windows seems (to me) to have its own way of updating. Also, every piece seems (to me) to be constantly looking for updates, or scanning for updates, or something like that. The disk light never seems to stop (typing this I've noticed my Mac doesn't have a disk light . .).

OK, not everything in the Mac garden is lovely - Firefox is a 'constant updater' and MS Office has its own update scheme, but things in the App Store update when I ask them to. And there doesn't seem to be 'patch Tuesday' - although from a security point of view, I'm not sure if this is good or bad.

Also, most updates don't seem to end with the tiresome 'to complete this installation, please reboot your computer'. Well, when I say 'most' there are still the usual outliers.

Bits and Pieces / Accessories - and 'standard' ports.

'Can I borrow your VGA adapter?' 'Any chance of buddy-breathing your power?'
The more people have Macs, the more you can borrow 'bits' off them when you've forgotten yours. It's not like the 'which one do you have? Oh no - this is the different-sized power adapter' conversation, even amongst PCs from the same manufacturer.

And did I mention the relative size of the power supplies? My Lenovo one is huge and very heavy. OK, I have a 'light' travel one but then I get the 'the processor will not run in full power mode' message  . 

It's not all good though:
VGA and Ethernet - you need to carry separate 'dongles' - and they're £25 each! OK, we have HDMI but conference projectors and meeting rooms don't 'do' HDMI all that often. Also, I can't remember that last time I needed a wired ethernet connection - although 1GB is quicker.

15" (85W) vs 13" (60W) Power supplies. I forgot my 13" Power supply on one trip, so I bought another (see 'Apple Store' below). I now have one in my backpack and one at my desk at home - great! Now I get a new 15" Mac. I can use the 85W with the 13" but not the 60W with the 15"! Arghh! When I bought a spare, why didn't the guy say 'you know what - get the 85W one - then that will power any Macbook pro"

Kensington locks - there is no slot for that, so you need a 'special one'.

The Apple Store

Two things here. The first is the 'oops, I forgot to bring my aaaaaa' or 'my bbbbb just died'. If you need an Apple accessory, there's usually an Apple Store / Apple reseller / Store that sells Apple 'bits' near to you that can sell you one when you need it i.e. right this minute.

I was in Woking, UK. I hadn't charged my Mac the night before. It was 10:00am and I had 10% battery left. I looked it my backpack and I'd left my power supply on my desk at home! Panic?

I walked into the shopping centre, bought a 'spare' power supply from the reseller and I'm back up and running at 10:30am. I can't do that with most PC laptops.

Secondly, I've got a presentation at 12:00 and it's 10:10 in Edinburgh. My Mac won't power up. Paaaniiicccc!

Run the full length of Princes Street to the Apple store and throw myself on their (and Applecare's) mercy. In and out in 30 minutes with Mac debugged (reset the PRAM and run the disk diagnostics if you want to know - I didn't know how to do that!) and ready to go. They even offered to call me a taxi back to the office. Again, I couldn't do that with a PC. I'm not sure about walk-in physical repairs but I've had good experiences getting iPhones fixed on a 'walk in'.

Software Compatibility

The main 'downside' to Mac ownership. Want to run MS Visio or MS Project? Good luck with that! There is a lot of software which just plain won't run as there is no Mac version. VMWare or Parallels is your friend here, but you will also need to buy a Windows license and full-retail is expensive!

The other 'compatibility issue' is when someone gives you an NTFS formatted USB drive and says ' can you put the file on there?'. Macs seem to read NTFS OK, but writing is a no-no unless you have additional software to enable it.

Built-in functionality

People often praise the Mac and MacOs for the built-in functionality of the operating system, but similarly others curse things like iTunes and Photos for the way they work and 'take over' your files. Things I really like are:
  • Time Machine: Fit it and forget it - saved me LOTS of times. Not only does it back up, it keeps multiple versions. If the backup disk/NAS is not available it 'queues the data up' until it is.
  • Spotlight search: I just use this all the time - I don't use finder all that much. Interestingly, I could never get on with the Windows search - don't know why

Windows 10, newer PC hardware

So, not all of this is 'Mac vs Windows'  or even 'PC hardware vs Apple'.  It's more 'Corporate Mac vs Corporate PC and Windows'. The following may mitigate some of this:
  • Windows 10 - I've not used this, but I've heard good things about it
  • SSDs - these make a HUGE difference, and I mean HUGE. If your PC has 'spinning rust' then this could be the best present you give yourself
  • Newer hardware with better battery life, size and weight - Again, I've only ever used 'workstation class' Laptops - having said that my 15" Macbook pro is very portable and very powerful at the same time.

Sunday 15 November 2015

Car Analogies . .

Whenever a group of technical people gather to discuss IT concepts with people who may not have been dyed-in-the-wool computer geeks from birth, it is mandatory that at least one of the group will attempt to explain some concept or justify a position using a 'car analogy'.

Some of these come up numerous times - I've listed a few here - please feel free to add more:

Mutually Exclusive Options and 'I want the best one':

Often there are a number of options when implementing/configuring a system. People usually say 'OK, give me all of them' or 'Whatever is best!'

Request:

'If I'm buying a car, I want metallic paint, a CD player and a Radio and an IPhone kit. I want it fully loaded so I'm not restricted - why can't you do that? Stop asking me to make a decision now'

Response:

'OK, do you want Petrol or Diesel? Do you want Manual (Stick) or Automatic transmission? 3 or 5 doors?'

Requirements Gathering and 'Just tell me what you want'

In 'traditional' projects, there is a requirements-gathering phase. Users are asked to specify the system  down to the last detail before design and development can be started. This will happen even if they are not familiar with the subject area.

The car analogy is the 'show-rooming' of requirements. A car dealer does not ask you for a huge list of things your car must have - they ask a couple of questions and then take you to the showroom.

'This Fiesta?' 'Not big enough'
'OK, this Focus is bigger' 'Can I get my dog in the back?'
'How about this Estate?' 'How comfortable are the seats?'
'Why don't you get in an try them out?'

Effectively there are a number of pre-built options the user can look at to shape their thinking. This is part of the aim of RAD, Prototyping/Blueprinting, Agile etc

Even if you can't build a prototype, borrow someone else's:
'Do you want the search to lookup options as you type like Google?'
'Do you want to sort results by different criteria like Expedia does with price, distance from location etc?'
'Do you want 'Undo' like Word and Excel?'

Maintenance, Operations and Support

This one should be obvious - if you don't maintain your car, it will break down. Software on the other hand doesn't need maintenance - code doesn't 'wear out'. Or does it?
  • Security vulnerability - needs to be patched
  • Bugs found - needs to be fixed
  • System grows and needs performance tuning and housekeeping as the original configuration is no longer suitable as the user/data load is now much bigger than it was originally configured for.
  • Release goes out of support - this is the 'can't get parts for that any more' analogy.

Training, especially for new releases:

Request:

"The software should be easy to use - cars are easy to drive"
"I learnt to drive in a Fiesta. I can drive a Mondeo without learning to drive again"

Response:

"How long did it take you to get your license? Did you pass 1st time?"
"Can you drive a car and a motorbike/HGV (truck) / PSV (bus)? Did you take another course?"
"Can you drive a car with the wheel on the 'other' side, in a foreign country, where you're not sure what the road signs mean without a conversion course? It's easy - all the locals manage fine!"
"Can you work the SatNav (GPS)?"
"Can you pair your phone with the Bluetooth?"
"Quick - which side is the fuel (gas) filler cap on - without getting out of the car? **"

**Handy hint; Look at the petrol (gas) gauge on the dashboard and the picture of the pump. The fuel filler is on the same side as the hose in the picture - try it!



Wednesday 4 November 2015

IBM BPM Periodic SLA Update

IBM BPM has a scheduled task called 'Periodic SLA update' which you may not even realise is running . .

Have a look here https://developer.ibm.com/answers/questions/202072/i-am-not-using-any-tracking-or-slas-in-my-process.html for more details and how to disable it if it's not needed

*Edit* this runs by default every 15 minutes, on the quarter of the hour.

DB2 not starting in Windows VMWare on 'new' Macbook

I have a new Macbook Pro 15" - it was even provided by my employer, so it's a 'free' (to me) new Macbook - yay!

So I copy my VMWare images across from my 'old' BYOD Macbook Pro 15" and fire up. OK so far, the Windows server images boot OK.

DB2, however doesn't want to start - and the error messages aren't exactly helpful. Basically, it gets an APPCRASH and Windows offers to find a solution - which it doesn't.

The issue seems similar to this https://communities.vmware.com/message/2422305

Bear in mind it worked fine (and still does) on the 13" Mac - so what's different?

Luckily, I found this: https://communities.vmware.com/thread/461857 which suggests adding the following to the .vmx config file:

monitor_control.enable_fullcpuid = TRUE
cpuid.4.4.eax = "0000:0000:0000:0000:0000:0000:0000:0000"

The technical explanation is in the link above and seems to be connected with the Haswell Processor - which might be why it worked on my 'old' mac and not on the new one.

Anyway, problem solved for now - it worked for me anyway!