Beeinträchtigt die Verwendung neuer Techniken die Produktivität? [geschlossen]


20

Es scheint, dass mit zunehmender Erfahrung mit den Tools, mit denen Sie arbeiten müssen, der Anreiz, neue Dinge auszuprobieren, abnimmt.

Als ich an diesem Job als Programmierer neu war, versuchen , neue Dinge aus, online forschen, hat mich mehr produktiv, weil ich fand oft einen Weg (oder Bibliothek), die die Aufgabe erleichtert , dass der Code Framework bereits vorhanden. Die Verwendung von etwas Neuem - sowohl für mich als auch im Kontext der gegebenen Codebasis - hat mich produktiver gemacht.

Jetzt bemerkte ich, dass es mehr und mehr Fälle , in denen für ein bestimmtes Problem, ich weiß , dass es wahrscheinlich ist eine bessere Lösung „da draußen“, und die Suche nach wäre es - vermutlich - der Code zu verbessern. Angesichts meiner nun vertrauten Kenntnisse der Codebasis ist es jedoch weitaus einfacher, die uns zur Verfügung stehenden suboptimalen Tools zu verwenden und eine Lösung (einschließlich Tests) zum Laufen zu bringen, als etwas Neues und "Besseres" zu finden und die Codebasis "zu verbessern".

Es gibt also diese Spannung: "Mach es richtig" vs. "Erledige die Arbeit anständig ".

Passiert das vielen Entwicklern? Ist das ein bekanntes spezifisches Problem? (Ist es doch ein echtes Problem?) Hat es tatsächlich mit zunehmender Erfahrung zu tun?

Oh, und Anmerkung: Ich mag meinen Job immer noch und mag es, ihn zu behalten. Es scheint nur so - immer interessant! - Der Forschungsteil wird kleiner, wenn ich die Codebasis und die Problemstellungen erfahre, denen wir mit unserer App gegenüberstehen.


3
kurzfristig: ja - langfristig:
na

Anständig gemacht kann auch ordentlich sein.
QuanhD

Antworten:


17

Es ist oft riskant, neue Dinge auszuprobieren. Manchmal geraten wir in Schwierigkeiten, weil wir dazu neigen, zwei Dinge zu tun:

  1. Überschätze, wie nützlich das coole / neue / pfiffige Ding ist. Wir sehen ein cooles Beispiel, einen Code, der online geworfen wird. Sehr cool finden wir. Sehr cool! In XI kann Aufgabe Y zehnmal schneller erledigt werden. Es ist eindeutig überlegen. Wir sehen noch nicht alle "unbekannten Unbekannten". Wir sind nicht über die Probleme gestolpert, die die Verkäufer der neuen Sache auslassen. Wir haben nicht genug Erfahrung mit der neuen Sache, um die Landminen auf der Straße warten zu sehen.

  2. Unterschätzen Sie, wie nützlich die vorhandenen Tools / Frameworks / Software / Dinge sind. Wir waren oft nicht da, als das aktuelle System ursprünglich gebaut wurde. Wir schätzen die heiklen Kompromisse nicht, die gemacht wurden. Es ist einfach, Quarterback am Montagmorgen auf einem vorhandenen System zu spielen, aber es funktioniert . Wahrscheinlich ist es sehr seltsam, weil es einen sehr spezifischen Kompromiss zwischen Wartungsfreundlichkeit, Funktionsfähigkeit und guter Leistung gibt. Ja sicher, es ist komisch. Am wichtigsten ist vielleicht, dass das Team ein Experte für die aktuelle Verrücktheit ist und weiß, wie man diese Verrücktheit umgeht. Sie kennen die Landminen und die Fallen und die Fallstricke, die es zu vermeiden gilt. Genau deshalb, weil wir alle Warzen in der aktuellen Art und Weise sehen, wie wir Dinge tun, sind wir sogar daran interessiert, mit neuen Dingen zu spielen.

