Balance zwischen „Richtigem Werkzeug für den Job“ und Vertrautheit [geschlossen]

19

Wenn Sie also die Sprache für ein Projekt auswählen, wird in einer idealen Welt die Sprache ausgewählt, weil sie das richtige Werkzeug für den Job ist. Oft bevorzuge ich jedoch die Verwendung einer Sprache, die ich fließend beherrsche, anstatt eine Sprache, die ich lernen müsste, oder die ich nur im Umgang mit anderen Sprachen beherrsche. Nur weil ich eine ziemlich universelle Sprache wie Java wirklich mag, heißt das nicht, dass ich sie immer verwenden sollte, aber gleichzeitig heißt das nicht, dass ich jedes Mal, wenn etwas Textverarbeitet werden muss, etwas wie Perl ausbrechen sollte. Wie findet man hier das Gleichgewicht?

Michael McGowan
quelle

Antworten:

12

Wow, das ist eine sehr schwierige Frage, wenn man aus der Welt der Theorie in die Welt der Produktion geht.

In der Theorie

Einfach. Verwenden Sie immer das beste Werkzeug für den Job und lernen Sie, was Sie brauchen.

In der Praxis

Es gibt nicht nur die Frage Ihrer Sprachgewandtheit, sondern auch eine Reihe anderer geschäftlicher Fragen, die gestellt werden müssen, bevor Sie diese beantworten können:

  • Anschaffungskosten für das "richtige Werkzeug"
  • Kosten für die Unterstützung - Menschen müssen geschult werden
  • Kosten der Lernkurve
  • Integrationskosten mit anderen Produkten (jetzt und in Zukunft)
  • ... etc

Außerhalb der Theorie gibt es schwerwiegende Konsequenzen für Ihre Wahl der Technologie.

Jetzt sage ich nicht, dass Sie nicht das richtige Werkzeug auswählen - stellen Sie nur sicher, dass das richtige Werkzeug in der Lage ist, die Gewinnspanne in Bezug auf die Kosten auszugleichen.

Wenn es sich um ein persönliches Projekt handelt, verwenden Sie immer das "richtige" Tool. Wenn Sie also vor dieser Entscheidung im geschäftlichen Kontext stehen, können Sie einen besser informierten Anruf tätigen.

Stephen Bailey
quelle
2
Theoretisch ist es nicht einfach. Genau das, was funktioniert am besten wirklich bedeutet ? Was sind die Kriterien?
Whatsisname
+1: Wenn alle Faktoren kombiniert wurden, ist das richtige Werkzeug möglicherweise nicht das beste Werkzeug - nur wenige Menschen erhalten das, wählen das beste Werkzeug und leiden unter den Folgen.
Steven Evers
1
@whatsisname best ist subjektiv und hängt von Ihrer Umgebung, Ihrem Budget, Ihrem Zeitrahmen ab ... - aber im Geiste eines Heimprojekts wäre es der Fall, eine Technologie auszuprobieren, die entworfen wurde, um dieses Problem zu lösen. ZB Erlang für Distributed, Perl für Textmanipulation - dann können Sie sich selbst ein Urteil bilden.
Stephen Bailey
Eine Sache, bei der ich mir immer sicherer bin, ist, dass Java meist nicht das richtige Werkzeug für diesen Job ist. Es gibt einfach so viele bessere Alternativen. Versteh mich nicht falsch. Es war eine großartige Sprache, und viele Leute haben sich daran gewöhnt, aber für mich ist es nicht das BESTE Werkzeug (aber in einigen Fällen immer noch ein Werkzeug, nur nicht das Beste) für meinen Job. Nicht zum Basteln, nicht für Big Data, nicht für das Web.
Bogen
9

Ich denke, Vertrautheit wird nicht genug gewürdigt. Ihre Vertrautheit beeinflusst sehr gut, welches Werkzeug das richtige ist. Sie müssen das Tool verwenden, um Ihr Projekt abzuschließen. Darüber hinaus kann die Verwendung von etwas, das Ihnen Spaß macht, ohne Zweifel die Nachteile seiner Fitness übertreffen, da Sie sich mehr auf die Arbeit freuen und bessere Ergebnisse erzielen.

http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html

Whatsisname
quelle
3

Dies ist nur als Geschäftsfrage wirklich lösbar. Viele geschäftliche Fragen werden jedoch nur mit Blick auf kurzfristige Zahlen gestellt, was bei solchen Dingen ein Fehler ist.

