🐍

UN CHOIX DIFFICILE

  • Les saouler avec ma vie jusqu’à ce que mort s’ensuive
  • Les saouler avec des anecdotes sur Python jusqu’a ce que mort s’ensuive
  • Les saouler avec mon livre jusqu’à ce que mort s’ensuive
  • Leur donner des conseils que j’aurais aimĂ© avoir Ă  la sortie de l’ETML

✅

✅

✅

✅

✅

BONJOUR

  • đŸȘȘ Sylvain Fankhauser
  • ‍🧑‍🎓 DiplĂŽmĂ© de l’ETML en 2005
  • 🧑‍🎓 DiplĂŽmĂ© de la HEIG-VD en 2009
  • đŸ€“ DĂ©veloppeur web depuis 20 ans

Les maths me détestent

(mais l’informatique m’aime ❀)

Premier job

CE QUE J’AI APPRIS

  • Les hiĂ©rarchies traditionnelles laissent peu de libertĂ©
  • L’évolution traditionnelle peut empĂȘcher de continuer Ă  faire ce qu’on aime
  • L’image d’une entreprise reflĂšte rarement la rĂ©alitĂ©
  • Le premier job est bon moyen de savoir ce qu’on veut
 et surtout ce qu’on ne veut pas

DeuxiĂšme job

C’EST QUOI LIIP ?

  • Agence web suisse créée en 2007
  • PrĂ©sente Ă  ZĂŒrich, Fribourg, Berne, BĂąle, St. Gall & Lausanne
  • + de 200 employé·e·s
  • SpĂ©cificitĂ©s : dĂ©veloppement agile, gouvernance partagĂ©e

LES PROJETS

ÉVOLUTION DE LIIP

  • Ouverture de bureaux Ă  Lausanne en 2011 avec
    2 autres personnes
  • PHP uniquement, pas de discussion possible
  • 2014 : lancement d’une Ă©quipe Python / Django
  • 2021 : presque 40 personnes Ă  Lausanne

CE QUE J’AI APPRIS

  • La gouvernance partagĂ©e apporte de la responsabilisation
  • L’agilitĂ© bien appliquĂ©e est un super outil
  • La revue de code (code review) est indispensable pour crĂ©er un produit de qualitĂ©
  • L’augmentation de salaire permet de baisser son taux d’occupation
  • Les « avantages » (p.ex. formation) sont aussi importants que le salaire

INTERLUDE

Quelle est la proportion d’hommes dans la salle ?

C’est à nous d’inverser cette tendance

INTERLUDE

ET MAINTENANT


C’EST QUOI EHRO ?

  • Plateforme de gestion de bĂ©nĂ©voles créée en 2019
  • CrĂ©ation de SĂ rl en 2021
  • PrĂšs de 800 Ă©vĂ©nements, plus de 40'000 bĂ©nĂ©voles
  • 2 salarié·e·s

QUELQUES-UNS DE NOS CLIENTS

CE QUE J’AI APPRIS

  • Le travail sur un produit crĂ©e plus de pression que celui en agence
  • La priorisation est un art difficile Ă  maĂźtriser
  • Avec la libertĂ© viennent les responsabilitĂ©s

ET MAINTENANT
 (BIS)

C’EST QUOI PETZI ?

  • Association faĂźtiĂšre des clubs et festivals de musique indĂ©pendants suisses
  • Existe depuis 1996
  • Plus de 200 salles de concerts et festivals
  • Offre des services Ă  ses membres, p.ex. service de billetterie
  • Alternative aux billetteries commerciales

CE QUE J’AI APPRIS

  • Rencontrer les personnes qui utilisent les systĂšmes qu’on dĂ©veloppe est trĂšs instructif
  • Le secteur de la Culture manque de financements
  • Le dĂ©veloppement d’une fonctionnalitĂ© a un coĂ»t immĂ©diat + un coĂ»t de maintenance
  • Les associations ont besoin de bĂ©nĂ©voles !

