Wie werde ich ein "schnellerer" Programmierer?


142

Meine letzte Berufsbewertung enthielt nur einen Schwachpunkt: Aktualität. Ich bin mir bereits einiger Dinge bewusst, die ich tun kann, um dies zu verbessern, aber was ich suche, sind einige weitere.

Hat jemand Tipps oder Ratschläge, wie er die Geschwindigkeit seiner Ausgabe steigern kann, ohne die Qualität zu beeinträchtigen?

Wie schätzen Sie die Zeitpläne ein und halten Sie sich daran? Was tun Sie, um in kürzeren Zeiträumen mehr zu erreichen?

Jedes Feedback wird sehr geschätzt, danke,


96
Verbringen Sie weniger Zeit mit SO bei der Arbeit, wenn Sie dies tun.
San Jacinto,

52
Wenn Sie dies lesen, ist es bereits zu spät

32
Ich las "Wie man ein fetterer Programmierer wird". Hat mich zum Lachen gebracht
marcgg

13
Ich würde Ihnen eine Folgefrage stellen. Ist Ihr Wunsch, ein "schnellerer Programmierer" zu sein, das Ergebnis Ihrer eigenen schlechten Leistung (AKA, Sie müssen Ihre Fähigkeiten verbessern, Sie müssen Ablenkungen (wie SO) usw.) konzentrieren und beseitigen, oder ist Ihre Planung aufgrund einer Entwicklung mangelhaft? Standpunkt (AKA, Ihnen wurde 1 Woche Zeit gegeben, um etwas zu tun, von dem jede vernünftige Person gewusst hätte, dass es 1 Monat dauern würde). Jeder Artikel hat sehr unterschiedliche Lösungen.

3
Es gibt keine einheitliche richtige Antwort. Machen Sie es zu einer Community-Wiki-Frage, oder lassen Sie die Frage für sich schließen.
Donal Fellows

Antworten:


190

Schalte den Computer aus. Nimm einen Bleistift und etwas Papier. Skizzieren Sie Ihr Design. Überprüfen Sie es mit Ihren Kollegen. Dann schreiben Sie den Code.


9
Oder Sie könnten Ihren Computer behalten, und öffnen Sie zB MS Visio
sshow

208
Bleistift und Papier oder ein Whiteboard sind schneller als die meisten Anwendungen, die ich verwendet habe.
Thomas Owens

24
Auf Papier zu machen, fokussiert den Verstand.

100
Warum kann ich den Visio-Kommentar nicht ablehnen? Wenn Sie nicht mit visio arbeiten, beschleunigen Sie die Entwicklung auf eine bestimmte Weise!

52
Ugh .... Visio. Jedes Mal, wenn ich aufgefordert werde, "Visio in Ihrem Designdokument zu verwenden", skizziere ich es zuerst auf Papier und verbringe dann die nächsten zwei Tage damit, alle Zeilen in Visio richtig zu machen.
Robert Fraser

149

Einige Ideen...

  • Vermeiden Sie die Vergoldung - tun Sie nur, was von Ihnen verlangt wird (in Bezug auf die Anforderungen)
  • Verstehen Sie die Geschäftsanforderungen und machen Sie es gleich beim ersten Mal richtig
  • Verstehen Sie Ihre Umgebung und Werkzeuge genau
  • Werden Sie ein fantastischer Schreiber, verwenden Sie Tastaturkürzel anstelle der Maus
  • Gehen Sie iterativ vor und prüfen Sie Ihre Gesundheit, um sicherzustellen, dass Sie auf dem richtigen Weg sind
  • Erfinden Sie das Rad nicht neu. Denken Sie daran, frühere Arbeiten und die Arbeit anderer wiederzuverwenden
  • Vermeiden Sie Ablenkungen, lesen Sie keine E-Mails, schauen Sie nach draußen, sprechen Sie mit Kollegen usw.
  • Überarbeiten Sie sich nicht - erkennen Sie, wann Sie Pausen einlegen müssen

