There are many categories of engineers that are responsible for the software creation process. Here at Enova we have four:
The roles are different, but they are equally valuable to fulfilling Enova’s mission. It’s important too that each provide different perspectives — something essential to creating great software.
Respecting Diversity in Software Engineering
At the tip of the spear with your customers are your UI Engineers. Their function is to translate good design to great interaction with customers. A good ecology includes UI Engineers whose work reflects guidance from UX people. You can tell when you have good UI: your conversions are good and the culture is not about “build the feature and then make it pretty.” UI is an ongoing process as we learn from our customers. It should, and does, evolve. We expect our UI engineers to exhibit knowledge of visual design, user psychology, browser performance, usability, and accessibility. We have a number of UI engineers on different teams that come together in the UI Guild to consider the big picture.
Test Engineers are sometimes labeled unfairly by people in the tech sector as being “less than software engineers.” Not at Enova. We value our test engineers highly. They are problem predictors, great investigators, and drivers-of-consistency. Currently, they are part of the dedicated teams who serve our products and often become the experts of their product domain. They know where the skeletons are hidden. Our test engineers are more focused on automation of testing than manual testing. In this pursuit they work with tools like rspec, cucumber, capybara and the like. At Enova they reside on different teams, so we have a Testing Collective who meet every other week to talk about testing across Enova.
Software Engineers provide the business logic, the platform engineering, and the bulk of our tests for such. They are our makers. They are broken up into dedicated teams supporting each of our products, e.g. NetCredit or Simplic, or Shared Services, who provide the core services for all our products. They work predominantly in Ruby/Rails or Go.
Mobile Engineers are a mix of software engineers and UI engineers. Here at Enova we work in Java or Swift, with unique build and distribution processes, depending on the platform they are delivering to. Mobile engineers have to drive everything to be simple; they do not have the screen real estate that web may have. They also have to account for the hardware more (i.e. cellular connection, bandwidth, battery usage, lower memory, or lower processing power).
Each engineer is often greatly impacted by the technology they work with, and it can create an interpretation of the constraints, but this should not affect the respect that we give each.
We are still learning, and this is where we have arrived in our evolution. As the leadership of Software Engineering we have thought deeply about our different types of engineers and value the diversity that it brings our ecology, not just in terms of different mindsets, but also in different approaches to problem solving.