Working with a Consulting Services Company
It projects often require a variety of technical skills to bring a project to a successful completion. If your team is lacking in any of the necessary skills they may be able to learn as they go, but if your team is already at capacity that may not be the best option. Adding additional full-time permanent members to the team may be an option but there’s a cost in terms of effort and the ongoing commitment of another permanent placement. If the skill you’re looking for doesn’t yet exist within your team, hiring for it may be difficult.
In all of these cases, there is another option. The IT service company, otherwise known as a Software Consultancy. These companies make it their business to be up to date on the latest technologies and have had many years of experience working with all manner of systems, from a web of complex and interconnected spreadsheets, to custom ERP solutions, to smooth web and mobile applications running entirely in the cloud. The people who work as software development consultants are required to know their craft well as they shift from one project to another solving difficult problems with technology.
Before choosing a service company, there are several different service models to choose from. Companies will provide services according to different engagement models.
Outsourced development shops are ones that take a design spec and deliver a finished product. It may be delivered in small increments with the necessary feedback loops, but the distinction is that the product is developed outside of your organization using 3rd party resources. This is a good choice when the project has well-defined boundaries or falls outside of the core line of business. It is also a good option when the technology is unknown within your organization, making hiring difficult. By hiring a company with specific skills, you can get moving quickly and don’t need to train internal resources who may not have the capacity to take on the additional skill-development overhead.
Service providers who work embedded with your team are doing Co-development. They work side by side your own team members, writing code, doing code reviews and attending meetings. This team augmentation provides a good opportunity to educate internal staff about the implications of software design decisions, best practices, etc. Obviously, the specifics of their engagement can vary as well as their physical location or even their time-zone.
Software consulting companies can vary widely in the range of services they provide. The common thread between them is that they have deep subject area knowledge and extensive experience. When you hire a consultant, you gain access to that experience without having to retain them on a full-time permanent basis. It provides the ability to limit your costs by reducing the number of billable hours allocated to the consultant, or to step things up by adding extra resources. The deliverables vary from system or process assessments, to custom software or reports to senior executives.
With so much expertise in-house some service providers will also do training and education. Whether that’s delivered in a classroom setting over several days or a less formal afternoon session that covers specific areas of interest.
As with any hired service, choose an engagement model that suits your current situation. If the business is experiencing growth or an injection of capital, bringing in specialized expertise may provide opportunities by moving quicker than what can be achieved with existing internal IT resources. In some industries it’s not uncommon for consulting relationships to continue for several years as a business works to integrate the ever evolving web of internal systems and customer facing systems. If the budget for external resources is limited and the engagement has a defined end-date, choose a model that will transition smoothly to internal resources and engage them early enough to understand and support the completed work.
Maximizing your ROI
Once you’ve determined the model that best suits your situation, and you may even have selected a consulting company that you’d like to work with, there are still several things to keep in mind, that will help you get the most from your investment. By being in the right frame of mind, you will be able to give the consultant what they need to make the best possible decisions for the work in front of them, and you will be able to hear the messages that they provide back to you.
Communicate with your staff
Before you bring in a consultant, speak with the members of your current team. It’s possible they have skills you weren’t aware of or have an interest to learn from the experts you are considering. Don’t let them feel like they’re being replaced or that you don’t trust them to do or build the right things. If there are recommendations, communicate them back to the staff and discuss them. It’s likely there are reasons outside the view of your consultant that factor into why things are done the way they are. Either way, you need for your staff to see consultants as an opportunity, rather than a threat to their jobs.
Develop a project strategy together
Create a document outlining the things that you would like your consultant to investigate or address and discuss it with your consultant. It’s likely the consultant will suggest a few additions to the document based on their own past experience. It's good to have a well defined and strucutured project. Schedules and deliverables should reflect the experience from the consultant as well as the experience working within the origanization, coming from your own team members. Remember, there's often be a need for some groundwork to be completed before specific deliverables can be produced.
Be open and honest about your business
If you’re a startup seeking to gain your first customers, a good consultant knows that customer feedback is more important than your system’s ability to scale to millions of concurrent users. Those systems are vastly different and come with different price tags. If you’re not realistic about your situation, you may be wasting time and money building something you may not need. It’s quite common for entrepreneurs to hold back and not share details about their business that are critical for a consultant to work effectively. This is a dangerous situation and can lead to unmet expectations. Of course you don't need to give up your special sauce. Every good consulting company will gladly sign a non disclosure agreement (NDA) and have the opportunity to work more closely with you as a result. Startups often need to pivot midway, that’s information that your consultant needs to know about. If they’re working based on information that’s no longer valid, the same will be true of the work they produce.
It doesn’t matter if your hired resources are doing co-development or are completely outsourced, they need constant feedback from you. Are they meeting expectations? Is there something you need to see differently or is everything going as planned? There may be times where the work is not easily visible, like when they’re building back-end services, but that doesn’t negate the need for your involvement and your feedback. The regular meetings that the Agile methodology provides, go a long way towards the feedback and communication that it needed. These iclude the regular scrums, as well as the sprint planning and back log grooming. Not all teams use these meetings the same way, and that's fine, as long as there is an opportunity to communicate the immediate deliverables and status, as well as the higher level requirements, deliverables and status.
Consider the end of the consultant's engagement
It important to consider the transition to sustainment for the work completed by the consultant. Who is going to handle ongoing and maintenance of the product beyond its original implementation? Does your team know how to implement new features, and test and rollout updates? Are you going to keep your consultants around for that work, possibly on a reduced schedule? Ensure there's a proper handoff and that documentation is up to date before the end of their work term, so that there's no interruption in the project going forward.
Now that you have an understanding of the different engagement models available and some points about how you can ensure a successful outcome for your project, you’re prepared to move forward with confidence. Hire the best resources available and welcome them into your team. Treat them like you would any new hire and give them the tools and access to resources that they need to be successful. That way they can do everything they can, to make your and your team successful. At BinaryOps Software, we've helped many teams be successful in a variety of different models. Call or send us an email, let's talk about how we can kick your project into high gear with an engagement model that suits your business.
Mark has been doing database design and building custom software for over twenty years. With a background in electronics, he quickly moved into software development and has been building database software solutions ever since, on many projects of all sizes.