Ich habe meine Karriere vor drei Monaten als .NET-Entwickler begonnen. Nach einem langen Trainingsplan für verschiedene Technologien, Muster und Konzepte haben die Entwickler, die mich betreut haben, entschieden, dass ich bereit bin, an einem der vielen Projekte des Unternehmens teilzunehmen.
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 bin. Es handelt sich um ein webbasiertes SPA-Projekt mit einer gesicherten Oberfläche, die die ASP.NET MVC / ASP.NET-Web-API und im Front-End das Durandal-Framework und verwandte Bibliotheken verwendet.
Mein Problem ist, dass ich nach einem Treffen mit meinen Kollegen und der Festlegung der Aufgaben und Schätzungen für den nächsten Monat in einer Position bin, in der ich nicht weiß, ob ich in der Lage bin, eine der Aufgaben zu übernehmen.
Ich habe noch nie eine der erstellten Aufgaben erledigt und weiß nicht, wie ich vorgehen soll.
Beispielsweise besteht eine der erstellten Aufgaben darin, einen generischen Fehlerbehandlungsmechanismus für die gesamte Anwendung zu erstellen.
Wie geht man normalerweise vor, wenn man mit Aufgaben konfrontiert wird, die er nie erledigt hat?
Antworten:
Es gibt verschiedene Dinge, die Sie tun können und sollten, um sich auf die Aufgabe vorzubereiten:
Nicht zu wissen, wie man etwas macht, wird niemals wirklich enden. Jeden Tag stoße ich auf Probleme, mit denen ich mich noch nie befasst habe. Es ist äußerst wichtig, herauszufinden, wie neue Probleme gelöst werden können. Auch alte Probleme sind nie ganz alt - in 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 Dinge herauszufinden.
Hören Sie nie auf, neue Dinge zu lernen. Lernen macht dich besser.
quelle
Es gibt keine perfekte Lösung, aber einige Dinge, die helfen könnten:
Zerlegen Sie Aufgaben in kleinstmögliche Einheiten - zerlegen Sie sie, bis Sie die Dinge haben, die Sie tun können.
Wiederholen Sie die unmittelbar bevorstehende Aufgabe oder das Problem, um sicherzustellen, dass Sie es wirklich verstehen. Führen Sie dann eine Analyse durch und wiederholen Sie diese.
Wählen Sie zuerst die einfachste Aufgabe aus, auch wenn es zu einfach erscheint, nur um Schwung in Gang zu bringen . Einige Leute bevorzugen die schwerste Aufgabe, so dass die "harte Arbeit" aus dem Weg ist. Ich habe festgestellt, dass "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" Projekte zum Stillstand gebracht hat, bevor sie einen wirklichen Schwung bekommen.
Bitten Sie um Hilfe bei der Auswahl der richtigen Aufgabe und Vorgehensweise, um loszulegen.
Wenden Sie sich an einen Mentor, der Ihnen ein oder zwei Wochen lang konstantes (im Idealfall tägliches) Feedback geben kann.
Stellen Sie viele Fragen, aber achten Sie 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, 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 einer regulären Zeit 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 weiterkommen, und posten Sie dann den Fortschritt und die Frage zum Stapelüberlauf.
quelle
Natürlich hast du keine Ahnung, wie man einen "generischen Fehlermechanismus" schreibt. Niemand kann einen "generischen Fehlermechanismus" schreiben, bis einige Anforderungen definiert sind. Es klingt so, 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. Es ist fast immer Zeitverschwendung, etwas "generisches" zu schreiben, bevor die tatsächlichen Benutzeranforderungen implementiert werden. 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 ungefähr 95% Ihrer Anforderungen erfüllt.
Aber da Sie das Junior-Mitglied sind, ist Zurückschieben möglicherweise keine gute Idee. 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. Suchen Sie dann im Netz, ob etwas bereits geschriebenes ausreicht. Wenn Sie etwas finden, schlagen Sie einfach vor, es zu verwenden. Sie werden sich wahrscheinlich nicht einig sein, weil jeder, der nach einem "generischen Fehlermechanismus" fragt, wahrscheinlich an einem schlimmen Fall leidet, in dem man hier nicht erfunden wurde.
Wenn dies fehlschlägt, besteht der nächste Schritt darin, eine Schnittstelle für den Fehlermechanismus zu definieren und von den Stakeholdern genehmigen zu lassen. Danach wird die Implementierung wahrscheinlich trivial sein.
=================
PS: Es gibt einige Programmierer, die der Meinung sind, dass der Start eines Projekts darin besteht, eine "Plattform" zu erstellen, auf der alle für die Anwendungsmodule erforderlichen allgemeinen Dienste bereitgestellt werden. Dabei geht es in der Regel um monatelange, triviale Arbeit, um Dinge neu zu erfinden, die bereits kostenlos erhältlich sind. Bis Sie an die Leistungsgrenzen der verfügbaren Lösungen stoßen, gibt es keinen Grund, "Plattform" -Dienste zu schreiben. Es gibt auch keinen Grund, Wrapper für vorhandene APIs zu schreiben. Wenn Sie fortlaufend überarbeiten, wird der für Ihre Anwendung erforderliche Wrapper auf magische Weise angezeigt.
quelle
Ich denke, Sie leiden mehr unter Angst als unter einem Fähigkeitsdefizit. War irgendwann nicht alles neu? Wurde Ihnen jemals eine Aufgabe übertragen und konnten Sie diese in gewissem Umfang nicht lösen? Du wirst dafür bezahlt, Dinge herauszufinden.
Setze dein Team ein - Wenn du in einem guten Team bist, solltest du in der Lage sein, um Hilfe zu bitten. Es gibt Dinge, von denen Sie wissen werden, dass sie selbst die Ältesten nicht wissen werden. Um Hilfe zu bitten, ist kein Zeichen von Schwäche (nicht mehr als auf eine Frage zu gehen.).
Suche - Eine Websuche zur generischen Fehlerbehandlung hat nichts gebracht? Möglicherweise finden Sie keine vollständige Lösung. Sie müssen daran arbeiten und es trotzdem in Ihre App integrieren.
Prototyp - Ändern Sie Ihre Sicht auf die Aufgabe von der Produktion bis 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 dann als Produktion 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, die du zu tun weißt, wird langweilig. Es führt Sie auch in die Falle, dass Sie einfach nur brachiale Lösungen erzwingen, indem Sie dieselben Dinge immer wieder wiederholen (Wenn Sie es mögen, Dinge zu 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.
quelle
Freuen Sie sich, dass Sie nichts tun, was Sie schon hundertmal getan haben. Sie haben die Freude an der Softwareentwicklung gefunden (für mich jedenfalls YMMV) - das Erlernen des Fahrens, während Sie mit außergewöhnlicher Geschwindigkeit die Autobahn entlang rasen. Für so etwas lebt und zeichnet sich ein großartiger Entwickler aus.
Mein persönlicher Prozess sieht ungefähr so aus:
Und zum Schluss, mach dir nicht zu viele Sorgen um den Anschein. Als Entwickler-Teammanager hätte ich lieber jemanden, der beweisen kann, dass er alles lernen kann, was er braucht, wenn er es braucht, als jemanden, der beweisen kann, dass er bereits weiß, was wir gerade versuchen. Ersteres ist nützlicher für alles, was wir morgen, im nächsten Monat oder im nächsten Jahr tun.
quelle