Photo of Jamie & Lion

The personal site of Jamie Knight, a slightly autistic web developer, speaker and mountain biker who is never seen far from his plush sidekick Lion. View the Archive

Getting started building a software project

I started writing this to help out an organisation I was informally advising. Just a bit of input really. I figure, by posting it publicly its open for comments and updates. It also means I can find it when I want to refer to it in the future.

So, lets assume, your an organisation and your writing a funding bid. What options are there for getting software built?

For the purpose of this article, lets assume there is no off the shelf software you can use. So you need to building something from scratch?

What are the options?

Two decisions, many combinations.

In my opinion, when building software there are two decisions you have to make early:

1: Where are the team coming from? What structure will they operate within?
2: What methodology will the operate under?

Those two decisions are intensely interrelated. But before we dive in, a disclaimer:

This article is incomplete and probably biased. It’s just the options I am aware of, its intended as a handy starting off point, not a full guide.

Business Structure.

In my mind there are three option for gaining the efforts of a group of developers:

1: hire
2: outsource
3: partners

1: Hire.

If you need developers in an ongoing fashion, and you require complete control. Hire some. Either as staff (e.g., PAYE etc) or by doing fixed length contracts (contractors). You could even split the work up, and farm it out to individual freelancers in units as small as an hour or two.

Normally, alongside a developers you will need to also hire a designer, and sometime a project manager of some description.

2: Outsource

Outsourcing means having another business handle a business operation on behalf of your organisation. For example, many places outsource HR, or security.

One method for having custom software written is to go to a software development company, be the client and simply pay them.

You do give up control, but you are also buying yourself a degree of insurance again you own bad decisions. The outsourcing company, will probably have hired people (see option 1) which they are reselling as functional teams.

The normal method would be to go to an agency. Different agencies will take projects in different fashions. Many will ask for a Request For Proposal (RFP).

3: Partnering.

Sometime, you could build a ragtag team with developers who are being “lent” towards you aim. For example, if your organisation is group of charities and businesses perhaps those group members could give up a small amount of developer time.

Often, when partnering occurs, the management process remains within the organisation. (who will often hire a project manager, or a single lead developer).

So those are the three options I am aware of for business structure. Next, what about methodology?


Methodology is about how the software is developed. There are 2 prevailing methodologies in the software development world:

1: Problem Upfront, Solution Upfront (Waterfall).
2: Problem Upfront, Solution on the Fly (Agile)

1: Waterfall.

Waterfall is the transitional software development practice. My experiences of it are more limited (i practiced waterfall development when I ran + Lion, I have never experienced it in a large project).

From my experiences, waterfall means that all the planning is done upfront. Both the definition of the problem and the definition of the solution.

With a waterfall project, a big spec is written (normally by someone non technical) which is bided on by agencies or given to an internal team to “build”. Its not uncommon for designs to be commissioned and completed before the development team have even been hired.

2: Agile.

Agile takes a number of forms and I am not an expert. I have 3 years of agile experience within the BBC, but that is all, so my viewpoint here is limited.

The basic principle of Agile (see disclaimer above ;)) is that you define the problems upfront (often with “User Stories”) and then tackle each small element of the story piece by piece. Building something in layers. Using the output of one story to influence the development of the next story etc etc.

In the agile world, there are different methods (scrum, kanban etc), but they all boil down to similar tenets. Such as, estimation, thin slices, and defining the solution to the problem as closely to the problem entering development as possible.

Scrum teams work in sprints, often of 2 weeks or so. At the end of every sprint the aim is for value to be delivered to the user. So for example, an early sprint’s goal may be “Have a user system with avatars and secure signup”. Within that sprint a series of users stories (e.g. problems) may be developed. For example, the stories in a sprint about a user system may include “As a user I would like to be able to sign up” “as a user I would like to be able to sign up” etc etc.

The planning of the detail of those tickets (the definition of the solution) is done before the sprint starts, but not too far ahead.

I have probably murdered the definition of agile enough for now, but I believe thats the core of it. If you know better, please leave me a comment :D

Putting it all together.

So those two decisions, the WHO and the HOW can be combined to give you development options. I have enumerated a few below:

Who: hire a team How: Agile
Who: oursourcing How: Waterfall
Who: Partnering How: Agile

And so on.

And finally…

With all that said, what are my thoughts? How should you build a software project.? I’m afraid the answer is I don’t know. So instead of trying to make something up, here are my experiences with the combinations I have experience off:

Who: outsourcing How: Waterfall

This is how + Lion operated. I worked with a client to develop a spec and help them define their solution, or they came to me with a project to be built. I managed the build, building some parts myself, and subcontracting other parts as required.

Who: inhouse How: Agile (Scrum)

