A solid development team is comprised of unique individuals with various specialities. Having a range of ideas and perspectives working in unison toward a single goal increases your chances of seeing breakthrough technology built under your business’s roof, while making your workspace a more fun place to spend each day. At UE, we’re proud of our collection of quirky geniuses, all of whom are responsible for our range of innovative large enterprise solutions.
In previous weeks, we discussed how to structure development teams to generate creativity and maximize productivity. This week we turned towards UE’s Connoisseur of Code, Elijah McPherson, and talked shop about how being multilingual and adaptable with code languages helps solve business problems.
How Important Is It To Be Versatile With Various Coding Languages?
I think it’s very important. Once you have a fond understanding on how computing works and how to apply computation to solve business problems, it is typically straightforward to use most other mainstream programming languages – it’s just a matter of learning the correct syntax and some design choices that the language makes. What’s cool about studying and using multiple languages is discovering the design and thought process behind it. For example a functional language like Clojure embraces immutability as a design constraint vs Java where mutating the state of values is the default design choice of the language. You can actually learn a lot of from analyzing and learning these design choices. And that’s what is good about being versatile — because you don’t only have a hammer in your tool bag. You can switch it up and use multiple languages for the right job. But what’s even more important is really grasping the concepts of what it means to compute: what is the approach and how do we solve these real business problems with computation.
What’s your nickname, and what’s the story behind it?
The Connoisseur of Code, because I really like elegant solutions and code. When a developer hacks code together really fast because of a time crunch, which everyone needs to do at times, it creates headaches – what we call technical debt. I like to think really hard about what the code should look like, the interface behind it, and ask if it truly captures the business intent. It’s cool to look at a piece of code and clearly see the solutions to the business problems clearly reflected. This helps to understand the business and its objectives. I really care about these kinds of elegant solutions, code that is concise and gets the point across.
Can you think of an example that reflects that process, like looking at a business problem and seeing how the code can effectively address that?
In software or higher level languages, there is a concept called Domain Driven Design. The goal of that is to model a business problem in such a way that the code reflects it. For instance, on a platform like the ALM, we have accounts, orders and leads, and we have things that process orders. So we try to take all the business terms, what is called the domain language, which is from the business, and I try to name my code and the actions to model that domain, versus coming up with simply a technical solution. The naming is concise, so when the business people are speaking, we are communicating in the same language and when I’m working in a piece of code i’m using that same language.
What is a dream piece of software that you could build?
I don’t know if I have a dream project yet. I know I want to solve real problems that actually impact the world. Ultimately, I want to provide value to other people whatever that is. I’m really interested in how program language works and high performance computing problems.