it-swarm.com.de

Was tun, wenn Sie vor einer Programmieraufgabe stehen, die Sie noch nie erledigt haben?

Ich habe meine Karriere als .NET-Entwickler vor 3 Monaten begonnen. Nach einem langen Schulungsplan zu verschiedenen Technologien, Mustern und Konzepten haben die Entwickler, die mich betreut haben, beschlossen, dass ich bereit bin, an einem der vielen Projekte teilzunehmen, die das Unternehmen abwickelt.

Ich freue mich sehr, endlich mit dem Codieren beginnen zu können. Das Team, dem ich beigetreten bin, ist vorerst eher klein, weil ich mit einem neuen Projekt angefangen habe. Das ist großartig, weil ich in den gesamten Lebenszyklus des Projekts involviert sein kann. Es handelt sich um ein webbasiertes SPA-Projekt mit einer Unterstützung, das die ASP.NET MVC/ASP.NET-Web-API und im Front-End das Durandal-Framework und verwandte Bibliotheken verwendet.

Mein Problem ist, dass ich mich nach einem Treffen mit meinen Kollegen und der Festlegung der Aufgaben und Schätzungen für den nächsten Monat in einer Position befinde, in der ich nicht weiß, ob ich in der Lage bin, eine der Aufgaben zu übernehmen.

Ich habe noch nie eine der erstellten Aufgaben ausgeführt und weiß nicht, wie ich vorgehen soll.

Eine der erstellten Aufgaben besteht beispielsweise darin, einen allgemeinen Fehlerbehandlungsmechanismus für die gesamte Anwendung zu erstellen.

Wie geht man normalerweise vor, wenn man mit Aufgaben konfrontiert wird, die er noch nie erledigt hat?

37
aleczandru

Es gibt verschiedene Dinge, die Sie tun können und sollten, um sich auf die Aufgabe vorzubereiten:

  • Denken Sie über das Problem nach und zeichnen Sie einige Diagramme. Stellen Sie sicher, dass Sie wissen, welches Problem Sie lösen möchten.
  • Recherchiere, was du versuchst zu tun. Das Internet ist eine wertvolle Informationsquelle. Ich sage nicht, fragen Sie Stack Overflow - ich sage, recherchieren Sie, wie andere Leute ein Problem wie das Ihre bereits gelöst oder angegangen haben. Google hat sich Folgendes ausgedacht: "Ausnahmebehandlung als systemweites Problem" . Persönlich versuche ich immer, von anderen zu lernen.
  • Sprechen Sie zum Schluss, und dies ist vielleicht das Wichtigste, mit den anderen Mitarbeitern Ihres Teams, um mehr Klarheit und Anweisungen zu erhalten, was zu tun ist. Ich möchte immer neue Ingenieure sehen, die um Anleitung für Projekte bitten.

Nicht zu wissen, wie man etwas macht, wird niemals wirklich enden. Jeden Tag stoße ich auf Probleme, die ich noch nie angegangen bin. Es ist äußerst wichtig, herauszufinden, wie neue Probleme gelöst werden können. Selbst alte Probleme sind nie ganz alt - bei der Programmierung gibt es fast immer eine neue Wendung oder eine Aufforderung, dass Ihre Lösung auf eine neue oder andere Weise funktioniert.

Deshalb bin ich Ingenieur; Ich liebe es, neue Sachen herauszufinden.

Hören Sie nie auf, neue Dinge zu lernen. Lernen macht dich besser.

59
barrem23

