Come scegliere un ingegnere del software di applicazioni web? [chiuso]


10

Come dovrei scegliere un ingegnere del software di applicazioni web?

La posizione (permanente) è di riscrivere il client di un'applicazione server client desktop esistente. Le pagine non verranno generate dinamicamente su un server, ma il server esporrà un'API completa in qualsiasi modo sia necessario, ad esempio chiamate RPC JSON, e può rendere disponibili file statici. Sostituirà un client che le persone devono scaricare e installare, quindi richiedere un browser decente con impostazioni ragionevoli (ad esempio JavaScript abilitato) va bene. Quasi tutti i casi d'uso sono per un PC desktop. Non sarà accessibile ai motori di ricerca (è un'applicazione aziendale).

Possiamo arrivare al punto di scrivere tutto in un'unica pagina, ma non è necessario. Praticamente sarebbe tutto scritto dall'ingegnere software dell'applicazione web in questione. Le esatte librerie open source da utilizzare dipendono anche dall'ingegnere, entro limiti ragionevoli.

In particolare cerco consigli su quali qualifiche cercare / verificare in un'intervista, dal momento che la scelta di un ingegnere del software di applicazione web in generale è un argomento troppo vasto.

Modifica: la posizione sarebbe una programmazione JavaScript nel browser (ed è responsabile per HTML e CSS); altri sviluppatori svilupperebbero il server ma questa posizione potrebbe richiedere facciate sull'API. Non esiste Ruby, ASP, JSP, ecc. Perché il livello del server Web è molto sottile e traduce semplicemente le chiamate all'API del livello aziendale e le restituisce come JSON (o qualsiasi altra cosa, ma JSON sembra più semplice).


Cordiali saluti - Questo non è un duplicato di programmers.stackexchange.com/questions/105114/… , che era abbastanza specifico per i siti di e-commerce e in particolare chiedeva se la domanda chiave dovesse essere: "Hai da solo, o con uno o due partner, hai mai portato un prodotto sul mercato? Non mi importa se è riuscito o meno, ma dimmelo. "
psr

Ho corretto il titolo nella domanda che hai collegato, poiché la domanda che ti viene posta è abbastanza specifica. Sfortunatamente, questo non lo è. Dalla FAQ : Le vostre domande dovrebbero essere ragionevolmente scope. Se riesci a immaginare un intero libro che risponda alla tua domanda, stai chiedendo troppo.
Robert Harvey,

Se lo limito a questo caso, non è generalmente utile?
psr

Qual è la tua preoccupazione più urgente? Posso darti generalizzazioni, come se non ti preoccupare eccessivamente di ciò che TLA ha la persona nel suo CV. In base alla posizione che hai descritto, devono essere un risolutore di problemi e un po 'un tuttofare che capisce di più della semplice creazione di app CRUD. Se hanno queste qualità, sono in grado di gestire i problemi specifici della tecnologia che ci si rivolge. Dipende anche se si tratta di una posizione permanente, a tempo pieno o di un contratto temporaneo.
Robert Harvey,

Davvero, come assumere un ingegnere software per applicazioni web. In particolare, suppongo che qualifiche cercare / testare nell'intervista
psr

Risposte:


2

Come sviluppatore web che lavora principalmente su app aziendali che si occupano di sistemi legacy, posso offrire alcuni suggerimenti su ciò che mi rende vincente e, si spera, che possa essere d'aiuto.

Non sono sicuro se stai cercando una situazione temporanea / di consulenza per fornirti un'app o un ETP per sviluppare e mantenere questo a lungo termine, ma questi dovrebbero applicarsi in entrambi i casi, penso.

  • Uso principalmente Ruby. Ciò rende la prototipazione rapida molto rapida e semplice e Rails semplifica l'avvio di un nuovo progetto. Ora, non so come sia il tuo ambiente, se hai mandati istituzionali riguardo linguaggi, piattaforme, strumenti, ma se puoi assumere uno sviluppatore che è esperto in un linguaggio / framework moderno e flessibile che rende la scrittura di DSL da affrontare le API straniere sono relativamente facili e veloci, questo è un vantaggio. Fondamentalmente, qualsiasi delle lingue con la natura di Lisp sarà superiore in questo senso. Inoltre, è necessario assumere qualcuno che abbia una conoscenza approfondita di una lingua con un buon ecosistema di librerie open source per gestire le astrazioni comuni.
  • Se riesci a trovare qualcuno abituato a gestire i sistemi legacy e ad astrarre le loro idiosincrasie, è raro e dovresti esplorarlo. La maggior parte degli sviluppatori sono abituati a costruire progetti da zero (o essere coinvolti per mantenere progetti esistenti) e costruire qualcosa di nuovo per interfacciarsi con qualcosa di vecchio richiede un certo ... non set di abilità, di per sé, ma approccio.
  • Quando dici "il server esporrà un'API in qualunque modo sia necessario" è piuttosto vago, ma suppongo che intendi dire che ci sono sviluppatori esistenti che possono implementare l'API sul server? Vorrei chiarire che la posizione implicherà lavorare con quegli sviluppatori per specificare l'API. Se puoi dare un esempio del tipo di interazione richiesta e chiedere al candidato i suoi pensieri iniziali su come implementarlo, questo potrebbe essere utile. Penso che il fatto che il tuo pensiero iniziale sia stato JSON RPC dimostra che ti stai inclinando nella giusta direzione, quindi fai attenzione a chiunque abbia visioni di interazioni XML e XSLT complesse.
  • Se puoi aspettarti un supporto JavaScript del browser decente, cerca qualcuno con esperienza con framework JS come Backbone.js, JavaScriptMVC, ecc. In tal caso, potresti fare l'intera app (praticamente) nel browser e magari servirla con Node.js o qualcosa del genere ... quindi guarda verso i bravi sviluppatori di JS. Se dicono che preferiscono scrivere il loro JS in CoffeeScript, sono probabilmente sviluppatori JS ancora migliori.