Aber neue Dinge nicht auszuprobieren und zu konservativ zu handeln, ist wahrscheinlich noch gefährlicher. Klar, wir müssen vorsichtig sein, aber wenn wir nicht herausfinden, wie die beste Mausefalle gebaut werden kann, werden unsere Konkurrenten eher bereit sein, etwas Neues auszuprobieren und Ärsche rausschmeißen! Konservativ zu handeln und sich nicht weiterzuentwickeln, kann vor allem in einem wettbewerbsintensiven Markt zu einem unvermeidlichen Untergang führen.

Ja, wir müssen das Gleichgewicht zwischen Aufrechterhaltung und Versand der aktuellen Dinge mit einem gewissen Maß an spielerischen / lehrreichen Experimenten und neuen Wegen zur Lösung von Problemen herstellen, wobei zu berücksichtigen ist, dass viele dieser neuen Wege Sackgassen sind, während sich andere auszahlen können. IMO Dies ist ein guter Grund, warum viele Unternehmen 20% Zeit haben, mit neuen Dingen zu spielen. Sie wissen oft, dass sie nicht arbeiten, aber viele der Ideen, die aus 20% der Zeit kommen, werden zu Gangbustern. Ohne Zeit zum Spielen und Experimentieren kann man leicht als Firma stagnieren und sich so richtig durchdrehen.


1
Ich denke, es hängt von der Art des "Neuen" ab, das Sie erforschen. Ich habe mich mit Programmierkonzepten aus den 60er, 70er und 80er Jahren befasst und sie scheinen alle neu zu sein, da nur wenige Programmierer die Geschichte des Fachs nachschlagen.
Rudolf Olah

Eine weitere gute Sache bei "Research" ist, dass Sie, selbst wenn Sie die von Ihnen recherchierten Tools nicht endgültig verwenden, einige interessante Konzepte daraus auswählen können. Das heißt, Sie möchten keine "neuen Dinge" verwenden, sondern warten, bis diese gut installiert sind. Manchmal ist es klug ... es gibt wahrscheinlich Unternehmen, die viel in Prototypen, Mootools, Scriptaculous usw. investiert haben, um dann zu erkennen, dass diese Frameworks den Kampf "verloren" haben und nicht sehr unterstützt wurden.
Laurent S.

8

Es passiert die ganze Zeit . Ich habe dies in anderen Posts gesagt, aber mehr als oft nicht, Sie sind nicht im Geschäft, eleganten Code zu entwickeln, Sie sind im Geschäft, ein Produkt zu versenden. Aus diesem Grund wird es Ihnen schwer fallen, einen Manager zu finden, der bereit ist, nStunden für die Behebung von Problemen zuzuweisen , die (am Ende des Tages) die Endbenutzererfahrung nicht wesentlich verbessern. Es wird Ihnen genauso schwer fallen, einen Manager zu finden, der bereit ist, nStunden für die Forschung aufzuwenden (ohne klares Endziel), mit der Ausnahme, dass es wahrscheinlich etwas gibt, das besser ist als das, was getan wird.

Wenn Ihre Anwendung jedoch Engpässe aufweist, die Sie mithilfe von Profilerstellungstools und dergleichen festgestellt haben, und Sie die erwartete Verbesserung der Benutzererfahrung, die durch die Behebung dieser Engpässe entstehen würde, eindeutig quantifizieren können, sollten Sie (relativ leicht) Zeit für F & E haben arbeiten Sie daran, sie mithilfe von Techniken zu optimieren, die Sie aus verschiedenen Quellen finden können.


+1, obwohl ich sage, dass "Versand der Funktion" ist oft eine Entschuldigung für faul (Tests, Wartbarkeit, etc.)
Martin Ba