Es gibt keine perfekte Lösung, aber einige Dinge, die helfen könnten:

  • Teilen Sie Aufgaben in kleinstmögliche Einheiten auf - teilen Sie sie auf, bis Sie Dinge haben, die Sie tun können.

  • Wiederholen Sie die unmittelbare Aufgabe oder das Problem, um sicherzustellen, dass Sie es wirklich verstehen. Führen Sie dann eine Analyse durch und wiederholen Sie den Vorgang.

  • Wählen Sie zuerst die einfachste Aufgabe aus, auch wenn sie zu einfach erscheint nur um den Schwung in Gang zu bringen. Einige Leute bevorzugen die schwierigste Aufgabe, so dass die "harte Arbeit" nicht im Weg ist. Ich habe festgestellt, dass die „einfachste Aufgabe“ im Allgemeinen besser funktioniert, da Sie nur versuchen, etwas Schwung in Gang zu bringen, und ich habe gesehen, dass „am härtesten zuerst“ dazu führt, dass Projekte ins Stocken geraten, bevor sie einen echten Schwung bekommen.

  • Bitten Sie um Hilfe bei der Auswahl der richtigen Aufgabe und Vorgehensweise, um loszulegen.

  • Suchen Sie einen Mentor auf, der Ihnen ein oder zwei Wochen lang (idealerweise täglich) ständiges Feedback gibt.

  • Stellen Sie viele Fragen, aber konzentrieren Sie sich darauf, höflich zu Ihren Teamkollegen zu sein. Fragen Sie immer, ob sie Zeit haben, und achten Sie auf die üblichen verbalen und nonverbalen Anzeichen dafür, dass sie gerade keine Zeit haben.

  • Führen Sie eine fortlaufende Liste der Probleme, auf die Sie stoßen, und gehen Sie sie dann entweder im täglichen Gedränge oder zu einem regulären Zeitpunkt Ihrer Wahl mit anderen durch.

  • Haben Sie keine Angst, die grundlegendsten Fragen zu stellen. Annahmen von anderen können schwer in Frage zu stellen sein, aber wenn Sie nicht mit dem fortfahren können, was Ihnen gegeben wurde, müssen Sie erneut Fragen stellen.

  • Wenn Sie das Ziel kennen, tun Sie so viel wie möglich, bis Sie nicht mehr weiterkommen, und veröffentlichen Sie dann den Fortschritt und die Frage zum Stapelüberlauf.

27
Michael Durrant

Natürlich haben Sie keine Ahnung, wie man einen "generischen Fehlermechanismus" schreibt. Niemand weiß, wie man einen "generischen Fehlermechanismus" schreibt, bis einige Anforderungen definiert sind. Es hört sich so an, als ob Sie nur die Vorstellung haben, dass ein "generischer Fehlermechanismus" erforderlich ist, um dieses Projekt zu starten.

Persönlich würde ich diesen Gedanken zurückdrängen. Das Schreiben von "generischen" Elementen vor dem Implementieren der tatsächlichen Benutzeranforderungen ist fast immer Zeitverschwendung. Und da es generisch ist, ist es per Definition nicht spezifisch für Ihr Unternehmen oder Ihre Anwendung, sodass wahrscheinlich bereits etwas verfügbar ist, das etwa 95% Ihrer Anforderungen erfüllt Bedürfnisse.

Aber da Sie das Junior-Mitglied sind, ist es möglicherweise keine gute Idee, zurückzudrängen. Sie müssen also mit den Leuten sprechen, die glauben, dass sie einen "generischen Fehlermechanismus" benötigen, und herausfinden, welche Dienste sie von diesem Mechanismus erwarten. Durchsuchen Sie dann das Netz, um festzustellen, ob etwas bereits Geschriebenes ausreicht. Wenn Sie etwas finden, schlagen Sie vor, es einfach zu verwenden. Sie werden wahrscheinlich nicht zustimmen, weil jeder, der nach einem "generischen Fehlermechanismus" fragt, wahrscheinlich unter einem schlimmen Fall leidet, der hier nicht erfunden wurde.

Wenn dies fehlschlägt, besteht der nächste Schritt darin, eine Schnittstelle für den Fehlermechanismus zu definieren und diese von den Stakeholdern genehmigen zu lassen. Danach wird die Implementierung wahrscheinlich trivial sein.

=================

P.S. Es gibt einige Programmierer, die der Meinung sind, dass der Weg zum Starten eines Projekts darin besteht, eine "Plattform" zu schreiben, um alle allgemeinen Dienste bereitzustellen, die von den Anwendungsmodulen benötigt werden. Dies führt normalerweise zu monatelanger trivialer Arbeit, bei der Dinge neu erfunden werden, die bereits kostenlos verfügbar sind. Bis Sie die Leistungsgrenzen der verfügbaren Lösungen erreicht haben, gibt es keinen Grund, "Plattform" -Dienste zu schreiben. Es gibt auch keinen Grund, Wrapper um vorhandene APIs zu schreiben. Wenn Sie kontinuierlich umgestalten, erscheint auf magische Weise der genaue Wrapper, der für Ihre Anwendung erforderlich ist.

18
kevin cline

Ich denke, Sie leiden mehr unter Angst als unter einem Fähigkeitsdefizit. War irgendwann nicht alles neu? Haben Sie jemals eine Aufgabe erhalten und konnten sie nicht bis zu einem gewissen Grad lösen? Du wirst dafür bezahlt, Dinge herauszufinden.

Nutze dein Team - Wenn du in einem guten Team bist, solltest du in der Lage sein, um Hilfe zu bitten. Es gibt Dinge, die Sie wissen, die selbst die Ältesten nicht wissen werden. Um Hilfe zu bitten ist kein Zeichen von Schwäche (nicht mehr als zu einer Frage-Site zu laufen.).

