Database Software Engineer
Autre titre de ce rôle possible : « PostgreSQL lovers », « DevOps Database Engineer ».
SpaceFill en quelques mots
Pionnier de la logistique digitale, SpaceFill est en train de construire le premier réseau européen d’entrepôts,
embarqué sur un logiciel SAAS.
SpaceFill permet aux PME ou grands groupes de mieux gérer leurs stocks et flux de marchandises en quelques clics. Ils
peuvent ainsi construire des chaînes logistiques plus efficaces, vertes et résilientes au plus proche de leurs marchés.
Descriptif du poste
Ce poste de « Database Engineer » est un rôle hybride : une partie de Software Engineer et une partie Database Expert.
Tu travailleras pour la partie produit avec Gustave (CPO), Momoko (PD), Thibault (PM), Tristan (PM), Xavier (Head of Product) et pour la partie Tech avec Matthias (VP Engineering), Stéphane (CTO) et 12 autres Développeurs FullStack (Alexandre B (Engineering Manager), Belkacem, Brice, Elias, Elouan, Frédéric, Stanley, Thibaut, Timothée, Vincent, Jordi (Lead Tech) et Younes).
Profil
- Tu es amoureux de PostgreSQL
- Tu as lu x fois toutes la doc de PostgreSQL
- La page Awesome Postgres n'a plus de secret pour toi
- Tu es abonné à Postgres Weekly et tu attends avec impatience la sortie des releases notes des nouvelles versions de PostreSQL
- Tu es adepte du « explicit is better than implicit »
- Tu as une approche itérative
C'est un plus si tu connais ou maitrise terraform et/ou Ansible.
Méthode de travail
L'équipe Tech de SpaceFill essaie autant que possible de suivre la méthode Scrum.
Ce que nous avons déjà mis en place :
- Sprints : 2 semaines
- Daily Scrum : entre 5 et 15 minutes tous les matins
- Sprint Retrospective + Sprint Planning : une après midi en fin de Sprint
- Session de Planning poker
- Scrum Team : entre 3 et 6 personnes organisées en Feature Team
- Definition of Done : un template de Merge Request de GitLab contient la checklist de notre "définition of done"
- Une journée de « Spike and learn »
Nous utilisons GitLab pour :
- la gestion des issues
- le suivi des sprints, via les fonctions milestones et boards
Tout changement dans le code ou la documentation passe par une Merge Request avec un process de review.
Exemples de tâches / projets
- Designer le modèles de données des applications
- Écriture des données de fixtures ou de démo en SQL / PL/pgSQL
- Écrire de fonctions PL/pgSQL
- Écrire des triggers
- Écrire de scripts de migration de données
- Trouver des solutions élégantes pour faire des refactoring en douceur du modèle de données
- Écrire de Row Security Policies
- Écrire de tests pgTAP
- Définir la structure des dossiers
- Documenter le coding style de la partie SQL / PL/pgSQL
Tu seras owner des dossiers en relation avec « PostgreSQL » (modèle de données, tests…) ce qui veut dire :
- tu seras le responsable du code review de ces sections
- à noter que tes Merge Request seront elles aussi review par d'autres développeurs
Stack actuelle
- Backend :
- PostgreSQL 12, utilisation de :
- du langage PL/pgSQL
- des Trigger Functions
- des extensions :
- PostGraphile (Extensible high-performance automatic GraphQL API for PostgreSQL)
- graphile-worker (Job queue for PostgreSQL running on Node.js)
- PostgreSQL 12, utilisation de :
- Frontend :
- React JS (State Hook)
- react-router
- emotion
- Apollo GraphQL
- Leaflet
- mineral-ui (sans doute un refactoring vers Chakra-UI)
- Formik (refactoring en cours React Hook Form)
- ...
- Utilisation de Storybook
- React JS (State Hook)
- Testing :
- Infra As Code :
- Terraform
- Ansible
- Hosting on AWS et Scaleway Dedibox
- Ubuntu
- Docker
- Sentry
- GitLab (pour les Git repository et pour les issues et merge requests)
- GitLab Review App pour toutes les Merge Requests
- GitLab-CI
Quelques informations supplémentaires concernant le fonctionnement du backend :
L'API GraphQL est auto générée par Postgraphile qui est un serveur OpenSource écrit en NodeJS qui se connecte "au dessus" de PostgreSQL.
Cela ressemble à Hasura, Supabase ou Firebase.
Les paramétrages, adaptations peuvent se faire soit via des commentaires sur des ressources PostgreSQL (tables, champs), soit via la création
de Views ou de functions PostgreSQL.
Les tâches qui ne peuvent pas être effectuées par PostgreSQL, comme par exemple l'envoi de mails, la génération de PDF… sont effectuées par un "service worker", avec du code NodeJS "classique".
Environnement de développement
L'environnement de développement est documenté pour MacOS.
Il est possible sans difficulté de développer sous GNU/Linux.
Par contre, l'environnement de développement n'est pas compatible avec Microsoft Windows.
Informations complémentaires
- Type de contrat : CDI
- Bureau : dans le 2ième arrondissement de Paris
- Équipement : 1 Macbook Pro 16" M1Pro 32Go Ram ou ThinkPad + 250€ de budget de set up de bureau
- Tranche de salaire : entre 42K€ et 60K€ brut / an
- Carte tickets restaurant Lunchr de 8 € / jour
- Assurance santé Alan
- Télétravail possible, plus d'informations : La pratique du télétravail chez SpaceFill
- Convention collective : Syntec
- Période d'essai : 2 fois 4 mois
Voir aussi le document : le processus de recrutement