Comment un développeur novice pour survivre dans une interview et ne pas devenir fou au travail



Témoignage d'un traducteur: Valery Aleksiev, un programmeur expérimenté, a parlé de ce qui est le mieux fait par un développeur de logiciels au tout début de sa carrière. En particulier, quels outils méritent d'être utilisés et que rechercher dans les entretiens.

Les premières années de ma carrière ont été des années de formation intensive. Je suis tombé sur une dure réalité et j'ai réalisé que je devais acquérir beaucoup de compétences différentes auxquelles je n'avais même pas pensé auparavant. J'ai donc décidé d'écrire un petit guide pour les autres développeurs. L'article révèle des sujets tels que des interviews, travailler en tant que programmeur, des ressources qui aideront à s'améliorer.

Entretiens d'embauche


Après avoir commencé une carrière de programmeur, vous vous rendrez immédiatement compte que les entrevues sont nulles. Ils peuvent être terribles pour toutes les parties concernées. Ils sont simplement des tueurs de temps, un facteur générateur de stress et le premier obstacle à une carrière réussie. Mais vous devez y faire face, il est donc préférable de savoir à quoi se préparer.

Préparation au combat

Les questions et les tâches peuvent être très différentes, à titre d'exemple, je citerai la tâche populaire FizzBuzz.

Écrivez un programme qui affiche des nombres de 1 à 100. Mais pour les nombres multiples de trois, vous devez afficher Fizz au lieu du nombre lui-même, et pour les nombres multiples de cinq, Buzz. Pour les nombres multiples de trois et cinq, affichez le mot FizzBuzz.

Tout semble être aussi simple et clair que le jour, non? En fait, la plupart des programmeurs débutants échouent à l'entretien d'embauche. J'ai même vu des cas où les candidats au poste de direction n'ont pas terminé la tâche et, en outre, ils ont eu accès au réseau. Mon conseil est de terminer cette tâche avant l'entretien dans le langage de programmation que vous utilisez le plus souvent. Sinon, l'entretien sera une perte de temps pour tous ses participants.

Bien sûr, vous avez besoin de beaucoup plus de connaissances. En particulier:

  • Structures et algorithmes de données de base: listes liées, tableaux, arbres et tri.
  • Informations générales sur «votre» langue, y compris l'immuabilité des chaînes, la gestion de la mémoire, etc.
  • Concepts de programmation orientée objet tels que classe vs objet et héritage.

Tout cela doit être littéralement poli pour briller si vous voulez vous montrer du meilleur côté. Je peux conseiller de telles ressources qui aideront à préparer les entretiens:

  • «Cracking the Coding Interview », juste un livre fantastique qui contient des informations sur un grand nombre de problèmes de programmation et leurs solutions;
  • CodeWars , un site avec des tâches de programmation inhabituelles que vous pouvez résoudre directement dans votre navigateur en utilisant différentes langues.

Skillbox recommande: Cours pratique "Profession Web Developer" .

Nous vous rappelons: pour tous les lecteurs de «Habr» - une remise de 10 000 roubles lors de l'inscription à un cours Skillbox en utilisant le code promo «Habr».

Et un peu plus



Il y a quelques points qui vous aideront à acquérir des connaissances et une expérience supplémentaires.

Tout d'abord, apprenez à exprimer clairement vos pensées, ainsi qu'à décrire vos connaissances et vos capacités. Apprenez à faire de bons CV pliants. Cela peut sembler idiot, mais de nombreux demandeurs d'emploi ne savent pas comment procéder, ils ne peuvent ni expliquer ce qu'ils sont lors d'une réunion personnelle, ni rédiger un curriculum vitae compétent.

Deuxièmement, publiez des exemples de votre code sur GitHub ou tout autre référentiel ouvert. Les exemples de code ne doivent pas être trop compliqués, mais le code doit être rendu propre et rationnel. C'est votre chance de montrer certaines de vos compétences avant l'entretien.

Essayez de participer à un projet open-source. Cela montrera votre expérience et vous apprendra à travailler en équipe.

Interviewez votre intervieweur

