Sollte ich nach Entwicklern mit bestimmten Fähigkeiten oder Generalisten suchen, die lernen müssen? [geschlossen]

8

Dank der großen Hilfe dieser Website und von SO konnte ich einen Prototyp einer Software erstellen, die ich verkaufen möchte, aber leider denke ich, dass meine Codequalität sehr niedrig ist, obwohl der Prototyp funktioniert. Ich habe nicht viel OOP oder Designmuster verwendet. Obwohl mein Code für mich verständlich ist, denke ich, dass ein normaler Entwickler in Ohnmacht fallen würde, wenn er ihn lesen müsste.

Deshalb wollte ich einen Entwickler einstellen, um die Qualität zu verbessern und einige meiner Implementierungen von APIs zu verbessern, die ich möglicherweise nicht richtig ausgeführt habe. Ich habe jedoch Probleme, einen Entwickler einzustellen.

Ich habe zwei Entwickler getroffen und sie meine Softwarespezifikationen lesen lassen. Das Problem ist, dass ihnen das Domänenwissen meines Unternehmens fehlte (was völlig verständlich und kein Problem ist), aber ihnen fehlte auch das Wissen über die zugrunde liegenden technischen Systeme, die ich verwendet habe, wie Hadoop, Hbase, Cuda, etc..Ich habe viel Zeit damit verbracht, Map / Reduce, Bigtables und andere Technologien zu erklären, die ich verwendet habe. Ich dachte, es sei allgemein bekannt, weil ich mit Leuten auf dieser Seite interagierte, aber die Leute, mit denen ich mich traf, erwähnten, dass sie sich nie mit diesen Dingen befassen mussten, also wussten sie es nicht.

Meine Frage ist, ob es für Softwareprojekte, die Entwickler von Auftragnehmern einstellen, eine Gefahr darstellt, wenn der Entwickler keine Erfahrung mit den zugrunde liegenden Technologien hat. oder kann ein allgemeiner Entwickler, der in einem anderen Bereich erfolgreich ist, neue Technologien realistisch aufgreifen? Ich habe die Umschlagberechnung sehr schnell durchgeführt und denke, dass die Vorabkosten ähnlich wären, wenn ich einen Studenten oder Entwickler ohne Erfahrung in meinen Technologien einstellen würde, der viele Stunden arbeiten wird, anstatt einen erfahrenen Entwickler einzustellen, der das Doppelte berechnet, aber die Hälfte erreicht die Zeit, aber über welche anderen Risiken sollte ich nachdenken oder mir Sorgen machen? Sollte ich einen Generalisten einstellen, sollte ich auch für die Zeit bezahlen, die sie benötigen, um Hadoop oder Cuda zu lernen, wenn sie Auftragnehmer sind (scheint geschäftlich sinnvoll zu sein, ist sich aber nicht sicher, wie fair es für sie ist, wenn sie das nicht verwenden Fähigkeit wieder).

Ich bin ein bisschen verwirrt, daher wären alle Vorschläge großartig.

Verlorene Seele
quelle
1
"Oder kann ein allgemeiner Entwickler, der in einem anderen Bereich erfolgreich ist, neue Technologien realistisch aufgreifen?" Natürlich hätte sich sonst keine neue Technologie seit Jahrzehnten jemals durchgesetzt.
DarenW
6
I think a normal developer would faint if they had to read it- Das ist etwas Ehrlichkeit genau dort.
Joel Etherton
Welche Programmiersprache?
GlenPeterson
1
"Hadoop, Hbase, Cuda usw. Ich dachte, es wäre allgemein bekannt" ... Ich bin überrascht, dass Sie das glauben. Ich kann mich irren. Ich wäre mehr überrascht, wenn ich es wäre.
NoChance
1
Entwickler, die die Neigung haben, "nach Feierabend" zu arbeiten, tun dies zu ihren eigenen Bedingungen - normalerweise arbeiten sie mit Kollegen an Haustierprojekten - und haben fast immer eine geringe Toleranz für schlechten Code und Nicht-Programmierer, die programmieren. Es ist, als würde man einen Mechaniker bitten, vorbeizukommen (nachdem sein 9-5-Job beendet ist) und dabei zu helfen, das Auto wieder zusammenzubauen, nachdem Sie am Wochenende einige Reparaturen versucht haben.
Mattnz

