In this series, we pulled aside folks from across our engineering department to talk about confidence. From the technical executives to folks on the ground in engineering, management and site reliability, we wanted to know what “confidence” meant to them, and how it had changed over the course of their careers. You can read the other five posts in the series from Rob Zuber, Michael Stahnke, Stig Brautaset, Glen Mailer, and Jacque Garcia.
In this interview, we spoke to CircleCI Senior Release Engineer, Mike Marquez. We hope you enjoy it.
How did you get into engineering?
My role right now is Release Engineer. When I first started, that’s not what I was doing. I started my career doing IT help desk work. That was in 2007. I did that for about five years and it wasn’t for me. I got to the point where I knew I wanted to do something more on the software side of things, more of a system administrator role. So I left that job and then got another job for a company called Linode. So I worked there for about two and a half years. That’s what opened the door to getting the job at CircleCI.
I think that’s kind of where the confidence thing for me comes in. Because coming from an IT support position, you know, re-imaging laptops, I didn’t really work with code or interact with systems all that much in that role. So the transition from that role and then going into system administration role at CircleCI, working more with Linux and servers and all that kind of stuff. That was terrifying.
I think going through the interview process and everything like that, it’s an emotional cycle. I’m excited to apply for the job and have low expectations, and then I started going through the job process and my confidence just drops and drops and drops. It’s so stressful, you know, that you have to go through, you know, usually it’s like six or seven interviews you’ve got to go through. There’s code interviews and all that stuff involved. So it’s very taxing.
How do you deal with that?
For me personally, in those situations you’ve just got to buckle down and go through it, you know? I wish I had a great way to cope with it. I’m a person who’s prone to imposter syndrome. So step one is being aware that you’re that way. You know, that you’re going to have that negative self-talk going on and that you’ve got to try to manage it as best as you can. It’s not always a winning battle, but you’ve got to try. I went through that whole cycle getting the job at Linode and then I went through it extra bad with CircleCI. Because for me, it felt like the stakes were higher. My goal, once I had left my old company, was to work for a startup in Silicon Valley.
That was the goal that I had and I wanted so badly. So once the opportunity presented itself, It was just extra pressure– I didn’t want to mess it up. So it was kind of the same thing again, except amplified. But getting the job… that was one of the best days ever.
Did getting the job affect your confidence afterwards?
It’s funny. I think I still had the imposter syndrome to deal with, but now thinking that I had sneaked into the company. I really felt like that for a long time. Probably honestly for about two and a half years I felt like that, like, eventually they’re going to catch me and they’re going to kick me out, you know? So it was definitely a challenge.
What does having confidence as an engineer mean to you?
That’s a very good question. I think the way I would define it is that you feel like you have a path to solve a problem. When you’re just starting out in an engineering role, if someone comes up to you and asks you to do something, and you don’t have experience with that technology or those set of technologies, it’s really daunting. But over time, as you get more experience, you start getting more comfortable with the toolsets that you’re working with, whether a certain programming language or a certain kind of administration tool.
As I got more comfortable with the tooling, people started coming to me with issues, and I started feeling like, “If I don’t know the answer, I’ll be able to to find it.” And I think that was really the key. But it took a really long time.
At one point in my early CircleCI days, I had just transitioned teams, and that was the first time that I was working with Python for the first time. All my other prior experiences were using Linux and other tools, and they’re not like programming languages. So this is the first time that I had to build something from scratch, and that was really, really stressful. My confidence dropped so low that I actually was on a performance improvement plan for awhile.
And at that point I said, “You know, you have a decision to make: either you fall apart or you step up and you see this thing through.” And so I chose the latter path.
And it was funny because a lot of it turned out to be in my head. The second I just said, “You can do this; just go,” everything just started working out. I think I was out of that improvement plan within three weeks or something. So it was a good situation, but I needed that little shock to the system to say, “No, you can do this.”
How has tooling or automation changed your relationship to your code?
I think it has positively impacted me. There was a problem we were working on at one point with the server installation of our product. At that time, we didn’t have adequate testing around it at all. So we had to write a testing framework that would allow us to confidently release it to our customers. At that point in the early days, we were in a situation where we were just setting out our best guess as to what would work and not work, what would fix something or not fix something. And this would affect customer experience, so the stakes were high. That was one of the first problems I was tasked with solving when I started working with the product at CircleCI.
Once we started developing the automation pipeline and getting all that sorted out, it helped me increase my confidence that our releases were quality, and that in itself helps me sleep at night. My confidence in quality also helped my confidence in myself, in a lot of ways. Because then you know that you don’t have the stress and aggravation of having to worry about the quality of something. You can relax, and I think keeping stress levels down for me is directly correlated to my confidence.
I think there is also a correlation between the tools that you’ve worked on and your confidence. In this industry there’s just so many tools to learn. When I started, I had to learn about Terraform, then I had to learn about AWS and then had to learn about Replicated and then I had to learn about Python and then I had to learn a little bit more about code. There is just an always-increasing amount of things that you have to be comfortable and familiar with.
But a part of that is eventually you hit that point where you work with Terraform and then Kubernetes or Docker and you realize, “Oh, okay. So they just kind of borrowed some ideas from this thing.”
So now you automatically understand some of the other concepts. But that just comes with time and experience.
I think pairing can help confidence a lot too, depending on the type of learner that you are. I’m a very hands-on learner, so I can read something all day and all night and it’ll take me a lot longer to understand the concept than if you show it to me. I always take opportunities to pair whenever I can. I think it gives you the opportunity to gain that base level understanding of some concept that you might be struggling with.
What do you do when you’re not sure about how to proceed?
I bank on my team. Luckily I have a great team around me. If you’re lucky enough to have a team of people around you that just have all different perspectives, and all different experience levels, it’s good.
The release engineering team in particular is probably one of my favorites. Because I think we all have different skill sets, and it all works together in a way where you can lean on each other and work off one another to get things done.
I have one colleague on my team who knows everything about working within Linux systems and terminal. So if there’s every some weird quirky command, he’s the one that’s going to know it. So it’s always nice to have him look at my code because I know he’ll know that little shortcut or something to make it better.
But if there’s some higher-level concept I’m struggling with, I have someone else on my team I can lean on that has a lot of experience with systems. So I know I can go to him with questions and he’ll help me out. We have another teammate who’s the testing specialist. Having a good team is really, really important. That helps me build confidence.
Having a good code review process in place is super important. And if we’re talking at a higher level, having a great CI/CD pipeline is definitely going to help you. Because having confidence in your workflow, getting code out the door, and knowing that it’s good and safe and sound, is good for morale. It’s good to know that if you wrote some bad code that you have that safety net there that’s going to save you from yourself.
What advice would you give to your younger self?
I think if I could talk to myself, the thing I’d say is, “You are capable of far more things than you believe to be true right now.” I think that’s the biggest thing. I’ve accomplished more in my career today than I ever would have thought possible 10 years ago.
Anytime I work with younger engineers, that’s what I always try to let them know, that there are going to be times in your career where you’re questioning yourself or doubting yourself. And much in the same way that we have tools to deal with our technical problems, you need a tool set to work with your emotional problems. You have to have faith.