Oui, l'entretien ne devrait pas seulement vous demander. Vous pouvez et devez être intéressé par les différentes nuances de votre futur travail et de votre entreprise. Écoutez attentivement les réponses. Ils peuvent être très importants, contenir des informations explicites et peu détaillées sur ce qu'est une nouvelle entreprise, son équipe et son travail.

Voici des exemples de questions à poser.

Quelle sera ma journée de travail standard?
Il s'agit d'un problème important, car les tâches d'un développeur de logiciels dans différentes entreprises peuvent différer considérablement. Si la réponse n'est pas trop confiante ou vague, vous pouvez considérer cela comme un avertissement, un indicateur que quelque chose ne va pas ici. La personne qui vous embauche doit comprendre clairement pourquoi vous êtes une entreprise.

Comment testez-vous votre logiciel?
Idéalement, les tests devraient être assez divers. Si la réponse est quelque chose comme «Nous écrivons tout à la fois sans bugs, haha», vous devez comprendre cela de telle sorte qu'il y ait des erreurs, mais personne ne veut ou ne peut pas les corriger.

Quel système de contrôle de version utilisez-vous?
Une question importante car elle est nécessaire au travail d'équipe. Si la réponse est: "Quoi, système de contrôle de version?" - puis fuyez une telle entrevue rapidement et loin.



Si votre interlocuteur commence à parler d'un système personnalisé, alors rien de bon ne vous attendra dans cette entreprise non plus, car l'infrastructure ici n'a clairement pas été mise à jour depuis longtemps.

Faites-vous des revues de code?
En fait, la révision du code est une étape importante du travail d'équipe car elle vous permet d'identifier de nombreuses erreurs. Si vous avez une réponse négative, cela signifie que le travail d'équipe n'est pas très bien livré. Bien sûr, il peut y avoir des exceptions, mais dans la plupart des cas, c'est le cas. Si on vous dit quelque chose comme «Nous nous faisons confiance», alors cela vaut la peine d’envisager. Très probablement, personne ne vérifie quoi que ce soit dans cette entreprise.

Quels programmes éducatifs pouvez-vous offrir? Un programmeur doit constamment évoluer, donc la plupart des entreprises offrent la possibilité d'apprendre. Si ce n'est pas le cas, soit l'argent est un problème, soit les développeurs sont souvent changés.



Quel processus de développement logiciel utilisez-vous?
Dans toute entreprise où plus de deux personnes travaillent, il doit y avoir une sorte d'algorithme pour le travail global de l'équipe, un processus simplifié. S'il n'y a rien de tel, le travail dans cette entreprise sera comme faire du vélo qui brûle et tout ce qui l'entoure brûle, tout le monde brûle.

Comment résolvez-vous le problème de la dette technique?
La dette technique, ou dette de codage, est un terme qui identifie les bogues de longue durée dans le code ou l'architecture d'application. Les problèmes s'accumulent et deviennent finalement un obstacle très sérieux à la poursuite des travaux sur le projet.

Si on vous répond qu'il n'y a pas de solutions et que la société «se concentre sur de nouvelles fonctionnalités», alors le problème a probablement atteint une telle ampleur qu'il ne peut pas être résolu, ou le chaos commencera dans un proche avenir.

Que pouvez-vous dire sur la culture d'entreprise?
Différentes entreprises ont une atmosphère et une culture très différentes. Mais gardez à l'esprit que vous devrez faire partie de l'équipe plus de 40 heures par semaine pendant plusieurs années, alors écoutez ce qu'on vous dit.

Travailler comme programmeur


D'accord, vous avez traversé toutes les étapes de l'entretien et obtenu un emploi. Félicitations!



Et maintenant Vous devez réaliser beaucoup de choses intéressantes et pas tellement. Puisque nous sommes programmeurs, attardons-nous sur la discussion du code.

Bon code

