Wie wähle ich einen Webanwendungssoftware-Ingenieur aus? [geschlossen]

10

Wie soll ich einen Webanwendungssoftware-Ingenieur auswählen?

Die (permanente) Position besteht darin, den Client einer vorhandenen Desktop-Client-Server-Anwendung neu zu schreiben. Die Seiten werden nicht dynamisch auf einem Server generiert, aber der Server stellt eine vollständige API in der erforderlichen Weise zur Verfügung, z. B. JSON-RPC-Aufrufe, und kann statische Dateien verfügbar machen. Es ersetzt einen Client, den Benutzer herunterladen und installieren müssen. Daher ist es in Ordnung, einen anständigen Browser mit angemessenen Einstellungen (z. B. aktiviertes JavaScript) zu benötigen. Fast alle Anwendungsfälle beziehen sich auf einen Desktop-PC. Suchmaschinen können nicht darauf zugreifen (es handelt sich um eine Unternehmensanwendung).

Wir können so weit gehen, das Ganze auf einer einzigen Seite zu schreiben, müssen es aber nicht. Es würde so ziemlich alles von dem fraglichen Webanwendungssoftware-Ingenieur geschrieben werden. Die genauen zu verwendenden Open-Source-Bibliotheken liegen im Rahmen des Zumutbaren auch beim Ingenieur.

Ich suche speziell nach Ratschlägen, welche Qualifikationen in einem Interview gesucht / verifiziert werden müssen, da die Auswahl eines Webanwendungssoftware-Ingenieurs im Allgemeinen ein zu weit gefasstes Thema ist.

Bearbeiten - Die Position wäre eine reine JavaScript-Programmierung im Browser (und für HTML und CSS verantwortlich). Andere Entwickler würden den Server entwickeln, aber diese Position könnte Fassaden über die API anfordern. Es gibt kein Ruby, ASP, JSP usw., da die Webserverschicht sehr dünn ist und nur Aufrufe an die Business-Layer-API übersetzt und als JSON zurückgibt (oder was auch immer, aber JSON scheint am einfachsten zu sein).

psr
quelle
Zu Ihrer Information - Dies ist kein Duplikat von programmers.stackexchange.com/questions/105114/… , das ziemlich spezifisch für E-Commerce-Websites war und genauer fragte, ob die Schlüsselfrage lauten sollte: "Haben Sie es selbst oder mit einem oder zwei Partner, die jemals ein Produkt auf den Markt gebracht haben? Es ist mir egal, ob es erfolgreich war oder nicht, aber erzähl mir davon. "
PSR
Ich habe den Titel in der von Ihnen verlinkten Frage korrigiert, da die gestellte Frage sehr spezifisch ist. Leider ist dies nicht der Fall. Aus der FAQ : Ihre Fragen sollten angemessen sein. Wenn Sie sich ein ganzes Buch vorstellen können, das Ihre Frage beantwortet, fragen Sie zu viel.
Robert Harvey
Wenn ich es auf diesen Fall beschränke, ist es dann nicht allgemein nützlich?
PSR
Was ist Ihr dringlichstes Anliegen? Ich kann Ihnen Verallgemeinerungen geben, zum Beispiel, dass Sie nicht übermäßig besorgt darüber sind, welche TLAs die Person in ihrem Lebenslauf hat. Basierend auf der von Ihnen beschriebenen Position müssen sie ein Problemlöser und ein Alleskönner sein, der mehr versteht als nur das Erstellen von CRUD-Apps. Wenn sie diese Eigenschaften haben, können sie die technologie-spezifischen Probleme bewältigen, die Sie ihnen stellen. Es hängt auch davon ab, ob es sich um eine laufende Vollzeitstelle oder einen befristeten Vertrag handelt.
Robert Harvey
Wirklich, wie man einen Webanwendungssoftware-Ingenieur anstellt. Insbesondere nehme ich an, welche Qualifikationen im Interview zu suchen / zu testen sind
psr

Antworten:

2

Als Webentwickler, der hauptsächlich an Unternehmensanwendungen arbeitet, die sich mit Legacy-Systemen befassen, kann ich einige Vorschläge machen, was mich erfolgreich macht, und hoffentlich hilft das.

