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.
To deliver business value quickly and iteratively
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.
Here are things we specifically do to help achieve our mission
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 |
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 |
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 |
Core Services
Name | Build | Code Coverage | Description | Maintainer(s) | Wiki Link |
---|---|---|---|---|---|
Akka | API Core | Fiona, Chris | here | ||
Wraith | Programmable Webhooks | Fiona, Mario | here | ||
Unicorn | Upload API producing s3 signed urls | Chris, Jessica | here | ||
Hydra | Transcode jobs service | Jessica, Fiona | here | ||
Pixie | Videojs player service | Jessica, Mario | here | ||
Mizuchi | Media Metadata parser | Mario, Fiona | here |
Processing Services
Name | Build | Code Coverage | Description | Maintainer(s) | Wiki Link |
---|---|---|---|---|---|
Incubus | Lambda Importer | Jessica, Chris | here | ||
Ikiryo | Lambda Importer | Chris, Jessica | here | ||
Serpent | Search Service | Mario | here | ||
Scylla | (S)FTP Transfer Service | Chris | here |
Frontend
Name | Build | Code Coverage | Description | Maintainer(s) | Wiki Link |
---|---|---|---|---|---|
Duwende | 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 | 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"
Technologies to Explore - if you read something cool, put it here
Useful Links
General Wiki