|
VENTURE CAPITAL FIRMS INSIST ON IT.
ENTREPRENEURS SUBCONSCIOUSLY DO IT.
TECHNOLOGY EXECUTIVES ARE NOT SURE HOW TO GO ABOUT IT.
CAPITAL EFFICIENCY:
It's one of those buzz word phrases that has emerged as a result of the tough economic climate and the need to do more with less. While many people are vaguely familiar with the term, most are either unsure of what it means or
don't know how to achieve it. The definition of capital efficiency is, "The informal ratio of output divided by capital expenditure. The larger the ratio, the better the capital efficiency."
NOW IN PLAIN ENGLISH...
Broadly speaking, capital efficiency is the use of capital (financial, human, etc.) in an efficient manner to achieve maximum business results. If you thought achieving capital efficiency was just about cost-cutting or budget-trimming,
think again. The guidelines that follow apply this elusive concept to the specific challenges and concerns that technology product vendors have in software product development. Welcome to Capital Efficiency 101, and get ready to take
one step closer to achieving your maximum business results.
PROLOGUE: KNOW YOUR BUSINESS
The importance of knowing your business may seem like an obvious piece of advice. But how well do you really understand the true needs of your business? Do you know which features add costs but don't really add value internally or to your
customer base? Really knowing your business will help you focus on solutions that generate value. Once you have identified the required features in the solution, you can then focus achieving efficiencies in building these solutions.
CHAPTER 1: PEOPLE EFFICIENCY
People costs are a significant portion of building and/or managing a software product or software solution - especially one that is custom built for your business. Achieving this efficiency means you have to have the best qualified people
at the lowest cost. This process starts by examining your current team, evaluating what it can accomplish, and then exploring any necessary outsourcing or offshore resource options.
Know Your Current Team's Capabilities
A good place to start is by identifying the tasks required to build your solution and the skills required to carry out the tasks. You can look at solutions in terms of the roles (i.e., design, development, quality assurance, strategy,
analysis, etc.) needed to bring the project to fruition. Alternately you can take a product life cycle approach to determine the staffing required through new product development, maintenance/enhancement of older versions of the product,
product implementation/integration for customers, and product support. With your staffing needs now clearly outlined, it's time to look at your current team (if you have one) to identify gaps against these needed skills:
- Are these skills a commodity such that you can expect a large pool of qualified candidates, which leaves you to focus on getting the best-priced resource?
- Or do these skills require a high level of specialized knowledge that you may not readily find in the market, or have to invest internally to develop?
- Does it make sense to move internal staff around to either a more specialized role or perhaps even to a more commoditized task? (Especially if the internal resource does not have the level of experience or expertise of an external
resource, this is something worth considering.)
Having identified the gaps that exist in your current team, you now have the option of bringing the necessary skills in-house or outsourcing the tasks to a vendor that specializes in this area.
The Advantages of Outsourcing
Outsourcing the technology development and management to a vendor that specializes in working with technology product companies is an efficient way to acquire the skills required for building your solution.
Until recently, the preferred practice by technology product companies was to retain the core product development in-house and only outsource non-core projects. However, this has changed as companies learn that it is possible to realize
even greater benefits from outsourcing some or all of their core product development and management as well. This realization has been made possible by the rise of vendors that specialize in technology product development and have built
up their teams, toolsets and processes to build solutions using leading edge technologies that power the new generation of software products. This allows you to focus your staff on the business solution or the product feature set itself,
rather than on how these features would be implemented. This also eliminates the need to manage the software development process and large technical teams.
Outsourcing also allows you to eliminate the costs associated with ramping up and ramping down teams of employees – a process that is often time consuming and expensive. It can be more efficiently handled by an outsourcer that has the staff,
processes and tools required to ramp up and ramp down staff on demand. The savings achieved by these efficiencies are usually passed on to you.
Leverage Offshore Resources
Leveraging offshore resources for software development, management, and implementation provides a cost arbitrage and improves capital efficiency. You have the choice of setting up an office in a low-cost location with access to ample technical
resources or outsourcing to a vendor that has an offshore development center and can provide a dedicated team for you. In addition to the advantages listed above of using an outsourcer, you may also be able to enter into a
build-operate-transfer engagement that requires the outsources to build the dedicated offshore team for you, operate it on your behalf, and at some predetermined point in the future transfer the ownership of this team to you. This minimizes
the upfront capital outlay required to start an offshore operation, minimizes the risk you would take on in setting up your own operation, and provides the benefit of being able to take over a mature operation. You get access to an operation
that has progressed beyond growing pains and is proven to work well with the rest of your organization.
CHAPTER 2: PROCESS EFFICIENCY
Your software development life cycle process (SDLC) has to be robust enough to ensure that your software can be developed on time, within budget, and to specifications; however, it is also important for the process to be light weight so that
it does not increase the project or product development overhead. Ensuring that your SDLC does the following helps you reduce your costs, shorten your timeline, and improve capital efficiency.
Identify Scope
Identifying an accurate project scope upfront is crucial to minimizing rework or change orders. One way to prevent scope creep is to spend time upfront determining exactly what your project needs to deliver. Before progressing too far along
the SDLC, make sure you have captured the following to a great level of detail:
- Complete understanding of your business, its drivers and goals
- Thorough evaluation of current system capabilities/limitations
- Clear requirements specification
Substituting escalating costs and shifting timetables for a secure approach of upfront discovery with no surprises is crucial to identifying an accurate scope. On the other hand, unfocused development will result in scope creep, changing
priorities and rework that is guaranteed to encumber your capital efficiency.
Validate The Solution
By identifying scope, you should have uncovered key scenarios that may test the limits and capabilities of your software. For example, if you have heavy traffic or peak load times, it's important to validate that the solution can withstand
these volumes of heavy traffic. Waiting until launch and hoping that the system will deliver is a surefire way toward developing a system that won't perform as you need it to. Use real-life scenarios to validate the solutions and product
features and ensure the results you expected are delivered. In addition, viewing a prototype of your software early in development allows you to visualize how your software will work, and provide you with an opportunity to gain feedback
that ensures you are on the right track. For example, you may review how you accomplish a task and ask:
"THERE ARE TOO MANY SCREENS FOR ME TO GO THROUGH BEFORE I CAN COMPLETE THIS TASK. CAN WE RETHINK THE WORKFLOW SO THAT I CAN ACCOMPLISH THIS IN FEWER STEPS?"
This provides an interactive opportunity to begin collaborating towards a common end goal, rather than approaching software development from disparate perspectives and hoping that the end result satisfies you. Getting it right the
first time helps you keep your costs low.
An Iterative Process
An iterative SDLC allows product features to be rolled out incrementally and minimizes dependency delays. And remember, effective software development solutions aren't developed in a vacuum. Continual input ensures that your projects
stay on track and on budget. Often times, utilizing a staged development and review process enables you to see progress in manageable pieces, providing the flexibility and foresight to adapt throughout development at an early stage.
Taking this more strategic rollout approach allows resources to be allocated in a more focused manner to avoid potential surprises that add unforeseen costs.
Support of Distributed Development Teams
Distributed development requires cooperation between several teams located at different sites. A single product is developed out of many parts where each part could be built at a separate location. The ability to coordinate these
efforts is crucial to leveraging some of the advantages discussed earlier regarding "people efficiencies". In order to truly leverage these advantages, your process must build bridges between these geographic separations and emphasize
clear communications across all levels and teams.
Promote the use of collaboration tools and shared document and code repositories to provide developers with up-to-date information, thereby reducing conflicts. And remember, the more a remote developer feels in the loop, the more likely
they are to contribute effectively.
CHAPTER 3: TECHNOLOGY EFFICIENCY
Your choice of technology plays an important part in your ability to achieve capital efficiency. Some technology decisions that influence efficiency include:
Support Available
It's important to gauge the availability of inherent support within the technology for the features/capabilities of your product. For example, if your product serves an audience that is extremely security-conscious but the technology
you selected doesn't have a lot of built-in security support, you will have to spend time and effort building these capabilities. This effort could have been avoided by selecting technologies that offer built-in support for high security.
Other factors like scalability, support for standards, ease of integration, etc. also fall into this category.
Expertise Available
Consider the availability of resources with expertise in the chosen technology. This is a simple matter of supply and demand at work. The more people that know the technology and can develop in it, the lower these resources will cost.
Ease of Development/Management
How easy is it to develop in the technology you have selected? Some programming languages and tools are built for rapid development and can actually reduce the time it takes to roll out new product or make enhancements in product.
The easier the development, the better your capital efficiency.
Licensing Costs
The choice of fee-based licensed software vs. open source software (OSS) is an important consideration that has to be made. OSS is free and has a significantly lower (i.e., zero) licensing cost. However, some of these have indirect costs
such as lack of technology maturity, usage and redistribution restrictions, or intellectual property ownership implications that may make them unsuitable for your needs. You should evaluate these for your specific needs to determine the
right technology for you.
Pre-built Components and Reuse
Pre-built software/technology components can also help speed up the development process and reduce the development effort by minimizing coding errors or bugs. This lowers costs and improves efficiencies. You can look within your own product
suite for reuse and also pre-built components available for a fee or as OSS. Outsourcing vendors that specialize in helping technology product vendors develop software products should also have such tools and components. They quicken your
development and improve capital efficiency.
EPILOGUE
So now it's time to turn buzz words into your business's reality. Evaluate every aspect of your budget to identify those areas that will bring you closer to achieving or improving capital efficiency. The business results that you realize will
have a real impact on your bottom line. Use these "Capital Efficiency: 101" tips as a starting point and incorporate the ones that work best for your business over time.
|