7
+1 für das Rad nicht neu zu erfinden. Lernen Sie, wiederverwendbaren Code zu erstellen, der in einen anderen Code eingebunden werden kann und mit keinem zu kleinen Umschreiben funktioniert. (Bsp .: Funktioniert mit Parametern anstelle von

34
+1 für "Vermeiden von Vergoldung" - dies war die Ursache dafür, dass ich aufgrund meiner perfektionistischen / anal-zurückhaltenden Tendenzen viel zu viele Fristen verpasst habe.
Dinah,

7
Tippen - wichtiger Punkt. Immer erstaunt über die Anzahl der Codierer, die ich treffe und die das Tippen nicht gelernt haben ...
Paddy

2
+1 Beseitigung von Ablenkungen. Aus meiner Sicht sind sie die größten Zeitfresser.

2
+1 für die Tipps zur Mikroverbesserung (anstelle von Makroverbesserungen in Bezug auf Planungsprojekte).

132

Ihr Wunsch, selbst ein "schneller" Programmierer zu sein, ist lobenswert. Nicht pünktlich zu liefern bedeutet jedoch nicht, dass Sie langsam sind. Es bedeutet, dass das Projekt schlecht geplant wurde. Ein "schneller" Programmierer zu sein, wird nicht helfen. Es bedeutet nur, dass Sie die Frist schneller überschreiten.

Sie (und Ihr Team) machen einen der folgenden Fehler (oder alle):

  • die zu erledigende Arbeit unterschätzen ;
  • Fehlen einer großen Anforderung oder eines Architekturstücks während der Planung;
  • Arbeitsschätzungen mit Kalenderschätzungen verwechseln und Dinge wie Besprechungen / Telefon / andere Gemeinkosten nicht berücksichtigen;

Es gibt mehrere Möglichkeiten, wie Sie einen der drei oben genannten Punkte ansprechen können. Bevor Sie sich jedoch verbessern können, müssen Sie wissen, warum die Dinge so laufen, wie sie sind. Machen Sie eine Nachbeurteilung der letzten zwei oder drei Projektschätzungen im Vergleich zur tatsächlich benötigten Zeit und finden Sie heraus, wo die zusätzliche Zeit hingegangen ist.

Ich wiederhole es noch einmal - wenn Sie langsam Code schreiben, wird die Frist nicht überschritten , wenn Sie dies richtig geplant haben, um dies zu berücksichtigen.


47
Einige Entwickler sind allerdings zu langsam. Das kann ein Problem sein.

12
Ja, das kann ein Problem sein, aber es ist ein persönliches Problem. Es sollte niemals ein Projekt oder ein Teamproblem werden. Mit anderen Worten, es kann sich auf die Karriere auswirken, aber es sollte sich niemals auf den Projektplan auswirken.
Franci Penov

12
"Nicht pünktlich zu liefern bedeutet nicht, dass Sie langsam sind, sondern dass das Projekt schlecht geplant wurde" - das ist eine Textfeldbeschreibung eines ungültigen Arguments. Es gibt viele andere Gründe, warum Sie möglicherweise nicht pünktlich liefern. Einer dieser Gründe kann darin liegen, dass Sie langsam sind.
Fleisch

15
@flesh - Wenn Sie wissen, dass Sie langsam sind, warum sollten Sie Ihren Zeitplan nicht so planen, dass dies berücksichtigt wird? Mit anderen Worten, wenn Sie wissen, dass Sie nicht so schnell laufen können wie Usain Bolt, würden Sie planen, 100 m in 9,7 s zu laufen?
Franci Penov

5
@Kibbee - in dieser Situation schneiden Sie Features. Sie können nicht versprechen, bestimmte Arbeiten in einer bestimmten Zeit auszuführen, wenn Sie wissen, dass dies nicht möglich ist, und auf ein Wunder hoffen.
Franci Penov

89

Wirklich, wirklich lernen Sie Ihren Editor. Wenn Sie eine IDE verwenden, stellen Sie sicher, dass Sie alle darin enthaltenen Funktionen verwenden. Holen Sie sich ein Spickzettel, um die Tastaturkürzel für den Editor Ihrer Wahl zu lernen. Wenn Sie eine Shell verwenden, richten Sie Verknüpfungen für häufig verwendete Verzeichnisse ein


3
Dies kann in der Tat manchmal die Produktivität drastisch steigern
sshow

6
Das Schreiben von tatsächlichem Code ist nur ein Teil der Arbeit eines Entwicklers. Zeit zu investieren, um die IDE bis zur Perfektion zu erlernen, ist eine Punktoptimierung. und Sie wissen, was sie über Optimierungen sagen, nicht wahr? - "Erst messen und dann die Engpässe optimieren".
Franci Penov

1
Ich sehe das überhaupt nicht. Wenn ich meine Schreibzeit um 50% verkürze, wie viel Zeit spart mir das an einem Tag? Nach meiner Erfahrung verbringe ich die meiste Zeit damit, über Code nachzudenken, ihn zu testen, zu evaluieren, leicht zu modifizieren usw. Im Vergleich zum eigentlichen Schreiben denke ich, dass dies am Ende kein großer Gewinn sein würde.

4
Das Navigieren in der IDE wird so zu etwas, das Sie ohne nachzudenken tun. Alles, was eine bewusste Anstrengung erfordert, wie das Bewegen zu dem kleinen grauen Knopf, der neben all den anderen kleinen grauen Knöpfen markiert ist, verlangsamt Sie, indem es Ihr Denken unterbricht. Strg-n ohne Bewegung unter meinen Fingerspitzen zu haben, ist ein großer Nettogewinn.
Paul McMillan

5
In die gleiche Richtung: Lernen Sie allgemeine Tastenkombinationen. ZB in vielen Windows-Programmen ... Kopieren: Strg + c Ausschneiden: Strg + x (das 'x' sieht aus wie eine offene Schere) Einfügen: Strg + v (direkt neben 'c' und 'x' oben) Zum Anfang der Zeile gehen: Pos1 Zum Ende der Zeile gehen: Ende Cursor wortweise bewegen (kein Zeichen): [Umschalt] + Strg + links oder rechts Zum Anfang des Dokuments gehen: Strg + Pos1 Zum Ende des Dokuments gehen: Strg + Ende usw.

38

"Hat jemand Tipps oder Ratschläge, wie er die Geschwindigkeit seiner Ausgabe steigern kann, ohne die Qualität zu beeinträchtigen?"

Viele, viele Menschen streben nach "höchster" Qualität auf Kosten von etwas, das (a) einfach, (b) zuverlässig und (c) korrekt ist.

Der wichtigste Weg, um Ihre Entwicklung zu beschleunigen, besteht darin, das, was Sie tun, so zu vereinfachen , dass es so einfach wie möglich ist.

Die meisten Leute, die Probleme mit der pünktlichen Lieferung haben, liefern viel zu viel. Und die angegebenen Gründe sind oft albern. Es handelt sich oft nur um wahrgenommene Anforderungen, nicht um tatsächliche Anforderungen.

Ich habe viele Leute gehört, die mir sagten, was der Kunde "erwartet". Das ist eine schlechte Politik.

Bauen Sie das Einfachste. Wenn der Kunde mehr benötigt, bauen Sie mehr. Aber bauen Sie zuerst das Einfachste.


"Viele, viele Menschen streben nach" ultimativer "Qualität auf Kosten von etwas, das (a) einfach, (b) zuverlässig und (c) korrekt ist." Du hättest es dabei belassen können und ich hätte dafür gestimmt.
Corymathews

"Vereinfachen, vereinfachen." ~ Henry David Thoreau

2
Ja ... das bedeutet auch vorzeitige Abstraktion. Wenn etwas nur eine Implementierung haben soll, machen Sie es nicht zu einer Schnittstelle.
Robert Fraser

3
Eines meiner Lieblingszitate ist in dieser Situation angebracht: "Mach etwas so einfach wie möglich, aber nicht einfacher." ~ Umschreibung, Albert Einstein
Nemi

Einfach zu halten ist das, was selbst viele Programmierer nicht richtig hinbekommen: Sie geraten in die "vorzeitige Optimierung ist die Wurzel allen Übels" -Falle, um auf einfache Weise. Normalerweise ist das einfachste Programm das schnellste oder das mit der höchsten Qualität.

32

Vermeiden Sie es, Ihren Code auf die Perfektion zu polieren. Lassen Sie ihn einfach funktionieren. Das erwartet das Geschäft.

Zunehmende Geschwindigkeit bedeutet jedoch häufig Qualitätseinbußen.


10
Ich würde vorschlagen, "es zum Laufen zu bringen" und wenn die Zeit es erlaubt, es zu perfektionieren!
Preets

28
-1: Es gibt keinen Grund, Qualität zu opfern. Sie können immer Funktionen opfern.
S.Lott

6
Ich habe es wiederholt gesehen. Entwickler bleiben bei den letzten 1% eines bestimmten Features hängen und spielen dann Aufholjagd und bleiben zurück, wenn sie versuchen, die verbleibenden Features zu vervollständigen. Vervollständige zuerst, was von dir erwartet wird, dann gehe zurück und poliere es.

3
Oft bedeutet eine Steigerung der Qualität eine Steigerung der Geschwindigkeit. Wenn Sie sich zunächst ein wenig Zeit nehmen, um das Problem zu beheben, sparen Sie möglicherweise mehr Zeit beim Testen und Debuggen.
David Thornley

2
Wenn Sie an einer Funktion hängen bleiben, arbeiten Sie an etwas anderem.

29

Wiederverwendung - Ich versuche, alle cleveren Elemente aus früheren Projekten herauszufiltern, damit ich sie in zukünftigen Projekten wieder verwenden kann. Es lohnt sich immer, sich zu fragen: "Kann ich das eines Tages wieder benutzen?"


Perfekter Geisteszustand für eine schnellere Programmierung auf lange Sicht, obwohl dies zunächst mehr Zeit in Anspruch nehmen könnte.

8
+1: Vorsicht, ich habe mich dabei erwischt, wie ich etwas generalisiert und abstrahiert habe, damit ich es an einem anderen Tag wieder verwenden kann. Ich habe die Frist für diesen Tag verpasst oder die Zeit verdoppelt, die der Fehler hätte brauchen müssen, um sie zu beheben "Vielleicht" spart später Zeit.
Steven Evers

2
Eine "Trickkiste" zu haben, ist der Schlüssel. Wenn dies zu einem Jobproblem für Sie wird, lohnt es sich, etwas Zeit in die Entwicklung wiederverwendbarer Teile zu investieren (vorausgesetzt, die Domäne, in der Sie arbeiten, ist für die Wiederverwendung von Code geeignet).

24

Halte es einfach.

Wenn Sie TDD verwenden, sollten Sie " rot, grün, refactor " folgen :

  1. Schreiben Sie einen nicht bestandenen Test ( rot ). (Häufig verfügt Ihr Code aus Gründen der Funktionalität noch nicht über.)
  2. Begehen Sie schreckliche Kodierungsverbrechen, damit Ihre Tests bestanden werden ( grün ). Gegebenenfalls Hardcode.
  3. Refactor , wahrscheinlich für eine kurze Zeit Tests zu brechen, aber insgesamt das Design zu verbessern.

3
Wenn Sie TDD durchführen, haben Sie einen Testläufer, der pro Test einen rot / grünen Bericht erstellt, um anzuzeigen, ob diese bestanden wurden.

2
@ Konstantin: Das Schreiben von Code mit TDD kann 20% länger dauern, liefert aber auch besseren Code. Auf lange Sicht bleibt die Geschwindigkeit, mit der Änderungen vorgenommen werden, in etwa gleich, wenn das System wächst. TDD hilft Ihnen, technische Schulden zu vermeiden, die Sie bremsen.

3
Das Schreiben war noch nie der langsame Teil des Programmierens. Auch wenn Sie mit TDD mehr schreiben müssen, verlangsamt es Sie nicht. Es könnte beschleunigen Sie auch, denn zuerst einen Test zu schreiben hilft Ihnen , sich darauf zu konzentrieren , was vor darüber nachzudenken , benötigt wird , wie es zu implementieren.

1
Wenn das Management ein Schlüsselkonzept nicht versteht, sollten Sie es ihm erklären. Zum Beispiel martinfowler.com/bliki/TechnicalDebt.html

3
@Konstantin, wenn Sie "Entwicklung" als den Vorgang des Schreibens der Code-Anweisung ansehen, würde ich Ihnen zustimmen. Wenn Sie jedoch unter "Entwicklung" das Packen, Vorbereiten von Buildnotizen, Bereitstellen, Testen, Erstellen von Fehlerberichten, Überprüfen und Priorisieren von Fehlern, Zuweisen von Aufgaben, Untersuchen, Debuggen und Beheben von Fehlern und erneutes Starten des Prozesses verstehen, dann sind es 15 Minuten bis Schreiben Sie den Unit-Test überwiegt die Tage und der Verlust des Kundenvertrauens 1000x über.

22

Laden Sie alle Ihre Sprach- / Bibliotheksdokumentationen lokal auf Ihren Computer herunter, ziehen Sie das Netzwerkkabel ab, und schalten Sie WLAN aus .

Ich versuche hier nicht lustig zu sein. Das hilft mir wirklich!


Ich mache dasselbe.

Online-Dokumentation und Fehlersuche sind sowieso so überbewertet.

Installieren Sie eine Firewall und konfigurieren Sie sie so, dass fast alle
Webzugriffe

Ich denke wirklich darüber nach (die Tatsache, dass ich diesen Kommentar hinterlasse, beweist genug)
Ikke

Und SO verlieren? verdammt nein

20

Beachten Sie, dass Sie den Stapelüberlauf zu lange gelesen haben. Die Ausrede "Kompilieren" funktioniert nur so lange. :)


