/potential

Engineering onboarding resources.

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

Artsy Engineering Team Onboarding

Welcome to Artsy! If you're not an Artsy team member we hope you'll find these docs useful and maybe check out our jobs or just send us a resume to jobs@artsy.net.

If you're a new team member, we’re excited to have you!

Before you begin this guide, keep in mind that it is a work in progress and your first PR at Artsy could be fixing a typo/adding more information to this doc. This will guide you through some basic readings/tasks to get you started engineering @Artsy. If you have questions feel free to reach out to your mentor or anyone else on the dev team. Try the #dev channel on Slack.

Whether you're a seasoned engineer or fresh out of school, take a moment to read Your First 60 Days at an Engineering Job.

Overview

Administrivia

Onboarding

You have been onboarded by ops. You have a mentor and a spirit guide. You now know where we keep the snacks! Awesome.

1Password + Dropbox

Download and install Dropbox and 1Password and configure 1Password vaults as described in this guide.

Slack

Download and install Slack, see this guide for details.

Trello

Each team does task management slightly differently, but in general we use Trello for high-level tasks and github issues for project-level tasks. Ask your mentor to get you signed up and subscribed to the relevant Trello boards.

GitHub

Artsy keeps all of our code on GitHub. Make sure you have a GitHub account and are part of the Artsy Engineering organization. If you can’t visit this page, then you don’t have the right access. Your mentor can get you sorted out.

You’ll notice that our GitHub repos are named after physics terms. The story is that our first project, gravity, was named after Zachary Coffin's "Temple of Gravity" that was installed at Burning Man in 2003. The work weighs 180,000 lbs total and involves walking under 17,000 lbs stones swinging from two apparently insubstantial chains. In 2011 we wanted to build a brand new, rock solid foundation for Artsy platform and chose The Temple of Gravity for its art + science metaphor.

"Gravity cannot be held responsible for people falling in love.", - Einstein

See the engineering projects map for an in-depth look at our (many) repos and who owns them. It can be a bit overwhelming, so here is a breakdown of a few important ones:

AWS

In order to get applications like Gravity set up, you’ll need the proper AWS credentials. Ask your mentor to give these to you as well.

We use AWS for storage (S3), hosting websites (OpsWorks), and analytics (Redshift), among other things.

Art world notes

Many of our engineers have art backgrounds or degrees, but of course not all of them. Here are some useful links if you want to read more about the art world, or keep up with the latest news.

Artsy Engineering Operations

The Artsy Product & Engineering Teams

Artsy product engineering is organized in product teams. Each team has a purpose, eg. "Help galleries get the most out of Artsy and run their business better", and Key Performance Indicators, or KPIs, eg. "The number of artworks uploaded by partners." Each team has members with different responsibilities, including a Product Lead, a Project Manager, a Designer, an Engineering Lead or an Engineer, depending on size. Sometimes the same person wears multiple hats.

You can see this organization live in the Product and Engineering Teams Trello.

Engineers typically work on a product team and belong to an Engineering Practice.

Engineering Team Standup

We have an engineering team-wide standup on Mondays at 2 p.m. where we give a high-level overview of what we worked on the previous week and what we hope to accomplish in the coming week.

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 dB.’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.

The Artsy Stack

This blog post by dB. explains our stack, circa 2015.

Setting up your Dev Environment

Many of these are adopted from Joey’s gist: How Joey Works

Getting ready to Code

Text Editor

Most Artsy Engineers use Sublime Text 2, but feel free to use whatever makes you most comfortable.

You can use the Sublime Package Manager to manage plugins in Sublime.

Once you have Package Manager installed, packages can be installed by following the instructions here. It all starts with cmd+shift+p.

If you do use Sublime, here are some plugins you might want to get you started:

Making Contributions

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

Read about our workflow here.

If you are unfamiliar with Git, check out this short tutorial on basic git commands (such as git status, git commit, and git push).

If you'd like a more comprehensive review of Git and GitHub and how we use them, you can look at our Guide to Git and GitHub.

Style Guide

For a more indepth guide to our contribution workflow and our style preferences for Git and Pull Requests, you can view our Style Guide.

The GitHub blog also has a nice article on writing quality pull requests.

Deploying Software

Once your pull request is merged, we use services like Semaphore and Travis to run a full build of the app to make sure the code changes did not break existing features.

Most of our apps do not automatically deploy once the CI (continuous integration) step succeeds. Instead, you have to manually deploy the code to where it's hosted (usually either Heroku or OpsWorks). This process is app-specific, but generally done through the Jenkins or Semaphore UI, or the command line.

We don't have a set deployment cycle for our web apps (developing for iOS is a different story...). At Artsy, we value small improvements through pull requests, and incremental deploys. You don't need permission to deploy-- you just have to announce when you plan to deploy something in the relevant slack channel in case someone is intentionally putting it off.

Our API app, Gravity, is hosted on OpsWorks. For more information on why we chose OpsWorks for this app, and what it all means, check out our Introduction to AWS OpsWorks blog post.

If You Get Stuck

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, #dev is a good place to start.

Ask Your Neighbor

Everyone is really friendly - don't hesitate to reach out to the people around you for even the most basic of questions.

License

Creative Commons License
Artsy Potential by Artsy is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at https://github.com/artsy/potential.