1 year at Buildkite

20 mins read

This post was originally wrote when I hit 4 month. I added some more to make it a one-year post.

I joined Buildkite a year ago. I get to work with the people I admired working with, on a developer-oriented product I personally interested. I’m proud to say after a year, joining Buildkite was definitely the best decisions I've made.

Numbers for the past year

I have authored 729 commits (19,484 additions and 11,315 deletions). 353 merged, 67 closed from 426 Pull Requests I made across the entire Buildkite organization. Three noticable user facing features plus many bugfixes and performance improvements, and internal documentations.

These numbers do not mean anything, but I am happy that I have contributed within my abilities.

What’s good?

Everyone gets a staff illustration at Buildkite! See more of our lovely illustrations on https://buildkite.com/about.

Everyone gets a staff illustration at Buildkite! See more of our lovely illustrations on https://buildkite.com/about.

Besides these, bear with me to share some things I learned in a longer than list items form, one paragraph or two. Some reflections for the past year. Feel free to skip things you’re not interested in.

Interesting Humans

My colleagues are living their life well. Their body are fit. In good shape and good spirit. Many people do activities: yoga, running, exercise, swimming, bouldering, climbing if not daily then at least weekly. I am shameful about this not being able to do more.

Many tech companies, many people are talking about cars, buying houses, buying stocks, buying crypto or how to make more money, or latest tech gossips. People here are talking about music, books, movies, traveling, things they love and admire. I am sad to find this rare and refreshing.

Timezones

We are currently a distributed team of 30-something with everyone work remotely in Seattle, Vancouver, Perth, Sydney, Hobart, Adelaide, Kyoto, Oakland, Wellington, Berlin, and Melbourne.

Majority of folks are in Australia. We have people from Europe and west-coast America. Both parts of the world have 3+ hours overlap with Australia. We currently only have minor timezone issues (Majority is in Australia so some activities may not include everyone all the time). Meetings are recorded for people who cannot attend. Most of things and decisions happen asynchronously and will be available in written form.

38 yet Flexible

Thanks to Australia, legal workweek is 38 hours (yay for Australia!!).

But we do not really have set hours or tracking how many hours you work. It is only 2h less than the usual 40. But 3pm Friday and 5pm Friday is surprisingly a big difference. And if you have not having your day, it is totally fine to be off to refresh then come back.

It is really flexible to accommodate everyone’s priorities. Many coworkers have kids. Having kids while working 38h is still really difficult (I really admire who can have kids while do great work). Buildkite is really flexible allows everyone to take care of their family and still have a sustainable career.

Everyone works sensible hours. No one is putting extra work or anything. I’m not feeling the need to put in long hours to prove myself. We have two people since joined moved from 4 days a week to 5 days a week because work is not soul crashing like it used to be.

Work-life finally balanced.

Equally fair

We also have contractors. Some people are contractors because they chose to have a 3-day workweek or 4-day workweek. Being a contractor here is totally fine and I don‘t feel contractors being treated any differently compares to full-time employees. In some places you can sense those differences.

More importantly, your opinions are valued no matter you’re a full-time employee or contractor. Good ideas wins.

Onboarding

Well, the first four weeks were weird.

But I don’t need to spend money then expenses later during onboarding. This is great and very important1. I received a welcome box with all the things you expected (t-shirts, swags, etc). But this small photo book with everyone’s photos dedicated to me warms my heart. In this difficult time, this human touch was much appreciated.

welcome photo book <3

welcome photo book <3

For getting familiar with the codebase, I’m thankful to our tribe chief Keith Pitt that ran a Code Safari for me. And other engineers for answering my questions and chatting with me on how Buildkite works. Help and trust me to do things.

My buddy Eleanor is an excellent mentor. Help and guide me with so many things ❤️ (Are you reading this, hello 😊) I’ve video chatted with everyone in the company. People walked me through what they do.

We also have a "Continuous Onboarding" system which everyone can get familiar with different parts of our product, have chances to talk and listen to customers, make repetitive operations easier, and do hacks that make customers life easier.

Celebrating Achievements

Have a shout outs culture. At end of the all hands meeting or a dedicated place on Basecamp. Celebrating effort and achievement and all the good stuff. Celebrate people who do good work around you is important. Great work got recognized through our internal shout outs and wonderful writings. I am not good at receiving, but learning to say: Thank you!

