The Foundations of Successful Software Development
Planning is an often overlooked, yet critical, ingredient of any software development project. The most successful projects are built on solid preparation and foundations – that includes a clear vision, roadmap, requirements, tech. stack and continuous product backlog refinement. Successful projects start with significant preparation and planning but they also retain the flexibility to respond quickly to changing business needs.
Productivity, after initial planning and during the development phase, is about selecting the right tools for the right jobs and making sure that they are used effectively. Think about trying to get a tree cut down with an ineffective saw or tree surgeon. Preparation and planning are key to success in most things. Time invested in planning and replanning your software development product is often time well spent.
Someone once said “In preparing for battle I have always found that plans are useless, but planning is indispensable”. In a previous blog, I wrote about the fragility of plans and how agile scrum increases the likelihood of software development success. Common sense dictates – with or without scrum – that after development starts, you should be quick to adapt to the current reality.
In fact, do three simple things to significantly improve the success rate of any software development project.
JUST PLAN IT, PROPERLY
Would anyone consider building a house without a plan or some type of blueprint, sketch, diagram, etc.? Imagine finding that your bathroom is not big enough for the fittings you ordered or the floor is uneven because the foundations aren’t deep enough.
The same rules and similar problems, that apply to building, apply to software development. Preparation is everything and time spent planning, defining scope, selecting the right tech. and making sure that you have clearly defined and agreed requirements will help avoid misunderstandings, development problems and reduce costs. Of course, not everything should or can be defined upfront – for all but the most simple of projects, plans should be accepted as useful guides to a future that may change.
USE WIREFRAMES – YOUR BLUEPRINTS
At the very least, you should create wireframes for your software product. These are the equivalent of building blueprints. They serve many purposes, chief amongst which is to create more user friendly products. Without the use of wireframes, your app or site visitors might not stay to undertake the desired actions (such as buying a product).
Wireframes allow you to quickly visualise multiple ideas and discard those that are unlikely to work, at relatively lower cost than development. Wireframes also have a critical role in easily communicating your ideas to the development team without too many questions. Some questions help development teams engage with the project. However, every extra minute that your team spends asking unnecessary questions – because requirements are unclear – represents an avoidable cost. Crucially, estimating project development time and cost is difficult but significantly easier with the use of wireframes.
DEVELOP IN SHORT CYCLES
During the development phase, make sure your development team works in short development cycles, sharing working output at regular intervals. They should be willing to iterate and adjust course to make sure your product stays aligned with changing business needs. We start with an initial backlog of work that is updated and refined as the development work progresses.
The backlog is like an initial plan – providing enough direction to get started – that changes and becomes more refined and precise over time. The client is the ultimate judge of what goes into the backlog, what needs to change and what has the greatest value to their business. Our teams continuously prioritise and deliver software functionality that clients deem to be of greatest value to their businesses, providing regular demos and working software. Most clients use this to engage future suppliers, investors and customers, sooner rather than later.
Significant upfront preparation and the flexibility to change course are at the heart of all successful software projects. Invest in planning, make sure that even the seemingly most simple projects have wireframes and always make sure that your development team delivers work that is of greatest value to your business, early and often.