15
Kommt darauf an, wie schnell dein Compiler ist. Vielleicht besteht die "Lösung" darin, einen langsameren Compiler zu finden und ihn auf Pentium 2 mit 128 MB Speicher auszuführen? :-)
Franci Penov

@Franci, vielleicht sogar Swap Space auf eine Diskette legen. Oder zwei in RAID.

20

Vermeiden Sie es, zu oft zu wechseln. Ablenkungen und Aufgabenwechsel können einen Tag kosten , selbst wenn Sie Tools wie Mylyn zum Verwalten Ihrer Aufgaben verwenden.

Stellen Sie eine Granularität fest (z. B. 30 Minuten) und arbeiten Sie nur an Dingen, die mit der jeweiligen Aufgabe zusammenhängen. Alles andere (neue Fehlerberichte, E-Mails zu anderen Problemen, Verfahrensfragen, die nichts damit zu tun haben) wird mindestens bis zum "nächsten Checkpoint" verzögert. Stellen Sie sicher, dass Sie das Aufrufen von E-Mail-Benachrichtigungen deaktivieren, damit Sie nicht angesaugt werden.

Es ist besonders effektiv, wenn Sie einen Kumpel in Ihrem Team haben, der Sie informiert, wenn die Dinge wirklich zusammenbrechen und Ihre sofortige Aufmerksamkeit erfordern.


