In this episode, Senior Engineering Manager at Appriss Health Thomas Powell, talks about learning seven languages in seven weeks and that each one opens the door for a deeper understanding of the possibilities in your home language if you have a primary language that you work with.
Ruby is Thomas’s home language. He talks about what it is about Ruby that feels like home to him, why people should pay close attention to the communities they're cultivating, his vast experience in spoken languages, and his career path to working in a leadership position.
Should you find a burning need to share your thoughts or rants about the show, please spray them at firstname.lastname@example.org. While you’re going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you’d like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @PolyglotShow.
Jonan Scheffler: Hello and welcome to Polyglot, proudly brought to you by New Relic's developer relations team, The Relicans. Polyglot is about software design. It's about looking beyond languages to the patterns and methods that we as developers use to do our best work. You can join us every week to hear from developers who have stories to share about what has worked for them and may have some opinions about how best to write quality software. We may not always agree, but we are certainly going to have fun, and we will always do our best to level up together. You can find the show notes for this episode and all of the Relicans podcasts on developer.newrelic.com/podcasts. Thank you so much for joining us. Enjoy the show.
Thomas Powell: I'm a software engineering manager. I currently work for Appriss Health, which provides prescription management programs, prescription data tracking, and then various services around that built around helping control the opioid epidemic and things like that. I've been in tech for 25 years, I guess, and I've been into computers for substantially longer than that, going all the way back to Commodore 64. Actually, it was a 128. And I think there was a TRS-80 Model I somewhere in the house at some point that I had a lot of curiosity about, but I don't think it was working at the time. So I go pretty far back with that stuff. Currently, I support the Ruby on Rails team as a manager. But I get involved in lots of technologies here and there as a hobby and professionally.
Aisha: Awesome. So I understand that you have, over the course of that 25-year breadth of experience, used several different languages across your career. And I'm interested to know how that has affected maybe the way that you approach problems and how that has or hasn't opened up opportunities for you.
Thomas: I started out -- it was actually my senior year in high school. I took C and Pascal at the same time with the same teacher. He was genuinely concerned for my well being because they do have -- At the time, they were very similar in paradigm compared to everything else, so one was just a little more verbose in its syntax than the other. And he had concerns that I was going to constantly be confusing the two and trying to do one in the other. I've had pretty good luck separating them out. They just felt differently to me, much like just completely different mediums in some sense. But then I also learned from the experience in each to deeply understand the other more in terms of references, pointers, functions versus procedures, things like that. So those concepts between them overlapped a lot, and they actually helped me have a deeper understanding of each. I had one more Pascal experience in college, but then I pretty much committed over to C because that was pretty much the opportunity that opened up for programming point of sale systems for -- actually, it was back of house systems for KFC and then point of sale for Pizza Hut under the same umbrella. Along the way, I experimented with Tcl (tickle), I can't remember which way it goes on that, Bash, Shell programming, Perl, I got my Java certification. But somewhere along the lines after learning Perl, I saw an O'Reilly article about Ruby and kept trying to get things done in Ruby and learn the ins and outs of that, and that got me in the door at Appriss when there was a Ruby on Rails position open.
What I'd say is I find these days learning the seven languages in seven weeks, I think, books that each one of those languages much like that C Pascal relationship, each one of those languages opens the door for maybe a deeper understanding of the possibilities in your home language if you have a primary language that you work with. Some languages represent concepts a lot better than others, but then you unlock those concepts in those languages like Lambdas or Lambdas closures, different concepts. And you can actually start -- Once you understand them in something that represents it a little better, you can actually translate it back to maybe your home language, maybe it's aspect-oriented or something like that, object-oriented programming. There are some languages that have a better and natural feel for them. But then, once you understand them there, you can translate them back to what your main programming language is and then focus a little bit better on that toolset that you probably didn't have before by opening up the door on advanced techniques that weren't just natively available when you first started.
Aisha: That makes sense. I wonder, in thinking about these different features of a language and really getting deep knowledge of the various languages that you're working in, have you developed a sort of -- I'm imagining it as a value system where you have a sort of profile in your head of the types of language features maybe that you look for when you're solving a specific problem or type of problem.
Thomas: Actually, it's funny. You said value system, and I immediately thought about brace styling wars. But I think it's more that it's helped me not be as absolutist in my thinking about what is good, what passes through the gate, not be so heavily gatekeeper about things. When I was just strictly a C programmer for a long stretch of time, there was one One True Brace Style, and I think it is called that actually; any other arrangement of curly braces was wrong. And I think I was actually team tabs versus spaces for a while there. And I edited in the Ruby editor that would actually use the proportional font, and it completely messed up my perception of everything. But you get into Ruby, and you got to let go of some things that are available and some that aren't.
I worked with a team of .NET programmers and C# after having been in Ruby for so long. And I had started wandering into the type-safe world before that. And now in Ruby, well until 3, it's like no holds barred; it's duck typing. And then it was weird to interact and lead a team of C# developers who are very acclimated to having that compile-time safety, and Ruby was an anathema to them in terms of you don't know if you're using the right type. And it was a culture shock to me to go back and balance the two worlds. I think that's the thing: it keeps you from getting tunnel vision. I still love Ruby, and Ruby is probably still home for all intents and purposes, but keeping perspective on other languages keeps you from getting that tunnel vision where there's only one way to approach a problem. And the more broadly you see it, I think the less you get yourself into a trap and with that tunnel vision with that narrow thinking.
Thomas: Right. I will say that there is a danger, of course, that you can wander down a path just because it's there, so that is the dark side. Like, today we do Elixir, [Laughter] today we're doing Rust. Fortunately, having to get things done prevents a little bit of that. But there's still, especially in your free time, let's try to do it this way and like, why am I doing this? But yeah, so there is a dark side to it; it's not all positive direction. There's some squirreling that goes about and comes along with it.
Aisha: Got to try to find that balance.
Aisha: So you mentioned that Ruby is home for you. Is it that you have worked with Ruby the longest? What is it about Ruby that feels like home to you?
Thomas: Ruby has certainly not been the language I've spent the most time with that would definitely be C. And I still go back to C to play around actually just to see if I still have the ability to understand it.
Thomas: It's there, and it's not. Some days are better than others. I think there's something visual for me. I really can't do Ruby without syntax highlighting and the rainbow brackets. There has to be a color aesthetic that actually goes with the Ruby. It's weird. I can do C for a little while without having that. And maybe it's just because I spent so much time in the Unix terminal that it's just a given that I don't get colors with C. But there's a visual aesthetic that comes with it. I do think Rails has really played into that too. I don't think, until Rails, that I fully internalized object-oriented programming. I wouldn't pretend to be an expert in that mindset, but I think before, my conceptualization of objects was very arbitrary, and having the Rails, the guide rails, [Laughter] for object-oriented programming, and MVC really helped put some constraints on those. And it really does actually -- Okay, you start there, it frees you up to start small in terms of your conceptualization, and then you branch out from there actually understand okay, well, Rails doesn't provide me all -- I can get messy if I stay within the strict confines of Rails. Are there some objects that I can create? And then you start branching out into the broader sense. Until Rails, I probably never wrote an actual cohesive object in Ruby, but since Rails, I can actually think a little bit more clearly about creating objects in non-Rails Ruby whenever I'm doing some scripting and stuff and doing some encapsulation and things like that. I had Java; I had C++, I don't think I was able to latch onto anything prior to that. I could maintain your C++ code. I could trace through it. I could maintain your Java code. I don't think I could do ground up in either of those in a fairly large project just because there weren't the guide rails there. That's one of those things that Ruby's brought me.
I do have an affinity for the community too. I've been to every single RubyConf since I started getting a pass to go to it, I think 2015. And I made it to one RailsConf as well. So I've made it a point to find a way to get to one if there is one. I don't even know what it is about it, but there's something about the atmosphere. I think in RubyConf, too, it ends up being more than just the code. There are things beyond the code that get talked about in RubyConf. It's probably also elsewhere, but I don't think I was really introduced as much to the implications of the code that I write until I went to a RubyConf. And then it was like think deeper about -- I think the first keynote was the consequences of an insightful algorithm, and I'm like, wow, this is a lot deeper than I've really considered what I'm writing.
Aisha: By the implications, do you mean sort of the real-world implications of what people are going to do with the software that you create?
Thomas: Right. I mean tracking in AI, image recognition every well-intentioned application has potential for abuse and thinking about okay, where do you start on that spectrum, and where do you intend for it to be? Where is it possible to take it? Just being informed that hey, maybe you can't do anything about it but being aware that there is that potential and understanding that opens up your mind to more things than you probably have considered before.
Aisha: Yeah, absolutely. It sounds like a combination of having the guide rails that you got from Rails and the Ruby community as a whole helped to ground you in that language. I'm interested if, after recognizing that you have maybe sought out those communities or frameworks in other languages. Has that changed the way that you approach new ecosystems?
Thomas: I've looked not too deeply, but I've looked. I've seen a lot of negative interactions that have scared me away early on, just surface-level things. And maybe that's not representative of who an individual community is, but it's given me pause. Is this the way every interaction is going to be? And I realize even the Ruby community has had some turmoil, but it's like, is this turmoil? No, it isn't. [Laughter]
And Ruby's maturing, and I realize it's no longer the hot topic in terms of languages. There are plenty of other things like Rust and other technologies and even beyond languages themselves. But I still feel fairly comfortable there, and being in that management role has lessened the amount of eagerness to just jump around and find a brand new community and start over with at the moment.
Aisha: That makes a lot of sense. And I think that your point about the potential even for being scared away from a community is powerful. I think that that is one reason that people need to pay attention to their communities, the communities that they're cultivating. I certainly, as a woman in tech as a black person in tech, I look out for those things when I'm considering what am I going to use for this project? Am I going to be safe asking questions about this thing? Am I going to feel comfortable if I go to these language events? Am I going to find that community? Because it's important, it's important to me too. I think it makes learning and working with anything, programming language or not. I think it makes interacting with anything easier and a lot more fun.
Thomas: Right. Having been involved with computers all the way back to I think it was the Usenet days where you had the comp. Whatever groups and stuff. I don't even remember if I ever actually posted. But I remember seeing other people post and the initial, like, why the heck would you want to do that? And just the very abrasive, like, look, the person's just looking to try..."Read the manual." This person's looking for help, and this is the first interaction. You're going to just completely cause this person to give up. And I see that kind of replay itself in every iteration of communities. Sometimes Stack Overflow delves into that world. GitHub issues definitely depending on the project, some of those like all-out holy wars going on in your GitHub issue about semicolon things like that.
Aisha: [Laughs] Oh yeah. I've seen it get nasty.
Thomas: So I see that and not everybody who -- There are a lot of lurkers out there, and I think the whole social media the 90% lurker versus contributors versus like -- A huge majority of your people are just lurking and observing how the interactions go. So it's not just the people who you're interacting with that matter; it's everybody else who is just a bystander, and they're seeing you having infighting or whatever is going on or how you treat new people, that matters. And that could be the straw that somewhere down the road breaks the back of the community.
Aisha: Absolutely. I want to pivot a little bit and talk about your experience in spoken languages. This is really interesting to me because I have struggled. I have struggled for a very long time to learn Brazilian Portuguese. And I recognize that part of my problem is that I don't speak nearly enough, but I'm interested to know how you got started. It sounds like you got started speaking German when you were younger, maybe.
Thomas: I would say it probably goes a little bit further back than that. I went to this small Catholic school in a working-class area of Louisville, Kentucky, and the pastor there was still stuck in this whole 1950s mindset where the Germans were the people to be able to communicate with in terms of opportunity, engineering, all that stuff. And so he had a German teacher there. He taught fifth through eighth grade. And I would say in terms of the language that I could probably rattle off; German is probably the closest in terms of actually being able to speak coherent sentences in it.
But I actually go back even further. So I'm half Filipino. Actually, I was born in the Philippines myself in a naval hospital. My mom would talk to her brothers and sisters on the phone. It seemed like a nightly basis. I'm sure it wasn't as extensive as that. But so it forms what sounds you'd recognize as native because you hear more than just plain mid-Southern English. So while you won't always represent that, every once in a while, you'll trip over into an accidental mimicking of your mother's speech patterns. And my grandmother is like central Kentucky, so she's got her own vibe. And so just accidental mimicking of those sounds. And so it opens up much like the programming languages; it opens up the arsenal of what sounds you accept as natural for speech.
And then I think when I started in high school, Mandarin was offered to everybody for two years. They later made it just juniors and seniors because they wanted you to actually learn a practical language, I guess later. So I said, okay, I'll learn Mandarin. I learned some of the writing, learned there's the tone-based language there, so different tones, which of course played into a little bit of my music background too. I think I do a decent job hearing, performance-wise, not as confident in repeating it. I have a couple of Polish team members now, not so many; it’s like five or six. And so I started actually learning Polish on Duolingo, and I have said a few different sentences to them just almost as a sideshow kind of thing. [Laughter] Like, "Hey, look at this American speak some Polish." "Okay. That's close enough. Yeah, sure." [Laughs] Also, I think it does kind of link back to understanding a little bit of their culture and understanding maybe where the disconnects lie, how we interact, just a deeper context for things. And then also trying my best to say their names as they would hear them by someone native because there is something about having someone actually recognize your name as is versus completely butchering it which I think the average American tends to butcher a foreign-sounding name just because we are not exposed to it as much. So just trying to give that little bit of extra, hey, I notice you as you are and understand your context. A lot of that is also kind of like, it's novel; there are different structures. Polish has a lot of Latin similarities where you have all these combinatorial endings, and it's almost like a logic puzzle in itself to me, so there's a lot of that. And just the challenge of this is so foreign to what I naturally do. I'm drawn to that aspect of it.
Aisha: What you said about just getting people's names right is important to me. I feel that on a personal level, I myself have many times in professional settings found myself repeatedly correcting people in the pronunciation of my name. And there are no sounds in my name that should be particularly difficult for a Native American English speaker. And so I know how much it bothers me when people don't try. And I can only imagine what that's like if you are already steeped in a professional culture that is not necessarily your own. Maybe an individual person doesn't mind what you call them, but I think that that's a good observation. I think it's important to at least try.
Thomas: I think maybe we've also done this to ourselves in terms of just setting that expectation that as Americans that we have the dominance. It's like, to heck with all the other cultures. I think there is a certain amount of expectation that it's just going to happen on their part, but I still feel like there's value in differentiating yourself at least, or at least being the one representative of the company who is saying, hey, I hear, or I try to hear who you are and echo that back to you.
Aisha: Yeah, for sure. You mentioned having this pool of multiple programming languages allows you to see things differently and pull from that much larger pool of potential solutions or ways of thinking about things, and you find that in spoken languages as well. And I think that that's really interesting. As I learn new languages, mostly programming, because, like I said, my Brazilian Portuguese is not great. I'm excited to have a teammate now who is from Brazil and has promised that I can hang out with her and her whole Brazilian stream team.
Thomas: Oh, that's cool.
Aisha: [Laughs] But I found as I learned new programming languages slowly but surely that it definitely does open things up for me in the same way that teaching does. I find that when I'm teaching, and students ask me questions, those questions that I either had never run into or maybe have forgotten because it's been so long since I first did this thing, those questions and answering those questions helps me to really solidify my knowledge and to be more flexible in the way that I think about things.
Thomas: I actually find that in my helping the kids out with their homework, just kind of refreshing some of that math stuff. I went through calculus and everything, but some of the early stuff in algebra just got watered down by all the stuff that came after it and just remembering, oh yeah, that's how that works. Okay, this is cool. And I think they kind of end up rolling their eyes at me at the end of it because they're like, "Okay, you're way more fascinated by it than I am." [Laughter]
Aisha: You also mentioned your music directing just briefly; I heard it, though. And I'm interested to know because I find that a lot of programmers in my experience are also musicians.
Thomas: I think one of the cool things about music for me is it is very analog in its scale of expertise. It's very much like practicing shooting a basket or something; the more repetition, the more you inch up that expertise scale. And so there's a fairly broad spectrum. You learn how to challenge yourself, and you learn to self-discipline because unless you get to a certain level, which I have had some benefit of being able to do that, but unless you get it to a certain level, you really are only doing it for yourself. And so it's really being able to improve yourself for yourself and not for anyone else. So there's that little bit of discipline, and that feeds into all these other pursuits that potentially do have an impact directly on others. For me, I was fortunate enough to be able to be accomplished enough to play for accompanying musicals and in church services. And then got from there to be able to actually perform or stand up in front of people or direct people.
I actually went through Toastmasters too. It's one of those where you get to do professional development of yourself. This is a side thing. It's no less scary, but it's like everybody -- You can even never go there again if you truly messed up. [Laughs] You can't just leave your job, necessarily, if you completely mess up how you do it. So you get that opportunity to gain your confidence and build it. I actually worked with -- one of my former piano teachers was a mentor for a while. And so I got to be his assistant for a while. Then I actually went off on my own after a while and did my own thing. So it was being able to get out in front of people and at least some level of public speaking, public presentation. I still consider public speaking a completely different level of difficulty than maybe singing in front of people or playing in front of people, but at least you kind of get that experience with putting yourself out there and exposing yourself, and at least you can water down the shock of being in front of people. And then we had a music director move on, and the priest there asked me to step in for a short period of time, which ended up being 11 months, and lead the choir and lead the music there for 11 months. So I got to also practice leadership skills with people that were very strongly opinionated about the direction the whole thing should go.
Aisha: Oh, yeah. I can imagine.
Thomas: It was a good experience. And yet again, it was not something in itself that I had to carry forward. Eventually, I was no longer in charge, and that was a relief because that was just a little bit too much on top of a day job, but it gives you that extra practice exposing yourself to situations and dealing with conflicts every once in a while having to put your foot down and without having the risk of okay if you don't put your foot down well enough, it's going to impact the next two years of your working life. You get that practice out in a little bit safer context, I think.
Aisha: Right now, you are leading a team.
Aisha: How did you make that transition from an IC to a role as leadership?
Thomas: I would say that I tried to start it back when I was at Yum! Brands. And I think I plateaued as team lead thought leader, whatever senior technical person, but ended up with nowhere to go with that. So I lateraled over to Appriss as a software engineer and got to have some fun building things again when I was doing a lot less of that. And it was a very gradual process, really. I just started accumulating more and more responsibility. I ended up being more of the go-to person for things. Then alongside that, it was like, "Hey coach, put me in the game type of situation. [Laughter] It was like, hey, I want to lead this part of the team, and I want to be in charge of some things. I opened up my mouth, and there it goes.
But then probably, I'd say about two and a half years ago, it was made official that last step before you're officially made the responsibility manager, you can pretend to sweep things under the rug, although it's not as unofficial as you think it is. You still have some responsibility there. It's just you're not tagged with it. But it was weird when you finally started having some responsibility over direction and officially going through those processes and being you are the person in charge of providing people the feedback. I never really considered how difficult it was to be on the hook for that prior to officially becoming -- I tried to work through things. But I never was officially on the hook for hey, let's redirect, hey, we need to tweak how you do things. Some days I don't feel like I have the arsenal to deliver that message some days, I feel like I'm completely on top of it. Actually, my manager, prior to that, said, "Congratulations, it's not a promotion; it's a new job." I've heard various talks at every big conf emphasizing you are no longer a senior developer; you're a junior manager.
So I think with everything, it's about awareness and trying to be as aware as possible and being as transparent as possible. And it's still teamwork; it’s just the team structure is different. And so your team members are part of your team, your peers are part of your team, your manager is part of your team, and just understanding the pathways that are required to make things work. And I think one thing that Agile has really helped instill -- everything is under Agile. It's a cycle. You constantly have to go see how things work, acknowledge when they didn't, come back, rebuild better. There's always a cycle of improvement. And I think truly you're never really done improving. There's always something you can learn.
Aisha: Totally agreed. Awesome. Thank you so, so much for being here, Thomas. I really appreciate it. And I really, really enjoyed our conversation. Is there anything that you'd like to plug? We'd also love to know where folks can reach out to you.
Thomas: I'm a manager of a software team, so inevitably I'm probably going to be hiring at some point in the future. So you can reach out to me on LinkedIn. I'm under twilliampowell.
Aisha: All right. Thank you so much for tuning into the Polyglot podcast. We'll see you next week.
Jonan Scheffler: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. Right now, we're running a hackathon in partnership with dev.to called Hack the Planet, where we're giving away $20,000 in cash prizes along with many other fabulous gifts simply for participating. We would love to have you join us. You'll also find news there shortly of FutureStack, our upcoming conference here at New Relic. The call for papers for FutureStack is still open until February 19th. I encourage you to stop by and submit a proposal. We would love to have you join us. We'll see you next week.