Skip to content
This repository has been archived by the owner on Mar 4, 2021. It is now read-only.

This is the getting started guide for new devs or reminder for current devs :)

Notifications You must be signed in to change notification settings

Vardoge/synq-getting-started

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to Synq.fm's R&D team's getting started guide. This document describes our development philosophy and outlines things we care about as a team.

Our Mission

To deliver business value quickly and iteratively

Doing it right with Core Behaviors

If you are on the Synq Engineering team you already exhibit some (or all) of these behaviors, but if you don't exhibit all, don't worry. We understand some of these behaviors rely on a bridge of trust, and we're happy to build that with you.

  • Psychological Safety - It starts here; without Psychological Safety we cannot Communicate and we cannot Care. These are some examples of creating a psychologically safe team, everyone must be responsible and exhibit these behaviors at Synq. Some examples:

    • Encourage team mate participation.
    • Engage and investigate all ideas equally.
    • Define problems collectively as a group.
    • Make sure everyone has a chance to participate.
    • No blame, succeed or fail together mentality.
    • Willingness to try without fear.
    • For more details and examples read here
  • Communication - Communication can take many forms, but it is important that we are always communicating at Synq. Without communication, none of this is possible. The only clause here is that we don't want to be jerks; if you are feeling upset please take time to construct your narrative before sharing it (see psychological safety). Some examples:

    • Creating PRs.
    • Writing documentation.
    • Communicating in person or online.
    • Giving and receiving feedback constructively and in real time
  • Care about... - If you don't care about Synq, about your craft, about engineering, or about your coworkers, working here will be tough. You don't have to care about everything, but caring about something is important. Without caring you wouldn't be motivated to do the work that's required of you here. Some examples:

    • Care about Synq.
    • Care about your coworkers and their success.
    • Care about standards or quality.
    • Care about the craftsmanship of your work.
    • Care about learning and growing your skills.

If you retain anything from this article, it is the 3 core behaviors from above. We live by this, we hire by this, we fire by this. You can review past hiring/firing decisions here.

How and why we do it

Here are things we specifically do to help achieve our mission

Code

What Reasoning Tooling
(Near) Atomic Changes Pushing smaller changes allows us to deliver incremental value; also reduces chance of breakage GitHub
High code coverage CI is useless without good quality coverage, and we can't ship to production confidently without it CircleCI, Coveralls
Refactor constantly Code debt slows us down and counters our fast PR turnaround GitHub

Docs

What Reasoning Tooling
Branches and PRs introduce small changes safely, ensure the code fits our philosophy, knowledge sharing GitHub, Slack
Effective documentation moving quickly means we work on a lot of different things, coming back to it later or having another teammmate look at it, they need to know GitHub Markdown, StackOverflow, Stoplight
Aligned Development Make sure what we're working on brings business value Trello, GitHub

DevOps

What Reasoning Tooling
Tight CI/CD The way we can ship the code quickly and confidently GithHub, CircleCI, Nanobox + Digital Ocean or Heroku
Automated System/UI Testing Once code is in production, is it really working? Running things like Runscope against the API gives us confidence that new changes didn't mess up prod CircleCI, Runscope
DevOps Culture Everyone should know how stuff runs and keep an eye that services are working as expected Slack, Runscope

Technology Overview

Architecture Diagram

Core Services

Name Build Code Coverage Description Maintainer(s) Wiki Link
Akka CircleCI Coverage Status API Core Fiona, Chris here
Wraith CircleCI Coverage Status Programmable Webhooks Fiona, Mario here
Unicorn CircleCI Coverage Status Upload API producing s3 signed urls Chris, Jessica here
Hydra CircleCI Coverage Status Transcode jobs service Jessica, Fiona here
Pixie CircleCI Coverage Status Videojs player service Jessica, Mario here
Mizuchi CircleCI Coverage Status Media Metadata parser Mario, Fiona here

Processing Services

Name Build Code Coverage Description Maintainer(s) Wiki Link
Incubus CircleCI Coverage Status Lambda Importer Jessica, Chris here
Ikiryo CircleCI Coverage Status Lambda Importer Chris, Jessica here
Serpent CircleCI Coverage Status Search Service Mario here
Scylla CircleCI Coverage Status (S)FTP Transfer Service Chris here

Frontend

Name Build Code Coverage Description Maintainer(s) Wiki Link
Duwende CircleCI Coverage Status ReactJS based Dashboard for SYNQ Fiona, Mario here

Shared Services

Name Build Code Coverage Description Maintainer(s) Wiki Link
Imp N/A N/A DNS, Ansible Bruce, Jessica here
Golang SDK CircleCI Coverage Status Shared Golang libraries Jessica

Repo naming scheme is based on legendary creatures, ideally matching the first (or more) letter(s) of the service "Search -> Serpent"

Resources

Technologies to Explore - if you read something cool, put it here
Useful Links
General Wiki

About

This is the getting started guide for new devs or reminder for current devs :)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published