Antworten:

19

Ist es eine Gefahr, wenn der Entwickler keine Erfahrung mit den zugrunde liegenden Technologien hat?

Ja. (Lernen braucht Zeit und Fehler zu machen ist oft Teil des Prozesses.)

oder kann ein allgemeiner Entwickler, der in einem anderen Bereich erfolgreich ist, neue Technologien realistisch aufgreifen?

Ja. (Das Aufnehmen neuer Technologien ist etwas, was Generalisten ständig tun. Als Programmierer halten Sie nicht lange durch, wenn Sie keine neuen Dinge lernen können.)

Ich denke, die Vorabkosten wären ähnlich, wenn ich einen Studenten oder Entwickler ohne Erfahrung in meinen Technologien einstellen würde, der viele Stunden arbeiten wird, anstatt einen erfahrenen Entwickler einzustellen, der das Doppelte berechnet, aber in der Hälfte der Zeit fertig ist

Beachten Sie, dass es einen großen Unterschied zwischen "Keine Erfahrung mit Technologie X" und "Keine Erfahrung, Punkt" gibt. Es ist eine Sache, ein neues Framework oder eine neue Sprache lernen zu müssen, und eine ganz andere Sache, um Ihren ersten Job als Entwickler zu beginnen und nicht jemanden mit etwas Erfahrung zu haben, der Sie in die richtige Richtung weist.

Welche anderen Risiken sollte ich in Betracht ziehen oder mir Sorgen machen?

Entscheidungen, die während des Entwurfs- und Entwicklungsprozesses getroffen werden, können später schwierig und / oder teuer zu ändern sein. Ein intelligenter, erfahrener Entwickler kann Ihnen viel mehr als nur Entwicklungsstunden sparen. Auf der anderen Seite kann jemand, der wirklich gut darin ist, was er tut, entsprechend aufladen.

Ich bin ein bisschen verwirrt, daher wären alle Vorschläge großartig.

Vielleicht hilft Joel Spolskys Artikel: Der Guerilla-Leitfaden für Interviews . Kurz gesagt, Joel sagt, er suche nach zwei Dingen: 1) klug, 2) erledigt Dinge. Darüber hinaus würde ich vorschlagen, jemanden zu suchen, mit dem Sie zusammenarbeiten können und der versteht, was Sie erreichen wollen, und mit Ihnen darauf hinzuarbeiten.

Caleb
quelle
4

Ich denke, wenn ein Anfänger in der doppelten Zeit genau das Gleiche zum halben Preis tun kann, klappt alles. Realistisch gesehen wird es Probleme geben, die Ihr Anfänger nicht lösen wird, und Fallstricke, die er nicht vermeiden kann. Ich glaube nicht, dass Sie einen ähnlichen Code erhalten. Sie werden am Ende Ihre Erwartungen senken.

Dies ist eher der Fall, wenn es um Design geht. Zahlen Sie die zusätzliche Gebühr für den erfahrenen Entwickler, um am Design zu arbeiten. Sie können den Anfänger verwenden, um beim Codierungsvolumen zu helfen, wenn Sie der Meinung sind, dass dies kostengünstig ist.

JeffO
quelle
3

Ja. Beide.

Im Idealfall könnten Sie jemanden in der Mitte finden, der ein Bein hoch braucht, aber nicht für jemanden, der sie mit technischen oder Domänenkenntnissen weiterbringt. Viele Kräfte wirken sich jedoch auf das Personalproblem aus, das Sie lösen möchten.

Warum gibt es einen Mangel an Domain-Fähigkeiten?

Entwickler sind eine Wandergruppe, die je nach Marktanforderungen von Anwendungsdomäne zu Anwendungsdomäne wechselt. Wenn etwas heiß ist, werden zehn oder vielleicht hundert oder sogar tausend Unternehmen es verfolgen, bis der Wettbewerb alle bis auf eine Handvoll Spieler vom Markt verdrängt. Folglich sind Anreize für Entwickler, tief in Ihr Business-Domain-Wissen einzusteigen, zip. Wenn Sie etwas ziemlich Neues tun, werden Sie keine anderen mit Domänenkenntnissen finden. Wenn Sie Konkurrenten oder insbesondere Ex-Konkurrenten haben, sollten Sie Ihre Suche nach Domain-Erfahrung nicht aufgeben müssen.

