Sunday, 29 March 2015

From Meetings to Success

It can be all too easy for a projects user stories to be copied and pasted directly from the annotated minutes of a meeting where 'stuff' was discussed and declared. These stories tend towards suggested implementation. When this happens, the odds are that the structure (and requirements) will not be clear.
 

Pragmatic analysis and Clarity are key to Success.

 
When pulling stories from meeting minutes you'll end up with the flattening out of data producing spaghetti requirements, leading to spaghetti code. Based on the muddy stories, a hotch potch of testing will be produced, proving a risk to the  successful delivery of items buried (or missed) in the documentation.
 

Lets make the change.

 
Consider the following structre when writing user stories:
 
A User Story should be designed as follows:
As a …
I want …
So that …
This describes the need of the change.
 
These stories can then have Acceptance Tests in the form of:
Given …
When …
Then …
This describes the behaviour of the change.
 
Once we understand the behavioural change required, then we can work out what tasks are required to make the behavioural change. Once all of these tasks are completed then the Acceptance Tests should pass, the story will be resolved and importantly, all of that stuff that was declared in the meeting can be put to bed.
 

A successful meeting leading to a successful implementation.

Wednesday, 18 March 2015

It’s not you, it’s me

Motivational quotes; we hate them

poster of a road going into the distance: "determination". 
A picture cat in a tree: "go get them".

We've seen them at training venues and on office walls. But not only can motivational messages fail to make a positive impact, they can actually make a negative one.

Maybe we see the long road “determination” motif and think; "well, that doesn't make sense... The straight road is designed as the shortest distance between two places, what's that got to do with 'determination'? Are they saying that I'm determined if I drive on what looks like a nice open road?...etc"

And regarding that cat in the tree; "I’m a dog person, so I don’t even want to see any meaning here. Stop showing me pictures of cats." *
 
A fun example of a motivational message backfiring is this post on The Poke.
 
We hate motivational quotes because they are not aimed at us, they are for someone to whom this phrase or representation resonates. For us however the message and representation may not resonate, it may seem ridiculous, we may hate it.

 

Motivational quotes; we love them

A lyric from your favourite song.
A line from a memorable film.
A quote from a book.

The motivational quotes that mean something to us aren't an outside voice telling us to be 'tenacious', 'confident' or 'bold', It's our voice. Someone else may have found the words or image for what we need, but this is our message, it means something to us and therefore can motivate us.
 


Epilogue

It would be remiss of me to create a post regarding quotes and not logging a few that I like. I'm aware that you may not like them, but that's okay, as someone once said "Not everyone is like you".   

The World is Yours Ours”
La Haine 

When life itself seems lunatic, who knows where madness lies? Perhaps to be too practical is madness. To surrender dreams - this may be madness. To seek treasure where there is only trash. Too much sanity may be madness - and maddest of all: to see life as it is, and not as it should be!”
Man of La Mancha

Not everyone is like you.”
In the mood for love
 

 
 
* Although I'm a dog person I actually have cats. 

Thursday, 5 March 2015

Getting Started on Twitter

I love the casualness of twitter, where profundity and trivia have an equal footing. If you need a quick-start on your follow list, consider the following accounts.

@infosthetics Data visualizations that inform and/or intrigue.
  Edward Tufte has declared chartjunk as an enemy of clear, informative graphics of data. Chartjunk is everywhere, particularly in mainstream
@mtaulty I do some developer stuff for Microsoft in the UK. [[ pretentious job title goes here ]]. UK
@jonskeet Currently a software engineer at Google, London. Usually a Microsoft MVP
@thebeebs Microsoft technical evangelist. Currently working on mobile apps.
@YouAreCarrying A Twitter bot by Andrew Vestal that provides a fictional adventure game inventory. Users need only tweet the bot with “i”. (users have produced some lovely pictures in responce to 'what they are carrying')
Pretty Pictures
@shanselman Scott Hanselman is a programmer, teacher, speaker, technologist, podcaster, writer, diversity advocate and more.
@Jodie_Paterson Freelance illustrator and stationer. Owner & designer at Paper Pipit. Head of 'Charlie work'
@msdevUK Microsoft Developer UK
@RealBobMortimer I've just fell off my Honda .. My legs are in that tree..and yes I was wearing those shoes again.. The ones from Italy.
@codinghorror NET programming from a human factors perspective: thoughts on software usability and effective team development.
@Loki_Coki Design and illustration.
@boagworld Author of Digital Adaptation. Co-Founder of @headscapeltd. Host of the Boagworld Podcast. Over 20 years of helping organisations manage digital change.
@andybudd Andy started designing websites in 1998. He founded Clearleft with Richard Rutter and Jeremy Keith in 2005
@scottgu Scott Guthrie is an Executive Vice President of the Cloud and Enterprise group in Microsoft. He is best known for his work on ASP.NET
@IrisClasson .NET developer & Microsoft C# MVP
@kibooki Those are no actual toys, but some gorgeous and creative 3D dedicated to the allmighty glory of Edgar Wright, Simon Pegg and Nick Frost.
A community of passionate individuals whose purpose is to revolutionize software design, creation and delivery, while advocating for positive social change.
@DDDNorth Twitter account for THE premium developer event in the North of England.
@codefoster Developer Evangelist at Microsoft. Windows 8, HTML, JavaScript coder. Hiker. Sailor. Husband. Dad. Not in that order.
@ch9 Channel 9 keeps you up to date with videos from people behind the scenes building products at Microsoft.

