Blog

Building a Software Project

Team Avatar - Mikel Lindsaar
Mikel Lindsaar
May 16, 2013

For many of our clients, their project is their first foray into the world of software development. They may be industry leaders, experts in their field, have experience with running physical projects, but often the process of taking something as nebulous as an idea, and producing something as intangible as working software can be a whole new adventure.

Part of my role at reinteractive is making sure that projects run smoothly and easily, our clients are in control of their project, and that we leave them with the very best result.

Our workflow has been refined and has developed hundreds of projects to give us the very best chance to make this a reality. Every project is different - from tiny, back office systems used by a handful of people, through to large scale e-commerce sites used by hundreds of thousands of people a day. But from those projects there is a common thread - a cohesive team and efficient communication are essential.

Kickoff

Because of this, we work hard to ensure that our clients fully understand our processes (and why we have them!) and are able to be fully involved team members, steering their project to success. The first step of this is to start every project with what we call a Kickoff Meeting.

A Kickoff Meeting is your first contact with our Development team, and is usually held with the Lead Developer or Project Manager, depending on the size of your project. It is a call (usually an hour or two) where we introduce our team, how we work, and what to expect during the development process. It’s also a chance for us all to get to know each other a little, understand your background, and understand your goals for the project.

Most importantly, however, this call is the first chance to introduce you to your vital role in the team, and for you to ask any questions to ensure you’re comfortable with that role. Finally, as the vast majority of our day-to-day work is entirely remote and uses some specialist tools, we take the time to ensure that you are all set up to communicate with us comfortably, reliably and efficiently.

Defining the Engagement

Once we have kicked off, and everyone is able to communicate comfortably and easily, we start the meat of the engagement. At reinteractive we fully embrace a set of principles known as “The Agile Manifesto”, and this influences everything in our workflow.

The core of this approach is that things change and nothing is permanent - better ideas are discovered, more efficient technology becomes available, the market changes and your business has to respond. To ensure that we are able to produce a product which best suits the needs of users when it is released, we embrace change and structure our projects to allow us to make changes easily, with little overhead cost.

This is perhaps most apparent at the start of an engagement - rather than spending weeks to prepare a fully detailed, uncompromising, concrete plan, we focus on finding out the broad requirements, working with you to prioritise them, and leaving the fine details to be decided once until we know more about how we will solve it. After all, we never know less than we do at the start of a project!

As part of this, we work with you to define a Minimum Viable Product (MVP) - the simplest, most effective product which we can launch to satisfy your goals. It is at this point where we can help you to prioritise and begin to evaluate the Return on Investment (ROI) of different pieces of functionality - we can give you feedback on the relative complexity and risks involved in different features, and help you to quantify the value and importance those features might hold for your users. This has a few important ramifications for the entire engagement.

Firstly, it means that we can get the highest value items done as early as possible. This allows us to get to a point of releasable, testable software as soon as possible, which allows us to get feedback as soon as possible, reducing the risk of building something your users don’t want or need. Prioritising in this way also reduces the risk for development - if we tackle the most critical functionality first, we can identify any technical challenges early on with plenty of time to find the best solutions.

Depending on the size of your project, this process might take a day, or it might take a few weeks of discussions. At the end of this process, we have worked together to produce a list of very high level pieces of functionality, an idea of how they will be used, and an idea of their relative importance.

Wireframing and Design

For some projects, the graphic design and User Interface (UI) is critical to their success. If this is the case, we usually spend a bit of time as part of defining the MVP to flesh out how things should look, and how a user will interact with it.

Of course, the time invested in this work changes depending on the target audience of the project. Spending a few weeks to streamline the interaction process and decide exactly how the application meshes with your branding and target audience is worthwhile if you’re releasing something to the public; less so if it’s 15 of your call centre staff.

Typically, this process involves working closely with our talented and experienced designers and usability experts to fully understand your users and their needs. This often involves a few weeks of work (which is often in parallel with defining your project), and results in a series of designs, both low definition (wireframes) and high definition (mockups).

Development

Armed with the broad stories and priorities from the MVP (and hopefully some mockups or wireframes), we move into the main development process of the project. We work what are called “Sprints” - 1 to 2 week cycles of work. We start the sprint with a meeting where we set priorities for work, and then spend the sprint with our development attention focused on just those priorities. The aim is that by the end of the sprint we can release working code (and usually a working demo) to show you where we are at, and to let you play with actual working functionality. By working in this way, as a team we are are able to adjust and refine each week - we can adapt to changes and new information (whether it be from the business, market, or development team), revise things which haven’t turned out how we hoped, and decide better ways to do things. Not only does it keep you, our client, in touch with the process, but it also maximises the efficiency of the team by allowing them to fully focus on specific functionality during a sprint, without fear of distractions or changing priorities.

Day to day, the entire team stays in contact using our project management tools, and via Daily Standup meetings. Usually via Skype, these are short and sweet calls (usually less than 5 minutes), to run through where we are at, what we are working on, and to ask any questions. They’re also a chance to share our successes, or get excited about the latest news from the business or users. During development, our team will periodically release a working system to a “Staging” environment. This is a hosting environment which mirrors how the finished product will be run, and allows you to “kick the tires”, demo it within your organisation, and generally preview and play with the product while it is in development.

As development continues, we are able to use information about how we are performing as a team and use this to revise and update our plans and priorities. Did something take longer than expected? Was something easier and we will get more done before your release date? Can you release a week earlier than planned? These are things which we could never guess at the start of the project, but become possible by remaining flexible.

We continue working within this sprint cycle until we’re at a point where we can release your product to the world. Depending on your project this may take weeks, or months, but the emphasis is always on getting something great released as early as possible.

Production Release

Probably the most exciting part of any project is making it available to users as a live, production ready system. We have launched hundreds of applications, and nothing ever feels quite as good :) A lot of work goes into getting to that point though.

Alongside the development work, our experienced Operations team will be involved in helping you to decide the best option for hosting your application, and getting all the pieces set up and ready to go. Different providers suit different arrangements (and different budgets) and our team will help navigate through these (often outright esoteric!) technical decisions. They can even work with your existing IT team to ensure that everything interoperates as it should.

Once they have done their work, you will know what recurring costs your project will involve, and we will have the application running and ready for your users to, well, use it :)

Support

Once your application is live, you want to have peace of mind that everything is working fine and your customers are happy. Whether you have 100,000 users across the globe, or 15 people in the room next door, downtime means unhappy people and, usually, money lost. As such, keeping your application running at the peak of its efficiency is critical.

To help ensure this is the case, our OpsCare service provides monitoring and support to handle any issues or problems as they arise. Our Operations team are available to step in and make your problems their own, getting hands on to get you back up and running as quickly as possible. They won’t even ask you if you’ve turned it off and back on again!

The Future

As your organisation changes and develops, and your Users find new things to demand, you will want to extend your application further. reinteractive will be there when you’re ready - whether it be another development engagement, helping you to build your own internal development team, or helping you to find another provider which suits your needs better.

We pride ourselves on writing code that is robust, easily understandable and easy to extend, so getting further development can be efficient and cost effective for you.

We have been working with some of our clients for several years, and we always love being able to have them involved in our team again and see how their organisation has grown.

Get in Touch!

This is just a broad overview of how reinteractive works closely with our clients to ensure successful software development projects. If you are considering commissioning development work, speak with us to see how we can help you to ensure your project is a success.