Wie viel Freiheit sollte ein Programmierer bei der Auswahl einer Sprache und eines Frameworks haben?


67

Ich habe bei einer Firma angefangen, die sich hauptsächlich an C # orientiert. Wir haben ein paar Leute, die Java und JRuby mögen, aber die meisten Programmierer hier mögen C #. Ich wurde eingestellt, weil ich viel Erfahrung im Erstellen von Webanwendungen habe und weil ich mich für neuere Technologien wie JRuby on Rails oder NodeJs interessiere.

Ich habe vor kurzem mit einem Projekt begonnen, das eine Webanwendung erstellt und sich darauf konzentriert, eine Menge Dinge in kurzer Zeit zu erledigen. Die Software-Leitung hat diktiert, dass ich mvc4 anstelle von Schienen benutze. Das könnte in Ordnung sein, außer ich kenne mvc4 nicht, ich kenne C # nicht und ich bin der einzige, der für die Erstellung des Webanwendungsservers und der Front-End-Benutzeroberfläche verantwortlich ist.

Wäre es nicht sinnvoll, ein Framework zu verwenden, das ich bereits sehr gut kenne (Rails), anstatt mvc4 zu verwenden? Der Grund für die Entscheidung war, dass der technische Leiter Jruby / Rails nicht kennt und es keine Möglichkeit geben würde, den Code wiederzuverwenden.

Gegenargumente:

  • Er wird nicht zum Code beitragen und wird ehrlich gesagt für
    dieses Projekt nicht benötigt . Es spielt also keine Rolle, ob er JRuby / Rails kennt oder nicht.

  • Wir können den Code tatsächlich wiederverwenden, da wir viele Java-Apps haben, aus denen JRuby Code abrufen kann und umgekehrt. Tatsächlich hat er einige Ressourcen für die Konvertierung einer Java-Bibliothek in C # bereitgestellt, anstatt nur die Java-Bibliothek in der JRuby on Rails-App auszuführen. Alles nur, weil er Java oder JRuby nicht mag

Ich habe viele Webanwendungen erstellt, aber die Verwendung von etwas Unbekanntem verursacht einige Probleme und ich bin nicht in der Lage, eine großartige Anwendung in so kurzer Zeit zu erstellen, wie ich es gewohnt bin. Das wäre in Ordnung. Das Erlernen neuer Technologien ist in diesem Bereich wichtig. Das Problem ist, dass wir für dieses Projekt viel schnell erledigen müssen.

Ab wann darf ein Entwickler seine Tools auswählen? Ist das vom Unternehmen abhängig? Saugt meine Firma oder gilt das als normal? Gibt es grünere Weiden? Schaue ich das falsch an?


45
Das "Herausfordern von Befehlen" bei so etwas kann eine Karriere einschränkende Maßnahme sein.
Dan Pichelman


39
Unternehmen bevorzugen die Standardisierung von Tools, da sie sowohl aus Sicht des App-Einkaufs als auch bei der Verwaltung von Unternehmensressourcen Kosten senken. Das Lizenzmanagement ist eigentlich recht zeitaufwändig. Darüber hinaus wird es weitaus schwieriger, Menschen zwischen den Arbeitsplätzen hin und her zu bewegen, wenn jeder seine eigene Sprache bzw. sein gewünschtes Werkzeug verwendet. Schließlich sind Ihre Beschwerden über Ihren SW-Lead identisch mit dem Grund, warum Sie Ihr bevorzugtes Tool verwenden möchten. Sie kennen sich mit mvc4 nicht aus oder mögen es nicht. Der SW-Lead ist der Lead, es sei denn, Sie können ein Argument vorbringen, das ihre Meinung ändern kann.
Dunk

22
Dies sollte alles während Ihres Vorstellungsgesprächs angesprochen worden sein.
user16764

30
Sind Sie ein Programmierer oder ein Ruby- Programmierer ? Sprachen sollten wie Werkzeuge sein. Einige haben Stärken oder Schwächen, aber es liegt am Handwerker, sie bestmöglich zu nutzen. Das Unternehmen hat aus offensichtlichen Gründen ein Standard-Toolset diktiert.

Antworten:


98

Ich würde sagen, Sie müssen mit dem Teamleiter sprechen und etwas sagen wie:

Ich weiß , dass ihr ein .NET - Shop sind, aber ich war eigentlich angestellt für meine Java / JRubyRails Fähigkeiten. Ich kann diese neue Anwendung in X Zeit erstellen, indem ich die Tools verwende, die ich bereits kenne. Ich könnte C # / mvc4 lernen, wie Sie wollen, aber es wird >> X Zeit dauern . Was willst du?

