Back-End Developer (Python/Django) to $6000
Who We Are
We're a product company, working on one of the best note-taking apps in the world. We pioneered the market 15 years ago as a two-person startup and evolved into a well-established company throughout the years.
Workplace
No daily standups or story points. You look at the users' feedback, ship some code, look at the feedback again. You work on code until it's done and ship when it's ready. You refactor what needs refactoring when it needs refactoring and you optimize what needs optimizing when it needs optimizing. You invest your time in what makes sense for the business, and the more you understand the product the more freedom you have in deciding what makes sense for the business.
You'll work on twisted, unfamiliar problems with no standard solutions, hack through the mix of legacy and modern technology, optimize slow database queries, debug distributed task processing issues, refactor Django code written a decade ago, wonder why certain architectural decisions were made, deal with data migrations on large tables, and many other fun and interesting things.
Technology
WorkFlowy is a classical single-page application, split into a client and an API.
The backend is written on Python 3 / Django, PostgreSQL, Celery, Redis. Besides the API, the backend contains a set of internal tools for marketing and support.
The client is written in TypeScript / React, with a few (a million) sprinkles of jQuery. It's a hybrid application, that works on the web by default, and is wrapped into Capacitor for the phones and Electron for desktop.
The pipeline is managed by GitHub Action, which deploys it all on AWS with Docker.
About you
We expect you to have a solid backend foundation. You, of course, do not need to be an expert in everything (nor we consider it possible), but you have to have a good grasp on what's going on on the backend in general, beyond Python and Django.
- You are familiar with Python, its quirks, weak spots, and workarounds. You can name at least three things which you don’t like in Python, and what is usually done to work around its limitations. You follow the evolution of the Python ecosystem
- You don't need to know the intricacies of threaded or asynchronous code, but need to have a general sense of when you might need these
- Besides Python, you used at least one other programming language to create commercial or open-source products
- You are familiar with PostgreSQL or MySQL and know at least some of its quirks, weak spots and workarounds. You can name at least one thing you don’t like in your database of choice and how to work around its limitations. You care and understand the performance impact of SQL queries your code makes, and have experience assessing and optimizing their performance
- You might not know all the pitfalls of sharding and replicating databases, but you should be aware such things are possible and be ready to explain why they exist
- You should understand what's Nginx and how it interacts with Django, even though it's totally fine if you're unable to configure Nginx yourself
- You’ve written unit-tests for your code long enough to have a taste of how a good test looks like, and follow testing best practices
- You understand the value and cost of abstraction and have a habit of making refactorings to follow best practices and apply programming principles such as DRY, SRP, YAGNI, etc.
- You are familiar with some software design patterns and can implement them in Python
- You feel comfortable in the Unix shell. You generally prefer TUIs and CLIs over graphical UIs and it often feels simpler to you to just type a command in the terminal than to click around
Compensation
We'll propose an above-average salary should your skills match our requirements. Paid vacations, sick leaves, days off for personal business, etc. are, of course, included.
Required languages
| English | B2 - Upper Intermediate |