I am frequently asked by potential customers about the nature of a business relationship with Kitware. This is true for small support contracts all the way up to multi-million dollar consulting projects. In this blog I’ll paint a general picture of what you can expect, and more importantly, what you should demand from your relationship with the Company. I’ll also sketch the outline of a typical project with Kitware.
Let’s start with basic principles: if you know who we are you will better understand what we offer. There are three major drivers to the Kitware culture which will manifest in any relationship with us. First, technical excellence in what we do. Second, a respectful, creative and collaborative environment. Finally, efficient, agile business practices rooted in integrity.
Most of our customers initially contact us due to our open source systems which are recognized as superb technical platforms, or through the reputation of our technologists. There’s not much to add here except: try out our open source systems, the proof is in the code. Similarly, you will find that our technical leaders are making significant, global impact across their areas of expertise. So if you work with Kitware, expect world-class teams and technology.
If you have read any of my previous blogs, you know that we very much enjoy, and indeed insist on, collaboration with our partners and customers. While this probably sounds obvious, it significantly impacts our relationships. For example, we are now very reluctant to engage any customer who wants to drop a large, inordinately detailed and inflexible software specification on our laps. Yes, of course requirements and specifications are essential, but taken too far they can be counter-productive. We find that an agile, collaborative process in which we work on an on-going basis with our customers works best, producing superior results. So expect high-levels of collaboration, and since our people are creative, passionate and customer-centric, expect to have a rewarding time along the way.
Finally our secret strength: We are darn good at business. I often encounter brilliant technologists in my travels, and marvel at their manifest potential, while at the same time feeling surprised at their inability to realize their talents as business opportunities. It turns out as technologists we sometimes take for granted just how hard it is to run a successful business. We understand this at Kitware, we have made significant investments in outstanding people, processes and business practices. As a result, we are very astute at managing the financial and contractual aspects of a project, providing quick and flexible response to customer requests.
I’d also like to reassure any potential customers out there who have never worked with an open source company: we are reasonable people who will protect your proprietary information. While we generally prefer to contribute to our world-wide, open source collaboration toolkits and applications, we completely understand that there are circumstances that require closed customizations, confidential relationships, or protected information. We have extensive processes in place to deal with such situations. Also, we have developed legal practices including generous, non-reciprocal licensing terms that enable great flexibility in our relationship with any business.
A Typical Project. So how does a typical project run at Kitware? It begins with an idea for a project or technology. This may be in response to a direct customer request, a funding opportunity offered by a government agency, or a request to collaborate. Generally we like to be involved from the begining, helping to define the relationship, develop ideas and scope the project. Since we are very good at software, we often take the role as the engineering core, managing software process and architecture, and working with the customer’s domain experts to manifest their vision. However, we have the technology horses to help define the vision as necessary, and frequently do so.
Next comes the fun part: establishing contractual and financial relationships. While this can take a myriad variety of forms, suffice it to say that we can engage in a variety of relationships ranging from leading proposals, subcontracting to the customer, time and material relationships, and fixed price contracts. Note we are not pushovers and will not swallow unreasonable indemnification, warranty clauses and/or unreasonable terms. We have audited, multi-tiered consulting rates to help manage project costs, and now with an international offices, we can build international teams. Whatever the relationship, however, expect us to respond quickly within the negotiation process.
Once the project begins, we will quickly lay down the collaboration infrastructure. Depending on the scale of the projects this will include communication infrastructure (email, wiki, web pages, and/or bug tracker); a version control system (svn or git); build environment (CMake); testing infrastructure (CDash/CTest); deployment schedule and procedure (CPack) and process definition. By this I mean: what is the process for interaction between collaborating parties? This ranges from setting a schedule for meetings (tcon, video, and face-to-face meetings) to adopting formal agile processes such as Scrum and KanBan. Many of our customers are fully engaged in the process, and actually co-develop the software with us. (This can take some adjustment, it’s scary the first time that we tell the customer that they’ve broken the dashboard and to please fix it :-)).
Along the way, our Finance Department can provide very accurate and timely financial information. Many of our customers request frequent financial status reports; we have automated systems to readily provide this. This capability is extremely important to our customers; it helps us make good project decisions and tradeoff various implementation choices, and maximize the liklihood of project success.
As the project concludes, we often continue to maintain the software. This can take the form of an on-going support contract, or other forms of supplemental funding. Of course, some customers like full ownership of the software system in which case we will document, transition, and train the appropriate customer personnel. In some cases, some of the code we develop may be contributed to an open source system, in which case maintenance costs can be absorbed by the community (depending on the scale of the maintenance effort).
Final Words. Hopefully I’ve provided a decent overview of a typical Kitware project, and what you can expect from us. However, if you have any questions, please don’t hesitate to contact me or any member of the management team. In particular, if you have any feedback, whether good or bad, regarding our process, I would personally like to hear it. We are committed to delivering outstanding results in a timely manner, and to using leading-edge technologies to ensure that you receive exceptional value from your relationship with Kitware.