Dies funktioniert nicht, wenn Sie einen Chef haben, der innerhalb von 10 Minuten Antworten auf E-Mails erwartet.
1.

Das ist eigentlich sehr relevant. Lassen Sie sich nach vernünftigem Ermessen nicht selbstsüchtigen Aufmerksamkeitsfängern zum Opfer fallen und bleiben Sie bei Ihrer ursprünglichen Aufgabe. Wenn Sie sich erlauben, in verschiedene Richtungen gezogen zu werden, ist das Endergebnis, dass Sie nichts anstelle von etwas erreichen.
AndyUK

14

Mach es richtig, am besten gleich beim ersten Mal. Wenn das bedeutet, dass Sie eine Weile darüber nachdenken müssen, bevor Sie anfangen, dann tun Sie es. Funktioniert zu 90%.


2
+1 Das ist so wahr. Es bedeutet nicht, dass Sie "perfekt" sein müssen; Wir alle werden Fehler machen. Aber wenn wir die Dinge das erste Mal so gut wie möglich machen, wird die Folge dieser Fehler viel geringer sein.

+1 - Ich erinnere mich, dass ich irgendwo gelesen habe, dass der Unterschied zwischen guten und schlechten Programmierern nicht in der Geschwindigkeit liegt. Der Unterschied ist, dass gute Programmierer mehr von ihrem Code behalten.
Jason Baker