Solo alcuni pensieri della mia esperienza nelle trincee, ma se il mio dipartimento assumesse un nuovo sviluppatore, questo è quello che direi loro di cercare.

Vorrei che il mio dipartimento avesse il budget per un altro sviluppatore ...


Il server esiste e altri sviluppatori (oltre al nuovo sviluppatore) faranno accadere l'API. Non toccherà il sistema legacy o sarà responsabile di idiosincrasie - altri lo faranno, anche se questo sviluppatore potrebbe richiedere una facciata specifica. Nessun rubino, perché nessuna pagina generata dinamicamente - e questo sviluppatore sarebbe puro codice JavaScript nel browser (responsabile anche di HTML e CSS). Se alla fine non assumiamo un altro sviluppatore, lo farò da solo in Backbone.js usando JSON RPC, quindi grazie per una piccola convalida.
psr

1

Nota: questa è semplicemente la mia opinione, quindi non gettarmi il lavandino della cucina;)

Penso che tu stia confondendo i nomi di due posizioni nettamente diverse (che possono essere un po 'confuse).

Software Engineer : un ingegnere. Uno che è forte nel risolvere problemi astratti che non sono necessariamente legati a nessuna piattaforma specifica. Conoscenza forte di modelli di progettazione, algoritmi (entrambi algoritmi noti, nonché progettazione e analisi di algoritmi), un po 'di forza nell'algebra lineare e forse un po' di calcolo. Quando ho assunto un ingegnere del software in passato, non sono stato così preoccupato per la loro conoscenza specifica del dominio quanto la loro capacità di risolvere problemi complessi.

Sviluppatore di applicazioni Web : qualcuno che conosce i dettagli della creazione di applicazioni Web. Comprende le architetture lato server e lato client e come comunicare efficacemente tra i due. Conosce gli standard W3C, sia completi che WIP. Comprende come funzionano i database e come ottimizzare quando necessario (ottimizzazione delle query, memorizzazione nella cache del database, indicizzazione, ecc.). Comprendi anche i diversi meccanismi di memorizzazione nella cache e altri modi per ottimizzare le loro applicazioni. Comprende anche le convenzioni semantiche.

Probabilmente ci sono alcune cose che mi mancano che potrei compilare mentre penso a loro.

Dalla descrizione di ciò che stai cercando, mi sembra che tu non stia affatto cercando un ingegnere del software; stai cercando uno sviluppatore di applicazioni web.

Quindi, la prima cosa che vorrei fare è limitare chi stai cercando e quale competenza ti aspetti da un candidato. Potrebbe aiutarti un po '.


Vedi programmers.stackexchange.com/questions/45681/… - scrivere un requisito di lavoro per uno sviluppatore di applicazioni web. Ecco da dove viene il nome. Voglio che uno sviluppatore di applicazioni web lavori esclusivamente alla fine del browser (come ho già detto). Quindi nessuna roba DB è rilevante. Le abilità di ingegneria del software sarebbero.
psr

Veramente? Vorresti qualcuno che lavora su un sistema web che non capisce il database e le cose sul lato server ?? I dipendenti seguono.
Demian Brecht,

Per non parlare .. Non è troppo frequente che uno sviluppatore di app Web sul lato client debba saperlo, ad esempio come attraversare prima un albero o come determinare quale sia il peggior tempo di esecuzione di un determinato algoritmo o attrezzo un sistema crittografico. Sto solo dicendo. Detto questo, se stai assumendo Google o Amazon, potrei ritirare tale osservazione.
Demian Brecht,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.