Do you outsource software development? Are you planning to outsource a project in 2018? If yes, then you may want to consider doing smart outsourcing using the “Divide and Rule” approach, enabled by a new technology.
In this, you outsource the development of only tiny individual modules of software (which we sometimes call software molecules) as opposed to outsourcing the development of the entire software.
How do you do it? You create a flowchart of how your application will function in Xsemble, and then it lets you create hundreds of tiny individual programs corresponding to the development of individual blocks. You may outsource the development of all these programs to one vendor or you may divide it into multiple vendors. Upon receipt, you import the implementations back in Xsemble. Finally, you burn the flow with the implementations, and lo! You have your application (sources / deployable). You can do all this without doing any programming.
Does it sound a lot like how car manufacturers work? If it does, then you understood it right.
Benefits to the Outsourcer
What would this model mean to you? Here are the 7 benefits that you would receive as an outsourcing customer.
- Conventionally you have to take a lot of effort explaining the domain to the software vendor, so that the software created would be useful to you. It involves a lot of documentation and checks and balances. All that now gets replaced by specification of how individual modules get implemented, which will be lightweight by orders of magnitude.
- The quality of an application composed out of well-tested modules will always be better than a traditional monolithic application. You could troubleshoot a problem yourself by testing the modules individually and pinpoint the defective module.
- The functional experts or managers are more empowered. Your software application is no more a black box, but you have visibility to a much granular level into its functioning, and have the chance to test, modify, troubleshoot and enhance it.
- Your IP is better protected, as you could distribute your modules among vendors, so that vendors individually deal with only small fractions of code.
- You can take advantage of vendors’ specific areas of expertise. Outsource your critical work to a vendors who specialize in that particular segment.
- Are you getting a feeling that this approach would bring down your budget? You bet it would. You can have better value out of your domain experts and managers, you save on communication effort, and your software development charges come down because it eases it for the vendor also (see below).
- Maintenance and enhancements become easy — even after a good while since your software was developed. This is because you understand which modules need troubleshooting / enhancement and you can then engage developers to work on those. Even if you cannot get the same developers who developed the original system, it would still be alright as the development would concern only the selected modules and rest of the modules remain untouched. This also reduces your risk of change. All this also means that you can save on your maintenance budget big time.
Benefits to the Software Vendor
This also simplifies it for the software vendor (and hence you can expect the bill to get cut). Here are the 5 benefits that that vendor receives.
- Within the software development organization, plenty of effort goes in making sure that the developers understand the domain. That gets reduced. A developer only needs to understand enough for the module at hand. Less to read, more to deliver, means magnitudes of more productivity.
- Work management becomes easier. Work defined as well-defined modules is easier to estimate, easier to plan, easier to track and easier to bill.
- Resource management becomes easier. The project team could be scaled up or down to meet the scheduling requirements. Developers can walk in and out of a project more easily, and developers who are on bench can be utilized for a project work if the work comprises independent modules. Also, key developers with more expertise can be utilized sparingly on modules that need that kind of expertise.
- Work itself becomes easy. It is far easier for developers to work on a small codebase as opposed to a large one. One can get more work done from lower skilled resources.
- Because of improved quality, improved manageability, the odds of the project being successful improve greatly. Successful projects can be leveraged in promotional material for brand building.
Please post your comments on how do you think this approach would work in software outsourcing. If you are considering an outsourcing project in near future and would like to give it a try, contact us.