It’s the end of the financial year. The new financial year is beginning with all the right intentions of being organized, planned and effective! A key element of work-planning for us is managing the platform and underlying technology as we are at the core an on-line marketplace. As an ex-consultant and founder, and who is not a techie, I opted to outsource technology to a strategic partner.
The short answer to ‘why’ I opted for the outsourcing is three-fold:
- I didn’t have a tech co-founder at the time we started and it has been tough to find one
- Getting quality senior tech talent (who is not a founder) is even harder in this environment where demand is sky-rocketing and
- Hiring coders without supervision and other tech folks to solve problems seemed too risky. So, I decided on a strategic partner to be our outsourced technology team that would own the maintenance of the platform and more importantly work with us on the product’s evolution.
Though partnership has worked well for us this past year, there have been a lot (ongoing!) learnings about managing tech when it's core to your business and when you are a non-techie.
Here are 5 Mantras that worked for me:
1. Think through the product choices carefully and in detail
There will always be more features we want to implement than we have the capacity for – improvements that will help current clients, new additions to the product or tools we need for a marketing campaign. Before handing a laundry list off to the Product Manager to coordinate with the tech folks, it’s critical to have an internal discussion on what each change means in detail, how important is it to do now, whether it’s a small change or a big upgrade that needs time. We follow a simple A/B/C format to prioritize the most important requirements from a business stand-point so that the Product and tech team can keep that in mind as they estimate and plan.
2. Rely on good old project, work management principles i.e., break-up into releases, manage deadlines, hold people accountable
This sounds really simple but it is crucial. After an initial period of haziness, we have settled into a rhythm of 3-week releases that everyone has bought into, and we typically try and have a broad line-of-sight for the 2 releases after as well in broad terms. This helps the team know what’s planned for when, and think through marketing and social media campaigns accordingly.
3. Think as users and not just of technical implementation
This again is the responsibility of the ‘business’ side as the technology folks will think in terms of implementation. We need to add the layer of extrapolating how it will work for the planned set of users, and is the current spec enough. This step is probably most crucial while testing, as my experience is we always underestimate the time we need to test, and more importantly do not think ahead of time as to how we will test ‘functionality’ vs. ‘whether the feature works technically’.
4. Test offline before coding no matter how painful
Again this has been a lesson learned the hard way – while testing will always throw up bugs or improvements, the major issues can often be identified beforehand though may mean hard work. We have a new matching algorithm on the site we are excited about – FlexScore™ – that uses a proprietary intelligent heuristic to match consultants to projects. This as expected has multiple parameters, each with its own importance in the overall algorithm. And of course while we had tested this for projects of different types before we finalized the algorithm we saved the really complete and detailed testing for once it had been coded - as it would be easier (algo calculated vs. us having to do it in excel!). This led to a delay in launch as the testing yielded important tweaks, some simple but some that needed us to change how we had coded which made everyone unhappy!
5. Ask the next level of why, even if you won’t fully understand the answer
I cannot stress this enough – I was taught this in consulting school and it holds true here too. Whether it’s when you feel a feature implementation is taking longer than it should or cannot be implemented in a certain way, ask the ‘why’ and the task break-up associated with it. More often than not one can find a solution or a work-around.