I always believe in "If I do good work, I’ll get recognized eventually" model and that has not worked in many work places. But I think it is possible at Buildkite. I have seen many people thrive at Buildkite. We are not measuring everyone’s "impact". But what I have seen are people cheer for people and the 4 promotions in 4 months after I joined.

No Shallow Benefits

I learned all benefits are there for a purpose. We do not have any benefit that keeps you working more. Company is not optimized to get more out of you. Company is here to help us stay in the long run. Work hard, but sustainably. Benefits are there to help us live a healthier life. Read more about this at How Buildkite’s Values Drive Our Benefits written by G from the people team.

Healthier

Since joined Buildkite, I have slept more. I feel less stretched at work. From 4-5h sleep to 6.5h+ sleep. There was a period I am doing weekly yoga 2x with lovely coworkers (warrior 2 anyone?), then I moved on to something else. Got introduced to Oats milk. Growing love for plants at home. Buildkite constantly asks me to look after myself. We have generous self-care budget 😉 We have special days off for COVID, extra budget for working at home during COVID.

We have 30 days annual paid leave plus I got no ask for any holidays I take. I have found long weekend helps a lot too. I take 2 long weekends per month (either Friday off or Monday off). I only got friendly ask about my plans for holidays and never being question on taking any leave. Sick leave as well. Buildkite is a high trust organization. One of my favorite moments was everyone taking Monday off after I did:

Writings trump Chats

This is the first time I am using Basecamp for work. It is much better than Slack. Slack traumatized me and I think I finally starting to recover. Basecamp encourages more writings2. Everything on Basecamp is commentable and gets a full editor. Basecamp also has reasonable notification settings that reduce my stress greatly.

Basecamp works really good as a team communication tool. It is not "sync" by default. It does not make you sweat. You dont have to respond to a Ping (DM in Basecamp). There is no sense of urgency.

But we do have meetings.

Enjoyable Meetings

Meetings are 70% fun, 30% business 😅.

Product design catchup where I can participate and learn how things get designed. Weekly catchup is where all the fun is and talk about important things, 10% business. Weekly Engineering meetings we discuss how could we improve engineering-y things, then go improve those things or come up with solutions, collectively.

The virtual all-hands meeting for our Buildkite Anniversary was...phenomenal. It had llama farm tour 🦙, magic show3, and movie-quality videos in a company’s meeting! Have you heard of these 3 words when describing company all-hands?

Technical meetings with people who were here longer than me does not feel confrontational that I need to present them with solutions. Instead we collectively discuss the problem and arriving at possible solutions. Is to find a way to help Customer. No blames if you don’t know anything. Everyone tries to help someone else to get that shipped to Customer.

Some casual optional chats in the week as well.

Although meetings are enjoyable, we do not have too many meetings. Monday usually is a no meetings day!

What my calendar looks like in a week. Note I am not an management role.

What my calendar looks like in a week. Note I am not an management role.

But remote is lonely.

Facetime mitigates Lonely Remote

We have many facetime opportunities. We pair regularly. I think it may not be most productive, but facetime does let me feel less lonely and encouraging knowledge transfer. In this difficult time, facetime is great!

That being said I feel...

Virtually Connected

People write all sorts of things by check-in and messages (from Basecamp). I get to know more about people from their writings. Getting to know people deeply compared to I used to go to the office. You are not forced to share, but you’re more than welcome to read. My favorites are people talking about their favored YouTube channels, music they like, Glacier report, how to make paper planes fly far, and...Astrophotography.

Besides writings, we have many events that I felt even more connected compared to work at real office. For instance, Friday Quiz, Gin Tasting, Cooking, Yoga, Tim Tam Slam, Minecraft, et cetera.

This is the moment I felt I’m in.

This is the moment I felt I’m in.

Cooking

I felt I cook decent food. How wrong could I possibly be! There is a long-running check-in thread of people posting amazing food they made. As a person who loves food, I think I end up in the right place. And personally I firmly believe:

People who can cook great food, they will never be bad people!
——Juanito Fatas

Because the love into making something cant be fake.

Next I would like to talk about life as Engineers.

Development Environment

Once setup (1h), rarely has any issue. It is not dockerized development environment, but it is manageable. I use overmind to run everything like Nginx, puma, Sidekiq, etc.

