Working together with a unique language.
TripShot uses Haskell to solve some of the biggest problems in campus transportation. Haskell allows engineers to be considerably more precise about the types of variables when they code. This means that more errors can be caught by the compiler instead of happening when a program is running. When an engineer is designing an interface or a library, the precise code keeps future users from making mistakes. When using a code editor with Haskell Language Server, it’s constantly running the compiler in the background and checking things as a user types.
This has the benefit of supporting large-scale refactorings that come up periodically with any codebase. In Haskell, there are more options for the kinds of refactorings you can do safely than in non-functional programming languages, such as Java. One of the big reasons is purity - parts of the code that have no side effects can be rearranged without worrying about affecting what observable actions (such as printing or sending a message) will occur in what order. An engineer usually doesn’t have a whole lot of support from the compiler. With Haskell, often the code necessitates a few very specific changes and then the compiler leads the engineer down the path for refactoring.
Although TripShot is a distributed company, engineers work closely day-to-day to support each other and grow their skills with Haskell. Engineers regularly have informal conversations when they contribute thoughts, ideas and discoveries they have made. Engineering TripShotters often teach each other about Haskell. This culture of collaboration allows developers to build on TripShot’s success with Haskell.
TripShot also supports professional development for software engineers. Later this year, several developers will attend the Haskell eXchange 2022 conference in London so they can learn more about Haskell being used outside of the transportation industry and use their findings to propose improvements to TripShot’s codebase. TripShot has also hosted internal hackathons at in-person company meetings, allowing engineers to identify issues and propose solutions that aren’t necessarily road-mapped.
Besides collaborating with colleagues and attending professional events, TripShot software developers also keep their skills sharp with email newsletter subscriptions to various software engineering blogs, social media and other external content. Some engineers study general math that is related to Haskell programming or take classes on advanced software design.
Haskell is a constantly evolving language with engineers often coming up with new and better ideas that get incorporated into libraries. Some of these ideas are useful to our team and TripShot’s day-to-day software development. Like the programming language, the TripShot engineering team is always evolving and working together to sharpen our skills.