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,
performance
methodology
Nick Gotch
quelle
quelle
Antworten:
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.
quelle
Einige Ideen...
quelle
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):
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.
quelle
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
quelle
"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.
quelle
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.
quelle
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?"
quelle
Halte es einfach.
Wenn Sie TDD verwenden, sollten Sie " rot, grün, refactor " folgen :
quelle
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!
quelle
Beachten Sie, dass Sie den Stapelüberlauf zu lange gelesen haben. Die Ausrede "Kompilieren" funktioniert nur so lange. :)
quelle
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.
quelle
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%.
quelle
Lernen Sie, so schnell wie möglich zu tippen .
quelle
Ich mache es morgen .
Dinge zu erledigen ist auch immens hilfreich.
Ich habe sowieso eine kurze Aufmerksamkeitsspanne, deshalb helfen mir diese Bücher, meinen Fokus zu behalten ... was habe ich wieder gemacht?
quelle
Ü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.
quelle
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.
Zitat aus den Tricks, die Sie verwenden, um sich in der Zone zurechtzufinden
quelle
Kennen Sie Ihre IDE und Framework gut. Es braucht Zeit, sich für jede Kleinigkeit an Google zu wenden.
quelle
Emacs
quelle
Bevor Sie anfangen zu entwickeln:
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.
quelle
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.
quelle
Sind Sie langsamer als Ihre Kollegen oder sind Ihre Schätzungen zu optimistisch?
quelle
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.
quelle
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
quelle
Ein paar Ideen kommen in den Sinn:
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.
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.
quelle
quelle
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.
quelle
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.
quelle
Gute Produktivität zu erreichen, bedeutet für mich, eine klare Vorstellung davon zu haben, was Sie erreichen wollen und wie Sie dorthin gelangen.
quelle
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?
quelle
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).
quelle