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 Mike Marquez.
In this interview, we spoke to CircleCI Software Engineer, Jacque Garcia. We hope you enjoy it.
What’s your role and how long have you worked in engineering?
I’m a software engineer on the X Team. I’ve been with the X Team for more than half the year, but I’ve been at CircleCI for almost a year and a half now.
What does having confidence as an engineer mean to you?
I think about it in a few different ways. One is confidence in my code. So, how confident am I that what I’m building is doing what it’s intended to do? And another is confidence as an engineer. When you’re speaking about certain projects or collaborating with other teams, there’s a level of confidence that comes from understanding what the team’s purpose is right now and what we’re working on.
What are you able to do when you’re confident in the code you’re writing?
The more confident I am in my code, the better I can help other engineers understand what my code is doing. When I have a lot of confidence in what I’m working on, I can ask lots of questions and also answer lots of questions, and have a conversation about what things can be improved, what things are going well, when things aren’t going well, etc.
The more confident I am in my code, the better I can help other engineers understand what my code is doing.
What builds your confidence in your code?
Really understanding the scope of what I’m working on helps me build confidence. If I know the scope of the feature I’m working on, then I understand the limitations that I am working under. And I also understand all the different components that come with it.
If I’m working on a new feature, there are a lot of questions that come up. Do I know where the data is coming from? Do I understand how it will affect our users? Do I understand how it will affect other teams? Am I confident that the feature is working? So to answer those questions, I think it comes down to really thinking about a user’s journey, having good communication within your team and across other teams, and writing lots of tests.
How do you, as an engineer, put yourself in the shoes of the user?
One thing that helps me is thinking about all the different ways that I can use a feature, and really not going on autopilot. I think a lot of the times when you are creating something, you can end up testing it in a limited way. You’re just testing “oh, does this work when I click it?” A user journey is more complicated. You have to ask things like “where could the user have come from to get to this place?” I think pretending like you don’t really understand how everything works is really helpful. It’s about empathizing with the user.
How has confidence changed for you throughout your career?
With time I’ve come to understand how to empathize with the user and how to gain confidence in my code through pairing with my coworkers and by learning from their experience.
The longer I spend in the industry, the more I’m learning about how to ask the right questions. And by right questions, I mean questions that will actually help me move forward with what I’m trying to work on. So, I think it’s a lot that goes into building confidence that isn’t necessarily just code.
The longer I spend in the industry, the more I’m learning about how to ask the right questions. And by right questions, I mean questions that will actually help me move forward with what I’m trying to work on.
How has tooling, or automation, changed your relationship to your confidence in code?
I think it’s just really allowed me to understand how you can cut down your time. I’ve learned that there are a lot of tools that can help you get your work done faster. And just trusting that those tools are there to work with me and help me solve some of the problems that I am dealing with.
How do you build confidence on your team? How can you trust the work your colleagues are doing?
Pair programming is probably the biggest contributor to helping my confidence. I think that there’s so much that we can learn from each other, and I think that pairing helps me do that. It’s not so much about, ‘oh, let me see the way that you code’, it’s more of understanding the way that you problem solve.
Pair programming is probably the biggest contributor to helping my confidence. I think that there’s so much that we can learn from each other… It’s [about] understanding the way that [someone else] problem solve[s].
Pairing is really helpful in learning best practices for solving a problem and best practices for testing and writing code. Programming allowed me to get a full picture of what it means to be an engineer. And that has definitely been really powerful and impactful in my career. It has allowed me to grow the fastest.
How does pair programming work on your team?
I think it’s changed over time. I would say when I first started, I was very intentional about trying to pair with as many different people as I could, to get a lot of perspectives. As I got a little bit more confident, I started to pair with whoever was available at the time. What we mean by pairing is, that if I’m working on a feature, I put out an open invitation on Slack and say, “hey, does anybody want to work on this feature with me?” And we can take turns on who’s driving and who’s talking.
One of my coworkers likes to practice TDD (test driven development) as much as possible. So when we pair, we’ll practice that: “hey, I’ll write the first test and then you write the implementation,” and then we switch back and forth. It can be pretty active, in terms of really making sure you’re switching between each other. Other times pairing can be more relaxed, where you’re talking through the problem together and not really keeping track of who’s coding and who’s talking.
How do you move forward when you’re stuck or not sure you can achieve the result you’re hoping for?
Pair programming is definitely really useful there too. It’s easy to want to solve something on your own, and just take hours and hours really trying to figure it out. When it could’ve been easily addressed by just asking someone, “hey, have you encountered this problem?”
Before pairing, I try to really understand what the problem is. Of course, there’s times where you just have no clue. And that’s fair, as well. I think that’s also part of gaining confidence. You gain confidence by asking questions, and not being afraid to ask for help.
What were some pivotal experiences that changed or improved your confidence level as an engineer?
Being in sports really helped me build confidence in my career - not being afraid to ask questions, not being afraid to be wrong, not being afraid to try something new and break code. In college I did competitive boxing, and it really helped me get out of my shell and become more confident in myself. It’s really about courage. That’s key - having the courage to do something. You don’t have to be super confident in yourself, as long as you have courage.
It’s really about courage. That’s key - having the courage to do something. You don’t have to be super confident in yourself, as long as you have courage.
Being in sports also taught me how to request feedback early and really pay attention to feedback. When you’re being coached by someone and you can take that feedback and apply it to your work, it makes such a huge difference.
The support from my coworkers has also been key for my growth as a software engineer. They have been really encouraging and excellent at providing a welcoming space where the attitude is “hey, it’s okay if you don’t know what the problem is, I’m totally happy to help you out.” That’s really important. I am really lucky to be part of a team that provides that space for me to feel like I can explore, learn, and make mistakes.
I am really lucky to be part of a team that provides that space for me to feel like I can explore, learn, and make mistakes.
Do you ever get imposter syndrome? How do you deal with it?
Oh, I feel it all the time. I’ve never been able to get rid of that feeling. I’ve noticed that everyone seems to go through it, no matter what stage they are in their careers, no matter how senior they are.
I’ve noticed that everyone seems to go through [imposter syndrome], no matter what stage they are in their careers, no matter how senior they are.
What has helped me the most, again, is just having that really encouraging team, but also reminding myself that I’m never going to be able to be perfect, and there’s always going to be a time when I’m not going to have the answers to everything.
I’m never going to be able to be perfect, and there’s always going to be a time when I’m not going to have the answers to everything.
And also making note of the times where I was able to figure something out. Our brains already do a really good job of remembering the bad things. So being intentional about making note of the small wins can help in dealing with imposter syndrome and remembering that, yeah, there are times when you’re not going to know what you’re doing, but then sometimes you will. And that’s just how it’s going to go.
Our brains already do a really good job of remembering the bad things. So being intentional about making note of the small wins can help in dealing with imposter syndrome
What advice would you give to your younger self?
I would say the biggest thing, and I remind myself of this every day still, don’t let the fear of making a mistake or getting something wrong stop you from trying. Just try no matter what. It doesn’t matter if you succeed, it doesn’t matter if you fail, but you to try. I try to redefine success as, “did I try my best?” And if I did, then I succeeded, and if I didn’t, then I know that I failed myself.
I try to redefine success as, “did I try my best?” And if I did, then I succeeded, and if I didn’t, then I know that I failed myself.
And also just stay curious. That mindset helps me face challenges, especially when what I am facing is unfamiliar - it’s about not letting that feeling of not knowing stop me. Just approach problems in a more curious way, “I’m really interested in this. I don’t know what the solution is, but I’m really curious to figure out what’s going on here.” That really helps me frame problems differently.
approach problems in a more curious way, “I’m really interested in this. I don’t know what the solution is, but I’m really curious to figure out what’s going on here.”