Mein allgemeiner Ansatz:

  1. Wenn es sich um eine kleine oder kurzfristige Sache handelt, schreiben Sie sie immer mit den bekannten Werkzeugen.
  2. Wenn es sich um eine große, langfristige Sache handelt, sollten Sie sich den Kosten-Nutzen-Kompromiss ansehen, den das Erlernen eines neuen Tools mit sich bringt.
  3. Wenn Sie sich nicht sicher sind, behandeln Sie es als eine kurzfristige Sache, bis Sie Beweise dafür haben, dass es eine langfristige Sache ist. Dann schauen Sie sich die Entscheidung noch einmal an.

Drei Dinge, die Sie beachten sollten, wenn Sie über Kosten und Nutzen nachdenken: Erstens: Menschen, die es eilig haben, können die Zukunft kurzfristig verändern. Zweitens machen die Wartungskosten den Löwenanteil der Kosten für ein erfolgreiches System aus. Drittens, gute Entwickler lernen gerne und Ihre Entwickler bei Laune zu halten, ist eine gute langfristige Investition.

William Pietri
quelle
1

Gute Frage! Wie der Name schon in seiner Antwort sagte: "Vertrautheit wird nicht genug gewürdigt." Ein anderes Tool, ein anderes Framework, eine andere Sprache könnten viel besser sein als das, was Sie gewohnt sind, und Sie wären immer noch viel weniger produktiv, wenn Sie das erste Mal die Seile erlernt hätten.

Ich arbeite seit einigen Jahren als ASP.NET-Entwickler in digitalen Agenturen, wo wir eine Mischung aus großen Projekten, kleinen Projekten, engen Projekten, gut gepolsterten Projekten usw. haben. Wir suchen nach "weichen Zielen", kleineren Projekten, für die es keine engen und harten Fristen gibt, und nutzen sie als Gelegenheit, neue Technologien einzusetzen, die möglicherweise überlegen sind. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework - all das habe ich zum ersten Mal in einem solchen Projekt verwendet.

Wenn Sie Ihre Chancen so nutzen können, haben Sie hoffentlich eine größere Auswahl an Optionen, um das richtige Werkzeug auszuwählen, ohne an Vertrautheit zu leiden. Genau wie in Julios Beispiel: Sie haben ein Ziel gefunden, auf dem sie Ruby in ihr Repertoire aufnehmen können, und jetzt können sie zwischen Java und Ruby wählen.

Aber wenn die Frist kurz und fest ist und das Projekt wichtig ist, empfehle ich Ihnen, sich an die vertrauten Werkzeuge zu halten. Etwas anderes ist vielleicht besser geeignet, aber in solchen Projekten dreht sich alles um das Risiko .

Carson63000
quelle
1

Das hängt von ein paar Dingen ab:

1. Wie gut lernst du neue Sprachen oder Werkzeuge?

Wenn Sie schnell lernen, ist die Hürde beim Erlernen neuer Sprachen oder Werkzeuge geringer. Auf diese Weise können Sie der Toolbox ein weiteres Tool hinzufügen.

2. Wie sprachen- / werkzeugunabhängig Sie Ihre Arbeitsumgebung gestalten.

Wenn Ihr Workflow stark vom Werkzeug abhängig ist, sind die Hindernisse für das Erlernen verschiedener Sprachen höher. Wenn Sie mit einer bestimmten IDE verbunden sind, bedeutet das Wechseln der Sprache wesentlich mehr als nur das Erlernen einer Sprache, da das Bearbeiten von Text Sie mit Sicherheit frustriert.

Jemand, der vim oder emacs verwendet, hat dieses Problem nicht. Sie müssen nur die neue Sprache lernen.

3. Geschäftliche Realität

Das Erlernen neuer Werkzeuge / Sprachen braucht Zeit. Diese Zeit hat Kosten. Diese Kosten können jedoch eine Investition sein, die sich mehr auszahlt als die anfänglichen Kosten. Außerdem dauert die Implementierung einer unhandlichen Lösung in der Regel länger und die Wartung ist schwieriger. Wenn es sich um etwas Größeres als ein kleines Projekt handelt und die Tools in meiner vorhandenen Toolbox nicht zum Problem passen, werde ich untersuchen, welche Tools zum Problem passen. Ich habe auch in eine Umgebung investiert, die einem allgemeinen Ansatz entspricht, und gelernt, vim als meinen gewählten Editor zu verwenden.

Noch etwas - was ist der kürzeste Abstand zwischen zwei Punkten? Wenn jemand anderes etwas geschrieben hat, das beinahe das tut, was ich tun möchte, ist es normalerweise am schnellsten, es einfach an meine Bedürfnisse anzupassen.

