Skip to content

Latest commit

 

History

History
440 lines (262 loc) · 16.9 KB

Backend Developer.md

File metadata and controls

440 lines (262 loc) · 16.9 KB

Backend Developer

Company best practices

  • You know how to share secret values with other employees. 📚
  • You know how to use the command line to switch between users
  • You know how to share secret values externally 📚
  • You create pull requests with proper name and description 📚
  • You squash merge your pull requests 📚
  • You understand the pros and cons of git rebase vs git merge 📚
  • You name your commits properly 📚
  • You review PRs carefully and leave your comments 📚
  • You know how to configure rules in a repository for merging to specific branches (master, develop)
  • You add proper label in pull requests
  • You create your branches under the proper folder (feature, fix, hotfix)
  • You know how to create and reference issues
  • You know how to verify when a build check failed
  • You know how to create GitHub Wiki pages
  • You know how to verify when a build check failed
  • You know how to reference a Jira ticket in your commit
  • You use Slack statuses in line with company policy (remote working, vacationing, in a meeting, etc)
  • You know how to create groups and channels
  • You know how to create Confluence pages
  • You know how to give praise and add talk topics to a 1:1 meeting
  • You know how to create goals and mark them as complete
  • You know how to create tickets and write comments
  • You can configure local email client
  • You can configure email signatures

Python

  • You can create State Machine with simple transitions 📚
  • You know how to listen for state transitions
  • You know how to use current user context in message log
  • You know how to configure defaults for models 📚
  • You know how to disable caching for specific query
  • You know how to create a notification
  • Know how to translate Django models fields
  • You know how to setup fallback language
  • You have to configure salt and length of the hash
  • You know how to use it as a PK
  • You know how to define defaults
  • How to cast variables, including lists
  • You can use helpers like db for connection strings
  • You understand 12 factor app concept
  • How to declare a model with versioned history
  • You are able to add your own action in Django admin panel
  • You know how to set a custom name for an action
  • You can decide when it's appropriate library, contrary to your own implementation
  • You know how to declare a type
  • You understand pitfalls of not doing so
  • You can define necessary manager class
  • Define routes with http verbs
  • How to setup an app config
  • Use with storage, using DB of choice
  • How to response with json and use http code constants
  • You can create full text search query
  • You know how to use ordering query
  • You can use it with DRF Generic View
  • You know how to create custom queryset for a filter
  • You can create simple HTTP endpoint using API gateway
  • You know plugins to handle local development like serverless offline
  • Configure more robust triggers like SQS events
  • You know how to use WSGI based framework
  • You know how to scaffold a Django app
  • You know how to create routing with query params
  • You can query DB using one of asynchronous libraries
  • You know how to use model in response
  • You can create server side events view
  • You know how to use Depends
  • You know how to declare a model
  • You can identify proper field types to model
  • You know how to use resources
  • You know how credentials are used, along with region
  • Know how to setup static files served by a middleware
  • You are able to render a PDF
  • You are able to create Models
  • You used proxy model
  • You know how to chain queries using custom Manager
  • You can create Model
  • You know how to create virtual fields
  • You know how to configure a connection
  • You can setup/create migrations
  • You know how to create a model
  • You know how to fetch by a hash or scan by props
  • You know how to do an upsert opearation
  • You are able to create a task
  • You can create multiple queues
  • You can configure a broker
  • You know how to use flower
  • You can create own Task classes to extend functionality
  • You know how does sofy and hard limit works
  • You know how to use it to render templates
  • You are able to render a template

Testing

  • Can setup a test case with multiple paths using fixtures
  • You are able to define custom fixtures
  • You know how to add plugins
  • You know fixture scopes
  • You know how to create a factory
  • You know how to use traits
  • You know how to create related factories
  • You know how to generate faked values using built-in providers
  • You know how to configure a test env
  • You can describe a test using assertions
  • You can create scenarios
  • You know how to generate fake data
  • You know how to pass variables between phases

Date & Time

  • You are able to create relative datetime objects
  • You can convert timezones of datetime objects

Databases

  • You know how to create foreign keys
  • You know data types, including JSON
  • You know how to query data using JSON path
  • You know how to connect and create a collection
  • You can listen for changes using live data updates
  • You know what data types are supported
  • You are able to define an index
  • You are able to query index
  • You know how to update an index
  • You know how to read from and write to a DynamoDB table
  • You know how to scan the table to search for an item and understand the performance cost of this operation
  • You know how to structure documents

Javascript

  • You know how to create a json response
  • You know how to add a middleware
  • You know how to fetch/persist data in DB

[Optional] mongoose

  • You know how to create Model using Schema

3rd Party

  • You can create a payment using django-stripe-payments
  • You know how to do a refund

[Optional] OAuth

[Optional] Auth0
  • You know how to activate a provider
  • You know how to upload custom templates
  • You how used at least one library to work with JWT
  • You can create JWT with custom payload
  • You can manage webhooks
  • You can upload models from CLI

Documenting

[Optional] Swagger

  • You know how to annotate endpoints to describe it

[Optional] drf-yasg

  • You know how to configure the view

[Optional] Redoc

  • You know how to initialize it

Development Tools

[Optional] CLI

  • You used one of

[Optional] httpie

  • You can create requests with JSON payload
  • You used one of the tools in a project

Code Analysis

  • You know how to read results table, including cumulative time
  • You know how to configure
  • You are able to adjust defaults

Contribution

We are very open to contributions to extend or change the requirements based on your gut and experience. To contribute you can use a pull request which will be later validated by our technical team and added to the main docs.

If you will spot any issues please add them in the Issues section.

Credits

This page is maintained by Apptension team.

You can see more of our work here: Apptension portfolio.

License

MIT License

© 2023 Apptension Sp. z o.o.

Built and maintained by Apptension.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.