Software as a Solution Development - Making Your Idea a Reality.

So, you've got this great idea! You know your market and it’s needs, but you need technical help in making it a reality!

How do you go about finding the right partner to help build your idea?

Software Development has long been a part of the "Gig Economy", but where do you look?

While employing an individual through an agency is a well-trodden path, employing a company with a team offering a wider skills base may be a better idea.

Traditionally, to find a company to undertake your project, you might have to go through a Tender Process, with a formal specification, and evaluation process. Its surprising how much detail you need to think through to build a really good system, particularly if you are putting it out for open competition.

A reliable specification is one that spells out every detail that you want from the system in advance and becomes part of your contract with the Developer in a formal tendering process. It can easily run to several hundred pages even for small systems. The level of nitty-gritty detail required to spell out everything, exactly the way you want it, is sometimes as difficult to read for the software developer than it was for you to write it. And that assumes it is written in Business English.

Conversely, it could be written in technical phrases (or, as our Does Everything Except the Geek-Stuff Staff Member calls it "Alphabet Soup") which just reverses the proposition.

In any case, it's a big, expensive and often frustrating exercise for both sides, and while, for big companies, Governments, and larger charities, the accountability benefits may be compelling, for small companies, it may be using a sledgehammer to crack a nut.

In this case, it may be better to find a company more closely matched to your own in size and ethos, who will work with you to develop what you want.

So how do you find such a company? Do you ask for recommendations, look for a suitable individual or firm through a professional network such as Linked IN, or just rely on Google, and look for a local company whose website looks good?

Increasingly, people are turning to the new "Gig-Economy" sites such as People per Hour, Upwork, and Bark, but how do you find the perfect partner to realise your dream?

You may thoroughly understand your market, and have thought through your project at least a bit but lack the software development skills to make it a reality, so you will need to employ someone to do that part.

Software development is a skill with a high market value. A lot of people can throw a website together using one of the common, off the shelf systems freely available on the web, such as Wordpress, Wix, etc. However, designing bespoke system architecture for complex data analysis, sharing and reporting, or automating a manual process securely, using small Internet of Things (IoT) devices that connect to your PC or phone is a different ballgame.

You want to keep your development team focused on the task of bringing your ideas into reality, so do some homework first. At Gamma Science, we use Agile techniques to collaborate with you to develop your ideas, but we do need something to go on to suggest the most appropriate technologies for your project and budget.

You would be surprised at the kind of "Back of a Fag Packet" thinking some companies think is sufficient for a development team to come up with a fully costed proposal, and that includes some formal tendering processes we have seen!

It really is worth making sure you have taken your thinking as far as you can in what you want the system to be like, how it will work, and, as importantly, what you don't want, or are prepared to sacrifice. Think through the features you want your system to have, the inputs, and the outputs you expect.

Spend some time considering what you need, what would be nice to have, and at what sort of price point "need" becomes "nice to have but not necessary". Be clear, and upfront about budget, quality, and timescale. Remember, the old saw - Of "faster, better and cheaper", you can pick, at most, two.

A great start is to present your requirements as a list of 'user stories' https://en.wikipedia.org/wiki/User_story In its simplest form this involves asking all your project stakeholders what they want from the system, and why, either in real life or as a mental exercise. Often written on a card or a Post It as some variation on "As a <role>, I can <goal/desire>, so that <why>".

This simple approach may then be refined using the "Three Cs" formula for user story creation:[4]

The Card (or often a post-it note) is a tangible durable physical token to hold the concepts; The Conversation is between all the stakeholders (customers, users, developers, testers, etc.) and involves exploring feasibility versus desirability, allowing you to prioritise your desired features, and begin to formulate some kind of a documented plan; The Confirmation ensures that the objectives of the conversation have been reached, and you have something you want to proceed with and that all parties understand what it is!

Don't worry about what off the shelf, or other bespoke systems you are already familiar with can and can't do. That is the developers' problem! But do take some time to identify the software and hardware you have, and whether you need it to be integrated with the new system or not.

A buzzword you might have heard around Software Development is Agile. Agile is not just for Geeks, techniques in Agile can really help you frame your requirements as a business.

In software development projects there are only two variables you can control, Time and Scope. At one extreme, if you control Scope, you can decide what features to include or not. When your features are all included, it is done. At the other, if you control time, you say, after X amount of developer days, often expressed as an amount of money you have to spend, it needs to be done, whether it has the features we want or not. Now in the real world, you would not go to one extreme or the other. So control over actual cost and quality come from juggling these two variables.

We encourage our, typically SME, business clients to build their designs in small stages, under the umbrella of an overarching System Architecture, reflecting on the best bits at each stage. By taking small strides you are delivering value as you expend the costs. Another advantage is, it allows you to steer the project in alternative directions as your business grows and develops, and you learn from the implementation of earlier stages. By delivering small incremental changes you can still get the benefits of small fixes quickly without waiting for the next big release with the Great Big Feature which has turned out to be more complex than anybody thought.

You still need to guard against the evils of "scope-creep" and "feature creep" especially if you have more than one person actively specifying parts of the project. This is a sure way of sending a system over budget!

So give a thought to appointing one project manager, who makes the final decisions on the vision and is readily available to answer strange questions from the developers. It can help if this is the person who compiled or collated your user stories.

If you are planning on bringing the finished product to market and reaping the benefits, you will need to accept that those with the skills to help you do so need to be properly remunerated at every stage of the development process.

While you might have absolute faith in your idea, expecting your development team to take on your business risk and work for equity, or to put in a lot of unpaid time working up a solution to an idea you can express on the back of an envelope is a big ask! (We have had real cases of this! We wish they were even rare!)

So, if your idea is not fully developed, and you don't have the time or skill to do so, consider employing someone to do some of the above work for you, as a feasibility study, to help you develop it. You then have the choice of continuing that relationship into the development phase or specifying your project clearly and exposing it to competition between several suppliers.

For your development team, there is a real joy in seeing a well-made system, out in the wild, fulfilling it's potential, and making a real difference to your business.