Comment choisir un ingénieur logiciel d'application web? [fermé]

10

Comment choisir un ingénieur logiciel d'application Web?

La position (permanente) consiste à réécrire le client d'une application serveur client de bureau existante. Les pages ne seront pas générées dynamiquement sur un serveur, mais le serveur exposera une API complète de la manière nécessaire, par exemple des appels JSON RPC, et peut rendre des fichiers statiques disponibles. Il remplacera un client que les gens doivent télécharger et installer, donc avoir besoin d'un navigateur décent avec des paramètres raisonnables (par exemple JavaScript activé) est très bien. Presque tous les cas d'utilisation sont pour un PC de bureau. Il ne sera pas accessible aux moteurs de recherche (il s'agit d'une application d'entreprise).

Nous pouvons aller jusqu'à écrire le tout sur une seule page, mais ce n'est pas obligatoire. Il serait à peu près tout écrit par l'ingénieur logiciel d'application Web en question. Les bibliothèques open source exactes à utiliser dépendent également de l'ingénieur, dans des limites raisonnables.

Je recherche spécifiquement des conseils sur les qualifications à rechercher / vérifier dans un entretien, car le choix d'un ingénieur logiciel d'application web en général est un sujet trop large.

Modifier - La position serait purement de la programmation JavaScript dans le navigateur (et serait responsable du HTML et du CSS) - d'autres développeurs développeraient le serveur mais cette position pourrait demander des façades sur l'API. Il n'y a pas de Ruby, ASP, JSP, etc. parce que la couche de serveur Web est très mince et traduit simplement les appels à l'API de la couche métier et les renvoie en JSON (ou autre chose, mais JSON semble plus simple).

psr
la source
FYI - Ce n'est pas un doublon de programmers.stackexchange.com/questions/105114/… , qui était assez spécifique aux sites de commerce électronique et demandait plus spécifiquement si la question clé devait être: "Avez-vous vous-même, ou avec un ou deux partenaires, ont déjà mis un produit sur le marché? Peu m'importe s'il a réussi ou échoué, mais parlez-moi de cela. "
psr
J'ai fixé le titre dans la question que vous avez liée, car la question posée est assez spécifique. Malheureusement, celui-ci ne l'est pas. De la faq : Vos questions doivent être de portée raisonnable. Si vous pouvez imaginer un livre entier qui répond à votre question, vous en demandez trop.
Robert Harvey
Si je le limite à ce cas, n'est-ce pas alors généralement utile?
psr
Quelle est votre préoccupation la plus pressante? Je peux vous donner des généralisations, comme ne vous inquiétez pas trop des TLA que la personne a sur son CV. Sur la base de la position que vous avez décrite, ils doivent être un résolveur de problèmes et un peu un touche-à-tout qui comprend plus que la simple création d'applications CRUD. S'ils ont ces qualités, ils peuvent gérer les problèmes technologiques que vous leur lancez. Cela dépend également du fait qu'il s'agisse d'un poste permanent à temps plein ou d'un contrat temporaire.
Robert Harvey
Vraiment, comment embaucher un ingénieur logiciel d'application Web. Plus précisément, je suppose quelles qualifications rechercher / tester en entrevue
psr

Réponses:

2

En tant que développeur Web qui travaille principalement sur des applications d'entreprise traitant des systèmes hérités, je peux offrir quelques suggestions sur ce qui me fait réussir, et j'espère que cela aidera.

Je ne sais pas si vous cherchez une situation temporaire / de conseil pour vous fournir une application, ou un ETP pour développer et maintenir ce long terme, mais ceux-ci devraient s'appliquer dans les deux cas, je pense.

  • J'utilise principalement Ruby. Cela rend le prototypage rapide très rapide et facile, et Rails facilite le démarrage d'un nouveau projet. Maintenant, je ne sais pas à quoi ressemble votre environnement, si vous avez des mandats institutionnels concernant les langues, les plateformes, les outils, mais si vous pouvez embaucher un développeur qui maîtrise un langage / cadre moderne et flexible qui permet d'écrire des DSL les API étrangères sont relativement rapides et faciles, c'est un plus. Fondamentalement, toutes les langues avec la nature Lisp seront supérieures à cet égard. En outre, l'embauche d'une personne compétente dans une langue avec un bon écosystème de bibliothèques open source pour gérer les abstractions courantes est un must.
  • Si vous pouvez trouver quelqu'un habitué à gérer les systèmes hérités et à résumer leurs idiosyncrasies, c'est rare et vous devriez l'explorer. La plupart des développeurs sont habitués à construire des projets à partir de zéro (ou à être amenés à maintenir des projets existants) et à construire quelque chose de nouveau pour interfacer avec quelque chose d'ancien prend un certain ... pas un ensemble de compétences en soi, mais une approche.
  • Lorsque vous dites "le serveur exposera une API de la manière qui soit nécessaire", c'est plutôt vague, mais je suppose que vous voulez dire qu'il existe des développeurs existants qui peuvent implémenter l'API sur le serveur? Je voudrais préciser que la position impliquera de travailler avec ces développeurs pour spécifier l'API. Si vous pouvez donner un exemple du type d'interaction requis et demander au candidat ses premières réflexions sur la façon de le mettre en œuvre, cela pourrait être révélateur. Je pense que le fait que votre pensée initiale était JSON RPC montre que vous penchez dans la bonne direction, alors faites attention à toute personne ayant des visions d'interactions XML et XSLT complexes.
  • Si vous pouvez vous attendre à une prise en charge décente du navigateur par JavaScript, recherchez une personne expérimentée avec les frameworks JS comme Backbone.js, JavaScriptMVC, etc. ... alors regardez vers les bons développeurs JS. S'ils disent qu'ils préfèrent écrire leur JS en CoffeeScript, ils sont probablement encore meilleurs développeurs JS.

