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.

Wednesday, 28 January 2015

Versioning for a reason

Please do not push an un-versioned release to your test environment only to recompile and push a versioned dll to your Production environment. If the version numbers do not match then you should not presume that the application code will behave in the same way. If your QA and Testers have signed off version 0.0.0.0 of the application (which could be absolutely anything) How can your product manager confidently allow version 1.0.0.0 or 1.3.11.2 to be released.

So we know that version numbers important, but for whom?

Software version numbers are there for the management of the software through all of the processes that follow the code being written. We need to know what code is being tested, we need to know what code the user has signed off, and we need to know what features are being delivered to the end user. The only person that doesn't need to know about the version number is the user themselves.

How do we keep our version number unique?

The version number of a .Net assembly is made up of 4 sets of numbers (Primary, Secondary, Tertiary and Quaternary). We *could* just use four sets of random numbers, alternatively we could make this version number into something more meaningful.


We could use the Primary number to represent the primary functionality offered by the product. When there is a significant upgrade to the functionality, perhaps the number could increment based in the completion of an epic story. Given this, the product manager is able to understand what his product is offering based on this number.

We could use the Secondary number to represent incremental updates to the existing functionality. These would be enhancements to existing functions of the system, perhaps indicating project milestones or story completion.

We could use the Tertiary and Quaternary numbers as an incrementing 'unique' aspect to the full version number. I have previously used these to signify the time from the start of a Product's development. Currently I am using the Tertiary number to represent the days since development began and the Quaternary number to state the build number for that given day.


What have we got?

We've now got a version number that is not just unique, and therefore traceable through all stages of our development and deployment processes. But one that also contains meaning for everyone involved in the process of delivering the software to the end user.

Wednesday, 21 January 2015

Festival of the Spoken Nerd


Last year I went to the theatre to see Festival of the Spoken Nerd. It was a really fun show, full of tweeting, geekery, Science, Music and Jokes. If you get the chance, try and watch one of their shows, they will be trying out new material in February and March.

Spoiler Alert
Last years 'Full Frontal Nerdity' tour described The Mould Effect by Steve Mould



There was also smoke ring William Tell moments and a nice talk about RGB.
Inspired by this, here is an RGB excel image of my project team. 
My TeamZoom in for the RGB values,  and out for the low resolution image to appear.

Sunday, 18 January 2015

The Utility Belt

Every month I give a presentation to my company's development team. For Decembers presentation, I asked for the group to have a think about the tools and utilities that make their (development) life easier. I gave each developer up to 5 minutes (per tool) to present to the team, focussing on "what is it, where is it, why they have found it useful".

This session was aimed to help increase awareness of some of their great finds and to encourage their adoption. I presented two tools (orca and wilogutl) from the Windows Installer SDK and a one page stocking filler. The presentation went really well, achieved its objectives and received some great feedback. A nice by-product of this session was that it helps build confidence across the entire group.

Extract From Presentation

As long as your company policy and the product licence allows it. Please share your love of the utilities that make your life easier with your co-workers. If they are good for us, they may be good for them too and ultimately make your department more productive.

Remember, Batman doesn't need super powers, but he does rely on some great tools in his utility belt.