Questions ?

Et maintenant quelques conseils

Privilégiez les approches simples, toujours

CONSEIL 1/12

Réalisez des projets personnels

Si vous en avez la possibilité

CONSEIL 2/12

Apprenez les structures de données de base

Liste, map, set, etc.

CONSEIL 3/12

Rendez les états impossibles
 impossibles

CONSEIL 4/12

đŸ˜©

class Order:
    is_cancelled: bool
    cancelled_at: datetime | None

😌

class Order:
    cancelled_at: datetime | None
      
    def is_cancelled(self):
        return self.cancelled_at is not None

đŸ˜©

class Request:
    is_loading: bool
    is_error: bool
    error_message: str
    is_success: bool

😌

class Request:
    status: RequestStatus

class RequestStatus:
    pass
 
class RequestStatusLoading(RequestStatus):
    pass
 
class RequestStatusError(RequestStatus):
    error_message: str
      
class RequestStatusSuccess(RequestStatus):
    pass

Les commentaires devraient expliquer le pourquoi plutÎt que le quoi

CONSEIL 5/12

đŸ˜©

def synchronize_user(user_id):
    # Initialize the API client
    client = ApiClient()
    # Fetch the user from the API
    user = client.fetch_user(user_id)
    # Set nb_orders
    user.nb_orders = user.nb_orders or 0
    # Persist the user
    DatabaseRepository().persist_user(user)
def synchronize_user(user_id):
    client = ApiClient()
    user = client.fetch_user(user_id)
    # The API returns null if the user has
    # no orders
    user.nb_orders = user.nb_orders or 0
    DatabaseRepository().persist_user(user)

😌

Écrivez des tests automatisĂ©s

CONSEIL 6/12

Essayez un langage fonctionnel

Par exemple Elm

CONSEIL 7/12

Apprenez à utiliser un débogueur

En Python: breakpoint()

CONSEIL 8/12

Apprenez Ă  utiliser git en ligne de commande

CONSEIL 9/12

Apprenez à négocier
un salaire

CONSEIL 10/12

Rendez-vous à des meetups et conférences, restez en contact

CONSEIL 11/12

Ne cherchez pas à résoudre tous les problÚmes avec la technologie

DERNIER CONSEIL

Pourquoi 🐍 ?

POURQUOI 🐍 ?

  • Logiciel libre
  • Un des langages les plus populaires actuellement
  • UtilisĂ© par de grosses organisations (Google, Wikipedia, CERN, NASA, Instagram, Spotify, etc)
  • Une syntaxe Ă©purĂ©e et lisible, proche de l’anglais
  • Une librairie standard riche
  • Une communautĂ© foisonnante

LE ZEN DE PYTHON

PréfÚre:
      la beauté à la laideur,
      l'explicite à l'implicite,
      le simple au complexe
      et le complexe au compliqué.

Prends en compte la lisibilité.

Ne passe pas les erreurs sous silence.

Il ne devrait y avoir qu'une et une seule façon de procéder.

Si l'implémentation s'explique difficilement, c'est une mauvaise idée.

Si l'implĂ©mentation s'explique aisĂ©ment, c'est peut-ĂȘtre une bonne idĂ©e.

>>> import this

RESPONSABILITÉS ÉTHIQUES

  • La technologie et les programmes sont omniprĂ©sents
  • ConsĂ©quence : grands enjeux sociaux
  • La technologie n’est pas neutre
  • « La fonctionnalitĂ© que je dĂ©veloppe a-t-elle un impact positif sur les gens ? »
  • « Comment augmenter la diversitĂ© dans mon milieu ? »
  • Gardez toujours un regard critique sur la technologie

« Un grand pouvoir implique de grandes responsabilitĂ©s »

🐍

Sylvain Fankhauser
geniesducode.com
@sephi@tooting.ch
sylvain@fankhauser.name

📹

Merci !

Made with Slides.com