Skip to main content
Posted August 30, 2022
Doist

Senior Backend Engineer

Anywhere Remote Full Time

Doist’s mission is to build the future of work. While the “future of work” concept has floated around as a trendy catchall, appearing in bland blog...

Doist’s mission is to build the future of work.

While the “future of work” concept has floated around as a trendy catchall, appearing in bland blog titles and uninspiring corporate webinars, do not be mistaken: Doist’s future of work is not their future of work.

Their future of work is more pings, tracking, and meetings. It’s trying to force the square peg of antiquated office work into the round and limitless circle of what work can be.

They approach the future of work from the past. We approach the future of work without assumptions. We're not incrementally improving upon the past. We're questioning everything and radically rethinking what's possible.

As Doist builds the future of work, many more people across the globe will thrive, both professionally and personally.

By relying on our best-in-class tools like Todoist and Twist, and inspiration from our very own workflows we will empower people to turn their big ideas into reality by focusing on meaningful, high-value work. And we will enable people from anywhere to participate in the global economy, thanks to more effective collaboration across time zones and continents.

Your Role

As a Backend Engineer, you will propose, specify, implement, maintain and decommission code that powers Todoist for millions of active users through our diverse portfolio of client apps and integrations. Ensuring flawless cross-device sync and seamless sharing are two of the current challenges where you can make an impact.

Our codebase is far from perfect - a quirky in-house Python framework built by our founder and frequent circular dependencies are challenges representative of our codebase. We are working hard to evolve our architecture and build a backend that is fun to work on and rock-solid when running on AWS, our cloud vendor of choice.

We’re a great fit if you enjoy mentoring your colleagues, systematically repaying technical debt, and working with a highly resilient team. We are looking for devs who will help us continue evolving our solution architecture and overall quality.

Being a backend engineer is not just about churning out code. You get to lead projects from the cradle to the grave, work with our talented product leadership (filled with ex-engineers who understand the value of refactoring), and collaborate with adjacent teams to solve pain points our users face. Being a reliable partner is critical for our long-term success, so we value consistent delivery and a high level of professionalism.

What you can expect to do on a regular basis:

  • Create features. From the proposal, through specification and implementation, to maintenance. Often these features are implemented as documented API endpoints. You're encouraged and expected to propose things that you think can be helpful for the product.
  • Provide feedback. When planning a feature, it's the job of senior developers of each team to provide feedback on expected challenges and unknowns as early as possible.
  • Improve the code. With time, our code and data structures accumulated technical debt which we systematically pay off. Often we do it while we make features as well as dedicating exclusive time to housekeeping.
  • Be a present team member. We do code reviews, refactor code, learn new things and share our knowledge. Occasionally you will be appointed as the mentor of newcomers.
  • Lead projects. Project leaders bear the ultimate responsibility for the success of their projects. In practical terms, they shepherd the overall planning and work and orchestrate its execution until the end of the cycle. They balance this activity with hands-on work.
  • Be a “Hero”. A “Hero” is a developer whose main priority is working closely with support at triaging and fixing bug reports. They also help speed up reviewing processes and support other teams in their projects.

About You

It's important to us that the person we hire will thrive in this role. Here are some core things we believe will set you up for success:

  • You have substantive professional experience with developing web services and understand all the moving parts (DNS, HTTP, DBs, etc). You have designed, built, and maintained several projects or features that have been deployed to production.
  • You are familiar with Python, know both its strengths (and how to capitalize on them) and weak points (and how to work around them), and you’re able to argue about them. You follow the evolution of the Python ecosystem. You’ve also used at least another programming language.
  • You are familiar with OWASP Top 10 web app security risks and know how to avoid and mitigate them. You can assess the security implications of a pull request or an architecture decision.
  • You are familiar with MySQL or PostgreSQL and have experience with its quirks, weak spots and workarounds. You care and understand the performance impact of SQL queries your code makes, and have experience assessing and optimizing their performance.
  • You feel at home in the Unix shell. You are familiar with grep, and sed or awk. You often write bash or Python scripts to automate your work.
  • You’ve written unit-tests long enough to have a taste for what a good test looks like, are aware of current testing practices, and can argue about an approach’s merits and degenerate cases.
  • You understand the value and cost of abstraction, are versed in current architectural practices, and judiciously apply programming principles like SOLID, DRY, YAGNI, etc.
  • You yearn to be more than a mere executor, look for ways to inform the overall direction of the products you work on, and actively participate in sketching an implementation plan that focuses on value delivery with a well-derisked approach.

This listing expired on Oct 14. Applications are no longer accepted.