Juste quelques réflexions sur mon expérience dans les tranchées, mais si mon département recrutait un nouveau développeur, c'est ce que je lui dirais de rechercher.

Je souhaite que mon département ait le budget pour un autre développeur ...

Jason Lewis
la source
Le serveur existe et d'autres développeurs (que le nouveau développeur) réaliseront l'API. Ne touchera pas au système hérité ni ne sera responsable des idiosyncrasies - d'autres le feront, bien que ce développeur puisse demander une façade spécifique. Pas de rubis, car aucune page générée dynamiquement - et ce développeur serait un pur codage JavaScript dans le navigateur (également responsable du HTML et du CSS). Si nous n'engageons pas finalement un autre développeur, je le ferai moi-même dans Backbone.js en utilisant JSON RPC, donc merci pour une petite validation.
psr
1

Remarque: C'est tout simplement mon avis, alors ne jetez pas l'évier de la cuisine sur moi;)

Je pense que vous collez les noms de deux positions distinctement différentes (ce qui peut être un peu déroutant).

Ingénieur logiciel : Un ingénieur. Celui qui est capable de résoudre des problèmes abstraits qui ne sont pas nécessairement liés à une plate-forme spécifique. Connaissance approfondie des modèles de conception, des algorithmes (à la fois des algorithmes connus ainsi que de la conception et de l'analyse d'algorithmes), de la force en algèbre linéaire et peut-être du calcul. Lors de l'embauche d'un ingénieur logiciel dans le passé, je ne m'inquiétais pas autant de leurs connaissances spécifiques du domaine que de leur capacité à résoudre des problèmes complexes.

Développeur d'applications Web : Quelqu'un qui connaît les tenants et les aboutissants de la création d'applications Web. Comprend les architectures côté serveur et côté client et comment communiquer efficacement entre les deux. Connaît les normes W3C, à la fois terminées et WIP. Comprend comment fonctionnent les bases de données et comment les optimiser si nécessaire (optimisation des requêtes, mise en cache des bases de données, indexation, etc.). Comprendre également différents mécanismes de mise en cache et d'autres façons d'optimiser leurs applications. Comprend également les conventions sémantiques.

Il y a probablement quelques éléments qui me manquent et que je pourrais compléter en y réfléchissant.

D'après la description de ce que vous recherchez, il me semble que vous ne cherchez pas du tout un ingénieur logiciel; vous recherchez un développeur d'application web.

Donc, la première chose que je ferais serait de préciser qui vous recherchez et quelle expertise vous attendez d'un candidat. Cela pourrait vous aider un peu.

Demian Brecht
la source
Voir programmers.stackexchange.com/questions/45681/… - rédaction d'une exigence de travail pour un développeur d'applications Web. C'est de là que vient le nom. Je veux qu'un développeur d'applications Web travaille uniquement sur le navigateur (comme je l'ai déjà dit). Aucun élément DB n'est donc pertinent. Les compétences en génie logiciel seraient.
psr
Vraiment? Vous voudriez que quelqu'un travaille sur un système Web qui ne comprend pas les bases de données et les serveurs? Eesh.
Demian Brecht
Sans oublier .. Ce n'est pas trop souvent qu'un développeur d'application web côté client aura besoin de savoir cela, comme comment traverser une largeur d'arbre en premier, ou comment déterminer quel est le pire cas d'exécution pour un algorithme ou un implémentation donné un cryptosystème. Je dis juste. Cela dit, si vous embauchez pour Google ou Amazon, je peux retirer cette remarque.
Demian Brecht