Dies wirft die Frage von „Fähigkeiten-you-Wer- (mutmaßlich) -hired-für“ vs. „Fähigkeiten-you-need-now“ und zeigt auch , dass Sie bereit sind , die neuen Fähigkeiten zu erlernen, aber dass es wird dauern Länger, um die neue Anwendung zu entwickeln, da Sie mit diesem Tool-Set noch nicht vertraut sind. Und Sie tun wollen zeigen , dass Sie neue Fähigkeiten zu erlernen sind bereit , zu. Wenn Sie nicht bereit sind, neue Fähigkeiten zu erlernen, ist dies eine gute Möglichkeit, um sicherzustellen, dass Ihre Beschäftigung endet, wenn Ihre Fähigkeiten nicht mehr benötigt werden.

Zu Ihrer Frage am Ende:

Ab wann darf ein Entwickler seine Tools auswählen? Ist das vom Unternehmen abhängig? Saugt meine Firma oder gilt das als normal? Gibt es grünere Weiden? Schaue ich das falsch an?

Es hängt normalerweise von der Firma ab. Wenn ein Unternehmen MS-Tools kauft und alles auf der VisualStudio-Plattform und im .NET-Framework standardisiert, kann es sehr umständlich werden, wenn ein Entwickler auf Linux und C besteht. Das ist normal. Es kann Ausnahmen geben, bei denen das Unternehmen weniger um die Redaktion bemüht ist, z. B. die Entscheidung der Entwickler für Vi vs. Emacs, sofern die Ausgabe dieselbe ist. Ich weiß, dass einige Unternehmen sogar zulassen, dass sich Entwickler für Windows oder Linux entscheiden, aber die Sprache, in der sie arbeiten, bietet für beide Betriebssysteme eine sehr gute Unterstützung und Laufzeit.

Warum machen Unternehmen das? Konsistenz ist ein Grund. Das Debuggen von Dingen kann sehr schwierig sein, wenn die Anwendung ein Patchwork aus Binärdateien ist, die in den bevorzugten Sprachen / Frameworks verschiedener Entwickler erstellt, in verschiedenen Tools erstellt und auf sehr unterschiedlichen Systemen getestet wurden. Wenn alle Entwickler an zumeist ähnlichen Setups arbeiten, sind diese Probleme gelöst.

In Ihrem Fall klingt es so, als ob Sie eingestellt wurden, um in einer Technologie zu arbeiten, die in diesem Unternehmen nicht zum Standard gehört. Das kommt mir merkwürdig vor, und vielleicht möchten Sie mit der Person, die Sie eingestellt hat, darüber sprechen, warum sie das wollte.


31
"Ich kann diese neue Anwendung mit den mir bereits bekannten Tools in X-Zeit erstellen. Ich könnte C # / mvc4 lernen, wie Sie es möchten, aber es wird >> X-Zeit dauern. Was möchten Sie?" - Gute Antwort. Rahmen in Form eines Kostenkompromisses.
Christian Ternus

Einverstanden. Es dreht sich alles um Wirtschaft. Sobald Sie einen wirtschaftlichen Spin Ihrer Sicht setzen, ANY führen , die echt ist, hören Sie und ihre Haltung überdenken. Machen Sie den Kompromiss deutlich: Bsp .: Mehr Zeit impliziert, dass die Dinge später kommen, impliziert, dass eine Frist möglicherweise versäumt wird, was einen Einnahmeschlag impliziert . Manchmal müssen sie den Weg zum Ziel des „Kompromisses“ im Wesentlichen aufzeigen.
PhD

6
+1. Die einzige Möglichkeit, mit der ich mit dieser Antwort nicht zufrieden bin, besteht darin, dass der Lernaspekt ein wenig herabgesetzt wird. Ein Entwickler, der lernen möchte, ist ein weitaus wertvolleres Gut als einer, der alles über eine Sache weiß und sich nicht ändern wird .
Corey

7
+1 Ich möchte auch den (impliziten) Punkt betonen, dass OP verpflichtet ist, sich zurückzuziehen und das Projekt in MVC durchzuführen, wenn sich der Lead für MVC entscheidet.
Dan Lyons

"Einige Unternehmen lassen Entwickler sogar Windows oder Linux wählen" - und in der Ruby-Welt gibt es häufig auch Mac-Benutzer. (Mein Unternehmen ist größtenteils ein Ruby-Shop, aber es gibt keine Einschränkungen für den Editor oder das Betriebssystem. Derzeit verwenden Entwickler Linux und Mac, derzeit jedoch keine Entwickler mit Windows-Computern.)
Ben Lee

140

Ab wann darf ein Entwickler seine Tools auswählen?

Wenn sie sich nicht auf Ihr Team auswirken.

Schaue ich das falsch an?

Absolut.

Ja, Sie haben eine kurze Frist. Ja, mit Rails können Sie das schneller erledigen. Das gesamte Unternehmen muss die Anwendung jedoch bereitstellen und warten. Wenn das Unternehmen über eine stabile Anzahl guter C # -Entwickler verfügt, ist die Wartung einer C # -Anwendung wahrscheinlich billiger (und ergibt eine bessere Qualität).

