So at the end of July I finished working at eGain where I have been building a charting application as part of VIM, their CRM product. It's been an intense 7 months working on a high-end enterprise solution running on a complex stack of technologies, but also a great opportunity to design and build a product feature from start to completion.
The VIM product provides a dashboard interface to a reporting service which monitors call centres - customer service phone lines, and increasingly, 'omnichannel' services (i.e. integrating other customer routes such as web, mobile, chat, and social media). It can be run as a standalone service on the client's servers or in the cloud, and runs on a stack consisting of C#/.Net, and MSSQL/OLAP. The dashboard itself is implemented using the OpenSocial architecture which is backed by Cisco whose switches and other hardware are dominant in call centres.
My role was to build a charting 'gadget' to be deployed in the dashboard: a REST API surfaces user-defined reports in a JSON format, and the charting gadget allows the user to then select data in the report and choose how to display it - in pies, donuts, gauges, bar, line, area or stream graphs. The charts themselves were built in D3, but the main challenge was providing an interface to allow the user to specify what data to display and how to analyse it, since the reports could contain almost any arbitrary data formats. The charts were able to handle any arbitrary numerical or categorical data, and analyse them using any aggregation method.
A big takeaway for me from this piece of work was the importance of unit and integration tests. When building against a pre-existing system, it is difficult to specify in advance in a precise way the kinds of output it will produce - all the more so when its data output can be configured by users. So as I built the charting application, I gradually built up a suite of tests and fixtures which helped me to ensure that each iteration of changes and enhancements was not breaking existing functionality. Full coverage doesn't ensure you're bug-free but it is crucial to your sanity when you're working in a complex produciton environment.
Filed in: Web Portfolio
Joe Flintham 2000 - 2015
Long form: Menticulture
Professional Services: Fathom Point