Obwohl ich mit vielen Ihrer Antworten einverstanden bin, würde ich behaupten, dass Entwickler tatsächlich in gewissem Maße daran interessiert sind, eleganten Code zu entwickeln. Gelieferter Code ist wertlos, wenn er nicht auf einfache Weise repariert / gewartet werden kann. Hier spart das Refactoring von Code, um durch den Einsatz von heute n Stunden "Eleganz" zu erlangen, morgen n * 10 Stunden.
Spanien

@hspain: Ich stimme voll und ganz zu und das ist der theoretische Weg, aber er kommt in der realen Welt (zumindest nach meiner Erfahrung) nicht vor, es sei denn, Ihre Aufgabe sind Bibliotheken und nicht das Produkt selbst.
Demian Brecht

Tatsächlich befürworten einige Leute in der Agile-Community, diese Probleme als nicht funktionierende Anforderungen zu verfolgen. Die Anforderung wäre "der Code sollte flexibel und leicht zu ändern sein" (oder so ähnlich). Auf diese Weise können Sie dann Geschichten erstellen, die sich mit konkreten Problemen befassen. Der Vorteil ist, dass sie für die Stakeholder sichtbar und planbar sind. Siehe zB
sleske

@sleske: ... und dann fallen sie bei der Priorisierung ab;)
Demian Brecht

4

Ich denke, ein Teil davon hängt von der Erfahrung und dem tieferen Wissen ab, wie man einige Probleme erfolgreich löst.

Wenn Sie neu sind, sind auch alle Probleme neu und Sie müssen nachforschen, wie Sie sie lösen können. Da Sie jedoch die gleiche Art von Problem wiederholt gelöst haben, sinkt der Forschungsbedarf, da Sie eine erfolgreiche Lösung für dieses Problem kennen.

Dann neigen Sie nur dazu, die neuen Probleme zu untersuchen, oder die Probleme, bei denen das alte und erprobte entweder nicht mehr funktioniert (veraltet) oder ein Leistungs- oder Ausfallproblem verursacht. Wenn Sie anfangen, ein komplexes System eingehender zu verstehen, wissen Sie, dass Sie nicht die Zeit haben, neue Techniken bei jedem Auftreten realistisch anzuwenden, und Sie haben durch Erfahrung herausgefunden, dass die neue Technik häufig nicht funktioniert bis zu seinem Hype und schafft mehr Probleme als es gelöst hat. So werden Sie weniger geneigt, neue Werkzeuge und Techniken zu verwenden, wenn Sie sie nicht wirklich benötigen, um das Problem zu lösen.

Eine geringere Neigung sollte jedoch nicht bedeuten, dass Sie aufhören zu lernen oder niemals eine neue Technik anwenden, sondern dass Sie vorsichtiger sind, wann sie angemessen ist.


4

