Senior Software Engineer

Job description

Timber is looking for an experienced software engineer who wants to change the way developers monitor applications. Monitoring applications is complicated, fragmented, messy, and requires an unnecessary amount of tools. We believe thoughtful data collection paired with an exceptional developer experience can solve that.


We are targeting an engineer who can contribute to a growing team. This position offers the opportunity to use and experiment with a wide-range of new technologies in the big data and distributed computing space. We need someone who appreciates a challenge, thinks on their feet, communicates effectively, and is ready to pitch in on a range of projects. With Timber, you'll have an opportunity to expand your capabilities as an engineer with a supportive team.

On the backend, you’ll be assisting the team in honing our overall platform experience for developers. This means working with large streams of inbound data in a firm real-time system with complex text parsing as well as a query layer that can transparently compose data from multiple storage engines.

You’ll also be assisting with our ecosystem as a whole: building language-specific packages that our clients use in their own codebase to enhance and ship logs. Our packages span a range of languages, and we are always looking to increase our relevance by supporting more.

Overall, we need someone who enjoys delivering a high-quality experience both to peers and customers. This means that the code and documentation both for team members and for end customers should be clear and easy-to-understand. You should know your own limits and be able to communicate them to the rest of the team.

Tech Stack

The Timber platform is built on top of the Elixir ecosystem and embraces a pragmatic functional programming model. Our technology stack includes Amazon Athena, Amazon Kinesis, Amazon S3, Apache ORC, Elasticsearch, and Postgres. In addition to Elixir, some of our infrastructure includes Java and Python. Our client packages currently target Elixir, Ruby, Node, and Python. We also have tooling written in Go and use Terraform and Ansible for infrastructure management.

Responsibilities

  • Maintaining and developing features for our hosted service
  • Maintaining and developing features in our client libraries
  • Ensuring clients have the best experience possible by writing good documentation and assisting with support requests.
  • Providing constructive feedback on the engineering process to help give everyone a better experience

Requirements

Required Skills and Experience

  • You have worked on a team delivering production Internet services to end users (3 or more years preferred)
  • You understand the mechanisms of delivering Internet services at scale
  • You have a critical understanding of at least one programming language and its ecosystem
  • You write well-documented code that is easily understood by others
  • You have a practical understanding of run-time complexity and how it affects a system
  • You can break a complex problem down into smaller units
  • You can communicate effectively with coworkers and customers

Beneficial Skills & Experience 

  • You have previous experience working with streaming data
  • You have previous experience working with text parsing
  • You have previous experience working with functional programming languages
  • You have previous experience working with Elixir or the Erlang/OTP platform generally
  • You have previous experience working with column-oriented databases
  • You have previous experience working with Go or Rust
  • You have previous experience managing and/or contributing to open-source projects

While not required, we would appreciate you providing us with one or two references we can contact. We understand not everyone is in a position to provide this, though!