Andrew Brown joined Atom Computing in 2022 and currently works as the Software Engineering Manager. He earned bachelor’s degrees in mathematics and computer science from Swarthmore College in Pennsylvania.
He started his career at Silicon Graphics, a high-performance computer manufacturer, where he worked for more than a decade in the computer graphics hardware industry, before retooling as a Web Software Engineer at extreme-programming (XP) practitioner Pivotal Labs and then working at various startups in the San Francisco Bay Area (LaunchDarkly, Nextdoor, Mixpanel).
In his spare time, he enjoys cycling, running, and walking his dog around the Oakland/Berkeley hills with his wife, Barbara.
Tell us about your role as the Software Engineering Manager at Atom Computing. What does this job entail?
At Atom Computing, we have a few teams of software engineers and I lead one of them. My team is currently split evenly across our Berkeley, California and Boulder, Colorado offices. I started as an individual contributor at Atom Computing, focusing primarily on building a greenfield customer-facing API. I had prior management experience, and after a leadership change, I accepted the opportunity to lead the team. Since then, my number one priority has been to ensure we have large, capable team to manage and iterate on all the services for which we are responsible.
My goal is to empower my team and delegate as much work, technical decision-making, and leadership opportunities as possible. I serve as a moderator for discussions, and when necessary, an arbiter. I communicate regularly with others groups at Atom Computing to learn about upcoming projects, establish their relative priorities, assess the resources we'll need to complete them, and evolve our processes to plan and execute more efficiently.
I do write code – and I love doing it – but when I do, I try to stay out of the critical path. Many of the tickets I pick up involve upgrading and adding new code linting tools and keeping our CI infrastructure humming along. I care a lot about developer productivity. My last employer was in the developer tools space, and I also maintain and contribute to several open-source static code analysis tools. My experience has led me to introduce several tools to the team that I believe allow us to communicate well while focusing on our work, and to reduce the duration of feedback cycles as we iterate on code.
What is the role of a software engineering team at a quantum computing hardware company? What projects are you and your team tackling?
The software team has quite a few responsibilities at Atom Computing. There are several services and software packages whose maintenance is purely the responsibility of the software team. These include some customer-facing APIs, Software Development Kits (SDKs) that talk to those APIs, and internal APIs that schedule jobs on our quantum hardware. As our quantum computing hardware evolves, new software is constantly needed to make new features available to customers and partners.
My team also owns portions of the tool chain that compiles quantum programs for execution on our specific hardware, and we have built and maintained simulation services that allow our users to experience the ergonomics of working with our system without consuming precious quantum hardware cycles. For our internal users, we have built dashboards and other tooling that allow users to observe and control critical measurements and parameters that affect the behavior of our quantum computing hardware.
Finally, we practice "dev ops" at Atom Computing, meaning that we don't have a systems team that will maintain infrastructure for us, so wherever we can, we manage infrastructure in code using tools such as Terraform and Ansible.
Software is the lingua franca of everything we do at Atom Computing, but not all the software in our codebase is written by software engineers. It turns out that physicists also write software; this is how they describe the experiments they run on our systems, and nobody else is expected to write it for them. One of our other jobs is to help guide these physicist-coders toward the best practices in software engineering to ensure that the systems we build are performant, maintainable, and extensible. We do this by trying to get involved early in projects, holding training and ride-along sessions, reviewing code, and adding guardrails such as linters and proper automated checks.
How is this role different than other software engineering positions you’ve held?
Much of the work I do is more for internal customers than in previous roles. At this point in the company's journey, our success is driven by how fast we can advance our technology. Our physicists use the software we write to run experiments and analyze the results to help determine what their next experiment should be. While the work of building APIs here is similar to many other software companies, the priority placed on optimizing certain workflows, be them human- or computer-driven, stands out. If we do our job well, by minimizing turn-around times and automating away tedious tasks, we can advance this exciting technology much faster.
Why did you join Atom Computing? What excites you most about working here?
Toward the start of my career, I spent a decade working as a graphics chip designer at AMD. The opportunity to work again at a very technology-focused company drew me to Atom Computing. Throughout my life, I've enjoyed being surrounded by people with a more diverse set of backgrounds, and spending time around scientists – rather than just software engineers – fit that bill (even though I don't know what they're saying all the time). With so much of the staff having come from academia, Atom Computing has a very different vibe than I found at fast-growing San Francisco Bay Area software startups, where sales and marketing employees typically outnumber engineers by at least two to one.
There is a genuine thirst for knowledge among the staff at Atom, and for many of these employees working with this technology is a calling rather than just a job. Finally, it is satisfying to be at a company that is genuinely making scientific advances that could someday make the world a different place.
What advice do you have for people who want to work in quantum computing?
It's not all rocket-science. Quantum computing companies need engineers with all the same skills as at every other company. If you're good at software development, there's no reason you can't exercise those muscles and grow your career at a quantum computing company, working on fascinating, challenging projects in the company of some very interesting people.