¿Cómo elegir un ingeniero de software de aplicaciones web? [cerrado]

10

¿Cómo debo elegir un ingeniero de software de aplicaciones web?

La posición (permanente) es reescribir el cliente de una aplicación de servidor cliente de escritorio existente. Las páginas no se generarán dinámicamente en un servidor, pero el servidor expondrá una API completa de la forma que sea necesaria, por ejemplo, llamadas JSON RPC, y puede hacer que los archivos estáticos estén disponibles. Reemplazará un cliente que la gente tiene que descargar e instalar, por lo que está bien requerir un navegador decente con configuraciones razonables (por ejemplo, JavaScript habilitado). Casi todos los casos de uso son para una PC de escritorio. No será accesible para los motores de búsqueda (es una aplicación empresarial).

Podemos llegar a escribir todo en una sola página, pero no es necesario. Casi todo sería escrito por el ingeniero de software de la aplicación web en cuestión. Las bibliotecas exactas de código abierto para usar también dependen del ingeniero, dentro de lo razonable.

Estoy buscando específicamente consejos sobre qué calificaciones buscar / verificar en una entrevista, ya que elegir un ingeniero de software de aplicaciones web en general es un tema demasiado amplio.

Editar: la posición sería puramente programación de JavaScript en el navegador (y sería responsable de HTML y CSS); otros desarrolladores desarrollarían el servidor, pero esta posición podría solicitar fachadas a través de la API. No hay Ruby, ASP, JSP, etc. porque la capa del servidor web es muy delgada y solo traduce las llamadas a la API de la capa empresarial y las devuelve como JSON (o lo que sea, pero JSON parece más fácil).

psr
fuente
FYI: este no es un duplicado de programmers.stackexchange.com/questions/105114/… , que era bastante específico para los sitios de comercio electrónico y se preguntaba más específicamente si la pregunta clave debería ser: "¿Lo hizo usted mismo o con uno? o dos socios, ¿alguna vez trajeron un producto al mercado? No me importa si tuvo éxito o fracasó, pero cuénteme sobre eso ".
psr
Arreglé el título en la pregunta que vinculaste, ya que la pregunta que se hace es bastante específica. Lamentablemente, este no lo es. Del faq : sus preguntas deben tener un alcance razonable. Si puedes imaginar un libro completo que responda a tu pregunta, estás preguntando demasiado.
Robert Harvey
Si lo limito a este caso, ¿no es generalmente útil?
psr
¿Cuál es su preocupación más apremiante? Puedo darle generalizaciones, como no preocuparse demasiado por los TLA que tiene la persona en su CV. En función de la posición que describió, deben ser un solucionador de problemas y un poco como un comerciante que comprende más que solo crear aplicaciones CRUD. Si tienen estas cualidades, pueden manejar los problemas específicos de la tecnología que les arrojas. También depende de si se trata de un puesto continuo a tiempo completo o un contrato temporal.
Robert Harvey
Realmente, cómo contratar a un ingeniero de software de aplicaciones web. Específicamente, supongo qué calificaciones buscar / probar en la entrevista
psr

Respuestas:

2

Como desarrollador web que trabaja principalmente en aplicaciones empresariales que se ocupan de sistemas heredados, puedo ofrecer algunas sugerencias sobre lo que me hace exitoso, y espero que eso ayude.

No estoy seguro de si está buscando una situación temporal / de consultoría para proporcionarle una aplicación, o un FTE para desarrollar y mantener esto a largo plazo, pero creo que esto debería aplicarse en cualquier caso.

  • Principalmente uso Ruby. Esto hace que la creación rápida de prototipos sea muy rápida y fácil, y Rails simplifica el arranque de un nuevo proyecto. Ahora, no sé cómo es su entorno, si tiene mandatos institucionales sobre idiomas, plataformas, herramientas, pero si puede contratar a un desarrollador que sea competente en un lenguaje / marco moderno y flexible que hace que la escritura de DSL se encargue de API extranjeras es relativamente rápido y fácil, eso es una ventaja. Básicamente, cualquiera de los idiomas con la naturaleza Lisp será superior a este respecto. Además, es obligatorio contratar a alguien competente en un idioma con un buen ecosistema de bibliotecas de código abierto para hacer frente a abstracciones comunes.
  • Si puede encontrar a alguien acostumbrado a lidiar con sistemas heredados y abstraer sus idiosincrasias, eso es raro y debe explorarlo. La mayoría de los desarrolladores están acostumbrados a construir proyectos desde cero (o ser traídos para mantener los proyectos existentes) y construir algo nuevo para interactuar con algo viejo requiere un cierto ... no conjunto de habilidades, per se, sino un enfoque.
  • Cuando dice "el servidor expondrá una API de la forma que sea necesaria", eso es bastante vago, pero supongo que quiere decir que hay desarrolladores existentes que pueden implementar la API en el servidor. Dejaría en claro que el puesto implicará trabajar con esos desarrolladores para especificar la API. Si puede dar un ejemplo del tipo de interacción requerida y preguntarle al candidato sus pensamientos iniciales sobre cómo implementarlo, eso podría ser revelador. Creo que el hecho de que tu pensamiento inicial fuera JSON RPC muestra que te estás inclinando en la dirección correcta, así que ten cuidado con cualquiera que tenga visiones de interacciones complejas de XML y XSLT.
  • Si puede esperar un soporte decente para JavaScript en el navegador, busque a alguien con experiencia en marcos JS como Backbone.js, JavaScriptMVC, etc. En ese caso, podría hacer toda la aplicación (básicamente) en el navegador y tal vez servirla con Node.js o algo así ... así que mira hacia los buenos desarrolladores de JS. Si dicen que prefieren escribir su JS en CoffeeScript, probablemente sean incluso mejores desarrolladores de JS.