Ihre DBAs und andere Administratoren sind wahrscheinlich mit diesem Stack vertraut und verfügen über Prozesse zum Bereitstellen und Aktualisieren dieses Stacks. Selbst wenn Sie den Code schneller ausführen können, kann es länger dauern, bis Sie den gesamten Aufwand für die Einrichtung einer professionellen Web-App abgerechnet haben.

Denken Sie daran, dass Sie viel mehr Zeit mit der Pflege Ihrer App verbringen, als mit dem Schreiben. Optimieren Sie für diese Kosten.


19
Gute Antwort. 'Best' bedeutet in diesem Fall möglicherweise nicht, dass für die anfängliche Entwicklung , insbesondere für den anfänglichen Programmierer, die schnellsten Optimierungen vorgenommen werden . Aus betriebswirtschaftlicher Sicht wird die App wahrscheinlich viel mehr Zeit im Wartungsmodus verbringen und vom gesamten Team unterstützt. Daher sollte dies die Grundlage für die Rahmenentscheidung sein.
Eric King

4
Ich denke, das ist im Allgemeinen ein guter Rat. Ich habe es nicht als Antwort ausgewählt, da in meinem speziellen Fall viele Bedenken nicht zutreffen. Ich bin für die Einrichtung und Bereitstellung der Anwendung verantwortlich. Ich stimme dem Wartungsteil definitiv zu, es ist ein berechtigtes Anliegen. Wer weiß, wo ich in ein paar Jahren sein werde, wenn jemand den Code aktualisieren muss.
Spencer

2
Die Wahrscheinlichkeit ist, dass Sie tatsächlich NICHT für Ihre JRuby / Rails-Kenntnisse eingestellt wurden, sondern für Ihre Erfahrung beim Erstellen von Web-Apps, und was sie tatsächlich suchen, ist, dies im Kontext von MVC4 und C # zu nutzen.
Jay Stevens

Sie machen zwar gute Punkte, aber es macht immer noch keinen Sinn, jemanden zu haben, der keine Erfahrung in diesem Stack hat und vermutlich kein Interesse daran hat, dies zu tun. Warum nicht einen der C # -Typen dazu bringen? Alles, was sie tun werden, ist, diesem Typen das Gefühl zu geben, dass er kein Eigentum an seinen Projekten hat, und ihn dazu zu bringen, sich ausgebrannt zu fühlen und dazu zu führen, dass er die Firma verlässt.
s73v3r

@ s73v3r - Ich würde hoffen, dass der OP wusste, worauf er sich einließ. Ehrlich gesagt, wenn Sie eine Schiffsladung C # -Entwickler (und Codebasis) haben, sollte dies dem Rails-Mitarbeiter während des Interviews klar sein. Wenn er den Job annimmt und sich dann weigert, das zu tun, wofür er eingestellt wurde ...
Telastyn,

41
  1. Sie wurden anscheinend eingestellt, weil Sie sich an "neue" Technologien anpassen konnten. C # ist in dieser Hinsicht nicht anders. Sind Sie sicher, dass Sie nicht die Gelegenheit nutzen möchten, etwas Neues zu lernen?

  2. ASP.NET MVC ist Ruby on Rails in vielerlei Hinsicht sehr ähnlich.

  3. Sie werden nicht für immer im Schneckentempo sein. Wenn Sie ROR bereits kennen, ist ASP.NET MVC ein Kinderspiel für Sie. Der Trick ist, C # zu lernen.


18
+1, sich an eine einzelne Sprache / ein Framework zu binden, ist albern. Nutzen Sie die Chance, für das Erlernen neuer Dinge bezahlt zu werden. Und .NET hat eine Menge aktiver und interessanter Entwicklungen vor sich.
Jozefg

Ich stimme zu, dass sie ähnlich sind, aber es gibt signifikante Unterschiede, die sich auf viele Stunden summieren können. Angesichts der begrenzten Anzahl von Stunden für das Projekt halte ich Schienen für die klare Wahl. Ich bin nicht dagegen, neue Dinge zu lernen, wie ich in der Frage erwähnt habe.
Spencer

Punkt 1 ist nicht offensichtlich - das OP gibt an, dass sie aufgrund ihrer Erfahrung mit Java / JRuyb / Rails / Nodejs eingestellt wurden: Ich wurde eingestellt, weil ich viel Erfahrung mit dem Erstellen von Webanwendungen habe und mich für neuere Technologien wie JRuby on Rails interessiere oder nodejs. Das OP spricht nicht über ihre Anpassungsfähigkeit oder dass ihre Anpassungsfähigkeit der Grund ist, warum sie eingestellt wurden.
FrustratedWithFormsDesigner

2
+1, stimmte zu, ich habe nie Argumente des Genres "Ich weiß sehr gut, wie man A in Sprache L1 macht, aber ich kann es in Sprache L2 überhaupt nicht machen" verstanden.
Shivan Dragon

