Think BIG, build small
A 101 guide for those undertaking small software projects.
“You’re in IT…I want a website that does <insert amazing product here>. What should I do?”
I just realised I get asked this a lot. Probably about 4–5 times a year. In the last year it’s been….
- A wedding planning type site
- A portal for a company to view email and call stats
- An E-learning module with reports
- A invoicing system for contractors
- A pay logging system with a web scraper
So I thought I would type up some notes on what I think you should do.
All these projects are around the same size. They’re somewhat custom, beyond the size that you could build on your own, require some sort of database/backend/api type functionality but are not large enough to warrant a full time professional team.
Often you can solve this through some super amazing plumbing. What a shop? Shopify. Want a blog? Medium. Some account magic? Xero marketplace. Look for something like this first. Unless it’s really niche, mostly someone has built a Saas solution already!
Note if you want to build a full startup…go professional and go seek someone like www.oozou.com who come with my highest recommendation.
[Edit] If you want to estimate what this sort of effort costs have a look at https://estimatemyapp.com/
So let’s say we don’t have the size of the project that warrants calling Oozou. So now what?
Some would say this is just like building an extension to your house. Say you want to do an extension and it’s going to cost about 15K? You put it out to tender, check the drawings and plans…choose a builder through recommendation, review or referral, then ruthlessly project manage the delivery? Right?
That mostly works with software, except the last bit…is very hard….because that’s why you are hiring a professional right? Also…mostly people fail to get to a point of shared understanding of what you need to build, and why, before the project gets started.
Running a software project is hard, but not impossible. Here are some tips to help you out in that process, and how to manage a company to get your project off the ground.
Firstly this is now no longer that much of a technical problem, building these types of projects is not rocket science, this is a product management and shared understanding problem, so concentrate on getting everyone on the same page before you start. That’s probably the one best tip.
These things mostly fail because of Human to Human interaction, not technical issues. Optimize for maximum communication between people and you’ll have the best chance of success.
Tell your story.
This is without doubt the most important thing. You don’t need a massive functional specification or document, you just need your story told. Failure to build shared understanding of what is required here is a real problem and where most projects fail.
It seems odd, but also concentrate on the “Why” of your project. Is it an admin site that gets logged into once a month?….or is it the one opportunity that you have to interact with your clients on a monthly basis and a chance to delight and engage with them? Tell everyone why and how important this is to you. Use example people that you expect to use your site and tell their story. Write the stories down. You’ll learn a lot yourself. Trust me on that.
Make this your responsibility…you own the product…so make sure you tell it’s story. For more info on this check out my blog on User Story Mapping. You don’t need to be an expert….just get storytelling.
Make sure you tell the story of your users end to end, if you have a really good company they will insist on asking this sort of thing up front and will use a technique like “User Story Mapping” so that they know what to build. A great way of sorting this out before you build something is to insist on seeing a rough mockup of every page using something like Invision. If that’s too high fi….do this as an exercise. Use a piece of paper, draw the screens you want build yourself (with the buttons) and put them all up on a wall in order so you yourself know what you want to build. Then only build that.
It will be your fault if the scope creeps on the project unless you think through what you need to start. This is all on you.
Look at previous projects.
Make sure you see work (and use the software) of the company you are asking. They need to have a working reference site. End of story. Even an open source project will be ok, but you need to see (and use) something they’ve done before.
Ensure you own everything.
You need to sign something that means you own everything, the code, the hosting. Everything. Personally I want to see the code in a repository like GitHub and the hosting on something like Heroku. Total 100% fail if they say they will host it. I would not accept that. Sign a document that says you own the IPR (Intellectual Property Rights). If the company has custom libraries that they have used for years…then that’s OK, you don’t own the IPR of those, but you do own everything else but that. A very poor contractor will want to try and tie you into future work, a good one will want to have the project handed over to you so they can work on something new. Good contractors delight in writing up documentation so they don’t get bothered on future jobs. Your project is not a gravy train.
One way of doing this is setting up accounts for things like Github and Heroku and then giving permissions to the company/contractor. Get someone you know in IT to help you do that and vet the process of the company you are employing.
If the project is going to take 12 weeks, make a deliverable every 2 weeks, at least make one after 2 weeks. What I would like to see after 2 weeks say in the example of our employee portal is something hosted on the web with a URL that I can log into and see a list of calls. This is known in the software industry as a spike. The reason you do this is that it tests every minor thing and interaction as soon as you can. So in our simple example we tested the following:
— Can the site be deployed somewhere I can see it?
— Is it secure
— Can the code call our backed service (database or call logging system)
— Can we spec something out and deliver it on time
Pretty good for 2 weeks right?
Use a tool like Trello to track progress of what is going on. At least ensure that you track progress digitally.
There is no excuse for bad UX anymore.
It has to look good. George Clooney good…Scarlet Johansen good. Ask what designs are possible and what their design process is? If the programmer or company say you need to hire a designer…this is a bad sign. (remember we are only talking about 15K projects here) You can get a very good design by finding one you want here: https://wrapbootstrap.com/ and spending $14 on one and asking them to integrate it. (That should take less that 2 days). If they haven’t used bootstrap or think this is going to be a lot of work…I would be worried that they don’t care enough about UI/Ux to build you a beautiful website. Good UI is not expensive these days.
Find something that functions like your site…..and give the design company that to compare against. So…like “AirBnB but for dogs” then people know what you are after.
You need to spend time each week testing the latest work, or answering questions. You would not leave your builders for 3 weeks without inspecting the work, software is the same. You can set up something like Slack, Hipchat or just use e-mail/Trello to go backwards and forwards on issues. If they don’t have questions as you go along…..be afraid….be very afraid. Make it easy to contact you….
Store all the documents somewhere.
Email get’s lost. Use something like SlimWiki or Dropbox to store everything in one place. This seems like an overkill at the time, but later when you come back to revive the project, hand it to someone else, or you leave and someone else needs to figure out why you did the project the way you did, this is invaluable.
Where will the code be run? If they say “in our data centre or webservers” that’s not good. You want to commit to a platform similar to Heroku. Computing power is now a utility, you do not need to run websites on servers that are in your office or someone else's, they run in the cloud. The internet is now a platform and you should run your code on services like Micorosft Azure, Google, Amazon Web Services or things that sit on top of them like the super clever Heroku. Hosting for a simple site is going to cost about £50/month for an application that costs 15K+ to develop.
What’s the backup plan
There needs to be a plan for backup/disaster recovery and there needs to be logging. If you use a service like Heroku, they deal with hardware failure and backups and have very good logging and alerting systems built in that come for free. If the answer is not Heroku, I would want to see some good answers to the backup/recovery issues.
Service Level Agreements. Who’s responsible when the software updates and when things go wrong? Software breaks sometimes. Who you gonna call? This is a tricky one because you can’t force a company to be on 24hr support 7 days a week for your 15K site….but if the thing constantly breaks this is not an opportunity for them to charge you a fee for every call out. Like building an extension out the back of your house..insist on a period after go live where they fix things as part of the fixed costs. About a 2 weeks to a month would be about right.
The more testing you do along the way, the more confidence you will have that the project is built to specification, so try and organise a way to test during the project. This will force the company in question to take an “iterative” approach to running the project vs a massive project where it all is supposed to just be “done” on 1 day.
If you are particularly OCD then you might want to consider some metrics? I always encourage this if I can. You want to know how many people come to your site right? How long they spend etc? You can get your company to integrate something like Google Analytics really easily then you can see what is going on yourself. One useful exercise…define some metrics at the beginning of the project that you want to concentrate on and ask your company to measure that. In our contractor timesheet app it might be: “Show me the average time it takes for a contractor to log in and fill in a timesheet”. You can get really sophisticated here if you like…having these sorts of metrics helps you decide on if your project is a success or not. Defining a metric up front gives your application a purpose. That’s good.
Man that sounds like a lot of work, surely that is what I pay them for?
Nope. I’m afraid you get out what you put in. If you think that doing all the above is too much work, or that you don’t want to do it….then find someone that does. Your project will not live or die on technical issues, it will fail on human process and lack of understanding. You could possibly outsource the Product Managment of this to someone else, which would work….assuming you vet this process as well, same as getting a professional builder manager to run your house extension. One thing that is important so I will say it at the end again.
Tell your story! Give your application a name, give it personality and give it a life of it’s own. Life’s too short to build crappy software!
Here’s my checklist with some answers of things I want before starting:
The Story: A set of user stories (and possibly screen mock ups)
UI: What’s it going to look like?
Legal: Signed IPR docs
Code: Where’s the code stored. I need to own the account for that.
Hosting: Where is it hosted, I need to own the account for that.
Tracking: What systems to use for tracking
Releases: What can I get in 2 weeks to see that it’s all working.
SLA’s: Set some up post go live and ongoing costs.
Metrics: What are we trying to achieve here?
Typical good signs of a project going well are enthusiasm, communication, cooperation and shared understanding. Look for those.
Go forth and build!!!!