Das ist mein Motto, mach es beim ersten Mal richtig. Machen Sie es sich nicht zur Gewohnheit, immer wieder Ihren Code reparieren zu müssen, da Sie ihn nicht ordnungsgemäß gemäß den Spezifikationen ausgeführt haben.

"Wenn Sie keine Zeit haben, es richtig zu machen, wie werden Sie Zeit haben, es noch einmal zu machen?"
Alex Feinman

Unter Umständen müssen Sie Erfahrungen aus der aktuellen Software bestimmen zu können , was ist der beste Weg. In diesem Fall können Sie es nicht beim ersten Mal richtig machen.

14

2
Dies ist ein schöner Bonus ... aber ich denke nicht, dass er insgesamt viel Einfluss haben wird. Das Eingeben von Code ist wahrscheinlich der am wenigsten zeitaufwendige Teil. (Ja, ich bin gefolgt und habe den Link gelesen. Ich stimme ihm einfach nicht zu.)

Wenn der begrenzende Faktor für Ihre Codierung darin besteht, wie schnell Sie Inhalte eingeben, arbeiten Sie wahrscheinlich auf der falschen Abstraktionsebene.
Pete Kirkham

+1. Ein großer Link, ein großer Artikel für diejenigen , die es bis zum Ende lesen;) ich gut tippt, aber es hat mich inspiriert zu Programmer Dvorak , Tastaturlayout umschalten en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard (aber ich eingeschaltet „die‘ und -_ Tasten mit Microsoft Keyboard Layout Creator), und ich bin sicher, dass ich bald viel schneller tippen
Roman Boiko


12

Übung und harte Arbeit.

Sie müssen Zeit und Mühe investieren. Wenn Sie sich mit den Tools, die Sie verwenden, wohler und sicherer fühlen, werden Sie schneller und kreativer.

Wenn Sie eine bestimmte Fähigkeit verbessern möchten, kann es auch hilfreich sein, Übungen zu entwerfen, mit denen Sie speziell daran arbeiten können. Wenn sich Ihre Langsamkeit in der Entwurfsphase befindet, versuchen Sie, Entwurfsprobleme zu finden, an denen Sie online arbeiten können. Wenn Sie dieselbe Übung wiederholen, können Sie sie schneller abschließen und die Geschwindigkeit trainieren. Ich persönlich mag die Algorithmusübungen von TopCoder zum Üben der Programmiergeschwindigkeit. Sie haben auch Design-Herausforderungen, aber ich habe sie nicht ausprobiert.


Die Übung wird in der Programmierung oft unterschätzt. Dies sollte eine der Top 5 Antworten gewesen sein.

Beeindruckend. Ich bin mir nicht sicher, warum es nicht höher ist. Das habe ich noch nie versucht. Ich versuche es mal!
David

11

Erfahren Sie mehr über The Zone, lernen Sie, wie Sie sich in die Zone hineinversetzen und wie Sie erkennen, wenn Sie nicht in der Zone sind.

Sobald ich "in der Zone" bin, bin ich extrem produktiv und Code fließt nur aus mir heraus. Oft kann ich die Codierung für 2 oder 3 Tage in einem Tag durchführen. Aber ich finde, dass es oft schwierig ist, an diesen Ort zu gelangen. Ich schiebe mich hin und her und werde von anderen Dingen abgelenkt (z. B. Stapelüberlauf).

Zitat aus den Tricks, die Sie verwenden, um sich in der Zone zurechtzufinden


Und lassen Sie das Mittagessen aus, wenn Sie in der Zone sind ... oder bleiben Sie lange ... MMMmm die Zone. drool

10

Kennen Sie Ihre IDE und Framework gut. Es braucht Zeit, sich für jede Kleinigkeit an Google zu wenden.


Es ist aber auch wichtig, dass Sie erkennen, wann Sie Google benötigen, und dass Sie in der Lage sind, dies schnell zu tun.

9

1
Bitte bearbeite dies, damit ich es verbessern kann. Es ist momentan "zu alt".
kmarsh

1
Hängt jedoch stark davon ab, wofür Sie es verwenden müssen.

8

Bevor Sie anfangen zu entwickeln:

  • Melden Sie sich von Ihrer Mailbox ab
  • Schalten Sie alle Sofortnachrichten aus Clients
  • Bitten Sie höflich Kollegen, Ihnen Zeit zu geben, sich zu konzentrieren
  • Natürlich hör auf im Internet zu surfen