Our app is a proud Monolith with organized pieces. Run the whole suite locally is 35 minutes. Test suite runs in 10 minutes on Buildkite with parallelizations. Deploy is very safe and stable. Running a single test’s feedback loop is snappy. Most of the codebase is manageable, easy to change, and organized. The codebase is full of playful ASC-II art. If you encounter a dragon in the codebase, you know it is a file requires more attention:

Here comes the dragon

Here comes the dragon

Development Work

We used to work on Shape Up projects in six-week cycles with two-week cool-down. Now we moved to a more flexible schedule than Shape Up because all of us still do Customer Support.

Default main branch is always deployable. Everyone can deploy. The CI/CD runs 12-15 minutes (Test 5-10 mins, Deploy 3-5 mins). The product engineering team is small, things move quickly. We ship frequently and regularly. In general we try not to do something that will wake us up in the night. We try not to do something that is risky on a bad timing. We feature flips on risky things.

Pull Request must have reviews to ship. Code Review is great. No one is nitpicking. People genuinely try to help other people to ship to, because our common goal is to solve customer problems. All reviews are like "Approved. This looks great and here are some sincere questions or concerns". No one will blindly merge things if they see concerns and usually act on the feedback / found out if the concerns are legit. As a result of this, out of 131 Pull Requests I‘ve opened in my first 4 months. 118 merged (90.1%), 13 closed (9.9%) so far 🎉

We also pair a lot. When async communication does not work or one of the person is not familiar with something. We pair. Knowledge transfer and higher quality. It is still very fun to pair for me.

Building Buildkite by Buildkite

Employees get a free Buildkite account for life. I have since been using it to run my personal projects. The code I write directly impacts Buildkite. Building X by X is a pattern leads to great software.

We are building and using Buildkite. Building the platform while using the platform has many byproducts like documentations are up-to-date, many things would be fixed because we are also using it.

Every Engineer on Support

We all do support in turns for a week. You really only need to focus on support for that week. Doing support can help to find recurring problems for customers. It is a learning engine! I had first Customer Support rotation in the 2nd month. It is my first time doing support, so it was not easy. Really built up my empathy towards customers and remind me I still don’t know almost anything. Reinforce what’s important for any company, your customers.

Blameless Incidents

Every Engineer take turns to be on-call on PagerDuty. If you got woke up in the night, someone will take your pager next day.

There were many incidents after I joined (coincident…?). During the incidents, I joined all the war room, to learn and see how to handle it. Not because I forced to be there. What I have seen are people are not pointing fingers during the incident. Everyone was trying to help each other to get this sorted out. Even still making jokes while things are on fire!

We are also try very hard to be transparent about incidents, this is an example postmortem.

Learning and Growing

I learned a lot reading internal messages, Pull Requests and look at how people are doing things. I also attended a training for 5 afternoons on PostgreSQL. People were all supportive during my time in training. Either writing more things down for me to pick up later or help cover my support tickets.

I am currently the worst musician. Learning every day, happily. Yet Buildkite is still small, I feel the people who is currently thriving are very close to me and I have so much to learn from them and I could be one of them one day.

No Competitions, No Politics

There are no competitions and politics unlike other workplaces I have worked for. No one is chasing promotions. The ideas are being challenged, not the people. Healthy debates about things, not about the people. It is not zero-sum. It is more like if someone is winning, then we all win.

Managers and 1:1s

I feel Manager at Buildkite is gem install active_support, that they work with you and support you. Removes the roadblocks for you on the way ahead. No micromanagement. I had 1:1 every week. My manager listens to me patiently. Understanding, sympathizing, and encouraging me, unblock me when I’m blocked. Even at our size, during managers transfer (because my first manager is now on baby leave), we have a proper transitioned meeting of 1:1:1.

I think we only missed 1:1 less than 3 times, because my manager needs to take care of kids or takes vacations. One on one are quality conversations and does not feel stressed at all.

I have massive self-doubt. I think my problem is something called Super-Impostor syndrome no one has heard before. I always try to hide it and keep it to myself. But that’s wrong and I finally learned to be vulnerable about how I’m doing. It is always not easy to share for me. After showing vulnerabilities. I feel safer. The relationship gets better. Not struggling alone.

Feedbacks In, Actions out

