Como escolher um engenheiro de software de aplicativo da web? [fechadas]

10

Como devo escolher um engenheiro de software de aplicativo da web?

A posição (permanente) é reescrever o cliente de um aplicativo existente de servidor cliente de desktop. As páginas não serão geradas dinamicamente em um servidor, mas o servidor exporá uma API completa da maneira que for necessária, por exemplo, chamadas JSON RPC e pode disponibilizar arquivos estáticos. Ele substituirá um cliente que as pessoas precisam baixar e instalar, portanto, é bom exigir um navegador decente com configurações razoáveis ​​(por exemplo, JavaScript ativado). Quase todos os casos de uso são para um PC de mesa. Não será acessível aos mecanismos de pesquisa (é um aplicativo corporativo).

Podemos chegar ao ponto de escrever a coisa toda em uma única página, mas não precisamos. Tudo seria escrito pelo engenheiro de software de aplicativos da web em questão. As bibliotecas de código aberto exatas a serem usadas também dependem do engenheiro, dentro do razoável.

Estou procurando especificamente conselhos sobre quais qualificações procurar / verificar em uma entrevista, pois escolher um engenheiro de software de aplicativos da web em geral é um tópico muito amplo.

Editar - A posição seria puramente programação JavaScript no navegador (e seria responsável por HTML e CSS) - outros desenvolvedores desenvolveriam o servidor, mas essa posição poderia solicitar fachadas na API. Não há Ruby, ASP, JSP, etc. porque a camada do servidor da Web é muito fina e apenas converte chamadas para a API da camada de negócios e as retorna como JSON (ou qualquer outra coisa, mas o JSON parece mais fácil).

psr
fonte
Para sua informação, não é uma duplicata do programmers.stackexchange.com/questions/105114/… , que era bastante específico para sites de comércio eletrônico e perguntava mais especificamente se a pergunta principal deveria ser: "Você está sozinho ou com um ou dois parceiros, já trouxeram um produto ao mercado? Não me importo se foi bem-sucedido ou falhou, mas me fale sobre isso.
psr
Corrigi o título na pergunta que você vinculou, pois a pergunta que está sendo feita é bastante específica. Infelizmente, este não é. Do FAQ : Suas perguntas devem ter um escopo razoável. Se você pode imaginar um livro inteiro que responda à sua pergunta, está pedindo demais.
Robert Harvey
Se eu limitá-lo a este caso, não é geralmente útil?
psr
Qual é a sua preocupação mais urgente? Eu posso lhe dar generalizações, como não se preocupe demais com o que a pessoa tem no currículo. Com base na posição que você descreveu, eles precisam ser um solucionador de problemas e um pouco de tudo que entende mais do que apenas criar aplicativos CRUD. Se eles tiverem essas qualidades, poderão lidar com os problemas específicos da tecnologia que você apresenta a eles. Depende também de se tratar de uma posição permanente, em tempo integral ou de um contrato temporário.
Robert Harvey
Realmente, como contratar um engenheiro de software de aplicativo da web. Especificamente, suponho que qualificações procurar / testar na entrevista
psr

Respostas:

2

Como desenvolvedor da Web, que trabalha principalmente em aplicativos corporativos que lidam com sistemas legados, posso oferecer algumas sugestões sobre o que me faz ter sucesso e espero que isso ajude.

Não tenho certeza se você está procurando uma situação temporária / de consultoria para fornecer um aplicativo ou um ETI para desenvolver e manter isso a longo prazo, mas isso deve se aplicar nos dois casos, eu acho.

  • Eu uso principalmente Ruby. Isso torna a prototipagem rápida muito rápida e fácil, e o Rails simplifica a inicialização de um novo projeto. Agora, eu não sei como é o seu ambiente, se você possui mandatos institucionais em linguagens, plataformas, ferramentas, mas se você pode contratar um desenvolvedor que seja proficiente em uma linguagem / estrutura moderna e flexível que faça com que as DSLs de escrita lidem com API estrangeira é relativamente rápida e fácil, isso é uma vantagem. Basicamente, qualquer um dos idiomas com a natureza Lisp será superior nesse aspecto. Além disso, é obrigatório contratar alguém com proficiência em uma linguagem com bom ecossistema de bibliotecas de código aberto para lidar com abstrações comuns.
  • Se você encontrar alguém acostumado a lidar com sistemas legados e abstrair suas idiossincrasias, isso é raro e você deve explorá-lo. A maioria dos desenvolvedores está acostumada a criar projetos desde o início (ou ser contratada para manter projetos existentes) e criar algo novo para interagir com algo antigo exige uma certa ... não um conjunto de habilidades, por si só, mas uma abordagem.
  • Quando você diz "o servidor expõe uma API da maneira que for necessária", isso é bastante vago, mas acho que você quer dizer que existem desenvolvedores existentes que podem implementar a API no servidor? Eu deixaria claro que a posição envolverá o trabalho com esses desenvolvedores para especificar a API. Se você pode dar um exemplo do tipo de interação necessária e perguntar ao candidato seus pensamentos iniciais sobre como implementá-la, isso pode ser revelador. Acho que o fato de seu pensamento inicial ter sido JSON RPC mostra que você está na direção certa; portanto, esteja atento a qualquer pessoa que tenha visões de complexas interações XML e XSLT.
  • Se você pode esperar um suporte decente ao JavaScript do navegador, procure alguém com experiência em estruturas JS como Backbone.js, JavaScriptMVC, etc. Nesse caso, você pode fazer o aplicativo inteiro (basicamente) no navegador e talvez servi-lo com Node.js ou algo assim. ... então procure bons desenvolvedores JS. Se eles dizem que preferem escrever seus JS no CoffeeScript, provavelmente são desenvolvedores JS ainda melhores.