Hier sind einige Details:

  1. Es gibt Fristen : Programmierer sollten im Voraus alle notwendigen Informationen über die von ihnen verwendeten Tools zur Verfügung haben. Das Lesen einer Website, das Auffinden einer neuen coolen Sache und die anschließende Verwendung in einer Produktionsumgebung ist ein großes Nein. Sie haben einfach nicht genug Erfahrung mit dem Tool und vor allem haben Sie nicht die notwendige Zeit, um etwas Neues zu lernen. Wenn Sie coole neue Sachen wollen, lernen Sie sie ein halbes Jahr oder ein Jahr, bevor Sie sie verwenden.
  2. Stellen Sie sicher, dass Sie es richtig kennen, bevor Sie es verwenden : Es kann Spaß machen, ein neues Tool zu verwenden, aber es kann sehr schlecht sein, nach Lösungen zu suchen und sie dann zu verwenden, ohne sie richtig zu lernen. Sie haben einfach nicht genug Erfahrung damit. Wenn Sie es googeln mussten, um es herauszufinden, bedeutet dies, dass Sie es nicht gut genug kennen, um es zu reparieren, wenn es das halbe System kaputt macht.
  3. Mit den neuesten Sachen geht es nicht richtig : Die neuen Sachen sind keine bewährten Technologien. Nächstes Jahr ist die Technologie wahrscheinlich komplett verschwunden, Sie sind der einzige auf der Welt, der sie länger nutzt. Allen anderen ist aufgefallen, dass es einfach nicht funktioniert. Es erfordert harte Arbeit, um die neueste Silberkugel zu vermeiden, aber es lohnt sich.
  4. Konzentrieren Sie sich auf Techniken, die Ihr Kernwissen sind : Jeder Programmierer kennt nur einen kleinen Teil des gesamten weltweit verfügbaren Programmierwissens. Der Teil, in dem der Programmierer sich wohlfühlt, ist noch kleiner. Der Teil, der tatsächlich funktioniert, ist noch kleiner. Verwenden Sie nur das Wissen, das Sie richtig gelernt haben und wissen, dass es funktioniert. Dies macht Sie schneller Programmierer und führt zu besserem Code.
  5. Passen Sie es nicht endlos an : Perfekter Code ist ein gutes Ziel, aber das bedeutet nicht, dass Sie zuerst etwas Mist schreiben und ihn dann endlos anpassen, um ihn schrittweise zu verbessern. Schreiben Sie es perfekt, wenn Sie das erste Mal mit all Ihren guten Kenntnissen arbeiten. Vertraue dir selbst. Vertraue nicht der Welt. Niemand weiß genau das, was Sie tun. Ihre Meinung spielt keine Rolle. Sie sind der Programmierer, Sie müssen dafür sorgen, dass es funktioniert. Die Welt kann es nicht für dich tun. Sobald es fertig ist, hör auf. Fass es nicht an, bis sich jemand darüber beschwert.
  6. Nehmen Sie sich Zeit, um neue Dinge zu lernen : Jeder muss ständig neue Dinge lernen. Unsere Zukunft hängt davon ab. Lehne es einfach ab! Lerne neue Dinge, aber benutze sie erst, wenn du dir sicher bist, dass sie tatsächlich funktionieren. Sie werden die Chance haben, es nächstes Jahr zu nutzen, sobald es sich als technisch bewährt hat. Oder du hast es einfach vergessen, wie alle anderen auch - nur das Gute bleibt übrig ...
  7. Verliere nicht das Gute : Wenn du große Systeme erfolgreich gebaut und alle Probleme behoben hast und ein paar nette Techniken erlernt hast, ist das Schlimmste, was du tun kannst, einfach dieses Wissen wegzuwerfen und dir etwas Neues zu suchen. Sie wissen bereits, wie es funktioniert, welche Probleme es gibt und wie Sie diese Probleme lösen können. Es wegzuwerfen ist nur Zeitverschwendung.
  8. Bleiben Sie auf dem neuesten Stand der Technik : Eines der neuen Systeme wird erfolgreich sein. Es hat etwas grundlegend Besseres als alles andere auf dem Markt. Sie wissen einfach nicht, welches die Silberkugel ist. Wenn Sie es nicht rechtzeitig finden, ist Ihr Wissen veraltet. Die Welt kann Sie dazu bringen, all die guten Dinge zu verlieren, indem Sie den Zugriff auf die alten Systeme entfernen.

+1 für die Don't Tweak es endlos.
Srisa

3

Ja, das ist mir schon passiert. Normalerweise müssen Sie eine Risikoanalyse durchführen, um festzustellen, wie viel Zeit das Erlernen der neuen Technik kostet. Können Sie eine ältere Technik wiederherstellen und anwenden, wenn die neue Technik die Erwartungen nicht erfüllt? Ich bevorzuge es, neue Techniken zu lernen, wenn ich kann, aber wenn der Druck nachlässt und ich es mir nicht leisten kann, neue Dinge auszuprobieren, die fehlschlagen könnten, halte ich mich an bewährte Methoden.

