Skip to content

Latest commit

 

History

History
183 lines (124 loc) · 9.23 KB

engineering-introduction.md

File metadata and controls

183 lines (124 loc) · 9.23 KB
title description
Engineering Team Introduction
A brief introduction

Welcome Logistics

Work hours

Depends on the person/where they are located! We try to schedule meetings at times that are amenable to people being remote (from Amsterdam to Seattle on the engineering team), so they'll usually happen in the middle of the day EST.

Ask your mentor/manager what their general work hours are. Artsy has no policy around this, so use your judgment and be open with your team about when you expect to be available.

Vacation

Artsy has an open vacation policy. This doesn't mean "don't take vacation." Please take time off. Most people take off for bank holidays.

Join the Design/Product OOO calendar and use that to set when you know you'll be out of the office or unavailable.

Chat

Most of our day-to-day business is conducted in Slack. Teams, offices, and common concerns frequently have their own channels. For more information on our usage of Slack, see /culture/slack.md.

Events

See the events list for descriptions of our recurring, engineering-wide events. Look at the Engineering - Open Meetings calendar to see when they are scheduled and feel free to add yourself to any (or just show up).

We have an engineering team-wide standup on Mondays at 12:00 p.m. Eastern where we:

  • Share any team updates
  • Mention significant project milestones or new repositories
  • Ask for help if we're blocked or need input from a different team
  • Plan the week's knowledge share
  • Recognize and congratulate each other for significant accomplishments

The standup is fully documented here.

Getting Help

  • Slack: If you know what team could potentially help you, browse the channels in Slack to find the most relevant place to ask your question. If you aren't sure, all engineers are in #dev 🔒 and #dev-help🔒 is a good place for general questions.
  • Ask Your Neighbor: Everyone is friendly. Don't hesitate to reach out to the people around you for even the most basic of questions.
  • Check Atlas: Many company-wide resources and questions are addressed in atlas.artsy.net 🔒.

Who we are

Some team members have backgrounds in art, but of course not all. /resources/art.md has some useful links if you want to read more about the art world, or keep up with the latest news.

Open Source Culture + Projects

At Artsy, we <3 open source and encourage you to become part of the community. Here is a list of some open source technologies we currently use.

Read @dblock's blog post on Becoming Open Source by Default.

Read this article by the mobile team on the culture of open source at Artsy and their reasons behind open-sourcing our mobile app.

Orta also wrote a blog post on the mechanics behind open-sourcing Eigen.

Our stack/technologies

GitHub

Artsy stores source code on GitHub. Make sure you have an account and are part of the Artsy organization. If you can't visit this page 🔒, then you don’t have the right access. Your mentor can get you sorted out.

Our projects use physics terms as code names, starting with Gravity 🔒 (inspired by Zachary Coffin's "Temple of Gravity").

See the engineering projects map 🔒 for a comprehensive list of our (many) repos and associated teams. It can be a bit overwhelming, so here are some important ones:

AWS

Many applications depend on Amazon Web Services. Your mentor or anyone else in Engineering can set you up with an IAM profile within our organization's account (see instructions 🔒).

Artsy's Stack(s)

Read @orta's blog post describing our stack in 2017, which evolved from our stack in 2015, which evolved from our tech stack at launch in 2012, which evolved from a Rails monolith.

Artsy APIs and concepts

See apis 🔒 and domain models 🔒 in Potential.

How We Work

The engineering team playbooks discuss why we make the technical and non-technical decisions we do.

Development Environments

The scripts/setup 🔒 script will install common dependencies for local development (homebrew, Ruby, etc.).

Projects can provide their own setup scripts that build on this common foundation. See Gravity's script/setup 🔒 as an example.

Most projects use the hokusai wrapper for testing, configuration, and deployment to kubernetes. The hokusai dev ... commands simplify local development using Docker.

Text Editor

Most engineers use Visual Studio Code, but feel free to use whatever makes you most comfortable. We recommend that projects include a .vscode folder with settings, and an extensions.json so that developers can have the same experience. For example:

A lot of engineers have moved from Sublime Text or vim, if you want to retain your keyboard shortcuts / modes, you can find a list of extensions handling that.

Contributing Code

As all of our code is housed on GitHub, we make contributions through pull requests.

Read more in the engineer workflow playbook or see this step-by-step guide 🔒. If you're unfamiliar with Git, check out this short tutorial on basic git commands (such as git status, git commit, and git push).

Deploying

Once your pull request is merged, we use services like CircleCI to run the full test suite to make sure code changes did not break existing features.

Many of our apps automatically deploy to a staging environment once CI (continuous integration) succeeds. Production deploys vary by project, but are usually documented in project READMEs.

We try to deploy early and often. You don't need permission to deploy--just announce in #dev slack channel in case the team has any concerns. Seriously, see this slack message 🔒.

More about continuous improvement.

Project Management / Sprints

Teams at Artsy work with product management via Jira 🔒. Teams tend to work in 2 week sprints, with a planning meeting at the start and a review/retrospective at the end.

Future Fridays

PDDE-wide, the 2nd Friday of each sprint is "Future Friday." This is a lightweight process focused on collecting ideas about longer-term opportunities during the course of day-to-day work.

Conversations can be labeled with #ff so they're find-able later. When Friday comes (if you're so compelled), choose a direction to explore/experiment and report back any results at end-of-day. Participation is optional and collaborations are encouraged.

You can read more in the original RFC and blog post.