Wenn Sie einen Hot-Shot-Entwickler einstellen, ist dieser möglicherweise am meisten an der Entwicklung tragbarer Fähigkeiten interessiert, sodass Sie möglicherweise immer noch gezwungen sind, viel Gewicht für das Domänenwissen zu tragen. Vielleicht sollten Sie in Betracht ziehen, einen Systemingenieur zu beauftragen, funktionsbezogene Domänenkenntnisse zur Verwendung durch den Entwickler zu dokumentieren. Vielleicht wählen Sie zwischen klug und erledigt Dinge aus, die stark sind, wenn es darum geht, Dinge zu erledigen. Wenn Sie einen Entwickler finden, der daran interessiert ist, eine Weile bei Ihnen zu sein und sowohl Ihr Unternehmen als auch Ihre Technologie kennenzulernen, der die Bedürfnisse Ihres Unternehmens in etwa mit den eigenen gleichsetzt, ist dies auf lange Sicht möglicherweise besser als der kluge Kerl, dessen Pläne dies beinhalten hochklettern und ziemlich oft raus.

High Demand Skills

Wenn Sie etwas tun, das sehr gefragt ist, müssen Sie viel mehr tun, um Kandidaten anzuziehen. Wenn Ihre Sichtbarkeit gering ist und das, was Sie im Gegenzug zu bieten haben, weniger herausragend ist als die Konkurrenz, müssen Sie möglicherweise entweder viel mehr bezahlen oder das Talent, das Sie benötigen, aus einem Pool von Kandidaten mit anderen Fähigkeiten entwickeln.

Domain Skills oder Technologie Skills?

In der Frage erwähnen Sie einige Fähigkeiten, die Ihren Kandidaten fehlen, darunter Hadoop, Hbase, Cuda, Map / Reduce und Bigtables. Ich bin mir nicht sicher, ob ich diese Domänenkenntnisse nennen würde, da sie eher auf Technologie als auf den Besonderheiten der Herstellung eines Produkts basieren, das branchenspezifisch für Ihre Kunden ist. Ich vermute, dass jede dieser Fähigkeiten portabel ist und auch dann noch wertvoll sein wird, wenn sich Ihre Branche automatisiert hat und Sie dominiert, eine Nische gefunden oder zu etwas anderem übergegangen sind.

Technisches Kompetenzwachstum zieht gute Kandidaten an

Der Vorteil der Einstellung und des Trainings für technologische Fähigkeiten besteht darin, dass der kluge, aggressive und karriereorientierte Entwickler, der sich selbst trainiert, die Chance nutzt, etwas mit einer langen und lohnenden Zukunft zu lernen. Wenn Sie Herausforderungen und einen überschaubaren neuen Technologiemix beibehalten, werden viele der Entwickler, die Sie möchten, sowohl kurzfristig als auch langfristig zum gegenseitigen Nutzen eines Ihrer Teams sein.

DeveloperDon
quelle
2

Ist es eine Gefahr, wenn der Entwickler keine Erfahrung mit den zugrunde liegenden Technologien hat? oder kann ein allgemeiner Entwickler, der in einem anderen Bereich erfolgreich ist, neue Technologien realistisch aufgreifen?

Ein Entwickler kann Technologien erlernen (und sie werden es schließlich tun), aber ich denke nicht, dass dies Ihren Anforderungen entspricht.

Sie haben funktionierende Software, möchten diese jedoch überprüfen, überarbeiten und möglicherweise sogar neu schreiben. Sie benötigen wirklich einen Experten oder zumindest jemanden, der Erfahrung mit einigen Ihrer Technologien hat, um dies zu tun, denn obwohl es beispielsweise Softwaremuster gibt, variieren die Implementierungen zwischen Plattformen und Frameworks aufgrund der Einzigartigkeit der Plattform und des Frameworks.

Sie haben die geschäftlichen Probleme gelöst und die Domäne gemeistert, und Sie haben die Software implementiert. Sie sind jetzt nach technischen Anleitungen, damit Ihre Anwendung skaliert werden kann und ein langes und gesundes Leben führen kann. Sie möchten jemanden, der dies in einem ähnlichen System oder mit ähnlicher Technologie getan hat.

