Ushering a New Era in Software Development
The traditional approach to software development has led companies “down the rabbit hole” with highly customized legacy systems and a need for IT staff with outdated skill sets. With new demands for system integration, data analysis and interactive content, companies of all sizes continue to invest in customized solutions. Small companies will implement an interactive ecommerce site or build an add-on to an accounting system. A large company might staff a department with developers to customize and maintain its core product. Today’s CIO’s are constantly faced with the question of outsourcing, contracting or hiring software developers. I have witnessed these struggles in companies ranging in size from a 250-employee, not-for-profit organization to a 250-hospital corporation. Traditional approaches to software development have become expensive and cumbersome. Since this behavior eventually becomes an impediment to progress, I’d like to outline a few thoughts regarding a new approach to managing IT resources.
In today’s economy, software developers have the opportunity to broaden their exposure to a wider variety of systems, as well as develop management and supervisory skills
Issues with Traditional Approach
The traditional approach, dating back to mainframes, is directing a company’s software development staff to focus on your core business systems and outsource the rest. The mantra was to adapt the computer systems to match the business workflows in order to maximize the efficiency and effectiveness of business processes. Larger companies would purchase a system, then re-write the application, accepting full responsibility for support and upgrades. After following this school of thought for many years, companies have unwieldy systems with extensive customization. These companies are also faced with the need to maintain skills with obsolete programming languages and practices. The running joke is, ‘COBOL programmers will always have work’ and companies are still following these practices today. SMB companies are buying SQL-based systems and building their own SQL procedures and ASP/.NET customizations. Demands for data analysis are being met with the development of hundreds of custom reports, pulling directly from the system’s data schema which can change with every upgrade. Trying to accomplish efficiency and effectiveness while accommodating new demands for information with the traditional approach to software development, is quickly becoming a company’s largest budget item.
Hidden Budget Costs of Traditional Approach:
Let’s consider what it does to the bottom line. On first glance, using in-house staff already familiar with the system looks like the smallest hit to the budget when it comes to modifying a legacy system. However, a broader look at the budget reveals many hidden costs. First, those same developers are not working on a myriad of smaller projects to build interfaces between systems and build small custom solutions when there is no purchase option. All of that work is farmed out to contractors, or a company will pay top dollar to systems integrators. Second, when one of your legacy programmers leaves, companies will use contractors to cover the gaps until they can recruit a resource with that specific skill on the legacy system. Third, companies are missing out on revenue opportunities while teams are tied up with that one big upgrade of the core system. Maybe the company needs an e-commerce system integrated with an inventory system to improve product availability or maybe it needs more sophisticated reports on sales to optimize sales opportunities. Those projects will wait until the team completes months of modifications and testing to upgrade the core business system.
New Skills + New Demands:
Drastic changes to technology and the economy have created opportunities both internal and external to a company. Cloud and collaboration systems have led to greater specialization with systems like Salesforce, Box and Office365. Technologies like machine-learning and cognitive programming have brought math and statistical specializations into the software development talent pool. Demands for integrated data reporting have changed the use of system-specific and department-specific reporting to using data warehouses managed by IT staff. How does a CIO manage all of these new demands while maintaining a highly customized core business system?
New Approach: Partner on the Core Systems
Beginning with the core business systems, a CIO must advise other directors on a strategic approach in order to maintain and align these systems with company goals and ever-changing workflows. Looking at the past decade, ask yourself whether or not a company hired a team of software developers to customize and maintain the core systems. Is that process working? In most cases, this is a walk down the proverbial rabbit hole, never to return. In my current role at a mid-size healthcare organization, we’ve chosen to partner with a development shop which specializes in that system. A specialized development consultancy is motivated to hire and train staff with a specific purpose in mind. It can reach across the country and around the world to find the best talent. Instead of using the same internal resources to build, test and QA software, a development firm can assign those tasks to individual resources and spread its time across multiple vendors. This concept is nothing new, but using those resources for a company’s core system is a new approach to managing IT resources. Aside from improving resource utilization, this approach should include consultation on the design and build. Also, outsourcing development on the core system will help identify a clear cost of the customizations which can improve tracking of a company’s investment in the core system.
New Approach: Liberate and Promote Your Staff
Let’s look at what this new approach does to an internal IT staff. Developers are responsible for gathering requirements, outlining specs for the project and supervising a successful deployment. In this role, they’re exposed to project management and vendor relations. Instead of being completely dedicated to a single project for 6 months, they’re free to handle a long list of responsibilities which exposes them to other business areas. Working on a variety of projects, instead of one large project, exposes them to new skills and provides the opportunity for career development. Also, outsourcing to a vendor, moves the stress of a timely delivery to that vendor. One can then manage results through vendor relations and contracts, instead of using HR performance evaluations to motivate project timelines. Ultimately, this will free up internal staff to work on a laundry list of projects like interfaces, scripts, systems integrations, complex reports and non-core business systems instead of spending an entire career in one system which inevitably becomes outdated and replaced.
New Approach: Risks to Consider
Outsourcing development of your core systems does not completely relieve the internal team of responsibility for that system. Internal staff will need to maintain knowledge of the system to oversee the work of the vendor. Also, as with all vendor management, changing vendors will require time for hand-off and re-explaining business goals and principles. This new approach works well when a great partner is identified, but it can cause headaches when that relationship falls short.
IT staff has been changing for years and will continue to change. In today’s economy, software developers have the opportunity to broaden their exposure to a wider variety of systems, as well as develop management and supervisory skills. Or, as freelancers, they can drill down into specific skills while working from their couch. Employing software developers to spend years working on one product no longer makes sense for the employer or the employee. This new approach can be a win for everyone.