2
@Spencer: Wenn Sie uns um Rat fragen und jeder Mensch Ihnen den gleichen Rat gibt, sollten Sie den Rat wahrscheinlich annehmen. Es macht keinen Sinn, gegen die Antworten zu argumentieren, wenn Sie zugeben, aber die Frage zu stellen, dass Sie nicht wissen, was die richtige Antwort ist.
Andrew Coonce

21

Argumente für einen Aufenthalt bei Java / JRuby

Wahrscheinlich möchte Ihr Chef, dass Sie produzieren. Sie haben Sie eingestellt, damit Sie der Firma einen Mehrwert verleihen können. Stellen Sie sicher, dass sie verstehen, dass Sie Folgendes bewirken , wenn Sie dazu gezwungen werden, ein Framework zu verwenden, mit dem Sie nicht vertraut sind :

  1. Produzieren Sie die Ergebnisse langsamer
  2. Erstellen Sie einen Code mit niedrigerer Qualität

Selbst die besten Programmierer benötigen Aufwärmzeit mit neuen Sprachen / Frameworks.

Argumente für das Erlernen von MVC4 und C #

Das Erlernen neuer Sprachen ist gut. Die Investition in Ihre Fähigkeiten als Programmierer ist nur dann ein Risiko, wenn die Sprache / Plattform, die Sie lernen, in naher Zukunft verschwinden wird, und wenn Microsoft mitspielt, denke ich nicht, dass dies ein Problem ist. Sowohl C # als auch MVC haben kürzlich Updates erhalten, die beide verbessert haben. Weitere Updates sind in Vorbereitung.

Indem Sie persönlich zu einem runderen Entwickler werden, verhindern Sie, dass Sie jemals wieder in diese Situation geraten. Der beste Teil? Ihr Chef wird Sie dafür bezahlen, diese Dinge zu lernen, was bedeutet, dass Sie dafür bezahlt werden, dass Sie mehr Geld verdienen.

Die Quintessenz

Sie werden diesen Kampf vielleicht gewinnen, aber Sie werden mit verärgerten Kollegen zusammenarbeiten. Erklären Sie einfach Ihrem Vorgesetzten die Vor- und Nachteile der beiden, und dann kommen Sie beide am anderen Ende glücklicher heraus.


11
+1, "was bedeutet, dass Sie dafür bezahlt werden, mehr Geld zu verdienen" Bingo!
GroßmeisterB

Wie dies (und einige der Antworten) zeigen, gibt es einen Kompromiss zwischen der erstmaligen Erstellung Ihrer Zeit und der Bereitstellung / Wartung durch alle anderen. Bemühen Sie sich anständig (aber respektvoll), um zu sehen, ob die Pointy-Hairs bereit sind, diesen Handel zu betreiben, aber respektieren Sie nicht nur ihre Entscheidung und genießen Sie es, bezahlt zu werden, um in der Unternehmenszeit etwas Neues zu lernen.
Brichins

@brichins: Ich denke, eines der großen Probleme mit dieser Antwort ist, dass es nicht darauf hinweist, was Sie sagen, dass es tut!
Ruakh

@ruakh Ich hatte Probleme herauszufinden, auf welche Antwort ich diesen Kommentar schreiben soll - Sie haben Recht, dieser Artikel geht nicht auf diesen spezifischen Kompromiss ein (obwohl er auf die möglicherweise auftretenden Spannungen am Arbeitsplatz hinweist). Ich hätte wahrscheinlich auch ausdrücklich sagen sollen, dass das OP sicher sein sollte, dass er mit allen Entscheidungsträgern gesprochen hat (ohne über den Kopf eines anderen zu gehen), damit er höflich mitteilen kann, wenn das Projekt die Frist nicht einhält Vielleicht können wir für das nächste Projekt stattdessen Ruby ausprobieren? "
Brichins

18

Ab wann darf ein Entwickler seine Tools auswählen?

Bei besagtem Entwickler ist die Software federführend.

Natürlich können (und sollten) Sie die Verwendung des anderen Toolkits in Erwägung ziehen, wenn Sie Bedenken hinsichtlich der Produktivität haben. Seien Sie jedoch auf eine Antwort gefasst, die Ihnen nicht gefällt. Es kann einen verdammt guten Grund geben, warum Ihr Lead die Verwendung eines bestimmten Toolkits wünscht, sei es Kompatibilität mit der aktuellen Architektur, Bedenken hinsichtlich Wartung, Lizenzproblemen usw.

Übrigens die Phrase

mit dem Fokus darauf, eine Menge Dinge in kurzer Zeit zu erledigen

ist für mehr Sodbrennen und Chaos in der Softwareindustrie verantwortlich als für alles andere.


2
+1 "Wenn der Entwickler der Software-Leiter ist." Genau. Manchmal, wenn Sie argumentieren, dass Ihr Lead nicht mit Ihnen übereinstimmt, hat Ihr Lead eine bessere Sicht auf das Gesamtbild. Dies ist eine dieser Situationen.
Andrew Coonce

