Ich bin ein Jahr vor meinem Universitätsabschluss und freue mich darauf, praktische Probleme zu lösen. Besonders nicht-triviale, die ein wenig Recherche und viel Nachdenken erfordern.
Gleichzeitig ist das aber auch meine größte Angst, mit einem Problem konfrontiert zu sein, das ich nicht lösen kann, egal wie sehr ich es auch versuche. Und mit dem Druck, Code bei bevorstehenden Terminen gleich um die Ecke zu liefern, sieht es ein bisschen beängstigend aus, wenn man ihn von den sicheren Spielplätzen auf der Uni aus betrachtet (das Schlimmste, was passieren kann, ist, dass man einen Kurs oder eine Prüfung wiederholen muss).
Was würde passieren, wenn Sie aufgefordert würden, ein Problem zu lösen, das Sie nicht lösen konnten? Ist es passiert und wenn ja, was ist passiert? Haben sie es einfach fallen gelassen und gesagt: "Na gut, raten Sie mal, wir können mit etwas anderem auskommen"? Gab es Konsequenzen? Wurdest du gerügt oder sogar gefeuert?
quelle
Antworten:
Erstens ist Ihre Angst sehr gesund und normal. Hier sind meine Überlegungen nach ungefähr 15 Jahren in der Softwareindustrie.
Hier sind einige Fragen, die Sie sich stellen sollten:
1) Stellen Sie zunächst sicher, dass Sie das Problem verstehen. Es gibt keine dummen Fragen. Verstehst du, was dein Klient / Chef dich fragt und was er braucht?
2) Dies wird passieren. "Bauen Sie mir morgen eine Brücke" . Stellen Sie sicher, dass Sie wissen, dass ein Problem innerhalb Ihrer Grenzen nicht lösbar ist. Ihr Kunde / Vorgesetzter kann die Zeit / das Budget flexibel festlegen und diese können geändert werden, um Ihnen mehr Zeit / Budget zu geben.
3) Wenn das Problem verständlich ist und die Einschränkungen im Rahmen des Zumutbaren liegen und es eine Technologie gibt, die das Problem lösen kann, Sie aber einfach nicht genug wissen, dann ist das genau das, wofür
StackOverflow
das Internet gedacht ist. Stellen Sie sicher, dass Sie zuerst Ihre Recherchen durchführen. Versuchen Sie explizite Fragen zu stellen, die quantifizierbare Antworten haben. Fragen Sie Ihre Kollegen. Machen Sie eine Design-Session.4) Dies ist eine Variante von Antwort Nummer 2. Es scheint, dass Ihr Kunde / Chef das Unmögliche fragt. Recherchiere. Sagen Sie niemals, dass das Problem nicht lösbar ist, es sei denn, Sie wissen genau warum und können es klären.
5) ROI steht für Return On Investment. Dies bezieht sich auf eine Investition in die Zeit. Deine Zeit!. Ist das Problem wichtig genug, um es zu lösen? Besprechen Sie dies mit Ihrem Kunden / Chef
6) Ist es ein echtes Problem. Kunden verstehen oft, was sie wollen, aber nicht unbedingt, was sie brauchen. Versuchen Sie zu verstehen, was Ihr Kunde / Chef tatsächlich benötigt, und besprechen Sie dies mit ihm.
Ich hoffe, diese Richtlinien helfen Ihnen.
quelle
Zwei Dinge, an die Sie denken sollten, wenn Sie mit einem scheinbar unlösbaren Problem konfrontiert sind:
Lassen Sie andere Leute wissen, dass Sie so schnell wie möglich festsitzen. Es wird ihnen helfen, die Schätzung rechtzeitig anzupassen, bevor es zu spät ist.
Wenn Sie feststellen, dass ein Problem auf eine Weise nicht gelöst werden kann, lassen Sie es fallen, bevor Sie zu viel Zeit verschwenden. Bitten Sie um Hilfe oder probieren Sie einen anderen Ansatz aus. Es geht nicht darum, sich hart und klug zu beweisen, sondern Dinge zu erledigen.
quelle
Ich gehe zu StackOverflow ;)
Aber alle Scherze beiseite, keine Angst vor dem Unbekannten. Ihre gesamte Karriere steht vor dem Unbekannten, denn wenn Sie es bereits gelöst haben, wird es beim nächsten Mal kein Problem sein.
quelle
Ich muss eine einfache Antwort geben: Ich bitte um Hilfe. Genau wie andere mich manchmal um Hilfe bitten, wenn sie nicht weiterkommen, um eine Lösung für etwas zu finden.
Bearbeiten: Ich sollte erwähnen, dass ich die Lösung oft finde, indem ich einem Kollegen das Problem beschreibe, oder manchmal sogar, wenn ich anfange, eine Frage auf Websites wie StackOverflow zu posten.
quelle
Betrachten Sie aus verschiedenen Blickwinkeln
Ich bin so oft darauf gestoßen, normalerweise passiert Folgendes:
Schließlich entscheiden Sie sich für das, was Sie nicht tun wollten ->
"The Dirty Hack"
Es funktioniert, aber du fühlst dich schmutzig ...
quelle
Normalerweise besorge ich es jemandem, der schlauer ist als ich. Er tut und er ist mein Chef. Ich fühle mich dumm. Wir fahren fort.
quelle
Es kommt auf den Grund an, warum Sie nicht in der Lage sind ...
logisch unmöglich: Besprechen Sie es mit demjenigen, der die Anforderungen geschrieben hat, vielleicht liegt ein Missverständnis vor. Beispiel: An einer Stelle wird in der Spezifikation angegeben, dass die Anwendung auf allen Plattformen (Windows / Linux / Mac) nativ aussehen und sich so anfühlen muss, und an einer anderen Stelle wird angegeben, dass das Programm auf allen Plattformen genau identisch aussehen muss
technisch unmöglich: Bewerten Sie die Werkzeuge, mit denen Sie arbeiten, neu. Vielleicht sind sie nicht geeignet. Besprechen Sie das Problem mit Ihren Kollegen und dem Projektmanager. Beispiel: Harte Echtzeitanforderungen in einer Umgebung, in der die Garbage Collection die Ausführung auf unbestimmte Zeit anhalten kann
ungenügende Leistung: Möglicherweise verwenden Sie den falschen Algorithmus, oder das Problem ist zu schwer (z. B. NP-schwer), und die Anforderungen berücksichtigen dies nicht. Bewerten Sie den verwendeten Algorithmus neu. Vielleicht gibt es einen schnelleren Weg. Besprechen Sie das Problem mit Ihren Kollegen und dem Projektmanager. Ziehen Sie in Betracht, statt auf ein perfektes Ergebnis auf eine ausreichend gute Heuristik umzusteigen. Beispiel: Pfadoptimierung mit Dutzenden oder sogar Hunderten von Knoten
Sie wissen einfach nicht, wie es geht: Fragen Sie Ihre Kollegen, fragen Sie Stackoverflow, durchsuchen Sie das Internet. Wenden Sie sich an den Support des von Ihnen verwendeten Tools / der von Ihnen verwendeten Bibliothek. Besprechen Sie dies mit dem Projektmanager.
Es sollte funktionieren, funktioniert aber nicht, und Sie haben keine Ahnung, warum: Korrigieren Sie das Programm, um es testbarer zu machen. Unter Berücksichtigung der Rennbedingungen sind sie häufig der Grund für schwer zu findende Fehler. Bitten Sie Gleichaltrige um Hilfe, vier Augen sehen mehr als zwei. Überprüfen Sie das Internet auf bekannte Fehler in den von Ihnen verwendeten Tools / Bibliotheken.
quelle
Ich denke, andere Leute weisen freundlich darauf hin, wie man professionell damit umgeht. Ich möchte sagen, wie ich mit dem persönlichen Gefühl wie Frustration, Angst umgehen soll.
Fazit ist, dass Sie auch dann GUT sind, wenn Sie Probleme nicht rechtzeitig lösen. Das Leben geht weiter.
Manchmal wurde der Zeitplan verschoben. Das Projekt wäre entweder erfolgreich oder gescheitert. Sie könnten gefeuert werden und dann einen tollen Job haben. Man weiß es einfach nie.
Versteh mich nicht falsch. Es bedeutet nicht, dass es in Ordnung ist, das Problem dort zuzulassen. Wir können nur mein Bestes geben und loslassen.
Manchmal denke ich, die Frustration, Angst, kein Problem zu lösen, ist mein Leben als durchschnittlicher Entwickler.
quelle
Ich bin mir nicht sicher, ob ich sagen kann, dass ich ein Problem nicht lösen kann, aber es gab Fälle, in denen ich es aufgegeben habe, ein Problem zu lösen. Nachdem ich viele Stunden in den Versuch gesteckt habe, einen Fehler zu beheben oder eine Funktion zu implementieren, von der ich keine Ahnung habe, wie das geht, kann ich jemandem in meinem Team, Teamleiter oder Manager sagen: "Daran bin ich fest. Was möchtest du, daß ich .... tue?" damit sie wissen, wo ich bin. Sie könnten sagen: "Bleiben Sie dran, wir glauben, Sie werden es schaffen" oder "Gehen Sie zu etwas anderem über, das nicht so wichtig ist" oder zu ein paar anderen Dingen, und dann werde ich wissen, was ich tun soll.
Ich hatte Fehler, die ich nicht behoben habe, und einige Funktionen, die nicht erledigt wurden. Obwohl ich versuchen kann, etwas zu erledigen, liegt nicht alles in meiner Macht, um es in angemessener Zeit zu lösen. Ein wichtiger Punkt dabei ist die Kommunikation, damit Ihre Vorgesetzten wissen, wo Sie sich befinden.
Das heißt, ich hatte ein paar Mal, wo ich auf einige ziemlich spezielle Umstände gestoßen bin:
Während ich bei einer großen kanadischen Bank in Toronto arbeitete, wurde ich gebeten, alle möglichen Dinge zu tun, von denen ich nicht wusste, wie ich sie tun sollte, als mir die Aufgabe übertragen wurde. Ich wurde zum Beispiel gebeten, diese Methode zum Sichern von Laptops zu testen, bei denen die Tasten "Esc" und "Enter" beim Hochfahren vertauscht wurden, und mit der richtigen Tastenfolge das Notebook wieder verwendbar zu machen, was nur seltsam erschien, um es herauszufinden out, "Würde das funktionieren? Woher weiß ich, dass dies für die Benutzer in Ordnung ist oder nicht?" Es gab andere Aufgaben, für die ich entweder nicht die Hardware oder andere Ressourcen hatte. Gleichzeitig war es sehr lehrreich, da ich auf diese Weise viele wichtige Informationen über zukünftige Beschäftigungssituationen erhalten habe, um Schwierigkeiten vorzubeugen. Dinge wie sicherzustellen, wenn ich bezahlt werde, wie wird meine Zeit verfolgt,
Während meiner Arbeit bei einem Application Service Provider in Calgary wurde ich mit dem Projekt beauftragt, eine Kopie einer anderen Website in unserer internen Anwendung zu erstellen, die wir als Service verkauft haben. Ein wichtiger Punkt dabei ist, dass ich weder einen Zeitplan noch Vorschläge für die ersten Schritte erhalten habe, sondern nur allgemeine Nachforschungen angestellt habe. Einen Monat später wurde ich nach einer Demo gefragt, da ich auf einige Schmerzmittel eine schlechte Reaktion hatte. Diese Reaktion dauerte eine Woche, in der ich plötzlich von der Arbeit ging, und in der folgenden Woche ging ich zu einer Microsoft-Veranstaltung, die so etwas wie das Letzte war, als ich am nächsten Tag gefeuert wurde. Zu beachten ist, dass ich zu meinem Chef ein eher schlechtes Verhältnis hatte, da ich immer, wenn er in meine Nähe kam, sofort dachte: "Was ist jetzt los?"
quelle
Wie andere bereits gesagt haben, ist die Kommunikation von entscheidender Bedeutung. Lassen Sie die Leute wissen (wer davon betroffen sein wird), wenn Sie stecken bleiben: Ihr Chef, Teammitglieder, Kunden usw.
Ein scharfsinniger Mitarbeiter hat mir einmal eingeflößt, dass Erfolg auf zwei Dingen beruht:
Ich nehme an, eine gute Beziehung zu haben, hängt von einer guten Kommunikation ab und setzt die Erwartungen in den Vordergrund.
quelle
Ich folge dem Polya-Prinzip:
Das Schöne am Prinzip ist, dass es irgendwann ein Problem gibt, das klein genug ist und das Sie lösen können. Wenn Sie hoffentlich alles richtig gemacht haben, können Sie eine Lösung für das ursprüngliche Problem erstellen. Dieser Grundsatz hat mich noch nicht enttäuscht.
quelle
Die Antworten auf " Hilfe suchen " sind definitiv richtig. Es ist sehr unwahrscheinlich, dass Sie als erster auf ein bestimmtes Problem stoßen.
Was aber, wenn es keine Hilfe gibt? Was ist, wenn Sie das Problem selbst lösen müssen? Die wichtigste Fähigkeit zur Problemlösung ist die Fähigkeit, Ihre eigenen Annahmen zu identifizieren und in Frage zu stellen . Wenn Sie Ihre Annahmen zu einem Problem einzeln aufzählen und nacheinander beseitigen können, stoßen Sie schließlich auf die falsche Annahme, und es eröffnen sich neue Möglichkeiten für eine Lösung.
(Dies ist übrigens auch der beste Ansatz, wenn Sie in einem Vorstellungsgespräch keine Antwort auf ein Problem finden. Schreiben Sie Ihre Annahmen mündlich auf, stellen Sie fest, welches falsch ist, und greifen Sie das Problem erneut an. Fast Alle "Trickfragen" basieren auf natürlichen, aber fehlerhaften Annahmen.
quelle
Um Hilfe zu bitten ist wirklich die beste Antwort, aber hier ist noch ein bisschen mehr, was nützlich sein kann.
Ja, es ist mir passiert, und nein, ich wurde nie dafür zurechtgewiesen oder gefeuert, weil ...
In der Industrie dreht sich alles darum, ob Sie Probleme rechtzeitig und innerhalb des Budgets lösen, und anständige Manager wissen, dass dies nicht immer möglich ist.
Was wirklich passiert ist, dass Ihr Manager sagt: "Ich möchte, dass Sie X machen, was wird es Ihrer Meinung nach brauchen?" Und Sie können viele Antworten geben. Gute sind:
Es ist die Aufgabe des Managers, zu entscheiden, ob und wie es weitergeht. Wenn sie sich dafür entscheiden, fortzufahren, ist es Ihre Aufgabe, Ihre Schätzungen einzuhalten oder den Manager zu informieren, wenn ein Hindernis vorliegt. Solange Sie das tun, wird es in einem vernünftigen Unternehmen keine negativen Konsequenzen geben.
Natürlich gibt es auch unvernünftige Unternehmen, die Ihnen weder Zeit noch Ressourcen zur Verfügung stellen, um Ihre Arbeit zu erledigen. Ich habe bei einigen von ihnen gearbeitet, und allen wurden Probleme übergeben, die im Rahmen des Unternehmens nicht gelöst werden konnten. Einer von ihnen entließ innerhalb von acht Monaten etwa 98% des Programmierpersonals, und das war sicherlich eine Konsequenz, aber es richtete sich nicht persönlich gegen mich, und ich betrachte meinen Chef und seinen Chef von dort immer noch als gute Freunde.
quelle
Es gibt viele verschiedene Arten von Problemen, auf die Sie stoßen werden, und viele haben verschiedene Möglichkeiten, mit ihnen umzugehen.
Eine Art von Problem ist die Implementierung von etwas, das Sie noch nicht gesehen haben, wie eine seltsame Sound-API oder so. In diesem Fall würde ich SO ernsthaft fragen.
Ein anderes ist ein sehr großes Problem, das es zu lösen gilt. Diese Art von Problem kann iterativ angegangen werden. Sie sagen dir "Implement Humongous". Sie schauen es sich an und schreiben so viele Schritte, wie Sie herausfinden können. Dann zerlegen Sie die komplizierten Schritte in kleinere Schritte. Wenn Sie gezwungen sind, über kleinere Schritte nachzudenken, werden sie klarer. Wenn Sie auf ein technisches Problem stoßen, probieren Sie eine Testimplementierung aus und fragen Sie bei Bedarf hier nach.
Eines der ärgerlichsten Probleme sind schlecht spezifizierte Anfragen. Sie wollen nur etwas, das "x" macht und sagen dir nicht, wie es gemacht werden soll. Für diese ist ein guter Ansatz der Prototyp einer Schnittstelle (normalerweise eine GUI), mit der jemand spielen kann.
Dann gibt es zeitliche Einschränkungen, die nicht eingehalten werden können. Dabei müssen häufig die Erwartungen geändert und funktionale Prototypen geliefert werden.
Sie werden sich in der Regel auf die eine oder andere Weise zurechtfinden. Es ist beängstigend, aber wenn man erst einmal drin ist, kann man so ziemlich immer einen Weg finden.
Am besten malen Sie einfach die Worte "Don't Panic" auf die Außenseite Ihres Laptops. Und vergiss dein Handtuch nicht.
quelle
Meine Abfolge der Problemlösung (jeder nächste Spet wird nur ausgeführt, wenn der vorherige nicht funktioniert hat):
Böse Probleme werden in den Schritten 5-6 gelöst.
Wirklich-wirklich-schlimme Probleme brauchen normalerweise einige Zeit (Schritt 7 ist DIE Lösung für die meisten Probleme, bei denen ich anscheinend nichts tun kann). Und ich meine es ernst - wechseln Sie für den Rest des Tages zu einer anderen Aufgabe und versuchen Sie, das Problem als Erstes am Morgen zu lösen. Das tut Wunder.
Und erst dann kommt Schritt 8.
quelle
Ich habe noch nichts davon gehört. Erstens bekommen Sie nie ein Problem, das überhaupt nicht gelöst werden kann. Das Problem ist möglicherweise schwierig und es kann einige Zeit dauern, bis es behoben ist. Wenn ein Problem vorliegt, müssen Sie sagen, dass dies die von mir benötigte Zeit ist. Wenn Sie in Ihren Recherchen der Meinung sind, dass dieses Problem wirklich nicht gelöst werden kann, müssen Sie eine Markierung setzen und Ihrem Vorgesetzten mitteilen, dass dieses Problem etwas länger dauert oder wirklich schwer zu lösen ist. Es dreht sich alles um den Zeitplan. Wenn Sie etwas versprechen und nicht liefern können, dann ist es ein Problem. Wenn Sie jedoch weiterhin Ihren Status und Ihre Bedenken mitteilen, liegt es in der Verantwortung des Managers, sich darum zu kümmern. Er sollte Sie zu einer geeigneten Person weiterleiten, die Ihnen helfen oder den Zeitplan anpassen kann.
quelle
Hier gibt es einige gute Ratschläge! Meine zwei Cent sind es wert; Lassen Sie sich nicht vom BIG-Problem überwältigen. Vergessen Sie nicht, dass der aufregende und herausfordernde Teil der Problemlösung darin besteht, es in eine Reihe von handhabbaren und vor allem verständlichen Teilproblemen zu zerlegen, die wiederum immer wieder in kleinere Probleme zerfallen Unterprobleme. Jeder gute Programmierer tut dies normalerweise jede Minute, während er Code erstellt (mit Funktionen, Methoden, Unterroutinen usw., um die Gesamtkomplexität eines Codeabschnitts zu verringern). Diese Methode gilt normalerweise für jedes BIG-Problem, das Sie haben Gesicht im Leben (nicht nur bei der Arbeit).
quelle
Das hängt natürlich davon ab, um welches Problem es sich handelt. Die Antwort kann jedoch eine der folgenden sein:
Nummer 3 erfordert möglicherweise eine Unterbrechung des Problems und ein erneutes Aufrufen nach Wochen oder Monaten. Das hilft oft.
quelle
Meiner Erfahrung nach gibt es manchmal ein Problem, das Sie nicht lösen können, zumindest zeitlich begrenzt. So schnell wie möglich Hilfe suchen, nach einigen Lösungsversuchen scheitern Sie .
Denken Sie an die Faustregel: Sehen Sie immer nach, warum der Chef Sie anstellt. Tun Sie alles, was Sie für das beste Arbeitsergebnis halten, und manchmal ist dies ein früher Fehlerbericht (weitaus besser als ein später).
Kurz gesagt, wenn Sie der Meinung sind, dass Sie die Lösung finden, können Sie es gerne versuchen, aber Ihrem Chef eine Schätzung des Risikos und des Zeitaufwands geben. Es ist jetzt ihr Problem.
quelle
Wenn Hundert-Millionen-Dollar-Projekte auch mit erfahrenen Leuten scheitern können, sollten Sie sich keine Sorgen machen, dass Sie scheitern, da Sie noch Student sind. Ich hatte ein Problem, an dem ich arbeiten musste, und ich stellte fest, dass Sie jeden Versuch, den Sie unternommen haben, um es zu lösen, aufzeichnen müssen, wenn es etwas ist, woran Sie hängenbleiben.
Das hilft:
quelle
Meine Erfahrung ist, dass ein frisch Absolvent nicht in die Tiefe geworfen wird. Stattdessen werden Sie wahrscheinlich Teil eines Teams sein, das auch erfahrene Entwickler umfasst.
Mein Rat wäre: Nutzen Sie sie. Wenn Sie sich nicht sicher sind, wie Sie ein Problem angehen sollen, oder wenn Sie wissen möchten, ob Ihre Lösung in die richtige Richtung geht, besprechen Sie dies mit ihnen. Und wenn Sie das Gefühl haben, irgendwo festzusitzen, schnappen Sie sich einen der erfahrenen Jungs, erklären Sie Ihr Problem und bitten Sie um Hilfe.
Wenn Sie Ihr Problem nur erklären, wird in den meisten Fällen eine Lösung gefunden, und wenn Sie Ihre Lösung erklären, kann dies ebenfalls zu Fehlern führen.
quelle
Dies geschieht häufig, weil Sie das Problem nicht richtig und genau definiert haben. Vielleicht versuchen Sie, eine vorgefasste Lösung anstelle des eigentlichen Problems selbst zu lösen.
Das Problem ist nur, was Sie beobachten, nicht, was Sie sich vorstellen.
"Mein blutiges Auto springt nicht an" ist ein Problem. "Die Batterie ist leer." ist eine vorgefasste Lösung für das Autostartproblem. Selbst das Testen der Batterie beweist nicht, dass dies die einzige Ursache für das Problem ist. Wenn Sie die Batterie nicht tatsächlich aufgeladen oder ausgetauscht und das Auto erfolgreich gestartet haben, liegt kein Beweis dafür vor, dass die Batterie die Ursache für das Problem ist.
Vereinfachen und weiter vereinfachen. Zerlegen Sie es in kleine Teile. Wenn Sie diese Teile nicht lösen können, zerschlagen Sie sie. Du wirst Dich besser fühlen. Dann zerlegen Sie es in verschiedene kleine Teile. Jeder dieser Teile muss ein beobachtbares Phänomen sein.
quelle