Jedes Mal, wenn Sie unterbrochen werden, werden Sie langsamer, da Ihre Gedanken Zeit brauchen, um wieder auf dem richtigen Weg zu sein. Ich habe gehört, dass der menschliche Verstand für jede Unterbrechung 5-10 Minuten benötigt, um zu dem Gedankenprozess zurückzukehren, den er vor der Unterbrechung hatte. Bei so viel Zeit pro Unterbrechung wird nicht viel Zeit für den ganzen Tag verschwendet.

Die Leute in unserem Unternehmen haben es sich tatsächlich zur Aufgabe gemacht, die Zeit in ihren Kalendern zu blockieren und dann jeden Tag für ein paar Stunden in einen leeren Konferenzraum zu ziehen.


7

Lernen Sie Ihre Entwicklungs-IDE ein und aus. Lernen Sie die Tastenkombinationen. Lernen Sie, die Maus weniger zu benutzen. Ich finde, das spart mir viel Zeit.


7

Sind Sie langsamer als Ihre Kollegen oder sind Ihre Schätzungen zu optimistisch?


7

Ich habe festgestellt, dass es das Beste ist, Ihre Laufzeit-API so gut wie möglich zu lernen, um Software schneller zu produzieren. Geben Sie keine Listenlogik ein, wenn eine LINQ-Erweiterung funktioniert. Bauen Sie keine Event-Listener auf, wenn das Binden funktioniert usw.

Nach Einschätzung geht das mit Erfahrung einher. Sie können Schätzungssoftware verwenden, um bessere Schätzungen zu erhalten.

Persönlich fand ich mit Junior-Level-Entwicklern, nehmen Sie, was ihre anfängliche Schätzung ist und multiplizieren Sie es mit 2, dann verdoppeln Sie es. Dies wird all das Lernen, die Besprechungen, die Zeitverschwendung usw. berücksichtigen. Je höher die Entwickler, desto mehr arbeiten sie mit einem Faktor von 2 über ihren Schätzungen.

Oft ist die Frage nicht, ob Ihre Einschätzung falsch war. Hat Ihre Schätzung die richtigen Dinge berücksichtigt? Geben Sie Ihre Schätzungen und Zeitpläne in Bezug auf den Programmieraufwand oder die Kalenderzeit an? Denken Sie über die gesamte Zeit Ihres Tages nach und wie viel davon aktuell ist, produktives Codieren im Vergleich zu Besprechungen, Lernen, Debuggen usw.


3
"... multipliziere es mit 2 und verdopple es dann." Da Sie Zeit sparen

LOL - Ich weiß, was du sagst. Aber Sie werden erstaunt sein, wie oft dies unbemerkt abrutscht, im Gegensatz zu "Multiplizieren mit 4".

7

Zwei Dinge, die impliziert werden könnten, aber ich habe hier noch keine Antworten gefunden, die die Produktivität steigern:

  • Verwenden Sie eine Art Erstellungs- und Bereitstellungsskript. Das Kompilieren, Bereitstellen und Neustarten von App-Servern ist zeit- und fokusneutral und sollte mit einem Mausklick erledigt werden.

  • Habe eine Art Versionskontrolle. Codieren zu müssen, ohne eine Änderung rückgängig machen zu können, ist wie zu versuchen, auf Eiern herumzulaufen


7

Ein paar Ideen kommen in den Sinn:

  1. Andere Meinungen zu Ihren Schätzungen einholen - Gibt es andere Entwickler, die Sie fragen könnten, wie "Hey, können Sie diese Art von Funktion in diesem Zeitraum fertigstellen?". Die Idee ist, dass die Eingabe anderer Leute in einigen Fällen mit Genauigkeit helfen kann, da jemand eine Reihe von Dingen bemerkt, die Sie bei der Schätzung verpasst haben.

  2. Verbessern Sie Ihre Schätzungsfähigkeiten - Verfolgen Sie, wie weit Sie von den Schätzungen entfernt sind und warum Sie davon entfernt sind: Werden bei anderen Arbeitselementen die Fristen nicht eingehalten? Unterschätzen Sie immer wieder, wie kompliziert etwas ist? Geben Sie einen vollständigen Zeitplan an, wenn dies nicht praktikabel ist, z. B. ist das, was gefragt wird, so vage, dass das bloße Erstellen eines Prototyps Wochen in Anspruch nimmt, und dann sollte eine Neubewertung dessen erfolgen, was sonst noch zu tun ist? Dies kann am besten dazu beitragen, diese Fertigkeit zu entwickeln. Wenn Sie also sagen, dass etwas x Stunden dauert, können Sie darauf vertrauen, weil Sie es immer und immer wieder gemacht haben. Eine alternative Möglichkeit, dies zu formulieren, ist lediglich Üben, Üben, Üben.

Zugegeben, Sie haben wahrscheinlich bereits darüber nachgedacht, aber ich fand es nur lohnend, dies für die anderen zu formulieren, die diese Ideen möglicherweise nicht berücksichtigt haben.


