By Marcus Almgren, Chief Technical Officer
People ask me how Cint keeps evolving our DIY platform, releasing functionality more-and-more frequently over time. Isn’t it usually the other way around?
It is, of course, hard to find one specific answer to such a question, but I’ll try to give you some of my observations from the world of software development.
First of all, you need a clear vision. At Cint, we have OpinionHUB as the general, open platform for online research, which at a simple level offers Cint Access to researchers and Cint Engage to supply partners. Cint Link is our API channel for either side. Without vision, you have nothing to aim at and nothing to confirm your progress, but more importantly, you have nothing that motivates your work.
Secondly, you need talent to market, sell and develop the platform as well as to innovate new parts of it. Without all the great people here at Cint, I have a hard time seeing us being this successful. How to attract and keep talented people is a story in itself, but I think the short version is to provide an environment that keeps people naturally engaged and motivated to do a good job.
When building software that includes many different user-interfaces, complex business rules and thousands of technical components, you need teams of people that can provide skills in unique areas. Having all these skills working towards a shared vision, you need processes to support it. At Cint, we adapt the way we work to fit our current needs, just as we evolve the platform itself. We see change as our friend and constantly use it to gain experience which we then add back into our products. Working in an iterative environment where close feedback loops are the driver of innovation, everyone involved must be aware of the bigger picture, but at the same time, be able to contribute with their specific knowledge. By releasing new functionality to clients on a weekly basis, we ensure a quick feedback loop and this also adds a good rhythm to our work in general.
Regarding technology, we tend to have a very agnostic approach. The basic idea is to freely choose what technology to use for the specific purpose, as long as it can be communicated and maintained over time. By allowing different technologies to live side-by-side, we are able to choose the best solution for a given task, instead of having the technology as a constraint of what we can accomplish. Having coexisting technologies, it also becomes natural to encapsulate functionality in services, making the platform easier to both distribute, scale and maintain.
Another key factor is finding your pace. If you are about to run a 100-meter race, you might prepare 15-second time blocks: run as fast as you can for 15 seconds and then spend 15 seconds catching your breath. If you change that distance to a marathon, I doubt the best way to do it is the same way you would sprinting multiple 100-meter races. Even to cover the first 100 meters in 45 seconds is a walk in the park for the marathon runner, who can afford to both have a drink and wave to the crowd during his run, where the sprinter needs to be totally focused for his 45 seconds.
The same principles can be applied to software development. If you have a short period of time for boxed coding, with a lot of room to both prepare before and recover after, then you can use the same tactics as when running a 100-meter race. The most important thing is to complete the coding as quickly as possible, never mind the time to prepare and recover. The same could be applied when solving an assignment, either in school or during a job interview.
In a more common work situation, where you constantly need to deliver functionality over a long period of time, it’s a lot quicker to use the tactics of the marathon runner where you also have the opportunity to react on unforeseen events. If you then add the benefit of being predictable to this, you’ll soon realize the value of having a sustainable pace. When working together in teams where the combined result is what counts, the predictability of each team is also way more important than their speed. The focus here is not necessarily to be quickest during coding, but to have the highest possible functionality throughout in total.
So, if I could pick one of these all very important factors on how to successfully develop a modern DIY platform, which one would it be?
Actually, I’d pick a completely different one: happiness.
Remember how you felt the last time you accomplished something special? That’s where engagement and innovation happens. Maybe it’s not possible to feel like that all the time, but you should at least have the last happy moment fresh in mind. The combination of talented and happy people working together is just as potent as it is hard to find.
I hope you enjoyed this look into what I believe it takes to build an awesome DIY platform and creating a working environment born to innovate. If you wonder why I’m giving all this knowledge away for free, it’s simply because we at Cint are true believers of transparency.