Apenas algumas reflexões da minha experiência nas trincheiras, mas se meu departamento estivesse contratando um novo desenvolvedor, é isso que eu diria a eles para procurar.

Gostaria que meu departamento tivesse o orçamento para outro desenvolvedor ...

Jason Lewis
fonte
O servidor existe e outros desenvolvedores (que não o novo desenvolvedor) farão a API acontecer. Não tocará no sistema legado nem será responsável por idiossincrasias - outros farão isso, embora esse desenvolvedor possa solicitar uma fachada específica. Sem rubi, porque não há páginas geradas dinamicamente - e esse desenvolvedor seria pura codificação JavaScript no navegador (responsável também por HTML e CSS). Se no final das contas não contratarmos outro desenvolvedor, eu mesmo o farei no Backbone.js usando JSON RPC, então, obrigado por uma pequena validação.
psr
1

Nota: Esta é simplesmente a minha opinião, então não jogue a pia da cozinha em mim;)

Eu acho que você está trocando os nomes de duas posições distintas (o que pode ser um pouco confuso).

Engenheiro de software : Um engenheiro. Alguém que é forte em resolver problemas abstratos que não estão necessariamente ligados a nenhuma plataforma específica. Forte conhecimento de padrões de projeto, algoritmos (ambos algoritmos conhecidos, bem como design e análise de algoritmos), alguma força na álgebra linear e talvez algum cálculo. Ao contratar um engenheiro de software no passado, não me preocupei tanto com o conhecimento específico do domínio quanto com a capacidade de resolver problemas complexos.

Desenvolvedor de aplicativos da Web : alguém que conhece os meandros da criação de aplicativos da Web. Entende as arquiteturas servidor versus lado do cliente e como se comunicar efetivamente entre os dois. Está familiarizado com os padrões W3C, ambos concluídos e estados WIP. Entende como os bancos de dados funcionam e como otimizar quando necessário (otimização de consultas, cache do banco de dados, indexação etc.). Entenda também diferentes mecanismos de armazenamento em cache e outras maneiras de otimizar seus aplicativos. Também compreende convenções semânticas.

Provavelmente há algumas coisas que estou perdendo que eu poderia preencher quando penso nelas.

Pela descrição do que você está procurando, parece-me que você não está procurando um engenheiro de software; você está procurando um desenvolvedor de aplicativos da web.

Então, a primeira coisa que eu faria é restringir quem você está procurando e qual experiência você espera de um candidato. Pode ajudá-lo um pouco.

Demian Brecht
fonte
Consulte programmers.stackexchange.com/questions/45681/… - escrevendo um requisito de trabalho para um desenvolvedor de aplicativos da web. É daí que o nome é. Quero que um desenvolvedor de aplicativos da Web trabalhe exclusivamente no final do navegador (como já afirmei). Portanto, nenhum material de banco de dados é relevante. As habilidades de engenharia de software seriam.
psr
Realmente? Você gostaria de alguém trabalhando em um sistema web que não entenda o banco de dados e as coisas do lado do servidor? Eesh.
Demian Brecht
Sem mencionar .. Não é muito frequente que um desenvolvedor de aplicativos Web do lado do cliente precise saber disso, como percorrer a largura de uma árvore primeiro ou determinar como o pior caso de tempo de execução é para um determinado algoritmo ou implementação um sistema de criptografia. Apenas dizendo. Dito isto, se você estiver contratando para o Google ou a Amazon, posso retirar esse comentário.
Demian Brecht