Software Engineer (Language)
Full time, onsite, multiple positions
Do you love functional programming, language tool chains, or type systems? Do you have significant experience programming in Elixir / Elixir or another functional language? Shoreline is hiring Elixir focused software engineers to develop our ops language: a concise, natively distributed language for detecting system events, taking actions on compute resources, and permanently solving operational problems with automated bots.
What you'll be doing
- Defining the ops language including syntax and semantics and implementing in Elixir.
- Implementing the language's tool chain and standard library in Elixir.
- Working with others to develop the language's run time.
- Developing integrations including with shell and python.
- Working with others to develop a cloud components library including queues, auto scaling, and warm pool components.
You'll use standard software development best practices such as version control and participate in software development processes such as code and design reviews.
We pay competitively. While this position can be remote, you may be asked from time to time to travel to and work from the main office located in Redwood City, CA.
What you should have
- Two or more years of experience with Elixir / Erlang & OTP or another functional language such as Haskell, OCaml, or a Lisp.
- A love of functional data structures, algorithms, and immutability.
- Care about aesthetics such as code syntax and quality.
- Verbal and written English fluency.
- Competency with version control and writing tests.
- Deep knowledge of Erlang's VM, BEAM.
- Experience with DevOps including debugging production systems.
- Experience working with one or platforms including AWS, GCP, Azure, VMware, and/or Kubernetes.
- A love of language design & implementation and an understanding of language tool chain such as lexing, parsing, type checking, and planning.
How To Apply
If interested, please design and implement a solution to the following problem. Please use source control for your solution and include a link to the repository. If you do not want to apply using this web system, please email the solution (attach or include link to repo/gist) and a resume to firstname.lastname@example.org. Please include "Software Engineer - Language" in the subject of your email.
Please include a suite of tests along with your solution to demonstrate correctness.
We are building a social network. In this social network, each user has friends.
A chain of friends between two users, user A and user B, is a sequence of users starting with A and ending with B, such that for each user in the chain, ua, the subsequent user, ua + 1, are friends.
Given a social network and two users, user A and user B, please write a function that computes the length of the shortest chain of friends between A and B.
Please write answers to the following discussion questions and include them in your solution as comments:
- How did you represent the social network? Why did you choose this representation?
- What algorithm did you use to compute the shortest chain of friends? What alternatives did you consider? Why did you choose this algorithm over the alternatives?
- Please enumerate the test cases you considered and explain their relevance.
We will evaluate your solution and test suite for correctness, simplicity, clarity, and robustness.
If you have any clarifying questions, please email: email@example.com
- Submit your solution and resume on this web page or to firstname.lastname@example.org
- Informational phone screen where we can get to know each other, ask/answer any questions, and evaluate fit (0.5hr).
- Technical phone screen with live coding (1hr).
- Final round of technical interviews with the team, live coding and other questions (~4hrs).
We will get back to you promptly after each step in the process.