Unterschiedliche Plattformen erfordern oft völlig unterschiedliche Einstellungen und Erfahrungen. Ich denke, Sie arbeiten an einem Big Data / Parallel Computing-Projekt? Ein Webentwickler oder ein Integrationsentwickler sollte in der Lage sein, Ihren Prototyp neu zu schreiben und auch funktionieren zu lassen. Aber warum sollten sie davon ausgehen, dass sie dies besser können als Sie?

Halten Sie sich nicht für die perfekte Person bereit, da diese möglicherweise nicht vorhanden ist. Ihr Entwickler sollte jedoch zumindest mit einigen der von Ihnen verwendeten Technologien und Konzepte vertraut sein oder, wie in Stellenanzeigen angegeben, die Fähigkeit zur schnellen Person demonstrieren neue Technologien und Konzepte lernen . Wenn sie noch nichts von Hadoop oder MapReduce gehört haben, sollten die Alarmglocken losgehen - große Zeit.

Kirk Broadhurst
quelle
1

Sie bitten wirklich um eine Codeüberprüfung und / oder Schulung. Insbesondere für die Codeüberprüfung ist eine Gruppe erfahrener Programmierer mit unterschiedlichem Hintergrund am besten geeignet. Wenn alle einverstanden sind, tun Sie, was sie Ihnen sagen. Wenn alle eine andere Meinung haben, tun Sie genau das Richtige. :-)

Wenn Sie mapReduce, CUDA und Hadoop verwenden und einen einzelnen Prüfer wünschen, stellen Sie den Experten ein. Meine erste Wahl wäre, jemanden zu suchen, der neben der Schule auch Erfahrung hat. Ziehen Sie auch in Betracht, sich selbst zu schulen, Benutzergruppen beizutreten usw. Sie können möglicherweise einige wichtige Einzelfragen beantworten und sie Freunden zeigen, wenn Sie einen solchen Freund haben.

Lässt Programmers.StackExchange Leute Code für Kritik posten? Wenn ja, würde ich nicht mehr als eine Seite auswählen. Wählen Sie etwas aus, von dem Sie wissen, dass es falsch ist, aber Sie wissen nicht warum.

Welche Programmiersprache verwenden Sie?

GlenPeterson
quelle
[ codereview.stackexchange.com]
Kirk Broadhurst
0

Ich würde die mangelnde Kenntnis von Hadoop / MapReduce als Warnsignal dafür ansehen, dass der Entwickler möglicherweise keine Versuche unternimmt, auf dem neuesten Stand zu bleiben.

Das heißt, das ist nur ein Zeichen, kein No-Hire. Geben Sie ihnen FizzBuzz oder etwas Ähnliches, und wenn sie darüber hinwegkommen, zeigen Sie ihnen Ihren Code und bitten Sie um eine Kritik. Vielleicht wählen Sie absichtlich etwas mit einem Fehler, aber auch etwas, das Sie für in Ordnung halten, da diese Diskussion interessanter sein wird.

Ricky Clarkson
quelle
0

Es ist schwer, diesbezüglich Ratschläge zu geben. Nur ein paar Gedanken:

Ich denke, die Vorabkosten wären ähnlich, wenn ich einen Studenten oder Entwickler ohne Erfahrung in meinen Technologien anheuere, der viele Stunden arbeitet, anstatt einen erfahrenen Entwickler einzustellen, der das Doppelte berechnet, aber in der Hälfte der Zeit fertig ist, aber welche anderen Risiken sollte ich in Betracht ziehen oder besorgt über?

Bilden Sie, was Sie in Ihrer Einführung geschrieben haben:

  • my code quality is very low
  • I didn't use much OOP
  • I wanted to hire a developer to make it a bit more better quality and improve some of my implementations

Die Beantwortung dieser Frage sollte ein Kinderspiel sein :

Wenn Sie einen Entwickler ohne Erfahrung einstellen , ist es sehr unwahrscheinlich , dass Sie die Codequalität verbessern können . Ein Programmierer ohne Erfahrung ist keine Hilfe .

Obwohl es kurzfristig billiger sein könnte , einen Neuling einzustellen , zahlen Sie später !