7
  1. Kennen Sie die Technologie von innen und außen.
  2. Halt! Denken! Gehen!
  3. Architekt für was auch immer entstehen mag, aber implementieren Sie nur, was wirklich gefragt ist.
  4. KISS - Mach es einfach dumm
  5. Wenn es zu komplex wird, ist es wahrscheinlich nicht gut gedacht. (Gehen Sie zurück zu 2 und 4)
  6. Bleiben Sie nicht in 5 stecken. Es lohnt sich oft, von vorne zu beginnen. (Zurück zu 2 und 4)
  7. Gehen Sie zurück zu 1.

7

Ich denke, das Schlüsselwort hier ist "Aktualität". Sie sagten nicht, dass Sie zu langsam waren, sondern dass Sie nicht pünktlich waren.

Für das Projektmanagement ist es wichtig, dass der Manager abschätzen kann, wann Ihre Arbeitselemente genau abgeschlossen sind. Ich vermute, dass der Hauptgrund, warum Ihre Bemühungen als nicht rechtzeitig angesehen wurden, darin besteht, dass Sie häufig Artikel hatten, die nicht termingerecht geliefert wurden und viel später als geplant geliefert wurden.

Um Ihre Aktualität zu verbessern, möchten Sie möglicherweise mehr Zeit damit verbringen, zu verstehen, wie lange Sie aufgrund Ihrer Fähigkeiten, Ihrer Erfahrung und der Domäne benötigen, um ein bestimmtes Arbeitselement fertigzustellen. Auf diese Weise können Sie Ihrem Projektmanager bessere Schätzungen geben. Der Schlüssel hier ist "besser" ... Sie könnten häufiger pünktlich liefern, indem Sie alles mit einem Fudge-Faktor auffüllen. Was Sie jedoch wirklich anstreben möchten, ist eine genauere Schätzung.

Ich würde dies mit Ihrem Vorgesetzten besprechen, um festzustellen, ob dies tatsächlich der Fall ist. Andernfalls könnten Sie doppelt so schnell programmieren, was Ihnen in der Hälfte der Zeit vielversprechend erscheint und dennoch für Ihre Aktualität kritisiert werden, da Ihre Schätzungen immer noch den gleichen Fehlerfaktor aufweisen.


"... Verbringen Sie mehr Zeit damit, zu verstehen, wie lange Sie brauchen, um ein bestimmtes Arbeitselement aufgrund Ihrer Fähigkeiten, Erfahrungen und Ihrer Domäne fertigzustellen." -> Richtig, und das hilft Ihnen auch, den Umfang zu verkleinern und noch mehr Zeit zu sparen.
Jim G.

Dies trägt auch dazu bei, dass Ihr Manager für die Mitarbeiter in seiner Umgebung gut aussieht. Außerdem können unterstützende Materialien wie Marketing synchron mit Ihrem Projekt abgeschlossen werden.
Tom Leys

7

Stabil werden, stabil bleiben.

Erstellen Sie etwas, das einen kleinen Teil der Funktionalität implementiert, und stellen Sie sicher, dass es Ende-zu-Ende funktioniert. Lassen Sie es dann weiter laufen, während Sie neue Funktionen hinzufügen. Ja, dies ist zum Teil eine TDD-Übung, aber es macht Sinn, auch wenn Sie keine TDD machen.

Der Grund ist , dass jedes Mal , wenn ich jemand mit 2 Wochen von Code gesehen habe , die nie stabil gewesen waren, ist es immer noch 2 Wochen dauert , zu erhalten es stabil.

Wenn du bleibst stabil , beseitigen Sie diese Unsicherheit und geben sich bei Bedarf die Möglichkeit, in der Nähe der Frist nach unten zu schauen.

Das offensichtliche Gegenargument ist, dass dies mehr Zeit in Anspruch nimmt als nur ein einziges Mal, da Sie zusätzliche Arbeit leisten müssen, um nicht endgültigen Code zu stabilisieren. Ich kaufe das nicht für eine Sekunde. Wenn Sie einen Code haben, der funktioniert , Sie 5 Zeilen ändern und etwas kaputt geht, wissen Sie genau, wo der Bruch passiert sein muss.

Wenn Sie 10.000 Codezeilen haben, hat das nie funktioniert , und Sie eine Unterbrechung finden müssen, müssen Sie eine Menge Code durchsuchen.

Kleine, inkrementelle Änderungen auf einem System, das durchgehend FTW-stabil ist. Gehen Sie langsam, um schnell zu gehen.


7

Gute Produktivität zu erreichen, bedeutet für mich, eine klare Vorstellung davon zu haben, was Sie erreichen wollen und wie Sie dorthin gelangen.


1
Meine 30-minütige Radtour zur Arbeit durch die norwegische Landschaft ist auch ziemlich gut darin, den Kopf frei zu bekommen und die kreativen Prozesse in Gang zu bringen.

6

So ziemlich alle Antworten wurden hier und anderswo an zahlreichen Orten zum Tode gesagt. Oder zumindest habe ich es zu Tode gehört. Lernen Sie Ihre IDE, lernen Sie schneller zu schreiben, verwenden Sie Frameworks, verwenden Sie die Codegenerierung usw. usw. Ja, natürlich werden diese Dinge helfen, und ich bezweifle, dass es viele Programmierer gibt, die alle beherrschen. Aber als Programmierer, der diese Fragen stellt und Websites wie Stack Overflow häufig besucht , kannten Sie diese Dinge bereits . Wolltest du nur, dass sie hier wiederholt werden, oder wolltest du nur ein bisschen Luft schnappen?