The company constantly asks for feedback. Many company does that. But often no actions come out. And those employers who pretend to care for you and do nothing is even worse than who never says they care. But at Buildkite, we provide feedback and we see concrete actions coming to address our situations.

I once been told: Don’t do things that is easy for the company. Do things for the people.

Together in the time of COVID

Company has given 14 more days for anyone who needs extra time to cope with the situations. Work hours are really flexible to help with school closed and no child care. Additional budget to get equipment needed to work better from home.

The entire company feels like a tribe, not a family, with a very good vibe. People are constantly showing vulnerabilities and support each other. I haven’t seen anyone got mad in 4 months. Especially in these difficult times, really feeling we are in this together.

Finally I want to talk about 3 feelings.

I feel safe

As a new workplace, I feel I belong here. As a learner, I feel I am learning. As a contributor, I feel I am contributing. I made a mistake once that took down production. I did not get blame. I could go do something first without thinking about consequences. During serious incident I can ask questions. Seeing people especially CEO & leadership shows vulnerability (simply hear them say I don’t know) also makes me feel safe.

I feel trusted

I feel muchly trusted. For material things, after 2 interviews, so many things company bought for me with no question asked. But material things every company with money can do. What increases trust more is transparency.

I can read almost everything in Basecamp.
I can see all of our metrics and revenue charts.
I can speak up for things without consequences.

I feel valued

My first day was a meeting with 2 people telling me how they already knew so much about me. They walk me through all the things at Buildkite. It is very comparable to real-world onboarding camp.

I was prepared to be a sort of freelancer that will likely be a contractor of Buildkite based in Japan and figured out health care, pension, and taxations by myself. But Buildkite has hired a professional global expansion company that removes all the overhead just for me.

After joined, I found this message that my lovely colleague Cath was preparing how to pronounce my name and other people were practicing too 😭

Cath practiced my real Chinese name <3 <3 <3

Cath practiced my real Chinese name <3 <3 <3

When a small thing happened, CEO reached out to me if there is anything he personally or the company can do to help me. Another founder also say we should do things easy for everyone, not for the ease of company! Buildkite is a People-first company :)

My Favourite Moments

Fin

So all in all. I love it, so much!

Buildkite puts people first. I feel lucky I am in this wonderful company and surrounding by wonderful mates. People are really really kind and supportive. Team is in very happy vibes. They treat me so well. Everyone treats everyone so well. I feel respected. I think this is the first time I’ve been treated this well. Now I feel I can actually acknowledge my feelings and have people support me.

Buildkite is still relatively small. We are doing interesting things and relatively sustainable. It is easy to get to know people. I feel I can do so much more with the product. I feel I can actually make significant progress.

Loving it!

Onwards

I only explored a bit of the Buildkite, a lot of them still covered by fog. I am looking forward to telling better jokes, stucking on difficult problems, hearing new puns, combating a dragon, attending our online offsite week, reading other people’s writings, experiencing people’s culture, cooking things together online (in real life later), saving an incident, making a big change, owning a big part of something, and continuing to explore everything else in the fog.

My map at Buildkite

My map at Buildkite

That was more words than I anticipated. Thanks for reading all the way to the end. For Buildkiters who are also reading this, thank you very much for being you and amazing human!

Cheers,
Juanito


If the above sounds good to you, we do have some rare openings at the moment. We are currently looking for new friends to join us.

Do you want to know more about anything? Happy to answer all of your questions if you’re thinking to apply, send me an email: juanito@hey.com. Happy to answer all your questions.

  • 0

    Everyone deserves to work comfortably, safely, and productively. Investing in good work equipment and environments is one way Buildkite invests to let everyone has a good home office so job is sustainable.

  • 1

    People team person has a purchasing card and bought everything I need for me. This is particularly useful for people at career transition points. A lot of companies miss this one and had their employees cover $1000-$5000 first (international business travel and accommodations). Expense them 60-90 days later is not good. Company should do this at Onboarding stage is very important, because the candidate may not be in good financial situations. They also have not had success in your payment timeline yet.

  • 2

    Although Basecamp’s text editor should have better support of messages with code. And multi-line sentences should not turn into quote...

  • 3

    The llama named Ruby. The magic show was done with video and card tricks that tell a great story connected everyone in the company...Very thoughtful. Really really good.