user21007
quelle
0

Wenn es eine neue Sprache gibt, auf die Sie neugierig sind und die Sie (und das Unternehmen) sich leisten können, warum sollten Sie sich nicht ein paar Wochen bis einen Monat Zeit nehmen, um sie zu erkunden?

So habe ich Rubin gelernt. Mein Coder-Partner hatte 7 Jahre Erfahrung mit Java. Ich hatte 11 Jahre Java-Erfahrung. Keiner von uns wusste etwas über Rubin, nur dass wir es versuchen wollten.

Ich überredete ihn und den Rest des Unternehmens, Ruby einen Monat lang auszuprobieren (dies sollte ein 6-8-monatiges Projekt sein). Im schlimmsten Fall würden wir in dieser Zeit mit Java anfangen.

Zum Glück waren wir nach einer Woche süchtig und es stellte sich heraus, dass alles in Ordnung war. Vielleicht kannst du etwas ähnliches probieren? Sehen Sie nach, ob Sie etwas von Grund auf in einer anderen Sprache erstellen können, machen Sie dem Unternehmen jedoch klar, warum Sie es tun und was Plan B für den Fall ist, dass das Experiment fehlschlägt.

Julio
quelle
0

Es gibt offensichtlich keine einheitliche Antwort auf diese Frage, die für alle Situationen gilt. Aber hier ist ein Aspekt, von dem ich glaube, dass er noch nicht erwähnt wurde. Wenn Sie ein Entwickler sind, sollten Sie auch Ihre eigene Marktfähigkeit berücksichtigen. Wenn für Ihr Projekt die Sprache X gewählt wurde, wie sieht das in Ihrem Lebenslauf aus? Es kann eine gute Idee sein, eine Sprache zu wählen, mit der Sie nicht vertraut sind, damit Sie einen Grund haben, sie zu lernen, Ihren intellektuellen Horizont zu erweitern und Ihre Fähigkeiten für zukünftige Arbeitgeber attraktiver zu machen.

Dima
quelle
0

Ich würde sagen, dass die Vertrautheit mit einer Sprache auch ein Aspekt davon ist, "das richtige Werkzeug für einen Job zu sein". Ich kann mir keine Situation vorstellen, in der zB Prolog für mich das richtige Werkzeug wäre, wenn ich die Sprache überhaupt nicht kenne.

Nemanja Trifunovic
quelle
0

Meine eigene Version besteht darin, "das richtige Werkzeug zu verwenden, das mir zur Verfügung steht". "Verfügbar" zu sein bedeutet, dass ich es benutzen kann, nicht nur, dass ich den Compiler und / oder die Laufzeit kaufen / bekommen kann.

In fast jedem realen Szenario haben Sie angesichts eines Problems nur sehr wenig Zeit, um es zu lösen. Ich glaube nicht, dass Sie in sehr kurzer Zeit wirklich eine neue Sprache lernen können . Eine Sprache zu lernen bedeutet, tatsächlich Bücher zu lesen, den Code anderer zu lesen und zu verstehen, wie es funktioniert und welche Philosophie dahinter steckt. Man könnte einfach ein Tutorial aus dem Internet lesen (was als Ausgangspunkt perfekt ist) und sich hacken lassen. Aber das würde zu furchtbarem Code führen, und Sie wären wahrscheinlich besser dran, besseren Code in einer Sprache zu schreiben, die Sie möglicherweise in viel kürzerer Zeit kennen.

Trotz der Vorzüge des Sprichworts "Das richtige Werkzeug für den Job" sind die meisten gängigen Sprachen eigentlich Allzwecksprachen. Sie mögen in bestimmten Bereichen Stärken haben und in anderen Bereichen nicht so gut sein wie andere, aber sie können die meisten Aufgaben erledigen. Wenn Sie praktisch keine Sprache kennen, steht Ihnen dieses Tool nicht zur Verfügung.

Ich sage nicht, nur eine (oder sogar zwei oder drei) Sprachen zu lernen und sie für alle Projekte zu verwenden und nichts anderes zu lernen. Es ist wichtig, andere Sprachen zu lernen, um mehr Werkzeuge zu erwerben, die Sie in Ihre Toolbox aufnehmen können. Angesichts eines Problems ist es jedoch besser, sich an die Tools zu halten, die Sie kennen, als Ihre Sorgen durch den Einsatz unbekannter Technologien zu vergrößern. Lernen Sie aber weiterhin andere Sprachen, damit Ihnen die Auswahl beim nächsten Mal leichter fällt.

MAK
quelle