Aber was wäre, wenn wir diesen Zustand erreichen könnten? Ich meine, beherrschen Sie all diese Vorschläge? Was würde dann passieren? Gut. Ich vermute, dass sich die Zeit noch weiter verkürzen wird. Und wieder kehren wir zu einer Wahrnehmung von Qualität zurück. Ich meine, unser Handwerk hat sich definitiv weiterentwickelt und ist im Laufe der Jahrzehnte immer produktiver geworden. Aber hat die Qualität in dieser Zeit zugenommen (natürlich mit Ausnahme der ersten Jahre)?

Meine Antwort ist einfach: Qualitätssoftware braucht Zeit ! Sie können nur einen gegen den anderen tauschen (Qualität / Geschwindigkeit). Aber ja, wir alle wissen, dass wir nicht ehrlich sind, inwieweit dieser Kompromiss häufig das schnelle Ende der Skala erreicht. Und wir sind in Projekten von Anfang an noch größere Lügner!

Ich sage, dass Sie hier nicht schuld sind. Das Problem ist die Wahrnehmung der Menschen, wie lange hochwertige Software dauern sollte. Wir täuschen uns in der Überzeugung, dass wir in der Lage sind, Qualitätssoftware nach den Zeitplänen unserer Manager oder sogar nach unseren Schätzungen zu erstellen. Wir machen keine Qualitätssoftware . Wir schreiben Software, die manchmal in bestimmten Ecken einer Anwendung mit Qualitätsblitzen funktioniert.

Was können wir dagegen tun? Wir können unsere Chefs nicht einfach davon überzeugen, dass wir die Investition in jedes unserer Projekte verdoppeln oder verdreifachen müssen. Ich sage mit gutem Beispiel vorangehen. Erstellen Sie ein wirklich großartiges Stück Software als Nebenprojekt. Nehmen Sie sich Zeit und gehen Sie keine Kompromisse ein. Achten Sie währenddessen darauf, wie Sie Fortschritte machen. Notieren Sie sich die scheinbar nicht zusammenhängenden Aufgaben, für die Sie unerwartet viel Zeit aufgewendet haben, und prüfen Sie, ob Sie dies rechtfertigen können. Vergleichen Sie dies mit allen anderen Projekten, an denen Sie gearbeitet haben. Sein brutal ehrlichmit dir selbst und allen Aspekten dieser Analyse. Können die zusätzlichen Dinge, die Sie mit Ihrer Qualitätssoftware getan haben, in "echten" Projekten bei der Arbeit vernachlässigt werden? Aber vielleicht ist Ihr Versuch gescheitert. Was war der Grund? Warst du gelangweilt und hast dich nur beeilt, um die Kernfunktionen zu erledigen? Ich habe so etwas noch nicht selbst gemacht, weshalb ich diesen Gedanken mit einigen Zweifeln beende - aber ich beabsichtige, es wirklich zu versuchen. Ich werde Sie auf dem Laufenden halten :).

Schließlich denke ich, dass die meisten (wenn nicht alle) Leistungsbewertungen verdreht und außerordentlich manipulativ sind. Sie können Qualität und Geschwindigkeit nicht auf 100% drosseln. Ihr Chef sollte Sie anhand eines Standards bewerten, der von der Organisation festgelegt wird. Der Standard der Organisation in Bezug auf den Kompromiss zwischen Qualität und Geschwindigkeit. Stellen wir uns vor, OrangeSoft Inc. erwartet 33% Qualität und 66% Geschwindigkeit. Wenn Sie also Code schreiben, der vielleicht ein Drittel der Testeinheiten enthält, sollten Sie dies aber mit Geschwindigkeit und verkürzter Lieferzeit wieder gutmachen. (Dies sind ziemlich grobe Analogien, aber Sie verstehen es). Stattdessen schreibt Bob Code extrem schnell, ist aber notorisch fehlerhaft. Bei seiner Leistungsbeurteilung erhält er also 3/5 für Qualität und 5/5 für Geschwindigkeit. Carol hingegen schreibt den Code viel langsamer, produziert aber deutlich weniger Bugs. Sie bewertet die Qualität mit 5/5, die Geschwindigkeit mit 3/5. In jedem Fall werden Bob und Carol bei ihrer Gehaltserhöhung angedockt. Kann jeder Mitarbeiter ein perfektes Ergebnis erzielen? Ist das fair?


5

Die Technik, die ich benutze, ist evolutionäres Prototyping

Sie können bei Google nach weiteren Informationen suchen. Wenn Sie jedoch schnell etwas produzieren möchten, ist dies der einzige Weg. Außerdem hat es den Vorteil, dass Sie fertig sind, wenn der Benutzer sagt, dass er es mag (... und mit der Dokumentation beginnen können).

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.