Nicht zustimmen. Auf diese Weise führen Sie Ihre Untergebenen zu nichts anderem, was Anhänger vergessen, wie sie Entscheidungen treffen und Verantwortung für sie übernehmen. Wenn du das willst - okay. Ich denke, es gibt Orte, an denen die Leute klüger sind als Sie als Teamleiter. Aber ja, einige Leute haben ein Problem damit, und das ist tragisch.
JensG

Ich habe ernsthaft über Ihre Antwort gelacht: "Ist für mehr Sodbrennen und Chaos in der Softwareindustrie verantwortlich als für alles andere." ... Danke! Hätte es nicht besser formulieren können!
Alexus

11

Ich stelle fest, dass Sie nicht sagen, dass Sie als JRuby- oder Java-Programmierer eingestellt wurden.

Hier ist der Grund, warum Sie sagten, dass Sie eingestellt wurden: "[B] weil ich viel Erfahrung mit dem Erstellen von Webanwendungen habe und weil ich mich für neuere Technologien wie JRuby on Rails oder NodeJs interessiere."

Mit anderen Worten, sie mögen Ihre Web-Erfahrung und Ihre Bereitschaft, neue Technologien zu erlernen.

Jetzt bitten sie dich, deine Web-Erfahrung zu nutzen und eine neue Technologie zu erlernen.

Die Frage ist also: Wirst du das tun oder nicht?


9

Der größte Aufwand für Software besteht in der Wartung der Software

Ich habe gelesen, dass der größte Aufwand (80%) in der Wartung von Software liegt. Die anfängliche Entwicklung macht nur 20% der Gesamtentwicklungskosten aus.

Ich las einen Fall über einen Entwickler, der Code und Kommentare in seiner Muttersprache (nicht Englisch) entwickelt hatte, und als die anderen Teammitglieder den Code verbesserten und pflegten, war es so gut wie unmöglich, weil die Sprache (keine Programmiersprache) fremd war zu ihnen.

Wenn Sie Code in einer Programmiersprache Ihrer Wahl entwickeln, ist es für andere Teammitglieder ebenfalls schwierig, diesen zu pflegen.

Lösung: Paarprogrammierung

Bitten Sie Ihren Arbeitgeber, Sie mit jemandem zusammenzubringen, der die erforderliche Programmiersprache kennt, und Sie können zusammenarbeiten. Sie können voneinander lernen, und wenn einer von Ihnen das Unternehmen verlässt, kennt der andere den Code.

Wikipedia-Artikel zu "Pair Programming": http://en.wikipedia.org/wiki/Pair_programming


3
Wenn du etwas schreibst, das nur du verstehst, wirst du für immer daran festhalten.
Mittwoch,

6