Welche anderen Risiken sollte ich in Betracht ziehen oder mir Sorgen machen?

Machen Sie nicht den Fehler, nur die Kosten zu berechnen, um Sie und Ihr Produkt zum Laufen zu bringen. Wichtiger sind die Wartungskosten .

Als direkte Konsequenz dessen, was ich im vorherigen Absatz gesagt habe, müssen Sie überlegen, was als technische Schulden bezeichnet wird . Wie Sie sagten: Die Codebasis ist in keinem guten Zustand - sozusagen gibt es bereits technische Schulden . Und mit der Einstellung ungelernter Arbeitskräfte erhöhen Sie die Schulden . Vielleicht haben Sie in einigen Jahren eine nicht mehr zu wartende Codebasis und müssen a) von vorne anfangen und b) eventuell Kunden verlieren, was in beiden Fällen gleichbedeutend ist: Geldverlust.

Sollte ich einen Generalisten einstellen, sollte ich auch für die Zeit bezahlen, die sie benötigen, um Hadoop oder Cuda zu lernen, wenn sie Auftragnehmer sind (scheint geschäftlich sinnvoll zu sein, ist sich aber nicht sicher, wie fair es für sie ist, wenn sie das nicht verwenden Fähigkeit wieder).

Klar: Ja! Ich sehe keinen Grund, dies nicht zu tun. Sie brauchen das Wissen, Sie brauchen es, um es zu haben - also: ja.

Wenn sie gute Entwickler sind, sollten sie leicht neue - oder zumindest neue - Technologien in den Griff bekommen. Die Chancen stehen gut, dass sie, wenn sie ihre Arbeit ernst nehmen, Technologien auf dem Radar haben , was bedeutet, dass sie mit der Technologie nichts Produktives gemacht haben, sondern wissen, wie und wann sie zu verwenden ist.

Ich muss zugeben, dass ich Hadoop nicht kenne, aber ich weiß, wann es eine gute Lösung sein könnte und ein faires Verständnis dafür zu haben, wie es theoretisch funktioniert . Ich würde also sagen, dass es nicht lange dauern sollte, bis ich produktiv bin.

Ich habe zwei Entwickler getroffen und sie meine Softwarespezifikationen lesen lassen. Das Problem ist, dass ihnen das Domänenwissen meines Unternehmens fehlte (was völlig verständlich und kein Problem ist), aber ihnen fehlte auch das Wissen über die zugrunde liegenden technischen Systeme, die ich verwendet habe, wie Hadoop, Hbase, Cuda, etc..Ich habe viel Zeit damit verbracht, Map / Reduce, Bigtables und andere Technologien zu erklären, die ich verwendet habe.

Ihr Geschäft zu erklären sollte für Sie der einfachste Teil sein, da Sie es am besten wissen. Sie können nicht erwarten, dass jeder Ihr Unternehmen so gut oder gar nicht kennt.

Gleiches gilt für die Technologie:

Es gibt eine Unmenge von Frameworks, Sprachen und Toolkits - es ist unwahrscheinlich, dass (m) Entwickler sie alle kennen

Natürlich könnte man sagen: $ Technology_du_jour wird in den Medien hochgespielt, daher erwarte ich, dass jeder Entwickler über ein funktionierendes Wissen verfügt. Das ist aber nicht die Realität.

Für mich als Entwickler ist mein Job ein Kompromiss: Ich habe Kenntnisse in einigen Sprachen und einigen Technologien. Das macht mich in vielerlei Hinsicht flexibel. Wenn ich muss, kann ich ein tiefgreifendes Verständnis meiner aktuellen Werkzeuge entwickeln, aber im Laufe der Jahreszeiten tun es Werkzeuge und Sprachen.

tl; dr;

1) Wenn Sie können, stellen Sie einen Experten in Ihrer Domäne und in der gewünschten Technologie ein

2) Wenn Sie nicht können,

2a) Suchen Sie einen Generalisten mit Projektkenntnissen , der möglicherweise Kenntnisse über die in Ihrem Projekt verwendeten Technologien besitzt oder nicht

3) Wenn es wirklich , wirklich niemand sonst: ein Student mieten.

Sie haben technische Schulden, erhöhen Sie diese nicht!

Thomas Junk
quelle