We launched Uber Freight in 2017 to bring technical modernization to the freight trucking industry, hoping to improve the lives of truckers through increased efficiency and flexibility. Likewise, Uber Freight lets shippers set up a delivery at the push of a button. Similar to how our platform matches riders and drivers, Uber Freight uses this technology to match shippers and carriers.
While Uber’s existing ridesharing platform provided a good start to launch Uber Freight, a dedicated team of engineers needed to build products on that platform tailored to the freight industry. After diving deep to understand how the industry works, our engineers built specific apps, back end flows, and business logic to enable this industry.
One such engineer is Sylvain Francois, who has worked on Uber Freight for a little over a year. Based in San Francisco, Sylvain grew up in France, where he got his degree in computer science. Despite what Sylvain calls the “low esteem for computers” where he was raised, he persevered, learning coding until he could turn it into a career.
We asked Sylvain a few questions about his work at Uber:
What do you primarily work on at Uber? What code or dev tools do you use?
My team works on the backend of Uber Freight and on a web frontend for our Operations team, which handles areas such as sales and support. Backends at Uber are usually composed of microservices written in Go. Compared to rich languages such as ES6, Scala, Kotlin, or Rust, I’m fascinated by Go’s minimalistic approach!
My curiosity leads me to try a lot of different tools, but I must be one of the earliest adopters of Jetbrains IDEs. When I tried the first public version of IntelliJ IDEA, 17 years ago, I felt like this tool was designed exactly for me. I have installed every single early access build of IntelliJ that I could since, and used it to develop in Java, Android, Kotlin, Python, and now Go! But my work at Uber lets me keep trying other tools, which helps me understand other approaches and paradigms, and find what works best for me. I think it’s important to keep an open mind.
What do you find most interesting about your work?
Although I have been doing it for a while, I still find magic in software development. Creating programs, sometimes with behaviors I do not expect, and having the ability to improve them over time is still vertiginous to me. With experience, I have realized that the difficult part is not figuring out how to implement a program, but how to identify the exact requirements and balance tradeoffs. I also tend to target simplicity and purity in my design and code, an approach common in many kinds of craftsmanship. I really like this style.
How does your work affect Uber’s users?
Having empathy with truck drivers and fully understanding their experience is a pillar of Uber Freight. Amongst this organization, you really feel this at all levels, even as an engineer. We implement lots of features designed to make their lives easier, such as shortening the time they are waiting at facilities and helping them optimize their itineraries. We have already heard a lot of positive feedback about the impact on their lives, which is very gratifying.
We also want to redefine how shippers can manage their loads and work with carriers. In this area too, there is plenty of room for automation. Using technology to streamline their processes is very exciting for me.
Do you have a favorite working practice, maybe a tip for using a dev tool or something else that gets you through the day?
The first thing I do when installing a tool is to explore and customize the settings. Optimizing tooling makes a huge difference in terms of productivity. There’s an old saying that means a lot to me: “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” I’m also super sensitive to any repetitive task I find myself doing in my regular work. I always try to automate these tasks with shortcuts, scripts, or plugins. This approach is not natural for many of us, as it requires a mental effort to step back and invest for later. But it can make such a difference in my daily work and fits so naturally with software development. How many jobs offer this sort of opportunity to eliminate chores so easily?
What do you find most challenging about your work?
Trade-offs are at the core of software engineering. You make a trade-off each time you write a line of code (do I want to make it more efficient? more readable? more secure?), each time you design your implementation, each time you choose your next task. And when you start a business from the ground up like Uber Freight, prioritization is incredibly difficult, as there are so many things you want to do with so many dependencies across different teams. Those decisions become more difficult when you consider that nothing is definitive, you want to experiment, iterate, and always reconsider priorities in order to optimize.
What excites you about the future of Uber Freight?
I feel like we are starting a new phase in Uber Freight. The first two years validated the model, and we have a great foundation and the proper investments for scaling. Now, we have many innovations we are eager to deliver for our carriers and shippers.
Interested in joining Sylvain and the many other software engineers working to solve real-world problems at Uber? Take a look at our careers page!