Viele Unternehmen ziehen es einfach vor, bei dem zu bleiben, was sie schon immer getan haben oder was "sicher" ist. Es gibt einen Grund, warum Java und PHP immer noch sehr beliebt sind. Im Moment liefert die Suche nach "COBOL" auf "indeed.com" 2144 Einträge ... die eigentlich für sich sprechen sollten. Die Industrie kümmert sich nicht um guten Code, sondern um Code, den sie so lange wie möglich melken kann (dies impliziert nicht, dass C # schlecht ist, es ist wirklich nicht).

Denken Sie darüber nach: Der Code wird Sie überleben. Es besteht eine gute Chance, dass jemand anderes Ihren Code wartet, und C # ist eine sicherere Wette als Node.js und Rails. Es würde mich nicht überraschen, wenn sich in 5 oder 6 Jahren die Anzahl der Ruby-Programmierer halbieren würde, nachdem Perl und jede andere Sprache, die irgendwann als "it" -Websprache galt, das gleiche passiert ist. Es ist unwahrscheinlich, dass Javascript verschwindet, aber wir sehen bereits, dass es als eine Art ASM (oder sogar C) des Webs verwendet wird - eine Zwischensprache, die andere Sprachen kompilieren können, um darin serverseitigen Code zu schreiben sehr wohl obsolet geworden.


4
Obwohl dies zutrifft, ist es eine ziemlich schlechte Rekrutierungspraxis für einen C # -Shop, einen Ruby-Entwickler einzustellen, der C # nicht kennt, ohne absolut klar zu machen, dass der Job, für den er eingestellt wird, in erster Linie die C # -Entwicklung umfasst.
Carson63000

5

Mein Hauptanliegen bei der Entscheidung der Entwickler für die Implementierung ihrer Ziele ist, dass sie normalerweise davon ausgehen, dass nur sie den Code bearbeiten werden. Sehen Sie es sich so an, 12 Monate später brauchen sie möglicherweise Änderungen. Sie sind nicht verfügbar (haben das Unternehmen verlassen oder sind mit einer anderen Aufgabe beschäftigt), und ein anderer Entwickler muss Ihren Code ändern. Wenn es sich um einen C # -Shop handelt, ist die Verwendung des Toolsets eine gute Teamarbeit. Neue Technologien sollten untersucht und implementiert werden, aber nur dann, wenn die Führung den richtigen Zeitpunkt für richtig hält, da sie viele Ziele im Auge haben, nicht nur eines.


3

Dreh es bitte um. Stellen Sie sich vor, Sie stellen einen Ruby-Entwickler ein, der darauf besteht, seine Arbeit in Asp.net/MVC umzusetzen.

Was würdest du ihnen sagen? Das ist unser Stapel, Mann. Lerne damit zu leben.

Die goldene Regel, hier ist, wer das Gold hat, macht die Regeln.


1
Aber warum sollten Sie jemanden einstellen, der darauf besteht, .NET für eine Ruby-Rolle zu verwenden?
Bobson

3
@Bobson, weil sie ein aufgeweckter junger Programmierer sind, der offenbar in der Lage ist, Probleme mit verschiedenen Technologien zu lösen, die allgemeinen Programmierprobleme zufriedenstellend zu lösen, und sich für den Job beworben haben.

2
@Bobson: Jetzt argumentieren Sie also, dass Unternehmen keine Entwickler einstellen sollten, die keine Erfahrung in der Sprache der Wahl des Unternehmens haben. Alle anderen scheinen sich in die andere Richtung zu streiten und behaupten, sie könnten die neue Sprache sehr schnell erlernen, so dass das Unternehmen nicht einfach einen guten Entwickler weitergeben sollte, weil sie kein Experte in einer bestimmten Sprache sind.
Tauchen Sie

2
" Ich wurde eingestellt, weil ich viel Erfahrung im Erstellen von Webanwendungen habe und weil ich mich für neuere Technologien wie JRuby on Rails oder NodeJs interessiere." - Dies wurde nicht als XYZ-Entwickler eingestellt, sondern als "Web-Entwickler mit Erfahrung in neueren Technologien" (möglicherweise ist das Unternehmen daran interessiert, die Dinge in Zukunft zu aktualisieren).

3
@ Bobson: Wenn ich bei einem neuen Unternehmen angestellt werde, weiß ich nicht nur, was ich auf den Tisch bringe, sondern auch, an welchem ​​Projekt ich arbeiten werde und was sie von mir erwarten, dass ich an diesem Projekt arbeite. Wenn sich der OP nicht die Mühe machen konnte, diese Informationen herauszufinden, dann schämen Sie sich für ihn. Trotzdem denke ich, dass dies wirklich der Fall ist, wenn das Unternehmen jemanden anstellt, von dem sie glauben, dass er ein guter Entwickler mit relevantem Domain-Wissen ist, um dem Team zu helfen. Vielleicht hat das Unternehmen das nicht gut erklärt, aber das OP hat auch nicht seinen Teil dazu beigetragen.
Dunk

2

Es gibt eine Reihe widersprüchlicher Ziele und das Problem besteht darin, den besten Kompromiss zu finden. Wir haben die Deadline, wir haben einen Teamleiter, der ein bestimmtes Toolset anfordert, und wir haben einen Entwickler, der mit diesem Toolset unerfahren ist, aber dazu verdammt ist, innerhalb eines (offensichtlich kurzen) Zeitrahmens etwas zu produzieren.

Es ist wichtig zu verstehen, dass der Teamleiter wahrscheinlich gute Gründe hat, warum er genau dieses Toolset anfordert (eines davon könnte in der Tat sein, Sie aus einem Grund, den Sie vielleicht noch nicht kennen, an dieses Toolset zu gewöhnen). Das Beste, was Sie beim ersten Lauf tun können, ist herauszufinden, was genau diese Gründe sind.

In Ihrer Position würde ich versuchen, mit dem Teamleiter zu sprechen und zu erklären, wie es Ihrer Ansicht nach aussieht und welche Optionen und welche Ergebnisse (einschließlich kurzfristiger und langfristiger wirtschaftlicher Auswirkungen) erzielt werden Folgen Sie jeder dieser Optionen. Zum Beispiel könnte ein anderer erfahrener Entwickler beauftragt werden, Sie zu coachen, vielleicht mit ein paar Programmiersitzungen oder ähnlichem.

Sofern Ihr Teamleiter kein kompletter Trottel ist, sollten Sie in der Lage sein, einen Konsens zu finden, der in Bezug auf das Projekt und die Gesamtziele des Unternehmens sinnvoll ist.


2

Bah. Jeder ist falsch.

Seien Sie ein besserer Entwickler als diese Ein-Plattform-Leute und Sie haben viel interessantere Optionen als jemals zuvor. Lerne also vorerst MVC. Erfahren Sie in Ihrer Freizeit mehr über die Plattformen, die Sie wirklich interessieren. Bauen Sie Ihre Node-Fähigkeiten auf. Lerne etwas Django. Achten Sie auf alle Java- oder MVC .NET-Vorurteile, denen Sie ausgesetzt sind, und rennen Sie dann davon, aber lernen Sie mindestens genug, um zu kritisieren und zu erklären, wie viel Gedanken Sie in Ihre kaum verborgenen Hassvorurteile dieser Plattformen gesteckt haben. (okay, vielleicht projiziere ich dort)

Und jetzt zum wichtigen Rat. Wenn Sie Ihre Spezialitäten weiter verfeinern und gleichzeitig Ihr Fachwissen in anderen Bereichen erweitern, werden Sie in weniger als zwei Wochen in einer bestimmten Großstadt zu jeder Jahreszeit eine neue Arbeit finden meistens interessant zumindest die halbe zeit. Wenn Sie sich an diesem Ort befinden, lassen Sie sich nicht mit diesen Jobs abfinden, von denen sie behaupten, dass sie dies wollen, und am zweiten Tag lassen sie Sie DAS tun, ohne auf eine auf lange Sicht absehbare Frist zu hoffen. Erkläre es nur höflich und entschuldige dich, aber nein, du wolltest das wirklich nicht und hast das auch in deinem Interview gesagt und dann! die Tatsache, dass sie die Position zu Ihnen falsch dargestellt und sich weigern, das anzuerkennen.

Aber glauben Sie mir, einen neuen Auftritt zu finden ist immer viel besser, als ernsthaft irritiert und unglücklich zu werden, wenn die Dauer länger als 5 Minuten dauert. Aber natürlich müssen Sie zuerst Ihre Gebühren bezahlen, damit Sie das tun können. Manche Leute werden es niemals tun. Deshalb wollen sie alles in dem Zeug, das sie am besten kennen. Und natürlich sind andere Antworten nicht wirklich falsch. Es ist sinnvoll, dass ein .NET-Shop zu .NET gehört, wenn er das Dumme pflegen muss.

Was natürlich keinen Sinn ergibt, ist, warum sie mit einem Rails / JS / UI-Entwickler diversifizieren und ihn nur MVC-Apps machen lassen. Aber für den Moment. Möglicherweise müssen Sie es abholen und Ihre Gebühren bezahlen. Und wie ich in Kommentaren sagte, MVC ist wirklich nicht so schlimm. Eine wirklich schlechte Wahl angesichts aller Optionen, aber sicherlich nicht die schlechteste. Es ist ziemlich unkompliziert, wirft nicht 10.000 Abstraktionsebenen auf alles, was tatsächlich passiert, und es ist nicht so verworren, dass Sie die Namen der verantwortlichen MS-Ingenieure verfluchen würden, wenn sich jemand darum kümmern könnte um sie zu lernen.

Gehen Sie also zu dem Ort, an dem Sie abreisen können, wenn Sie es nicht bereits getan haben, und stellen Sie möglicherweise sogar fest, dass Sie skeptischer gegenüber Dingen sind, die Ihnen derzeit gefallen. Sie mögen vielleicht sogar Schienen nicht so sehr wie ich. Nicht, dass irgendetwas mit Ruby nicht stimmt (außer natürlich seinem Interpreter).


1

Abhängig von Ihrer Situation kann es gefährlich sein anzunehmen, dass Sie wissen, warum sie Sie eingestellt haben, und noch mehr anzunehmen, dass Ihr Manager dies weiß und der Meinung ist, dass die Einstellung von Mitarbeitern mit Ihren Fähigkeiten eine gute Idee ist.

Ich würde fragen, nehmen Sie den obigen Rat an und machen Sie einen Geschäftsfall, warum Sie mit JRuby über C # gehen sollten. Vielleicht macht Ihre Argumentation und Ihr Zeitplan das Brechen von den alten Wegen Sinn. Ich würde nicht einfach davon ausgehen, dass es in Ordnung ist oder nicht, dem Manager oder den Verantwortlichen die Fakten mitteilen und sie die Entscheidung treffen lassen, es ist das, wofür sie das große Geld bekommen, und es ist ein bisschen CYA.


1

Meiner ehrlichen Meinung nach ist eines der Dinge, die gute Entwickler von großartigen unterscheiden, ihre Fähigkeit, sich an neue Technologien anzupassen. Wir leben in einer schnelllebigen Welt, in der die Spitzentechnologie von heute morgen überholt sein wird. Daher ist ein Entwickler, der sich nicht anpassen möchte, für das Unternehmen von begrenztem Nutzen. Das wäre in Ordnung, wenn nicht ein bisschen, dass es wirklich sehr schwierig ist, gute Leute zu finden und einzustellen, und wenn ein Unternehmen sein Juwel findet, planen sie langfristig.

Ich habe Unternehmen gesehen, die außerhalb ihres Technologiebereichs eingestellt haben, und sie tun dies aus genau demselben Grund. Sie möchten großartige Entwickler in die Hände bekommen, auch wenn dies bedeutet, dass sie auf die Anpassung an neue Technologien warten müssen.

Nun zu deiner Situation. Als neuer Mann in der Gruppe würde ich sehr vorsichtig sein, was ich sage und nicht zu meinen Vorgesetzten sagen. Sicher, Sie werden mit einer Menge davonkommen, wenn Sie davon ausgehen, dass Sie sich noch in einem Anpassungsprozess an Ihre neue Umgebung befinden. Die Untergrabung der Autorität und das hartnäckige Beharren auf Ihrer bevorzugten Technologie lässt Ihre Vorgesetzten jedoch nur vermuten, dass sie einen Fehler begangen haben und dass Sie nicht bereit sind, Ihre Komfortzone zu verlassen.

Was Sie auswählen, liegt bei Ihnen, aber ich würde Ihnen empfehlen, neue Technologien zu erlernen. Es wird nicht weh tun, das verspreche ich.


1

Ich gehe davon aus, dass Sie im Vorfeld Ihres Interviews ehrlich über Ihren Mangel an C # -Kenntnissen gesprochen haben. Andernfalls könnten Sie sich rechtlich in einer sehr prekären Situation befinden.

Gute Programmierer kennen sich mit Programmieren aus. Obwohl niemand offensichtlich mit allen Sprachen und Rahmenbedingungen vertraut ist, gibt es bei den meisten von ihnen erhebliche Gemeinsamkeiten. Wenn Sie nicht gebeten werden, in einer Sprache zu arbeiten, die sich massiv von dem unterscheidet, was der Mainstream heutzutage ausmacht (zum Beispiel Lisp), sollte ein guter Programmierer in der Lage sein, sich anzupassen.

Natürlich gibt es eine Lernkurve. Wenn der Arbeitgeber Sie eingestellt hat, muss er sich darauf verlassen können, dass Sie dieser Kurve in angemessener Zeit folgen können (unter der Annahme, dass Sie ehrlich waren, wenn Sie C # nicht kannten). Die C # -Sprache ist stark von Java entlehnt, und im Allgemeinen sind die meisten klassenbasierten Programmiersprachen sehr ähnlich (Sie haben node.js erwähnt, das auf ECMAScript aufbaut, einer prototypbasierten Sprache, Sie sind also offensichtlich komfortabel mit anderen Programmierparadigmen.

Gute Programmierer sollten nicht nur flexibel sein, sondern auch gerne neue Dinge lernen. In der Softwareentwicklung lernt man normalerweise oder wird irrelevant.

Natürlich muss sich Ihr Arbeitgeber auf halbem Weg mit Ihnen treffen, vorausgesetzt, er weiß, dass Sie C # nicht kennen. Wenn Sie lernbegierig sind, müssen sie Ihnen die Zeit und die Ressourcen dafür geben. Dich in die Tiefe zu werfen ist unfair und unnötig stressig. Sie müssen sich hinsetzen und eine ruhige, rationale Diskussion mit Ihrem Vorgesetzten führen. Wenn sie es in C # wollen, müssen sie bereit sein zu akzeptieren, dass Sie sich in einer Lernphase befinden, während Sie daran arbeiten, und es wäre ungerecht, wenn sie Ihnen enge Fristen setzen. Wenn die Fristen nicht flexibel sind und von hoher strategischer Bedeutung sind, müssen sie darauf vorbereitet sein, dass Sie einen gewissen Spielraum haben, um die Arbeit innerhalb dieser Frist zu erledigen. Wenn sie es in der am häufigsten verwendeten Sprache in ihrem Büro benötigen, können Sie möglicherweise anfordern, es jetzt in das zu implementieren, was Sie möchten. Es ist bekannt, dass Sie den Termin einhalten müssen, und dass Sie ihn dann als Lernübung in C # erneut implementieren müssen, um die Software mit den internen Anforderungen in Einklang zu bringen, sobald sie die externen Anforderungen erfüllt. Wie ich bereits sagte, haben die meisten der heute gebräuchlichsten Sprachen viel gemeinsam, sodass es hauptsächlich auf die Details der Implementierung ankommt.

Sie müssen bereit sein, früher oder später zu akzeptieren, dass Sie in einem C # -Shop arbeiten, und müssen daher C # unter dem Gürtel haben.


0

Vielleicht sind sie nicht zufrieden mit der Art und Weise, wie alle MVC in der .NET-Umgebung verwenden. Es könnte zu viel geben, um es wie Webformulare zu behandeln. Dies ist nicht anders, wenn jemand mit einem prozeduralen Hintergrund in OOP anfängt, alles in eine große Klasse einsetzt und wie gewohnt weitermacht.

Dieses erste Projekt ist nicht die ideale Situation, weil sie dies so schnell erledigen wollen. Machen Sie sich mit .NET so schnell wie möglich auf dem Laufenden und bringen Sie Funktionen so schnell wie möglich zum Laufen. Du wirst die Art und Weise, wie du Dinge tust, nicht mögen. Versuche nur zu bedenken, dass du anfängst, dieses Zeug umzugestalten und deine Fähigkeiten in einer anderen Sprache anzuwenden.

Hoffentlich wird Ihre Art, MVC4 (vorausgesetzt, alle anderen tun es nicht richtig) in einem Ruby-Stil zu verwenden, alle von der Mentalität von Webforms abbringen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.