An inside look into Simpo's engineering culture

Written by 
Erez Asulin

Ultimately, it’s about building trustful relationships, empowering and giving individuals the space and time to juggle it all.

While Simpo is a no-code platform, a lot of actual code goes into making it work.

As we've been extensively hiring in the past couple of months (Simpo is growing!), we've gotten a lot of questions from folks interviewing with us about our engineering culture.

So we figured -- hey, why not answer that in a blog post? :)

Collaboration meets impact

Simpo's engineering culture is highly collaborative, and highly impactful. We try to give each engineer (or 2, or 3 at most) ownership of a full product feature from A-Z, so nobody ever feels like they're a "cog in the machine".

Each Thursday we all get together to plan what we're going to be working on for the following week. That planning meeting is a place to show-and-tell, get advice, strategize, and problem-solve together. Of course, product management joins as well.

The intention is not just to tactically plan what we're going to build, but also to give room for people to ask questions and always learn new things.

Planning releases

What's going to make it to the following release varies - some things get higher priority if there are pressing customer requests that need quick solutions, while others are focused on performance tuning and infrastructure. It’s never dull. 

We like to think we’re organized and every task is tracked in Jira. However, given the sometimes unpredictable nature of engineering, we purposely avoid planned work for every single waking hour -- things do come up that require more attention than originally anticipated, so we plan for the unplanned.

Sharing the knowledge

On Tuesdays, we have a tech-talk - the engineering team meets with a topic-driven agenda that changes depending on who volunteers to present.

It’s a great way to educate each other on different topics, and it’s also an opportunity to learn more about parts of the stack you wouldn't necessarily touch daily.

For example, if most of your work is on the business logic, this is a great opportunity to learn about how the infrastructure works and to further your knowledge.


A modern tech-stack

Business Logic

On the front-end, we write primarily in React + Redux, while on the backend, most of our code is written in NodeJS.

Simpo's codebase is quite extensive, and we break down logical groups of code into individual repos.

However, there's some code sharing, too. For example, to share components across projects, we have a dedicated React Components repository that is consumed by all of the other ones.

Data Flow

Our application database is MongoDB, and we run Redis as a cache layer.

To write vast amounts of data but keep our everything ticking, we use Amazon's SQS service to ensure we're not creating a bajillion connections for each end-user that sees Simpo (we've been there – ask us about it).

Some heavier data processing happens in Slowflake, and we use Airflow to move data to and from it and our application database.

Testing

We write most of our tests in Cypress, and have set up Storybook to show us components in different states, so we can easily track down UI errors.

Cloud

Simpo runs on AWS. We deploy our fleet of Dockers to Kubernetes. More on the actual deployment process under the CI/CD title, below.

Privacy and Security

Simpo is GDPR compliant, as well as SOC2, Type II compliant -- that's an important factor for our large, global customers. 

CI/CD

We follow a CI/CD approach when deploying and right now we’re using Jenkins to stay on top of our release pipeline. Additionally, we’re implementing feature flags which we’ve built into the release process in order to stay on top of what is turned on for which customer.

Today, each team member works on one project at a time, with a limited amount of additional tasks outside of that core unit of work. Context switching is one of the most detrimental things to productivity, so we try to limit that as much as possible.

What helps is that our team is quite seasoned – every engineer truly full stack. That said, some folks have a preference for either front or back, and we tend to assign projects accordingly.


Always a retrospective

At the end of each project, Confluence is updated and then we step back and take time to write-up retro notes. Each team-member spends a couple of hours writing up what went well, what didn’t, key learnings and what they liked.

There’s always room to improve so we digest together as a team, taking the necessary time to ponder post-project. It's also a great opportunity to learn from each other and always raise the bar for the whole team.

Even with the pandemic, we stay on track

During the early part of the COVID pandemic, we gave the team choices, based on each individual's comfort level. A team member could work from home or come to the office.

For now, Zoom is our default, like most of the planet and we always try to face any communication challenges, head-on. Lately, we’ve followed guidelines and with everyone remote, we’ve stayed focused and continue to deliver. That said, we do have a physical office, and we can't wait to go back when it's safe to do so.


Asynchronous communication by default

Most engineering topics are addressed and solved via dedicated Slack channels. The goal is to keep communication lines open. 

That said, it's sometimes necessary to jump on Zoom meetings to work on a problem live / plan, but we try to limit how many meetings are required to avoid creating too much context switching.

Happy hours and fun times

We also have fun along the way with happy hours, fun trivia games, office equipment that supports a healthy work environment from home (and a work-from-home stipend during the pandemic), and food deliveries during Zoom social hours. It works pretty well and the team is grateful.

Company-wide we use the Donut round-robin tool to make sure everyone gets to socialize outside of just the engineering team. It’s super important to stay aligned and so taking the time to get to know each other on a personal level really helps in the long run. Besides, it's a good time :)


Keep engineers and go-to-market teams aligned

Simpo’s go-to-market (GTM) teams include product management, marketing, sales and customer success. It’s really important for all engineers to feel the impact of their work, and to have visibility into what makes customers tick. Knowing that a new feature makes a difference for a particular customer is something we all want to know.

Our project tasks come from both product and customer success and so we conduct weekly meetings to address open customer issues, outstanding tickets and any specific roadmap questions. It’s a two-way street and engineering brings questions. Sometimes we dive into logs if there’s something that needs an immediate answer. 


Everyone contributes

To support our company initiative of working closely with all departments at Simpo, most of the docs, specs and tasks across our organization are all held in Jira and Confluence. Our roadmap is documented there as well, and we believe everyone on the team can contribute to the future of Simpo’s product. As long as it aligns with the overall company mission and goals.

The voice of every engineer on our team is appreciated and heard, and we welcome feedback. The team has multiple opportunities to voice their view or opinion during project kick-off, 1:1 meetings or each Tuesday where we have the topic-driven agenda. 


Balancing work and life is important

Everyone is handling the pandemic in the best way possible and for our engineers with families or other personal commitments, we are flexible. If the work gets done late afternoon - evening, that’s ok. Not everyone can work a 9-5 schedule and we appreciate that, especially in this unusual time. 

We ask that everyone shows up for important meetings, but those are mostly conducted during that 9-5 window.

People-first - a culture that encourages learning 

We have worked hard to live up to our values and not just publish them on our website. We learned directly from our team that we all want feedback, to learn, and to advance our careers.

In order to create an environment where the team is excited to come to work each day, we are committed to creating opportunities for growth. 

We believe that self growth should be a constant. It all starts with a trust attitude and establishing that from day 1. To support the self-growth of our team, we provide the option to take part in additional courses or use the time to learn new skills, whether formally (like taking a course) or working alongside a colleague on something brand new.

Feedback

Influencing and shaping the culture at Simpo is something we all proactively work on.

When you're part of our team, we make sure your voice can be heard and it’s important to openly ask for feedback - not just from management, but from each other. Always learn and grow!


Our engineers do more than code

Yes, it’s true that as engineers, we spend the majority of our work day coding.

However, we believe that everyone needs to be heard, and are very happy to take in product-input directly from engineers, as well as other feedback that contributes to the company – and beyond.

Before the pandemic, our team would help the community and volunteer for several hours a month. We can't wait to get back to that when it is safe to do so again.


Ultimately, being part of the Simpo team is about building trustful relationships, empowering and giving individuals the space and time to learn and grow.

If you’re interested in joining our team, we’d love to chat! Check out our job description here.