Citation: 4A_364/2022 E. A

A.a. Z.________ a travaillé pour la société A.________ SA en tant qu'ingénieur en logiciels dès le 1er octobre 2013. Son contrat de travail prévoyait un salaire mensuel fixe plus une rémunération variable sous la forme d'un bonus payable en janvier. L'art. 5b, inséré dans un chapitre consacré à la « propriété intellectuelle », avait la teneur suivante: « L'Employeur est réputé unique et exclusif titulaire des droits de propriété intellectuelle, savoir-faire, secrets d'affaires ou autres prérogatives portant sur tout aspect des projets (spécifications, plans, etc.) et des développements software (documentation, codes-source, etc.) que l'Employé a réalisés ou auxquels il a participé dans l'exercice de son activité au service de l'Entreprise et conformément à ses obligations contractuelles. L'article 332 al. 1 CO est applicable par analogie. » L'employé s'engageait « à ne pas utiliser ou révéler, que ce [fû]t avant, pendant ou après les rapports de travail, pour son propre compte ou pour celui d'un tiers, tout ou partie des projets ou développements software protégés par des droits de propriété intellectuelle, savoir-faire, secrets d'affaires ou autres prérogatives dont l'Entreprise serait titulaire. » (art. 5d) Au titre des « informations confidentielles » à ne pas divulguer figurait notamment « tout programme, donnée, idée, principe, système, procédure, technique ou langage informatique qui n'appart[enai]t pas au domaine public. » (art. 7a al. 2 let. ii) L'accord contenait des clauses de « prohibition de concurrence ». Enfin, l'art. 9 instaurait des « clauses pénales en cas de violation des clauses de propriété intellectuelle, de devoir de confidentialité et de prohibition de concurrence ». La sanction pouvait ascender jusqu'à douze salaires mensuels. A.b. Le 12 juillet 2018, l'employé a interpellé son employeuse sur des arriérés de salaire. Le 3 septembre suivant, il lui a adressé une « ultime mise en demeure ». Le 19 septembre 2018, les parties, représentées par leurs avocats, ont négocié une transaction prévoyant notamment ce qui suit : « - Paiement par l'Employeur à l'Employé de CHF 20'000 net par transfert bancaire au plus tard le vendredi 21 septembre 2018 au titre des arriérés de 'salaire', étant entendu que les parties procéderont à un décompte définitif de ces arriérés nets [...] au plus tard le 31 décembre 2018, de sorte que le droit de l'Employé de réclamer le solde après cette date est réservé. [...] - Salaire mensuel fixe de l'Employé augmenté à CHF 8'500 brut dès le 1.10.2018. -..] - Paiement de CHF 11'500 [...] brut [...] par transfert bancaire au plus tard le 31 octobre 2018 au titre des arriérés de 'prime initiale' [...]. - Paiement de CHF 10'000 net par transfert bancaire au plus tard le 30 novembre 2018 au titre des 'primes de rattrapage conditionnelles' [...]. -..] » A.c. Conformément à cet accord, l'employeuse a versé 20'000 fr. nets à l'employé le 21 septembre 2018. A.d. Le 16 janvier 2019, ce dernier a démissionné pour le 28 février 2019, dans le délai de préavis réduit aménagé par l'accord. A.e. Le 31 mai 2019, l'employé a fait notifier à l'employeuse un commandement de payer les créances de 2 x 8'500 fr. pour les salaires de janvier et février 2019, de 1'414 fr. 70 à titre d'indemnité pour des vacances non prises en 2019 et de 10'830 fr. pour des frais d'avocats avant procès (poursuite «L»). Le 3 juin 2019, il lui a encore fait adresser un second commandement de payer les sommes de 11'500 fr. à titre d'arriérés de prime initiale et de 10'000 fr. en guise de primes de rattrapage conditionnelles, le tout « selon reconnaissance de dette du 19.09.2018 » (poursuite «K»). A chaque fois, l'employeuse a formé opposition. Dans la poursuite «K», l'employé a obtenu la mainlevée provisoire pour la créance de 10'000 fr., selon jugement du 5 mai 2020.