Custom Development: The Evolution to Agile and DevOps
The word “custom” sounds expensive—custom cabinets, custom-built homes, custom closets. That reputation is in part deserved, especially if you don’t do your homework up front to know who you were working with and how the project will be managed to ensure there are no “surprises.”
It’s really not too different in the world of custom software development. Many of us remember the 80s and 90s when excess was king, even for applications. Ever-expanding costs and missed deadlines were the standard and developers got a bad rap well into the 2000s for creating code that was vital to innovation yet in desperate need of effective controls. It was time to sober up and get mature. Advancements in the fields of software development with respect to project management, development, and delivery over the past several years have provided us with mature practices and tools with which to deliver better products within budget and time constraints.
Enter the Agile Methodology. In 2001, seventeen software developers met in Snowbird, Utah to discuss lightweight development methods and published the Agile Manifesto. No other methodology has revolutionized software development as much as Agile has. With Agile, requirements and solutions evolve through the collaborative efforts of self-organizing and cross-functional teams and their customers/end-users. The seventeen signatories wisely put forth their key values based on their combined experience in developing software and helping others to do that. In a nutshell, these values are:
- Individuals and Interactions over process and tools
- Working Software over comprehensive documentation
- Customer Collaboration over contract negotiation
- Responding to Change over following a plan
In other words, what we’ve learned from the past is that developers need a project management solution that enables better communication within the team, with the customer, and across process boundaries. At the same time, developers need a process that offers the flexibility to absorb the types of changes that have become ubiquitous in software development, such as misunderstood or incomplete requirements, changes in priority, and added or altered functionality that has already been written. Agile does this and has proven itself to be elastic enough to work in myriad environments and team configurations. While there still are valid reasons for other processes such as Waterfall, we are (as a whole) mostly using some version of Agile.
Another advancement in software development is modern DevOps (a compound of Development and Operations). DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. When applied to custom development, DevOps ensures developers and operations folks come together at the beginning of the development process (instead of at the end during testing) and stay in sync until the application or service is released in a production environment. This helps ensure every potential bug or new feature request is addressed along the way while removing the bottlenecks associated with legacy development practices. The key to successful DevOps is automation, and with the advent of cloud computing, Infrastructure as Code, and containerization, this is possible 100% of the time. Simply put, DevOps speeds up development and improves output quality without breaking the bank or killing your timeline.
A final nuance to consider when thinking about custom development is to ensure you are working with developers, not just coders. A coder is someone who knows programming language well and can bend it to his/her will to achieve the desired outcome. A developer is someone who understands the consequences of their decisions and how that will impact the overall system design. Unfortunately, developers are often faced with the dilemma of “just get it done” or “get it done right.” A coder will often surrender to the former while a good developer will ensure the latter.
So, if you’re considering a custom development project at your organization to spur innovation forward, make sure you’re working with true professionals that won’t cut corners, overrun your budget needlessly, and value collaborating with you, the customer.
At Xgility, we have a long track record of successful custom software development using Agile and DevOps methodologies, practices, and tools. Thanks to these advances, our teams embrace change within the development process using rapid iterations to reduce the complexity of the problem to be solved and delivering in a value-based, incremental fashion.
In fact, we recently created a custom development solution for a global insurer using Agile and DevOps methodologies and tools. We architected cloud-based solutions that employed App Services, Web APIs, Azure functions and other tools, and were able to quickly respond to and deliver bug fixes or new functionality in mere minutes. Using a shared-architecture approach, we stood up new products in weeks instead of months. In a competitive industry like insurance, getting code out to customers faster means beating the competition hands down.
To learn more about how we can help create a custom software development solution for your organization, more about Agile development, or simply to confirm you agree with me about coders versus developers, drop me a line.