Il doit répondre aux critères suivants:

  • Pour être lisible, car le code est analysé beaucoup plus souvent qu'il n'est écrit. Votre code doit donc être lisible et compréhensible pour vous et vos collègues.
  • Fiable. Vous devez être sûr que toutes les classes et méthodes sont utilisées correctement et ne provoqueront pas le plantage du programme.
  • Optimisé. Vous ne devez pas être perfectionniste, mais vous devez quand même revoir régulièrement votre code. Vous devez toujours être prêt à faire une petite optimisation de code.

Voici quelques autres choses à apprendre.

Vous ne programmerez pas beaucoup.

Oui, cela peut sembler étrange, mais vous passerez en effet beaucoup plus de temps dans:

  • débogage
  • lire le code;
  • réunions et rédaction de courriels / réponses;
  • la planification.

Et parlons des compétences qui sont importantes pour la carrière d'un programmeur.

Débogage et lecture de code



  • Afin de devenir un pro du débogage, vous devez décider des outils appropriés. La plupart des langages de programmation populaires disposent des outils nécessaires pour le débogage. Apprenez à les connaître, apprenez à les utiliser - cela vous fera économiser d'innombrables heures.
  • Comprendre les fondements, la structure de la base de code. Vous pouvez apprendre le code avec des outils comme ReSharper, grep ou Sourcegraph.
  • Apprenez les manuels. Vous serez surpris si vous apprenez combien peu de développeurs apprennent la documentation technique. En conséquence, beaucoup ne savent tout simplement pas comment le logiciel devrait fonctionner, ce qui signifie que plus de temps est consacré au débogage. Lisez simplement la documentation - cela vous fera gagner du temps.

Organisation et planification

Étant donné que vous avez beaucoup à communiquer avec vos collègues, à planifier et à exécuter des tâches (et certaines en même temps), vous devez être en mesure d'organiser votre temps. Cela vous aidera à:

  • TODO / Tâches. Votre entreprise a très probablement un système pour maintenir les tâches et surveiller leur mise en œuvre, mais cela ne fait pas de mal de démarrer votre propre système. Utilisez Trello, Todoist ou autre chose.
  • Remarques. Dans le processus, vous devez souvent mémoriser diverses petites choses nécessaires. Il est préférable de les enregistrer, par exemple en utilisant Evernote, OneNote et d'autres outils.
  • Graphiques et visualisation. Il est préférable d'évaluer vos performances avec des outils tels que Lucidchart, Visio et autres.

Quand utiliser les bibliothèques?

Presque toujours. Il n'est pas nécessaire de réinventer la roue encore et encore. Dans la plupart des cas, travailler sans bibliothèque entraîne une perte de temps. Bien sûr, cela ne signifie pas que vous ne devez pas savoir comment utiliser les algorithmes ni quelle est la structure des bases de données, car vous devez comprendre comment et où utiliser tout cela.

Les bibliothèques standard des langues les plus populaires sont extrêmement efficaces. Consultez la documentation pour mieux comprendre comment les utiliser.

Vous ne devriez pas avoir peur de travailler avec des bibliothèques supplémentaires si elles aident à gagner du temps. Cela peut être:

  • Bibliothèques open-source où vous pouvez évaluer la qualité du code.
  • Les bibliothèques sous licence MIT et BSD, vous pouvez les utiliser sans problème. Soyez prudent avec la GPL.
  • Ceux qui sont déjà utilisés depuis longtemps et ont un large éventail de capacités.
  • Pris en charge - ceux qui reçoivent régulièrement des mises à jour.
  • Utilisé par d'autres entreprises / projets, ce qui peut indiquer leur fiabilité.

Continuez à vous améliorer

Cela peut sembler ringard, mais vous devez apprendre même pendant le travail, ainsi que pendant votre temps libre - tous les jours. Ceci est aidé par des cours en ligne, des livres, des blogs, ainsi qu'une deuxième (troisième) éducation. Il convient également de prêter attention aux conférences et aux différents types d'ateliers. Parmi les conférences les plus célèbres, je citerais GOTO (direction générale), Strange Loop (également général), PyCon (Python), CPPCon (C ++), DEF CON (sécurité), Fluent (webdev).

Source: https://habr.com/ru/post/fr429720/


All Articles