diff --git a/README.md b/README.md index 2dd1fe8..3c9a6e8 100644 --- a/README.md +++ b/README.md @@ -1 +1,75 @@ -# Interviewing \ No newline at end of file +# Source Allies Interviews + +This repository contains information about the Source Allies pairing session process. + +Please see our [careers page](https://www.sourceallies.com/careers/) if you are interested in working on our team! + +_This repo is part of an active effort to make our pairing session process more transparent. We are continuously improving our interview process to make it more effective._ + +## Typical Interview Process + +Our pairing process typically consists of four steps: + +1. Meeting You +2. Self Evalutation +3. A custom [HackerRank](https://www.hackerrank.com/) coding exercise +4. In-person (or virtual) technical pairing session + +## Meeting You + +You’ll meet with a recruiter through a call, virtual hangout, or even a coffee. You will connect and talk about your background, where you would like to grow your career, and what drew you to Source Allies. This conversation is to gain an understanding of initial alignment for both parties. + +## Self Evaluation + +This document will be a chance for you to tell stories and share with Source Allies a more in-depth snapshot of your experience and perspectives. There will also be a confidential information component that is shared only between you and your recruiter. + +## Coding Exercise + +It’s a race against the clock on our custom built algorithmic coding exercise via HackerRank to get a better glimpse of your technical capabilities. The test consists of front and backend question options, and a variety of languages, frameworks, and libraries to utilize. Are you up for the challenge? + +## Pairing Session + +The purpose of this interview is to further gauge your technical ability and to get a sense of what it’s like to work with you. + +We use a project to guide our discussion, but we don't have to finish the project. We only need to get far enough along to get a good sense of your technical ability. + +To create a positive experience for virtual pairing sessions, please have a reliable camera, audio, and sound ready. + +## How to use this repo for the pairing session + +This repository serves as an entrypoint to be able to easily spin up an environment for many straightforward languages/projects by leveraging VSCode devcontainers and codespaces. + +If you would like a 1 click process to work in one of these languages, it is easiest to leverage codespaces. This will create a vscode instance running on a VM in the cloud you can use to interact with this codebase. It will contain all dependencies and extensions to need to work in all of these languages, and can be disposed of after the interview, or practice sessions before hand. + +Typically, the interviewer will start the code space, then the interviewee will join via liveshare. However, this is not a hard and fast rule. Feel free to leverage codespaces to run this yourself if you would like. + +You can also use the dev containers extension for your local VSCode installation to be able to run this, however, it will take a few minutes to pull the needed docker image and get set up, so plan accordingly. + + +### Using Codespaces + +If using codespaces, all you need to do is open the branch you care about in github (most likely main), and navigate to the `Code` button. + +![How To Launch Codespaces](resources/media/LaunchCodespace.png) + +You should be greeted with a very short building process, followed by VSCode launching in a new broswer tab. + +![Codespace Launching](resources/media/CodespaceLaunching.png) + +After this launches, extensions will need to initialize, and an init script will run that asks you to choose the language you would like to work in: + +![Init Script](resources/media/InitScript.png) + +From here, simply select your desired language. The script will take care of navigating to the directory, doing any prep work like runnnig mvn, npm, or poetry install commands, then run the test suite for that project. + +You are now ready to start the pairing session! + +## Optional Tools + +Because pairing sessions can widely vary, we have tried to include many options of languages, and well as common frameworks. In addition, there is a [docker-compose.yml](docker-compose.yml) file in the root of this directory that can easily be used to launch a Postgres database, an instance of Localstack, or both. This is so you can integrate with these services from your pairing project if desired. + +Take launch both services you can run: `docker compose up -d`, or to launch one, simply add the name of the service as it is defined in the compose file. + +## What is in each project? + +Each project is kept extremely simple. There are usualy a main class or logic or some kind, as well as a test to make sure this logic can execute correctly. Depending on the framework or language, there may also be files to set up required libraries, such as a pom.xml, package.json, or pyproject.toml. \ No newline at end of file diff --git a/resources/media/CodespaceLaunching.png b/resources/media/CodespaceLaunching.png new file mode 100644 index 0000000..6ec6b92 Binary files /dev/null and b/resources/media/CodespaceLaunching.png differ diff --git a/resources/media/InitScript.png b/resources/media/InitScript.png new file mode 100644 index 0000000..3a75423 Binary files /dev/null and b/resources/media/InitScript.png differ diff --git a/resources/media/LaunchCodespace.png b/resources/media/LaunchCodespace.png new file mode 100644 index 0000000..6b4947f Binary files /dev/null and b/resources/media/LaunchCodespace.png differ