Interview: Thomas Himblot, Lead Software Engineer at uptime, is in charge of a team building the software components and algorithmic systems enabling elevator field technicians using uptime's app to act preventively on their machines.
Tell us a bit about yourself:
I began in 2010 as a web developer in a small marketing agency, with a team of around 15 people. I developed e-commerce websites, CMS integrations and landing pages using mainly PHP and JS. During these 3 years, I enjoyed being part of these projects and everything entailed in that, from need definition, development to delivery.
After that, I decided to gain some experience, working on projects for bigger companies. I joined Capfi Objectif, a consulting company specialized in Java technologies, where I stayed 5 years. I had the chance to work on a Twitter-like mobile application for the top management of Lagardère (using Node.JS, Phonegap and Angular). Then I undertook a 3-year mission for the investment bank BPI France. I was involved in building multiple platforms allowing entrepreneurs and startups to apply for grants from top experts. It was a great opportunity to work with various engineering teams on problems such as web service integrations, database management, etc. I worked on Java EE backend, Oracle databases and Angular frontend. I was a specialist for frontend applications at Bpifrance, which means I shared best practices and helped to migrate legacy projects to more modern web technologies (initially using JSF or Struts). I also worked for Saint-Gobain, with a team of 50 engineers, also working on Java (Spring Boot framework) and integrating the SAP solution. The goal was to update the sales and stock management system for majors retails chains, nationwide.
After several years in big corporations, I wanted to join a more human sized company, have more impact and work on a game-changing product. I was also interested in working on projects involving data and IoT. I was approached by uptime which met all these requirements. The founders' market-minded vision convinced me of the disruptive potential of the project. The idea of disrupting the obsolete elevator maintenance market with a new IoT technology was really tempting. It's been 3 years, and uptime has grown impressively. Being able to participate in the modernization of this sector, surrounded by a team of dynamic and smart people, is very enriching! It also allowed me to progress professionally, now being Team Lead and managing 4 developers.
What can you tell us about your daily routine?
We usually start by a 15 min daily squad meeting, with our PM, product designer and devs, to discuss the day's objectives. Then, we do whatever it takes to reach our goals following OKR methodology. It can go from implementing a new feature on one of our applications (web or mobile), dealing with IoT subjects to gather more qualified data and analysing it to enhance our predictive maintenance solution.
Before I dive into code-related things, we generally have some creativity workshops, in order to find the best solution to a specific problem. We always focus first on a real user problem, to have the maximum impact on the product we build.
When features are ready, I review the merge requests and give feedbacks on features developed by others (everyone is involved in the process). When it's done, they're deployed into production, as often as possible (generally one or multiple times a day), using our continuous integration pipeline. This way, we quickly get feedbacks from end-users and we can iterate on the solution to provide them the best experience as possible.
"We always focus first on a real user problem, to have the maximum impact on the product we're building."
As a lead/senior developer, I try to maintain a good quality of deliveries and I focus on what can be improved on the stack (performances, scalability, security, etc.). We often organize technical meetings to talk and debate about the main issues regarding the development process, which is great to find solutions and ensure the quality of our stack.
What part of the stack do you work on?
React and React Native for frontend. On the backend side, we develop a Graphql API in Python using the framework Flask. We also have a Python service responsible of tracking events sent by our IoT devices. This service stores the data on a Postgresql database. Most of our services are hosted on AWS and Heroku, we also use Terraform to describe this cloud infrastructure.
I'm mostly focused on backend and data subjects, but I also frequently develop frontend features. When I develop a full stack feature, it means designing the Graphql API in Python, eventually making some migrations on the database to store new data and implementing the frontend client in React. We also work on experimentations, like data analysis, visualizations and dashboards (mainly with SQL or Python), which help finding what's useful in our IoT data to detect problems on elevators for example. At uptime, we're all full stack developers and anyone can work on web or mobile apps, IoT, data, databases and infrastructure (each with their own skill level of course).
Do you have a favorite language?
I don't really have a strong preference. I tend to choose technologies which help reach a goal quickly. I think Python is a very versatile language because it fits a lot of needs, from small scripts, data processing to bigger applications. Maybe it's not the best performance-wise, but it's usually good enough for our needs. There is a great community behind this language too. I particularly like all the things available around data, like scikit-learn, panda, numpy, which are great tools to make POCs quickly.
What has been your biggest challenge as a lead dev since you joined the company?
It's hard to choose one! I will start with a product-related challenge: we provide action recommendations to technicians and we try to have a real impact on their daily job and thus customer satisfaction. To achieve this, we need to ensure a very good quality of data, which means reliable IoT devices (with fleet management) and precise analysis. It needs a lot of knowledge, compiling hardware, software, data, infrastructure, device deployment and elevator specificities. Gladly, we're a team of experts and we often interact with each other. It's what makes things interesting at uptime: we have a very concrete problem to solve!
"We try to have a real and positive impact on our users daily job and thus customer satisfaction."
Among other things, we are working on scaling our database to store a big volume of IoT data with more efficiency. It's a very interesting task with a lot of possible solutions. I also worked with the hardware team for a few months. We worked on a feature which allows the device to send an elevator to a specific floor, remotely. It was very challenging to understand how an elevator electronic mechanism works. I also worked on low-level C embedded code, to be able to communicate with the elevator components. Very challenging but truly satisfying when it works!
What do you think must be the main quality of a developer who would like to join your team?
I think that in a fast-moving environment such as a scale-up company, you need to be curious and pragmatic. Pragmatic because at uptime, we iterate fast, meaning that choosing a product solution or a technical implementation must be done by arbitrating between high quality and quick delivery. I believe that it is better to fail fast and learn from this failure to improve the solution. Curious because we're facing new challenges all the time, and it's often problems that nearly nobody ever solved before! So you have to constantly learn new stuff to become a better engineer by the days and be able to solve deep problems.
Any tips for future developers?
To grow as a developper, you sometimes have to move away from the technicalities and be more product-oriented. It may sounds paradoxical, but it's important to understand what purposes we serve while developing features, what problem we try to erase, in order to make the good technical choices. Product needs can change really fast, especially in a startup, so you have to be aware of the business priorities and focus on what matter the most.