Experts in Conversational AI: Interview with ICS.AI's Developer Manager
Updated: Mar 14, 2022
Paulo Lemos is our Developer Manager, working to create and maintain our Artificial Intelligence assistants.
Can you give us an insight into the underlying technology that powers our solutions?
Our product is built using Microsoft technology from top to bottom. It is coded in .NET and incorporates the Microsoft Bot Framework. Consuming many Azure services, from infrastructure to AI and Machine Learning, it makes use of the latest Microsoft Cognitive Services, providing the full power of Microsoft AI technologies and ongoing support both from Microsoft and an enterprise-level developer community.
What is it like working with Microsoft's machine learning suite?
LUIS is extremely satisfying to work with. It is easy, simple, and powerful. QnA Maker allows us to combine the advantages of LUIS and have what we call a Hybrid QnA Knowledge Base, which makes an extremely powerful tool. This is fundamental to allowing us to achieve human parity performance on our products.
We recently adopted Azure DevOps. Can you tell us why this was and what benefits this brings?
DevOps allows us to organise the workflow and achieve better and faster results. From planning to deploying, we use all it has to offer. We store the project documentation in the Wiki and backlogs; the Boards allows us to estimate and manage the technical effort involved in each project. The Git Repositories and Pipelines enable us to control and deploy our code, integrating with the test plans and artefacts to store and run our custom packages and tests.
As a developer, what kind of work do you do on a day to day, week to week and month to month basis?
We have mostly short and intense projects, in which a good percentage is always rinse and repeat, with some of them having one or more new challenges, with bespoke integrations or features to be developed. Support activities are minimum, and a considerable amount of my time is focused on improving the current product and processes.
We are finally joining the 21st century in adopting Git as a version control system. Can you let us know how this will help?
Git is a fantastic source control tool, but it would be useless without a process in place. By combining patterns and principles like Git Flow, peer-code review, and DevOps pipelines, we can make full use of Git to keep code quality at the highest levels and spend our time in what really matters: adding value to the product.
How much do we custom build for each of our clients vs what's a core capability?
It depends on the client's needs. Most projects are 90% core functionality and 10% bespoke. Some clients need more new skills or integrations than others, but many projects can get into production in less than 60 days when the core capability suffices its scope, which is a significant advantage.
What custom integrations have we built, and is there a limit to what we can build?
We have developed many integrations incremental to our core product. With a few settings changed, we can use the same codebase for any client. That includes integrations with knowledge bases in Dynamics 365, SharePoint, and ComAround. And for our IT support use case, we integrate with ticketing platforms like ServiceNow and Cherwell. Some of our customers integrate into external platforms like the NHS and central government APIs, and even our Live Chat solution can consume third party hunting services if needed.
Can you give us an idea of how the development team is structured and who maintains/builds what?
Each project has a Tech Lead that takes full ownership of the technical decisions and development effort involved, including the QA (quality assurance) processes, ensuring code quality standards are met, and the project scope is delivered on time. With active participation in user experience and behaviour specification and sometimes acting as SCRUM master. One or more developers and an AI trainer deliver the user stories as planned, supported by the tech lead and the infrastructure team.
Can you give us an idea of just how fundamental your role is?
Although still acting as a Tech Lead on a few projects, the Developer Manager role is responsible for hiring, retaining, and nurturing talent. Setting up and improving current processes to ensure goals are achieved better and faster on every cycle. It should enforce and enhance the R&D culture, and always manage and mitigate technical debt. Personally, I very much enjoy getting my hands on code, so I spend a good amount of my time developing new features on projects or improving current core code.