Bonded by Love for Product
Every single person at Good Eggs is here because s/he is passionate about reinventing our food system.
At Good Eggs, we consider it a disqualifier if a candidate does not value our mission to grow and sustain local food systems. If you’re solely interested in Good Eggs because you’re stoked to work with Node.js, it’s not going to work out. But if you’re reading this, chances are you share our love for fresh foods and understand how powerful they are in bringing people together. We work alongside local farmers and foodmakers to support their social and environmental goals, while giving busy people access to local, organic, and sustainable groceries. We want to improve every step in the system: from the field to the warehouse to your kitchen table. We’re delivering more money into the pockets of family farmers, helping local producers scale, and insisting on transparency and respect across the board, in an industry rife with labor issues. If this speaks to you, let us know.
Uses Agile Methodologies
We are tackling complex problems with a lean team, so we had to be thoughtful in establishing our development processes.
Our engineering practices have evolved and matured over the years. Early on, we too felt the allure of meteoric growth as a Silicon Valley startup, but ultimately ended up choosing common sense in the land of unicorns. Today, each engineering team is part of the business unit it serves so lines of accountability are clear. We follow XP-style agile software development practices including pair programming, shared code ownership, and a single queue of work. We hold regular retrospectives to ensure that we are talking not only about the work we are doing but also about how to work smarter. We practice regular 1:1s and provide coaching on giving and receiving feedback so that peers can more easily learn from each other.
We also seek to minimize dependencies among teams. Our decision to align engineering teams with business units leverages Conway’s Law to produce software system boundaries that match team accountability. Our use of microservices gives us additional flexibility in defining those boundaries and in transferring accountability while maintaining clear software system boundaries. You can read more about why we choose to work in small teams and how our engineering practices support smaller teams here.
Eats Lunch Together
We come together every day to eat locally-sourced lunches, prepared by our onsite chefs.
We are living proof that food brings people together. Our team lunches are a special part of everyone’s day at Good Eggs. Made with local ingredients and prepared with love by our team of chefs, lunch allows us to connect with the people who grow, deliver, and cook the food on our plates, as well as the people we break bread with. Our talented chefs sometimes do demonstrations or workshops so that employees can bring amazing food experiences home to their loved ones.
Everyone has different needs, so we make sure to give you the freedom to handle your obligations.
A typical day on our team means working productively between 9am and 6pm, with a lunch break, and then going home. We recognize that work/life balance isn’t the same for everyone, so we give you the flexibility and freedom to define what it means for you. People can work from home and work remotely for short periods of time. When it comes to being on-call, we do two-week rotations. Product teams are responsible for their applications in production. We hold regular triage review meetings to assess page volume and schedule and make it a priority to keep page volume low.
Our office is co-located with our fulfillment center, so we’re able to iterate quickly with the teams that use our software every day to get local food to local customers.
We work quickly because the faster we can get a solution in someone’s hands, the faster we can learn how to make it better. You should be able to build a feature, ship it on a Tuesday, and then talk your user to get feedback and make updates before Thursday. We make this possible by having our engineering team work out of the foodhub: the place where farmers show up twice a week, selling locally, organically grown produce and where our operations team sort through produce, pack bags, and deliver food to our waiting customers. While it might not be the quietest work space, it promotes continuous deployment and provides task significance, the perception that one’s job has a positive impact on other people.
Part of maturing as an engineer is learning how to be successful when there is more ambiguity.
As an engineer at Good Eggs, you’ll never work alone and always work on a small team. Project identification is a process that is led by your team lead or product manager and includes the input of the entire team. At that point, you’ll be expected to own your work end-to-end. Taking ownership is not simply doing a job or working on a project. It means making it your mission to see it through.
Fosters Psychological Safety
You find the right answers by asking the right questions.
When things go wrong, we use root cause analysis using the 5 Whys to peel away layers of symptoms and pinpoint the underlying cause of the problem. This process allows us to identify 5 corrective actions and make improvements without ever making blame a part of the conversation. Our bi-weekly team retrospectives are also a place for us to analyze issues and plan next steps without blame. Creating a workplace where we all feel safe, heard, and included goes beyond the engineering team, and is why Good Eggs is a startup where every single employee has equity. We bring our whole selves to work and truly celebrate the diverse individuals at our company.
High Quality Code Base
Quality over speed, but it’s a balance.
We don’t have QA and instead rely on comprehensive testing including unit and integration tests. Each team supports their own applications in production, so there is high incentive to ship a stable, quality product. We use software linters to enforce a share style and, for the most part, our software development manifesto has held true over the years. Our core platform is a collection of highly available microservices built with Node.js, ReactJS and ES2017 backed by MongoDB, RabbitMQ and Redis. In the future we plan to expand into new domains including iOS application development and software that runs on embedded devices in our hub (IoT).