Ich bin mir nicht sicher, ob Sie nach einer vorübergehenden / beratenden Situation suchen, um Ihnen eine App zur Verfügung zu stellen, oder nach einer Vollzeitstelle, um diese langfristig zu entwickeln und aufrechtzuerhalten, aber diese sollten in beiden Fällen zutreffen, denke ich.

  • Ich benutze hauptsächlich Ruby. Dies macht Rapid Prototyping sehr schnell und einfach, und Rails macht es einfach, ein neues Projekt zu booten. Jetzt weiß ich nicht, wie Ihre Umgebung aussieht, ob Sie institutionelle Mandate für Sprachen, Plattformen und Tools haben, aber ob Sie einen Entwickler einstellen können, der sich mit einer modernen, flexiblen Sprache / einem modernen Framework auskennt, mit dem DSLs geschrieben werden müssen fremde APIs sind relativ schnell und einfach, das ist ein Plus. Grundsätzlich ist jede der Sprachen mit der Lisp-Natur in dieser Hinsicht überlegen. Es ist auch ein Muss, jemanden einzustellen, der eine Sprache mit einem guten Ökosystem von Open-Source-Bibliotheken beherrscht, um mit allgemeinen Abstraktionen umzugehen.
  • Wenn Sie jemanden finden, der es gewohnt ist, mit Legacy-Systemen umzugehen und deren Eigenheiten zu abstrahieren, ist dies selten und Sie sollten es untersuchen. Die meisten Entwickler sind es gewohnt, Projekte von Grund auf zu erstellen (oder dazu zu bringen, bestehende Projekte zu warten), und etwas Neues zu bauen, um mit etwas Altem in Verbindung zu treten, erfordert eine gewisse ... nicht die Fähigkeit an sich, sondern den Ansatz.
  • Wenn Sie sagen "Der Server wird eine API auf die erforderliche Weise verfügbar machen", ist das ziemlich vage, aber ich vermute, Sie meinen, es gibt bereits Entwickler, die die API auf dem Server implementieren können? Ich möchte klarstellen, dass die Position die Zusammenarbeit mit diesen Entwicklern zur Angabe der API beinhalten wird. Wenn Sie ein Beispiel für die Art der erforderlichen Interaktion geben und den Kandidaten nach seinen ersten Gedanken zur Implementierung fragen können, ist dies möglicherweise hilfreich. Ich denke, die Tatsache, dass Ihr erster Gedanke JSON RPC war, zeigt, dass Sie sich in die richtige Richtung neigen. Achten Sie also auf alle, die Visionen von komplexen XML- und XSLT-Interaktionen haben.
  • Wenn Sie eine anständige JavaScript-Unterstützung für Browser erwarten können, suchen Sie jemanden, der Erfahrung mit JS-Frameworks wie Backbone.js, JavaScriptMVC usw. hat. In diesem Fall können Sie die gesamte App (im Grunde genommen) im Browser ausführen und sie möglicherweise mit Node.js oder Ähnlichem bereitstellen ... schauen Sie also auf gute JS-Entwickler. Wenn sie sagen, dass sie es vorziehen, ihre JS in CoffeeScript zu schreiben, sind sie wahrscheinlich noch bessere JS-Entwickler.

Nur ein paar Gedanken aus meiner Erfahrung in den Gräben, aber wenn meine Abteilung einen neuen Entwickler einstellen würde, würde ich ihnen sagen, dass sie danach suchen sollen.

Ich wünschte, meine Abteilung hätte das Budget für einen anderen Entwickler ...

Jason Lewis
quelle
Der Server ist vorhanden und andere Entwickler (als der neue Entwickler) werden die API ausführen. Wird das Legacy-System nicht berühren oder für Eigenheiten verantwortlich sein - andere werden das tun, obwohl dieser Entwickler nach einer bestimmten Fassade fragen könnte. Kein Rubin, weil keine dynamisch generierten Seiten - und dieser Entwickler wäre reine JavaScript-Codierung im Browser (verantwortlich für HTML und CSS). Wenn wir letztendlich keinen anderen Entwickler einstellen, werde ich dies in Backbone.js mithilfe von JSON RPC selbst tun. Vielen Dank für eine kleine Validierung.
PSR
1

Hinweis: Dies ist einfach meine Meinung, also wirf das Spülbecken nicht auf mich;)

Ich denke, Sie mischen die Namen von zwei deutlich unterschiedlichen Positionen (was etwas verwirrend sein kann).

Software Engineer : Ein Ingenieur. Einer, der stark darin ist, abstrakte Probleme zu lösen, die nicht unbedingt an eine bestimmte Plattform gebunden sind. Fundierte Kenntnisse über Entwurfsmuster, Algorithmen (sowohl bekannte Algorithmen als auch Algorithmusentwurf und -analyse), einige Stärken in der linearen Algebra und möglicherweise einige Berechnungen. Bei der Einstellung eines Softwareentwicklers in der Vergangenheit war ich nicht so besorgt über deren spezifisches Domänenwissen wie über ihre Fähigkeit, komplexe Probleme zu lösen.

Webanwendungsentwickler : Jemand, der die Vor- und Nachteile des Erstellens von Webanwendungen kennt. Versteht Server- und clientseitige Architekturen und wie man effektiv zwischen beiden kommuniziert. Ist mit den W3C-Standards vertraut, sowohl den abgeschlossenen als auch den WIP-Status. Versteht, wie Datenbanken funktionieren und wie sie bei Bedarf optimiert werden können (Abfrageoptimierung, Datenbank-Caching, Indizierung usw.). Verstehen Sie auch verschiedene Mechanismen des Caching und andere Möglichkeiten zur Optimierung ihrer Anwendungen. Versteht auch semantische Konventionen.

Es gibt wahrscheinlich ein paar Dinge, die mir fehlen und die ich ausfüllen könnte, wenn ich an sie denke.

Aus der Beschreibung dessen, wonach Sie suchen, geht hervor, dass Sie überhaupt keinen Software-Ingenieur suchen. Sie suchen einen Webanwendungsentwickler.

Als erstes würde ich eingrenzen, wen Sie suchen und welches Fachwissen Sie von einem Kandidaten erwarten. Könnte dir ziemlich helfen.

Demian Brecht
quelle
Siehe programmers.stackexchange.com/questions/45681/… - Schreiben einer Jobanforderung für einen Webanwendungsentwickler. Daher kommt der Name. Ich möchte, dass ein Webanwendungsentwickler nur am Ende des Browsers arbeitet (wie ich bereits sagte). Es ist also kein DB-Zeug relevant. Software-Engineering-Fähigkeiten wären.
PSR
"Ja wirklich?" Sie möchten, dass jemand an einem Websystem arbeitet, das datenbank- und serverseitige Inhalte nicht versteht? Eesh.
Demian Brecht
Ganz zu schweigen davon. Es kommt nicht allzu oft vor, dass ein clientseitiger Web-App-Entwickler wissen muss, wie man zuerst eine Baumbreite durchquert oder wie man die schlechteste Laufzeit für einen bestimmten Algorithmus oder ein bestimmtes Gerät ermittelt ein Kryptosystem. Nur sagen. Wenn Sie jedoch für Google oder Amazon einstellen, kann ich diese Bemerkung zurückziehen.
Demian Brecht