Lorsque je suis dans un délai de programmation particulièrement strict (comme une heure), si je panique, ma tendance est de sauter dans le codage sans plan réel et j'espère le comprendre au fur et à mesure. Avec suffisamment de temps, cela peut fonctionner, mais dans une interview, cela a été plutôt infructueux, voire carrément contre-productif. Je ne suis pas toujours à l'aise assis là à penser pendant que l'horloge tourne.
Existe-t-il une liste de contrôle ou existe-t-il des techniques pour reconnaître lorsque vous comprenez assez bien le problème pour commencer à coder? Quand est-il le plus productif de penser et de concevoir davantage par rapport au code de certaines expériences et de comprendre la conception globale plus tard?
Voici une liste de techniques pour passer un test de mathématiques et une autre pour passer un examen oral . Existe-t-il une liste similaire de techniques pour gérer un problème de programmation sous pression?
RÉPONSES: Je pense que c'est une réponse valable: comment le résoudre . J'ai trouvé ce lien comme réponse aux étapes à résoudre ou à l'approche d'une solution . Il y avait aussi de très bons conseils à Penser à haute voix lors d'une interview est-il vraiment la meilleure stratégie? . Un argument génial et concis pour TDD est la première réponse au code d'écriture TDD vs trouver la réponse à un problème? .
la source
Réponses:
Je me souviens avoir lu une étude sur la façon dont les commissaires d'incendie forment un plan d'action à leur arrivée sur les lieux d'un incendie; l'étude les a observés (et condamnés) pour avoir proposé une idée, puis avoir poursuivi cette première idée immédiatement. En raison de la pression du temps, c'était à peu près "ça pourrait marcher" suivi de "ok, faisons ça". L'étude a noté que des options meilleures, plus rapides et plus sûres étaient disponibles, mais elles n'ont pas été suivies simplement parce que les commissaires n'y ont pas pensé en premier.
Si vous voulez une approche structurée pour faire face aux "incendies", prenez peut-être une feuille de leur (nouveau) livre qui prescrit plusieurs phases:
RRAPID
ou en termes plus généraux:
la source
Je commence toujours par comprendre les exigences et rechercher les lacunes qui nécessitent des réponses.
Puis j'esquisse (très grossièrement et sur papier ou tableau blanc) deux ou trois solutions possibles. Ensuite, je me demande: "Y a-t-il autre chose que je dois savoir pour mettre en œuvre ces éléments?"
Une fois que j'ai posé mes premières questions (il y a des questions à 100% du temps, si vous n'en avez pas, vous n'avez pas vraiment examiné l'exigence en profondeur.), Je retourne vers les parties prenantes pour obtenir mes réponses.
Pendant que j'attends leurs réponses, je considère mes solutions et je vois si certaines sont meilleures que les autres ou seraient meilleures une fois que j'aurai les réponses aux questions. Par exemple, si la question de savoir combien de temps en avez-vous besoin est immédiate, je pourrais opter pour celle avec le développement le plus rapide mais en laissant un moyen d'améliorer la conception plus tard. S'ils me disent que la performance est critique, alors je regarde les solutions et détermine laquelle est la plus susceptible de mieux performer (ce sont des suppositions à ce stade, mais en général celles qui sont éclairées). Si une interface graphique est impliquée, je pourrais créer un prototype papier de plusieurs conceptions différentes et demander aux parties prenantes de les regarder avant de coder quoi que ce soit (généralement, ils verront qu'ils ont oublié de vous parler de XYZ, ce qui est au cœur de la conception!)
Une fois que j'ai obtenu mes réponses, je choisis une conception approximative, puis je fais une liste de toutes les choses que je devrai faire pour la mettre en œuvre. Ensuite, je commence à coder.
la source
Je l'ai fait à l'université. Il est devenu un vrai problème et entraînerait généralement la réécriture du code. J'ai commencé à résoudre ce problème en n'écrivant pas de code. J'ai mis l'accent sur la réflexion sur le problème. Avec suffisamment de pratique, je cherche instinctivement mes pensées plutôt qu'un clavier.
Dans une interview, il doit y avoir une mise en œuvre raisonnée et réfléchie d'une solution et cela n'est pas toujours facile. Ce que vous ne voulez pas faire, c'est laisser échapper des réponses sans réfléchir. Si vous connaissez la réponse, donnez-la rapidement. Si ce n'est pas le cas, comptez sur vos pensées pour trouver une solution. Indiquez toujours quand vous ne savez pas et montrez comment vous vous y prendriez pour trouver une solution.
Je découragerais cela parce que vous pouvez vous y fier de manière rigide. Demandez-vous plutôt si vous comprenez assez bien le problème pour commencer à coder. Comment saurais tu? Parce que lorsque vous raisonnez votre approche puis l'examinez, compte tenu de votre connaissance actuelle de la langue, cela aura un sens. Ayez toujours un plan et une approche. Souvenez-vous également que le code n'est jamais terminé et que le code qui n'a pas évolué mourra, alors attendez-vous à y revenir souvent.
Vous voudrez connaître la conception globale et y réfléchir. Ensuite, vous commencez à créer la structure de classe et les talons. Revoyez-le ensuite. Est-ce que ça fait du sens? Les expériences de codage sont un excellent moyen de démontrer que quelque chose fonctionne bien et doivent être utilisées mais ne doivent pas être utilisées pour façonner ou façonner le code que vous écrivez.
la source