Monday, 23 February 2015

Managing Objectives

One of the things that I decided to improve this year is how I manage my personal development objectives. I outlined the following requirements.
  • I need to manage a backlog objectives.
  • I want these objectives to be broken down into tasks of a granularity that can be completed in my spare time.
  • I want a task board so that I can see the tasks remaining broken into monthly sprints.
  • I'll need to access to this data from any location.
  • I'll want to collaborate with zangl ltd for some gaming and mobile development tasks.
 
For me, the next step was straight forward. I logged on to Visual Studio Online and created a new Team Foundation Service Project called 'Development Objectives'.
 
The interface is intuitive, the task management is straightforward, the backlog can be easily groomed and it even has a burndown chart to keep me on track.
 
My Personal Task Board

 
So far it is proving the perfect solution, get started.

Wednesday, 18 February 2015

Where shall I begin...

A colleague recently asked me how I start my personal coding projects. He'd love to do more projects out of work but doesn't know where to start. This post is a look back to how I first learnt how to overcome writer's block.

Where It Began

A little known fact about me is that I have a degree in fine art, specializing in oil painting.
In the first year of my degree all boundaries of what was valid were lifted. I was allowed to create anything. To do anything. What ever I wanted to do, to produce ART. But what was noble enough to be my subject? something profound? what? Before I gave any ideas a chance to formalise, I would find reasons why it wouldn't work. The product of this was that I spent the first 12 months studying the white cube, which was not only an analogy for the gallery space but also a blank canvas. 

One of my Paintings (post white cube era)

The Sketchbook 

In the end, what helped me to commit my ideas to canvas, and not to fear about them being exposed, was my sketchbook. A sketchbook is private, portable and disposable. An opportunity to draw anything, document and develop any idea quickly, without fear of critique, it enables a freedom of expression.

At the end of the week you can review the concepts, ideas and sketches in your sketchbook. If they still seem like they have merit, expand upon them, produce rivalling solutions and use heuristic techniques to find how far an idea can go.

In effect, I have just described how I was introduced to low-fidelity prototyping.

The Modern Sketchbook

We are very lucky these days in that we don't even need to carry a sketchbook and pens with us anymore. My smart phone allows me to take photos, sketch ideas and even draft this blog post.

Monday, 16 February 2015

You are Responsible for Your Development

Recognise your Opportunities

When I realised that we had an issue at work regarding application user interfaces, I saw an opportunity. The company was keen on me learning about UX and how we could adapt to create solutions geared towards the customer, they didn't, however, want any time devoted to this during working hours.

This is not necessarily a stalemate; I want the skills, and the company wants to have these skills in-house, but they are not in a position to help me acquire these skills. The answer, go get the skills!! These new skills will open up opportunities for you to work on a wider range of projects, and as a bonus you'll get that lovely post learning bliss once your course or home project has been completed.

It Always Works

There are two scenarios that can come from this, and believe it or not, they are both positive.
  1. You help your company excel through your excellence - Everyone's happy.
  2. The company decide that it isn't interested in the new skills that you have acquired - It's possible that either you missread the signs, and they don't actually want those skills in house, or that the company is a bit self centred.
If it's the later, it doesn't matter, you haven't wasted your time. You have a new skill. By understanding the relationship that you have with your company, you can focus on what is right for you to be the best that you can be. Ultimately it is up to you to make this happen.

Our day-to-day job will throw up these opportunities all the time, all we need to do is pick one, gauge interest from our employer (they may wish to invest time or resource), learn something and produce something. I would always suggest that reading a book or attending a course is fine, but you should produce something to prove to your self that you have made tangible progress.

Monday, 2 February 2015

Make Tasks Visible

As discussed previously, we have used VisualWIP on projects to enable the whole team to see a task board showing the current state of our features for delivery. This application pulls from our data in TFS and the layout can be configured via an XML file (supported by a visual design mode within the application).

What if...

This application has worked well for us, but what if there is a reason that stakeholders can't run this 3rd Party Software. Perhaps it's against IT policy, maybe it feels too foreign for some of the team to comfortably use. Well, as long as we have a browser we can access this data without the need for Visual WIP or even Visual Studio.

By entering the TFS Url (inc. port) into our browser, we can run reports on the data as easily as if we were in the Visual Studio's Team Explorer. We can view and edit tasks (dependent on our TFS project permissions) and view any reports that we have created against the repository data.



Later versions of TFS enable you to access the contained data with relative ease via the web portal. Allowing an immediately accessible dashboard from which you can view the task summary, burn-down data and user defined queries. We also directly manage the backlog and sprint tickets thanks to the inclusion of an interactive task board.

I manage my own personal development tasks using the Team Foundation Services exposed through the visualstudio.com portal.


 

Keep it Visible

There should never be a reason for the teams tasks to be obscured. The whole team should know (and be able to see the context of) what they are doing. Maintaining the transparency of tasks that produce feature completion enables the team to work efficiently and allows the outstanding effort (scale of work involved) to be measured and managed effectively.