Solo algunas reflexiones de mi experiencia en las trincheras, pero si mi departamento contratara un nuevo desarrollador, esto es lo que les diría que buscaran.

Desearía que mi departamento tuviera el presupuesto para otro desarrollador ...

Jason Lewis
fuente
El servidor existe y otros desarrolladores (que el nuevo desarrollador) harán que la API suceda. No tocará el sistema heredado ni será responsable de las idiosincrasias; otros lo harán, aunque este desarrollador podría solicitar una fachada específica. Sin ruby, porque no hay páginas generadas dinámicamente, y este desarrollador sería pura codificación JavaScript en el navegador (responsable también de HTML y CSS). Si finalmente no contratamos a otro desarrollador, lo haré yo mismo en Backbone.js usando JSON RPC, así que gracias por una pequeña validación.
psr
1

Nota: Esta es simplemente mi opinión, así que no me tires el fregadero de la cocina;)

Creo que estás mezclando los nombres de dos posiciones claramente diferentes (lo que puede ser un poco confuso).

Ingeniero de software : un ingeniero. Uno que es fuerte en la resolución de problemas abstractos que no están necesariamente vinculados a ninguna plataforma específica. Conocimiento sólido de patrones de diseño, algoritmos (tanto algoritmos conocidos como diseño y análisis de algoritmos), cierta fortaleza en álgebra lineal y tal vez algún cálculo. Al contratar a un ingeniero de software en el pasado, no me preocupaba tanto su conocimiento de dominio específico como su capacidad para resolver problemas complejos.

Desarrollador de aplicaciones web : alguien que conoce los entresijos de la creación de aplicaciones web. Comprende las arquitecturas del servidor frente al cliente y cómo comunicarse efectivamente entre los dos. Está familiarizado con los estándares W3C, tanto los completados como los estados WIP. Comprende cómo funcionan las bases de datos y cómo optimizarlas cuando sea necesario (optimización de consultas, almacenamiento en caché de bases de datos, indexación, etc.). También comprenda los diferentes mecanismos de almacenamiento en caché y otras formas de optimizar sus aplicaciones. También comprende las convenciones semánticas.

Probablemente hay algunas cosas que me faltan y que podría completar mientras pienso en ellas.

Por la descripción de lo que está buscando, me parece que no está buscando un ingeniero de software; Estás buscando un desarrollador de aplicaciones web.

Entonces, lo primero que haría es reducir a quién está buscando y qué experiencia espera de un candidato. Podría ayudarte un poco.

Demian Brecht
fuente
Consulte programmers.stackexchange.com/questions/45681/… : redacción de un requisito de trabajo para un desarrollador de aplicaciones web. De ahí viene el nombre. Quiero que un desarrollador de aplicaciones web trabaje exclusivamente en el extremo del navegador (como ya dije). Así que no hay nada de DB relevante. Habilidades de ingeniería de software serían.
psr
De Verdad? ¿Desea que alguien trabaje en un sistema web que no entienda la base de datos y las cosas del lado del servidor? Eesh
Demian Brecht
Sin mencionar ... No es muy frecuente que un desarrollador de aplicaciones web del lado del cliente necesite saber esto como atravesar primero la amplitud de un árbol, o cómo determinar cuál es el peor tiempo de ejecución para un algoritmo o implementación dado Un criptosistema. Solo digo. Dicho esto, si está contratando para Google o Amazon, puedo retirar ese comentario.
Demian Brecht