Delivering the One-Man Project

In a recent email conversation I touched on the ability, or more often inability, of a one-man software project to deliver regular controlled packets of code.  Or to put it another way the the ability for many one-man software projects to deliver very little or nothing at all despite setting out with the best intentions and a following wind.  At the heart of the problem lies the following rather messy aphorism:

You don’t get concencus in a one-person software project.

Concencus by definition is a group activity.  A one-person project or software product can have concencus but this is only arrived at by interaction with others, usually your users, and if you don’t have a delivered product or a project then you don’t have users.  Concencus is vital to give you the confidence to deliver what you’ve been developing.

So the question turns to how can we form a concencus on project decisions when there is no code to attract users?  What we’re seeing increasingly is the use of crowd funding to drive software development.  Crowd funding is proving to be very useful for software developers and not just from a financial point of view.  More importantly crowd funding can help drive direction, delivery and scope and also help test the choppy waters of marketing by trying out ideas on an interested and motivated audience.  This works better for established companies or old-timers than it does from unproven individuals with new ideas simply because old-timers already have a track record and an audience.  So let’s back up a bit further.

A Kickstarter project commits you to a direction – a product usually – and an intention.  You scope is inherently limited by the promises you make, the videos you release, the decisions you’ve already made when you’re coming up with your Kickstart concept.  It’s all about selling a promise.

A one-person (software) project is usually driven to scratch a particular itch, and its scope may not necessarily include getting to a point where you can sell something.  You might want to make an open-source framework, you might want to come up with a vaccine, who knows?  What you do know if that you as a one-person team have limited time to accomplish this and you want to make incremental progress.

How can you deliver progress?  Well, I’m going to tell you what I do.  I do it by giving myself more than one thing to do in my spare time.  Instead of deciding to deliver one project, I will deliver three or four or five projects simultaneously.  Each will have its own technology associated with it that is slightly different, each will offer something slightly different that allows me to enjoy working on it for a different reason.  It’s me after all that I’m pleasing here.  I’m also out to help others and provide something they might like and find useful but I’m doing this, for me.

The premise may sound slightly insane – why should you make your life more complicated when you want to focus all your spare time on doing one project really well?  In the next few weeks I’ll take you through how I do this and what techniques I use to keep myself interested and focussed.  Above all I want to show you that you don’t need to despair when you look at the calendar and realise that the code is still not out.

Visual Studio 2012 and WOWZAPP

I saw the Microsoft WOWZAPP 2012 hackathon event as a real opportunity for Microsoft to engage with developers at grass roots level and convince them that they should spend their time creating apps in VS2012 for the Microsoft Store.  Therefore it was with some excitement that I arrived the other day at my local event.  The coffee and cookies were flowing and the day had a quiet if measured start.  I had been told to come along with my laptop loaded with Windows 8, VS2012 and the examples SDK.  I did this and made sure I didn’t peek at any of the developer resources ahead of the day in order to give myself a one-shot completely immersive experience.  This is it Microsoft – show me what you’ve got.

The WOWZAPP event has its very own W8 app and this can be downloaded and installed via Powershell as it’s not available (slightly surprisingly) through the App Store itself.  The app package then provides an icon on the desktop and some links to resources.  The choice was then up to you how you used these resources to build an app of some kind.  I wanted to write a little HTML5 game so I quickly found the relevant resource and started building.  The resource was fine if hastily assembled and provided good detail and a nice walkthrough of the features of VS2012.  So far so good and within an hour or so I had a working game and could start to play around with.  However I also wanted to see what the examples SDK could show me so I started investigating the C# and C++ samples with a view to getting perspective on other dev techniques.

This is where the WOWZAPP experience starts to get a little thin.  I went back to the WOWZAPP app to try and find some more info and something else to look at in more detail and quickly realise that that is pretty much it.  There is no depth here – a couple of links to marketing and HOWTO websites and you’re on your own for the rest so I resorted to Googling around for tips and tricks for example on how to get my XNA game built and running inside VS2012.  This is something I would normally be doing at home or in the office but somehow I expected something more to be unveiled at the event.  I expected the scales to fall from my eyes and the path to app nirvana to be shown.  I hoped for some tutorials, some walkthroughs, even some linked branded articles from MSDN say that provided clear declarations of expected modes of behaviour and best practice in development for a variety of ‘target apps’.  Yes there was some information on style but more basic information – like for example what VS2012 technology should I pick for which app type might also be good?

As an experienced developer I’m confused and from seeing the selection of apps created on (or prior to) the day I’d say that I’m not the only one.  Simple case solutions work but in VS2012 there is a confusion of technologies crammed under one roof – C# and C++ sit uneasily side by side.  HTML5/Javascript seem a different world.   I’m still not sure how Blend and the XAML world can fit together with the rest.  At times I feel I’ll want to use all of these technologies but as to how they can work together and how this limits my ability to deploy it to a target environment.

 The only way, like so many times before with so many technologies, will be just to try it all out and see what happens.  As soon as I work out the best development model for the app you want to write I’ll be sure to share it.