Recrutement
Écrire du bon code

Définition

Capacité à écrire du code qui est :

  • Efficient. Le code fonctionne avec des performances optimales et peut évoluer.
  • Efficace. Le code doit être exempt de bugs et facile à tester.
  • Facile à lire, à maintenir et à mettre à niveau. Les éléments du code doivent être correctement articulés et définis, de la simple dénomination des variables à la structure de fichiers, de classes et de frameworks multiples.

Pourquoi attachons-nous une telle importance à l’écriture d’un bon code ?

Palantir est une grande entreprise composée de petites équipes. Dans les services de développement de produits et de développement métier, des équipes de 4 à 8 ingénieurs travaillent sur nos plateformes centrales et les étendent en y ajoutant du code personnalisé. Le code doit permettre à ce modèle décentralisé de fonctionner.

Notre activité évolue rapidement. Pour maximiser la créativité et la vélocité de l’ingénierie, nous donnons à nos ingénieurs une grande marge de manoeuvre pour concevoir leur code sans directives stylistiques contraignantes. Que vous soyez un ingénieur logiciel travaillant sur un projet de plateforme à long terme ou un ingénieur logiciel de terrain mettant au point un prototype d’extension avec une échéance la semaine prochaine, vous devez savoir à quoi ressemble un code de qualité.

Comment se préparer

Nous ne vous poserons pas de questions sur les caractéristiques délicates ou obscures d’un langage particulier. Nous sommes intéressés par votre compétence de programmeur et non par votre capacité à mémoriser les spécificités du compilateur Java.

La meilleure façon de vous préparer à démontrer votre savoir-faire en codage est d’écrire du code ! Voici plusieurs choses à garder à l’esprit lorsque vous pratiquez :

  • Un des principaux aspects d’un bon entretien de codage est la capacité à traduire une solution algorithmique conceptuelle en code qui la met réellement en oeuvre. Souvent, cette transposition n’est pas évidente et nécessite une certaine planification et une réflexion anticipée.
  • Pensez aux cas limites et aux manières dont votre code pourrait se bloquer. Pensez à la manière de le tester.
  • Après avoir trouvé un algorithme qui fonctionne avec la complexité théorique optimale [par ex., O(n)], pensez à son évolutivité et à ce qui est important sur le plan de l’efficacité. Parfois, un algorithme O(n) peut être implémenté avec une boucle qui réalise n ou 2n itérations. Parfois, il est inutile d’ajouter une structure de données avec une complexité spatiale O(n).
  • Pensez à la structure, aux noms des variables et à la propreté générale de votre code.
  • Faites attention aux appels d’API. Il est acceptable d’utiliser des appels simples tels que des manipulations de tableaux et de chaînes ou des structures de données, mais pour chaque appel d’API que vous effectuez, assurez-vous d’en comprendre l’action et la complexité.

En ce qui concerne l’entretien lui-même :

  • Nous acceptons généralement la plupart des langages de programmation que vous pourriez décider d’utiliser pendant l’entretien, à condition qu’ils soient impératifs. Évitez les langages trop exotiques ou trop anciens. Par exemple, nous sommes évidemment favorables aux langages couramment rencontrés sur le marché tels que Java, Python, C/C ++, C#, JavaScript et d’autres (y compris les variations comme Rust, Go, Groovy ou TypeScript). Nous sommes également favorables à d’autres langages légèrement plus anciens, à condition qu’ils soient impératifs, comme Visual Basic, Pascal/Delphi, Perl, etc. Mais nous n’accepterons pas les langages non impératifs (Prolog, Lisp, Erlang) ou trop exotiques, périmés ou différents des pratiques modernes du secteur d’activité (comme Cobol ou Fortran).
  • Soyez prêt à coder sur un tableau blanc lorsque vous viendrez passer votre entretien chez nous. (Nous vous fournirons un stylo et du papier ou un ordinateur sur simple demande.)