Our Software Engineering Values
At Glowforge, we believe that communicating with kindness and transparency with potential future colleagues is vital to hiring amazing people. We document our health care plan, our diversity referral bonus, and our unusual way of doing job offers on our careers page so that candidates have as much information as possible.
In that same spirit, this article is devoted to a detailed look at the experience of being a software engineer at Glowforge. In other words, what we value on the engineering team, and how we put those values into practice. Along the way, I’ve shared quotes from a number of folks, both on the engineering team and from our coworkers throughout the company so that you can hear multiple perspectives.
See also part 2, How We Hire Software Engineers At Glowforge for lots of detail about our interview process, and the thinking behind it.
COVID-19 Update – June 2020
I’m incredibly grateful that Glowforge is still thriving during the COVID crisis. I know of so many startups that have suffered enormous setbacks and have had to lay off large numbers of people. We’re fortunate that more people every day see the value of having a Glowforge at home, whether it is for a craft or hobby, teaching their kids, or starting a small business.
I’ve also been delighted at how effectively we transitioned to working from home, even as we are all thrown into worry for ourselves, families, friends, and the world.
Of course, this kind of collaboration has been relatively natural for the software team. We are all pretty accustomed to the tools of remote work. While we miss being together in person, we haven’t missed a beat in productivity or communication. Because every employee has access to a Glowforge in their home, we can continue to use and test our product. We’re more flexible on our common working hours to allow for the wide variety of family needs, and we’ve stepped up communication with additional Slack standups and weekly team goal pages.
It has been inspiring to see how our colleagues in other departments have adapted to these circumstances. Even teams that rely on specialized equipment and labs have figured out how to continue to take care of each other and our customers.
I’m convinced that a huge reason things are going well is that we have a culture of connection. That sense of knowing each other as whole people, not just coworkers, has helped us operate with empathy for each other in these strange times, and a strong sense of purpose. We know that our work means so much to each other’s livelihoods, to our customers, and – through projects like Ear Savers – the wider world.
We continue to hire during the pandemic. It has been cool to see that we’re able – through the magic of Slack, Google Meet, etc. – to bring new people into the company, and quickly feel like we’ve been working together for years.
Why Software Matters
Software is the secret sauce that transforms an industrial factory tool into a magical box that gives you creative superpowers. A person with no experience with lasers and only the most basic computer skills can be printing their own designs in minutes. It is our software that abstracts away details like controlling motors, fans, and the laser itself, monitoring sensors for reliability, accounting for tiny differences in calibration between each Glowforge’s laser and cameras, preparing designs for cutting and planning optimal motion sequences, and applying advanced computer vision techniques for precision focus and alignment.
From the very start, we thought of our product as “software delivered via hardware”, and that’s why we invest so much in making our software outstanding.
Open The Pod Bay Door, Hal
The software team is currently 19 engineers, which we’ve structured into small, flexible teams that we call pods. The idea of a pod is that it includes everyone needed to ship a project with as few external dependencies as possible, so they can be laser-focused on developing and delivering results for our customers and our company.
(I’m sorry about the laser-focused pun in the preceding paragraph. But not that sorry, because sadly puns seem to be an excruciating part of our engineering culture.)
Any given pod might include some combination of firmware, cloud, frontend, computer vision, or other specialized skills. A pod always has a product manager and tech lead, and often has an engineering manager as well. Also, the pod may have stakeholders from other teams such as Growth, Finance, Hardware, or Customer Success.
A word about those product managers. At Glowforge, the Software and Product teams have a special relationship. Product is ultimately responsible for deciding what we build, integrating inputs from engineering prototypes, business models, market research, customer feedback, usage data, suggestions from other teams, and more. Engineering is ultimately responsible for deciding how we build it. These decisions happen through robust, iterative conversations that shape everyone’s thinking along all of the dimensions of features, quality, and time.
Each pod has its OKRs, standups, weekly sprints with clear goals, bi-weekly blame-free retrospectives. We also have monthly all-software meetings, where we often do video visits with Glowforge customers and talk about engineering methodologies, new tools, and new learnings.
We re-evaluate the layout of our pods every quarter to make sure they align with the company objectives, and we sometimes add, remove, or adjust them to focus on the most important challenges we’re facing. Examples of areas that a pod might work on include our website and e-commerce, Glowforge Print and Glowforge Premium, Pro Passthrough, Ear Savers, our Google Cloud Platform and Kubernetes infrastructure, or our BigQuery data warehouse.
Stack It Up…
We don’t base our hiring decisions on an engineer’s prior experience with our exact stack. We know that you can learn new languages and libraries. That said, many engineers we talk to want to know what we use, so here are some of the highlights:
- The firmware on the machine itself is written in C++ and runs on a Linux kernel.
- Our cloud backend is a hub-and-spokes architecture, with Ruby on Rails as the hub. The spokes are nearly all stateless microservices, and are a heterogeneous mix of Rails, Python, Rust, and Node.
- We use Google Cloud Platform for all of our cloud services. We take advantage of many of their specialized offerings including GPUs, storage tiers, BigQuery, Pub/Sub, and more.
- We use Google Kubernetes Engine and Terraform to manage our infrastructure, as well as some recent forays into Google Cloud Functions
- Glowforge.com and the Glowforge Print web app are developed using React, NextJS, and ES6 (and many dozens of NPM modules).
- Our store is built on Shopify Plus and connects to Netsuite, Zendesk, and Klaviyo.
- We use Segment to route and integrate data across all of our platforms
- We use LaunchDarkly and Optimizely for internal and VIP testing, A/B tests, and controlling the delivery of new features.
We use modern software engineering practices, in a way that focuses on being pragmatic, not dogmatic. That includes CI/CD to staging with weekly production deploys, extensive use of submit-blocking linters, kind and thorough code reviews for all merges to master, mandatory unit tests, and increasingly, automated integration tests, and a careful approach to security.
We score an 11 out of 12 on the famous Joel Test. The one we miss is very intentional: we don’t always fix bugs before writing new code because we have a purposeful strategy of letting our customers tell us which bugs matter and which don’t. Our intuition is frequently wrong!
… And Wrap It Up
Thank you for taking the time to learn more about what it is like to be a software engineer at Glowforge. We think it is a great place to have a massive impact, work with wonderful teammates, empower people to make precisely the things they want or need in their own homes or start businesses, and build an important and valuable company together. If you join us, you’ll have the opportunity to do some of the defining work of your career, and have a hell of a lot of fun in the process. If that sounds good, then we are excited to talk with you!
See also part 2, How We Hire Software Engineers At Glowforge.