devrait-il avoir des conditions préalables à remplir par une équipe si l'équipe devait être attribuée une tâche qui impliquerait une bonne affaire de codage multi-fileté?
Que rechercheriez-vous? P>
9 Réponses :
Le threading est souvent si complexe et donc la mise en œuvre spécifique que je pense que le seul moyen valide d'évaluer cela serait de leur configurer une tâche simulée (dans l'architecture souhaitée) et "en avoir à elle". Quelque chose qui implique des lecteurs / écrivains / travailleurs / travailleurs - et interface utilisateur si nécessaire. P>
Bien sûr ... Vous devez également avoir une personne qualifiée pour évaluer leurs efforts ... P>
Vous pouvez également parler de principes globaux, mais je ne suis pas sûr que cela couvre. À titre d'exemple, hier dans la zone C #, il y avait beaucoup de confusion sur certaines questions subtiles impliquant le modèle de mémoire, la spécification de la langue et la spécification CLR. Vous ne pouvez pas évaluer ce type de détail en termes vagues; Il doit être De même, les outils / approches changent par cadre. OCAML / F # etc. a
Je cherche des fichus bons programmeurs. P>
En outre, plus important même que cela, est d'avoir une équipe qui peut penser à l'architecture de tout ce que vous travaillez. Dans des systèmes complexes, vous devez avoir une conception viable pour commencer - vous ne pouvez tout simplement pas y arriver comme vous allez et j'espère le meilleur. P>
Donnez-leur un problème multi-fileté cassé et faites-les résoudre. p>
Demandez-leur: P>
La chose délicate est de trouver un expert sur le terrain, vous aurez besoin d'un expert pour commencer. p>
Cela peut être à côté de l'impossible. Je préférerais embaucher des programmeurs qui n'écrivent pas des applications cassées en premier lieu.
Super idée, mais comment allez-vous les trouver? Je pense que c'est à quoi ressemble la question. Je pense que l'approche où vous leur montrez un code brisé (écrit par quelqu'un d'autre, pas eux-mêmes!) Est assez bon. Un programmeur qui identifie rapidement la condition de race, l'impasse potentielle ou tout ce qui est dans un exemple non trivial est susceptible d'être capable d'écrire un bon code MT.
@Neil, des problèmes simples peuvent être corrigés, mais le «monde réel» TM est rempli de problèmes complexes pour déboguer des problèmes multi-filetés qui peuvent être impossibles à grok. Par conséquent, pourquoi la tendance actuelle vers le message passe et acteur comme des cadres ou une mémoire transactionnelle. Le débogage est une compétence clé requise par tout développeur qui doit faire face à un code complexe multi-threading.
@RObert, de la question que j'ai compris que l'OP a une piscine de personnes à choisir, cela pourrait être un filtre
Demandez à l'équipe dans la salle de café pour les boissons, assurez-vous qu'il n'y a qu'une cuillère seulement disponible. P>
Bonus: Quiconque agite son café avant que les autres ont mis du sucre dans, perd. p>
(Sérieusement, demandez-leur, et voyez-vous qui connaît des membres d'objets avec des objets partagés entre 2 threads et d'autres ressources partagées. Demandez-leur comment l'empêcher, puis demandez-leur comment effectuer votre application MT sans mettre des serrures partout. Demandez-leur des impacts. S'ils ne connaissent pas les réponses, ils ne sont pas suffisamment expérimentés pour vous, ou si vous avez besoin de lire sur le sujet et d'avoir de bonnes critiques de conception du code une fois qu'ils commencent). P>
Question intéressante ... Peut-être que vous pourriez peut-être prendre un vrai bogue lié à la multithreading du code de production et les laisser résoudre. Idéalement d'un système auquel ils travailleraient. Peut-être le casser sur les aspects multithreading afin qu'ils ne doivent pas avoir à apprendre tout le système. P>
J'aurais embaucher des personnes avec une piste de mise en œuvre des applications MT sur les architectures qui vous intéressent, à l'aide des langues que vous utilisez. Je sais que cela semble sans cœur et que tout le monde doit commencer à apprendre une nouvelle technologie quelque part, mais je suis assez égoïste de ne pas vouloir qu'ils le fassent sur mes projets! P>
Vous pouvez peut-être engager des personnes N-1 comme ça et une personne qui a d'autres compétences pertinentes pour le projet, mais qui est interdit de prendre des décisions sur quoi que ce soit sans examen. Ce n'est pas que quiconque devrait prendre de grandes décisions, mais cette personne en particulier a le potentiel de concevoir quelque chose qui devra éventuellement être incroyable ...
Une équipe nécessiterait au moins une personne qui est expérimentée avec cela. Surtout un architecte (si vous avez ce rôle) devrait être expérimenté.
Pour vérifier: Normalement, il est visiBile dans le CV des peuples (si externe).
Sinon, demandez simplement des questions ouvertes. Comme: Comment allez-vous aborder Synchronisation entre deux tâches
Je serais intéressé par:
* attitude
* Processus (c'est-à-dire un bon signe si les gens ont des questions pertinentes)
et puis vous pouvez toujours jeter dans un pourquoi pensez-vous que c'est une bonne solution? em> p>
Bien sûr, vous avez toujours besoin de quelqu'un qui peut juger de l'exactitude de leurs réponses, car plusieurs solutions correctes sont possibles. P>
Rechercher des programmeurs fonctionnels. Souvent, la meilleure façon d'éviter les problèmes liés à la multithreading n'est pas de s'assurer qu'ils ne se produisent pas, mais de s'assurer qu'ils ne peuvent pas em> se produire: au lieu de faire des effets secondaires, ne pas utiliser des effets secondaires. C'est exactement ce que fait la programmation fonctionnelle. Vos programmeurs fonctionnels porteront cette idée dans leur code non fonctionnel. P>
Bonne réponse, mais il n'a pas besoin d'être fonctionnel, il suffit de scinder les fils dans des zones presque non liées. Par exemple, un jeu peut utiliser 3 threads: 1 pour l'affichage, 1 pour AI et 1 pour le son, ils interagissent à peine.
Les avoir expliquer le concept de "visibilité" en Java. C'est tellement compliqué que vous ne pouvez que le faire correctement avec une nouvelle exposition grave. P>
Si vous souhaitez également la familiarité avec Windows et Linux et C / C ++, demandez-leur comment ils mettraient en œuvre Pthreads (ou une fonction particulière de celle-ci) pour Windows. Devrait séparer ceux qui savent de ceux qui devinent. Bien que donner crédit à ceux qui devinent parce qu'ils n'ont pas les spécifications à remettre, mais énoncent clairement leurs hypothèses, car c'est ce que je devais faire ;-)