Engineer onboarding
Week 1 checklist
- Send Michael your GitHub username to join
fpcoand confirm you can push/PR. - Share a short bio with your manager to be shared on the
#generalchannel. - Join the weekly engineering call and introduce yourself to the team!
- Log into Projector and know which project to bill; start entering hours daily.
- Pick a small change (docs/infra/tests) and make a PR to ensure access and CI work.
Communication
- Team philosophy
- Text-based communication is key
- Asynchronous - scales well with large numbers of people in different timezones
- Recorded - can easily refer back to decisions later
- Clear - if well worded, easy to understand the intent and context in the future
- Voice/video calls are vital
- Higher bandwidth than text - more data can be shared
- Very useful for clearing up misunderstandings
- Video is generally recommended over pure audio
- We use both!
- Text-based communication is key
Document versus chat
We have two common ways of communicating in text:
- Using a chat app (Slack)
- Writing a document (Slack Canvas, Google Drive, etc)
Here are some general guidelines for knowing which one to use:
- Is this a short question/discussion that can be quickly resolved? Use a chat app.
- Do I want to produce a long-lived artifact from this discussion? Use a document.
- Do I anticipate a lot of edits and comments? Use a document.
Documents make it very easy for people to make suggestions
Which chat app to use?
Some customers will have special chat app needs. For example, many blockchain companies will use Telegram extensively for partner communication. Questions of when to use customer-specific apps should be discussed with the project lead. This section gives general advice for all FP Complete work.
For internal FP Complete communication, please use Slack. Engineers should join:
#general(automatically added) for general messages#engineersfor engineering discussions#randomif desired to discuss any random topic#beginner-questionsfor more basic engineering questions#marketingif you're interested in website and other marketing discussions#blockchainfor general blockchain discussions- Customer-specific channels depending on which projects you're working on
Video/voice calls
Microsoft Teams will be the default video conferencing app in Outlook. Feel free to use it if you're comfortable with it. If you have issues, don't hesitate to include alternative video conferencing, such as Google Meet.
There are two important notes about video/voice calls:
- Use them! It can be tempting to exclusively use text communication, but there are some topics that will simply work better in video/voice calls.
- Record outcomes! It's too common for people to have a meeting, make a decision, not write it down anywhere, and then either disagree on the outcome or forget the outcome entirely.
- It's tempting to record all meetings and use that as the "record," but it's too difficult to use as a source of truth.
- Instead: after every call, be sure to record decisions. That can be in text chat apps, a document, an issue tracker, etc.
- The rule is: A meeting with no artifact never happened!
Which doc system to use?
Simple recommendation:
- If you're writing the doc for yourself, use whatever you want.
- If you're going to ask for feedback from others, especially non-engineers, use Google Drive.
- Long-lived docs managed by engineers are usually best maintained in Git repos as Markdown files (like this site).
Communication style
- Polite, kind, and direct
- Never attack another person on the team!
- However, we should share honest opinions about code, approaches, etc.
- Always assume: everyone on the team wants to work together to create the best possible result
- If you doubt the previous point, speak with your manager and/or Michael
Source code repos
- FP Complete repos: https://github.com/fpco
- Most work happens on customer repos
- If you need access to the above, ask!
Time tracking
We use Projector as our time tracking system, both for billing customers, and for paying our own staff. All new team members need to have a session with Bilal on how to use Projector.
Availability
- FP Complete offers significant flexibility in your work hours
- Our team is spread out across many time zones
- Requirements
- Answer asynchronously in a prompt manner, usually within 1 business day
- Make yourself available for synchronous meetings with coworkers and customers at reasonable times
- Sometimes this may be outside normal working hours
- Actually show up for meetings!
- Sounds obvious, but has been an issue in the past
Time off
- If you intend to take time off, arrange it in advance
- Discuss with:
- Your manager
- Project leads you’re working with
- Bilal (if working on customer projects)
- Customers (after discussing with lead and Bilal)
- Update your calendar with “Unavailable” blocks for meeting scheduling
There will unfortunately be unexpected cases of illness and emegency. When this happens, as promptly as possible, please inform your manager and team members of your unavailability.
Deadlines
Without clear, well-defined deadlines, we hit common failure modes
- Blocked indefinitely on somebody’s feedback
- Spending more time on something than we should
- Should have clarity in what we mean with a deadline
- Importantly: what degree confidence do you have that this deadline will be achieved?
- Be clear about the scope of what we’re delivering
- Changes in requirements must be called out and impact estimated
- Always clarify the next steps, e.g., “we’ll write up the requirements document by Friday and then estimate the first phase of work”
Time boxing
- Set time boxes on tasks
- Far too easy for people to have wildly different ideas of the impact of a work item
- Can be a forcing function to find misunderstandings about the task
- Example timebox: spend up to 8 hours on task X, but if you get to 4 hours and think it will take longer, ping me to discuss before moving forward.
- Ideally, every task should have a timebox associated with it.