The software development life cycle (SDLC) within the agile environment requires the ability to iterate extremely quickly. Over the last few years, when large enterprises have switched to the "fail fast, fail often" approach, they have had to implement this dynamic development approach on top of tools designed and created during the age of "build it and they will come".
Unfortunately for those of us working in technology, the easy going two year development cycles are never coming back. The pace of change being demanded of software developers is only going to keep increasing as ever more devices come on stream with the Internet of Things. Products now need to be supported on platforms that did not even exist two years ago. The race is definitely on, and if you are not agile enough to move with shifting market needs then you can read Darwin to figure out your future.
Unraveling the Matrix
If you agree with this premise, then it logically follows that the tools used in the enterprise ecosystem need to be redesigned to enable your teams to focus on speed and collaboration with zero friction between everybody involved in the development cycle.
The vast array of tools used within enterprise encompasses everything from deeply integrated, yet cumbersome, version management systems, standalone publishing tools, and continuing all the way down to legacy excel sheets and word documents that can cause real headaches. Just like in the Matrix, a lot of time is spent searching for the oracle so that everyone knows the reality about a project. This adds incredible communications overhead and friction to a project.
In the end your world view narrows to just focussing on unraveling the different threads, and your personal version of nirvana would be 10 less update meetings per week and one simple place to check progress. This is not a mind set that enables you to focus on growing and progressing towards your goals.
To move the SDLC to this nirvana state, the whole process needs to be reimagined. Agile needs to become inclusive. Every link in the chain must have the same ability to communicate and collaboratively produce content, across all document formats, just as the core development teams benefit from tools like Git and Mercurial.
To make our reality match this vision means overcoming immense challenges, and that only means one thing. It is a challenge worth undertaking! To begin understanding the main obstacles we only need to look at the nitty gritty of each department and to imagine how everything could be improved. Once the imagination inspires a solution, it is time to get busy coding it.
Developer challenges centre around test driven development. These basics need to be running smoothly, so that those highly paid caffeine addicts are pushing and pulling in the right direction:
- Enterprise version control systems need to enable smooth, real-time, global collaboration.
- Issue tracking systems must integrate flawlessly to feed information back to development.
- Customer specific plugins must support testing in live environments without risk.
- Communication and notification systems have to enable global teams stay on track.
Project management and design challenges centre around ensuring communications are crystal clear.
- Complete and accurate customer requirements are vital to make sure your team stays focussed.
- Product design validation ensures you are building exactly what is needed.
- Workflows and priorities must be shared with everyone to prevent the lone cowboy issue.
- Inbuilt traceability is necessary to ensure nothing goes missing. Last minute panics help nobody!.
This challenging environment is demanding a giant evolutionary leap for those creating tools for enterprise, and right now you can feel the changing vibe in the industry. Some of the dinosaurs are beginning to look positively tyrannical.
In every ecosystem the secret to benefitting from complexity is to evolve the ability to benefit from the actions of others. To use Nassim Nicholas Taleb's maxim, you must become anti-fragile.
The future is going to be dominated by highly flexible software packages that interact with each other and which can be mixed and matched to each users requirements. Each part of the "software swarm" will need to be intelligent enough to make the right decision in the every situation based on feedback from peers. The only way to ensure that each decision making entity is always on key is to have the information flow work seamlessly across the full development cycle.
This challenge is what we here at RhodeCode have totally embraced, and we are leading the evolution of enterprise tools development towards this deeply integrated, intelligently designed, low status meeting, highly productive, pleasurable work environment, nirvana.
Our very flexible source code management solution, RhodeCode Enterprise, has been built from the ground up with these needs in mind, and it can be easily customised to provide bespoke software solutions to even the most demanding customers. That is one of the reasons why we are already powering many of the world`s largest organisations in their software development life cycle.