Suche - Eine Websuche zur generischen Fehlerbehandlung hat nichts ergeben? Möglicherweise finden Sie keine vollständige Lösung. Sie müssen daran arbeiten und es trotzdem in Ihre App einpassen.

Prototyp - Ändern Sie Ihre Sicht auf die Aufgabe von der Produktion zum Prototyp. Holen Sie sich einfach etwas zum Arbeiten und bauen Sie von dort aus. Wenn Sie es auf den Punkt gebracht haben, können Sie es verwenden, und beginnen, es als Produktion zu betrachten. Jetzt sehen Sie die Aufgabe nicht mehr als etwas, von dem Sie nicht einmal wissen, wo Sie anfangen sollen.

Überwinde es - Nur Dinge zu tun, von denen du weißt, wie man sie macht, wird langweilig. Es führt Sie auch in die Falle, einige Lösungen nur brutal zu erzwingen, indem Sie dieselben Dinge immer wieder wiederholen (Wenn Sie Dinge gerne wiederholen, arbeiten Sie am Fließband.). Seien Sie bereit, Fehler zu machen. Diejenigen, die Ihnen sagen, dass sie alles wissen, niemals um Hilfe bitten oder suchen, lügen nur.

Es ist der alte Witz über Ärzte, die immer noch Medizin "praktizieren"; Sie haben auch nicht alle Antworten.

11
JeffO

Freuen Sie sich, dass Sie nicht etwas tun, was Sie schon hundert Mal getan haben. Sie haben die Freude an der Softwareentwicklung gefunden (für mich jedenfalls YMMV) - das Fahren zu lernen, während Sie mit außergewöhnlichen Geschwindigkeiten die Autobahn entlang rasen. Dies ist die Art von Dingen, für die ein großartiger Entwickler lebt und die sich auszeichnen.

Mein persönlicher Prozess ist ungefähr so:

  • Forschung. Finden Sie heraus, ob und wie dieses Problem oder ein ähnliches Problem bereits gelöst wurde. Auch wenn Sie nur Informationen zu Lösungen für verschiedene Sprachen oder Plattformen finden, können diese äußerst informativ sein.
  • Prototyp. Der absolut beste Weg, etwas richtig zu machen, ist, es zuerst falsch zu machen. Erstellen Sie eine Lösung, die auf der Grundlage Ihrer Recherchen alles zusammenstellt. Versuchen Sie, es an die Hauptanforderungen anzupassen, und berücksichtigen Sie dabei die Nebenanforderungen. Machen Sie sich nicht die Mühe, es hübsch oder perfekt oder erweiterbar oder flexibel oder performant zu machen, sondern lassen Sie es einfach funktionieren. Machen Sie sich Notizen zu den gewonnenen Erkenntnissen - was hat funktioniert, was nicht, mögliche Hindernisse usw. Dann werfen Sie den Code weg. Wenn Sie sich Sorgen machen, dass Sie zu lange nach einem Dummkopf suchen, tun Sie dies in Ihrer Freizeit. Es kommt Ihnen persönlich in Bezug auf Wissen zugute.
  • Design. Kombinieren Sie Ihr externes Wissen (Forschung) mit persönlichem Wissen (gewonnene Prototyp-Lektionen) und formulieren Sie ein Design dessen, was Sie für den richtigen Weg halten.
  • Kooperieren. Finden Sie ein hochrangiges Teammitglied, zeigen Sie ihm Ihr vorgeschlagenes Design und erhalten Sie Feedback. Zeigen Sie es jemand anderem und holen Sie sich dessen Feedback. Verfeinern Sie Ihr Design.
  • Iterieren. Wenn Sie sich bei Ihrer Lösung immer noch nicht sicher sind, stellen Sie sicher, dass Peer Reviews Teil Ihres Iterationszyklus sind. Bringen Sie Ihre Implementierung regelmäßig zu einem hochrangigen Teammitglied, um Feedback zu erhalten.
  • Sei glücklich - du hast dein Wissen und deine Karriere erweitert und musst etwas Neues und Interessantes tun, anstatt etwas Altes und Langweiliges, das du tausendmal zuvor getan hast. Versuchen Sie, Ihr nächstes Projekt zu einer noch größeren Herausforderung zu machen.

Und schließlich machen Sie sich nicht zu viele Sorgen um das Aussehen. Als Entwickler-Teammanager hätte ich lieber jemanden, der beweisen kann, dass er alles lernen kann, was er lernen muss, als jemanden, der beweisen kann, dass er bereits weiß, was wir gerade versuchen. Ersteres wird für alles, was wir morgen, im nächsten Monat oder im nächsten Jahr tun, nützlicher sein.

6
Adrian