Software development can be a tricky process. If you don’t get it quite right then projects can end up on the scrapheap and with a few different annoyed parties to boot. While there are some common problems that can crop up in development, knowing what they are and how they come about will help you to avoid them.
With shifting goal-posts driven by investor and market conditions, a fair chance of having pivot points, and an uncertain future, developing software that can be modified or redesigned easily is critical. Having Agile practices as an underlying piece of your software development workflow gives you insurance that hours put into development will not be ‘wasted’ in the event of big changes.
Test early, test often! Test early, test often! If you’ve ever attended a Software Engineering 101 class you will have heard this phrase drilled into your brain. Why? Because the earlier and more often you do your software testing, the less bugs persist in your code through to production.
Productivity in software development is typically tricky to measure. Is it how fast your team are doing something? It has been proven time and again that lines of code is a poor measure; are the number of modules an indicator? The degree of module reuse within a project, or from previous projects?
Wouldn’t it be awesome if developers could just code a piece of software perfectly the first time around and there were zero bugs, the software working flawlessly, forever? Development time would be fast and customers would be assured everything would always work.
Kanban, a concept created within Toyota’s Japanese production and manufacturing plant, oddly enough, has been a system that has gone on to take the world by storm. The Kanban card system allows “just in time” tasking; and is comprised of a board made up of cards that are moved along in a left to right fashion. Kanban is a system often utilized in Agile teams to help keep track of software development work, and ensure everyone in the team stays on the same page.
Fixed price contracts can be rather tricky in a Scrum environment. Classic software development and Agile software development are very different from one another, and things that work in one environment don’t necessarily work in another.