Im Allgemeinen finde ich, dass die beste Zeit zum Erlernen neuer Techniken der Beginn eines neuen Projekts ist. Normalerweise ist der Druck nicht zu groß, und wenn Sie etwas Neues finden, das gut funktioniert, können Sie es problemlos in den Rest des Projekts integrieren. Die schlechteste Zeit, um zu versuchen, neue Dinge zu lernen, sind die letzten paar hektischen Wochen vor einem großen Einsatz.


3

Ja, neue Dinge beeinträchtigen die Produktivität

Ja natürlich. Selbst im besten Fall erfordern neue Dinge zusätzliche Zeit, weil sie nicht vertraut sind. Es kann oft viel mehr Zeit kosten.

Nein, neue Techniken können die Produktivität verbessern

Jede neue Technik, mit der Sie die Lösung einfacher ausdrücken können, verbessert Ihre Produktivität. Dies kann so einfach sein wie der Übergang von großen if-elseifBedingungen zu einer Versandtabelle.


1

Ja, es kann die Produktivität beeinträchtigen. Mein Ex wurde gebeten, einmal langweilige Datenverarbeitungsaufgaben zu erledigen, und sie entschied, dass es besser wäre, ein langes Programm zu schreiben, um mit den Daten umzugehen, und es dann auszuführen - was das Problem in Sekundenschnelle beheben würde.

Sie brauchte eine Woche, um es zu schreiben, aber das Problem wurde in Sekundenschnelle gelöst.

Ich denke, dasselbe gilt für Ihre Frage: Ja, Sie können Ihre Produktivität steigern, indem Sie neue Dinge lernen, aber es ist immer noch besser, Ihr vorhandenes Wissen auf die Aufgabe anzuwenden und sie insgesamt schneller zu erledigen. Wen interessiert es, eine neue Bibliothek zu finden und zu lernen, wenn Sie Ihre eigene in kürzerer Zeit schreiben können?

Vergessen Sie auch nicht, dass es oftmals besser ist, es mit vorhandenen Werkzeugen anständig zu machen, als neue Werkzeuge einzusetzen. Jedes Mal, wenn Sie neue Werkzeuge hinzufügen, erhöhen Sie die erforderliche Wartungsfläche, was wiederum alle anderen Benutzer verlangsamt (und verlangsamt) Machen Sie Ihren Code ziemlich chaotisch - ich denke an die Schichten der 'neuen' Technologie, die im Laufe der Zeit in Legacy übergegangen sind, aber in unserem Code immer noch Dinge schrecklich machen. Rückblickend wäre es besser gewesen, nur die alten C-Methoden zu verwenden, anstatt sie hinzuzufügen all das COM und all das VB und all das .NET und jetzt auch HTML hineinschaufeln)


Stimme überhaupt nicht zu: Wer kümmert sich darum, eine neue Bibliothek zu finden und zu lernen, wenn Sie Ihre eigene in kürzerer Zeit schreiben können? & es wäre besser gewesen, nur die alten C-Methoden zu verwenden, anstatt all das hinzuzufügen ... und all das ... - Das ist meiner Meinung nach viel zu fehleranfällig und konservativ.
Martin Ba

@Martin, natürlich gilt auch das Gegenteil - auf SO lesen Sie viele Leute, die sagen: "Lerne ständig neue Dinge", was oft nur bedeutet: "erfinde die gleichen Räder neu, aber diesmal in einem neuen Werkzeug". Ich verfolge einen pragmatischen Ansatz, bei dem die Erledigung der Arbeit Vorrang vor allem hat, was ich tun möchte, oder vielleicht das Leben einfacher macht. Ich bin alt genug, um zu wissen, dass "schließlich" häufig "nie" bedeutet, insbesondere bei den Veränderungsrate, bei der Sie die neuen Dinge ignorieren und die immer neuen Dinge, die auf Sie zukommen.
gbjbaanb
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.