Through my work as a software development consultant, I’ve defined a guiding set of principles that I advocate on any new projects. These have been forged from past observations, experiences and mistakes. They aren’t original or groundbreaking, but it’s surprising how often they are ignored!
You have to be flexible as a software development consultant. You can parachute in at any part of a project, into vastly different company cultures. You have to learn fast, adapt, and sometimes just bite your lip and get the job done.
Looking back, some of my favourite projects were the ones that made good use of prototyping. Not only did this help crystallize requirements, it was also an excellent communications aid for the development team. The saying “a picture speaks a thousand words” is certainly true – a visual prototype is far more effective (and fun) than a 5000 word requirements spec (yes, they still exist).
When beginning a new project it is essential that you put in place strong technical foundations and a healthy development environment. Discover what can go wrong and what early tasks I regard as essential on software projects I lead. Continue reading
If your business stands still, chances are it will fail. Customers want more. Competitors are circling. You need to innovate to succeed, but how? One way is to transform your systems to respond faster to market demands. This can be complex and risky – so how do you start? How do you keep things simple and minimise risk? Answer: Use The Power Of Prototyping.
I was recently pointed to Spotify’s excellent video (2 parts) about their engineering culture. I found it compelling because it’s exactly the environment that I like to work in. Continue reading
Over the years I have been lucky enough to work on various large Enterprise System projects. My experiences have highlighted good Principles of Software Development and the benefit of Prototypes in guiding technical initiatives.
Looking back on past projects I’ve noticed how they all had similar goals, even if they didn’t acknowledge this explicitly.
This is what I believe are the 5 Goals of a Better System:
- Cut costs with automation of manual processes
- Provide a more efficient service by allowing customers to self serve
- Leverage knowledge in key systems by enabling data sharing
- Increase innovation opportunities by adopting open standards
- Improve the speed of change by improving internal delivery capability
A system that achieves any of these 5 Goals reduces wasted effort, improves profit and allows your business to adapt quickly to market opportunities. Such a system also means slick customer service, because you can automate what makes your customer happy, reduce mistakes and provide a consistent experience that gains trust.
If you’re planning a new system why not check it hits these 5 Goals? If not, why not? Could you tweak it’s design to meet more of them?