When I was working in the BBC Radio & Music team, we built the first version of iPlayer radio. I worked on an agile team named eno, as a front-end developer.

This was my first introduction to agile and it was impressive. The team operated with a very good technical project manager (an ex dev) who helped to organise sprints and provide updates to the wider business. The TPM also arranged releases and did work keeping the ticket management board up to date.

Who: Partners How: Agile (Kanban)

When I was working in platform engineering, business as usual support was provided by a team called the eagles. The eagles was the combined support of a number of scrum teams, each team contributed one team member per sprint to join the eagles team which operated using the Kanban model.

For BAU work, where tickets come in, are of differing sizes, but generally are smaller tasks, kanban worked well. I fondly remember the thrill of delivering tickets every couple of days. It’s enjoyable to see some work release a mere hour or so after its completion (in a scrum teams, releases were normally made once per sprint).

However, for project work (getting a new software build of the ground) kanban was more complicated. My experiences of kanban in this environment are less positive. While in theory planning could itself be a ticket (e.g., a ticket called “plan the user system”) it was way to easy for tickets to end up being co-dependent. This could mean that while there were 40 or more tickets on the backlog at any one time. Only perhaps 3 could be worked on.

My opinion is that it is better to start projects with scrum, but maintain projects with kanban.

Wrapping up.

I hope this article it useful. It’s not exhaustiveI’m and I’m sure its wrong in many places, but hopefully it gives a feel for the options which are out there.

Published: 28 July 2014 | Categories: , Permalink


From time to time I stop speaking, find speaking hard or generally ‘go very quiet’. This can be for a short periods or for a long while (days to months).

How did it start?

I am away on holiday with a group of friends at the moment. We had a day on the beach / playing frisbee in the sea and walking around a beach town. I got very tired and spaced out and stopped talking about lunchtime.

What works?

2 of the group sign ‘enough’ to get by. The other 2 are learning. We have established our own signs for things which relate to our group.

When really needed I have an app on my phone which can speak for me. Though I use it quite rarely.

What does not work?

Its easy to feel left out of conversations and others have to make an effort to include me. While I’m told this is not a problem it does require effort and when time is pressing there is no time for me to contribute. (Which is also a feature!)

How does it feel?

I feel intensely calm and collected. My thoughts are less wordy and more precise and I feel very relaxed.

Having a lower expected contribution too things results in less anxiety. It has also meant less arguments / area for confusion. When I can only express small amounts, I only express important things and even then I leave much unsaid.

Unlike unrestrained speech (where I tend to be totally transparent / have trouble hiding my agenda) with no speech I feel more in control. I can hold thoughts easier without them escaping. This also results in thoughts being better formed before I express them.

If I do speak and words just come out I feel conflicted. On the one hand its good that they are near the surface, on the other hand when they come out I confuse people and get worried I cannot keep them coming out. They also tend to come out in fits and starts.

Words do happen, but mostly when I am alone or when with individuals in quiet places.

What about when I get home?

Speech will probably return pretty quickly. It normally does, I have a few days more off work so if by Sunday speech is not working I have some exercises to get it going again.

On a more general note, speech is an odd one for me. Sometimes I loose it and it’s very frustrating. Other times it goes away and it’s not a problem.

I wish life allowed the second scenario more often. But in reality, I need speech even if I don’t always like it.

Another way of looking at it, is that while on holiday I also managed a break from speech and communication anxiety.

So, that’s about it really. Am posting this from the car on the way to the motor muesum but will be around later to answer any questions.

PS: if you would like more context, or are curious about the late lion chap
I hang around with, read more here: on autism

Published: 25 July 2014 | Categories: , Permalink

WWDC 214 - First Thoughts

Just some quick first reactions:


Swiftnew modern programming language. Looks pretty sweet, looking forward too some more under the hood information and deep dives. Really unexpected!

iCloud Drive – Was not expecting an open file system. Synced with Macs is a happy bonus. Effortless backup too.

SpotlightAlfred just got sherlocked :( it’s like Siri without the voice bit.

Expected but nice:

HomeKit – very excited about this, i have been contemplating a Phillips hue purchase for a while and this may just push me over the edge. Hoping API is open so other devices can be integrated.

Photos – iCloud camera roll is now up to 5gb for free, with extra storage sold as a monthly extra. iCloud already offered 5gb, but It now looks a reasonable cost to upgrade capacity.


No hardware announcement – Mac Mini is very long in the tooth was hoping for something. No mention of ARM powered Macs.

No Apple TV App Store – it really needs one.

No OS 11 it’s been almost 15 years since OSX first debuted. When will OS 11 come along, what changes will it bring?

Published: 2 June 2014 | Categories: , Permalink

Older Articles