Eine Aufgabe zugewiesen bekommen, die ich nicht ausführen kann

Ich habe gerade meinen Abschluss gemacht und bin quer durchs Land gezogen, um seinen Traumjob als Spieleprogrammierer zu bekommen. Ich habe ein Jahr bei einem Indie-Unternehmen gearbeitet und wurde dann von einem der größten Unternehmen eingestellt. Dies ist ein Traum, der für mich wahr geworden ist, da dies der einzige Grund war, warum ich zur Schule gegangen bin. Ich bin ziemlich neu in der Branche und habe Mühe, mich kompetent zu fühlen.

Jedenfalls arbeite ich in diesem Job seit fast einem Jahr als Generalist-Programmierer. Wir sind ein relativ kleines Team im Unternehmen. Meine Arbeit bestand hauptsächlich darin, Code, Funktionen und Fehlerbehebungen umzugestalten. Ich habe mit einer anderen Person zusammengearbeitet, die viel erfahrener ist. Sie wurden befördert und programmieren nicht mehr. Ich habe ihre Arbeit bekommen.

Das Problem ist, dass sie ein Grafikprogrammierer sind. Ein Großteil meiner Arbeit besteht jetzt aus 3D-Mathematik. Ich habe Mathe in der 10. Klasse abgebrochen, ich habe es im College noch einmal gemacht und nur knapp bestanden. Ich bin schrecklich in Mathe und habe keinen Spaß daran. Mein neuer Job ist in einem Fachgebiet, von dem ich absolut keine Ahnung habe. Das ist zwar keine schlechte Sache, da ich zu Beginn dieses Jobs viele Dinge und Sprachen gelernt habe, aber ich bin jetzt die wichtigste Unterstützung für viele große Teams. Ich habe die Aufgabe, Fehler in einer Grafikpipeline zu beheben, während ich kaum Matrixmultiplikation machen kann. Ich kenne keine Terminologie und keine Mathematik.

Wie sage ich meinem Chef, dass ich für diesen Job ungeeignet bin? Ich wurde im Vorstellungsgespräch nach meinen mathematischen Fähigkeiten gefragt und ich sagte ihnen, dass sie nicht gut seien. Damals sagten sie, es sei egal.

Teil des Problems ist auch, dass es niemanden mehr gibt, der diese Aufgaben übernimmt. Ich bin mir bewusst, dass die Antwort auf das Problem möglicherweise darin besteht, es einfach aufzusaugen und damit umzugehen.

Wenn es darauf ankommt, ist dies ein sehr großes Unternehmen und der Wechsel in ein neues Team ist möglicherweise möglich. Das möchte ich aber unbedingt vermeiden, da mir das Team und die Arbeit Spaß gemacht haben.

Haben Sie jemanden, der als Mentor für die mathematischen 3D-Themen dienen kann?
Offensichtlich haben Sie wichtige und schwierige Themen gemeistert. Dasselbe kannst du mit mathematischen Fähigkeiten tun. Das Problem ist, dass es viel Zeit und Aufmerksamkeit erfordert und viel schwieriger ist, wenn Sie es selbst (oder sogar mit einem informellen Mentor) außerhalb der Struktur eines Kurses mit ernsthaften Hausaufgaben und Prüfungen durchführen. Es gibt keine Abkürzungen mit diesem Zeug.
Könnten Sie hinzufügen, ob Sie daran interessiert sind, den 3D-Pfad zu lernen, oder ob Sie es vorziehen, dies nicht zu tun? Die beste Antwort, wenn Sie mit dem "Ich weiß nicht, was ich tue, aber ich werde es verdammt noch mal versuchen!" ist ganz anders als die beste Antwort, wenn man sagen will: "Mir macht diese Art von Arbeit eigentlich keinen Spaß."
Ich genieße es nicht, aber ich denke, es liegt daran, dass ich Dinge nicht genieße, in denen ich schlecht bin. Ich möchte nicht, dass dies meine Berufswahl ist. Aber ich hasse es nicht.
Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Ich denke, die Leute haben großartige Möglichkeiten skizziert, damit umzugehen. Aber um ehrlich zu sein, wenn Sie Mathe nicht mögen, sind Sie auf dem falschen Gebiet, Kumpel, die Spieleentwicklung ist stark von trigonometrischer, linearer Algebra geprägt. Andererseits können Sie anfangen, Mathematik zu lernen und sie direkt auf Spiele anwenden, indem Sie einen praktischen Ansatz verfolgen. Das könnte Ihr Interesse an Mathematik wieder wecken und Ihr Leben einfacher machen.
Es ist wichtig für die Gesundheit der beteiligten Software, dass jemand, der sich mit fortgeschrittener Mathematik so unwohl fühlt, nicht gezwungen wird, sie auf diese Weise zu unterstützen. Wer auch immer den anderen Programmierer befördert hat, sollte wissen, dass er/sie ihn/sie durch einen anderen 3D-Grafikexperten ersetzen muss.

Antworten (5)

Etwas, das ich sowohl aus persönlicher Erfahrung als auch aus Beobachtung (hauptsächlich durch Beobachtung meiner Kinder) gelernt habe, ist, dass Sie damit kämpfen werden, wenn Sie davon überzeugt sind, dass Sie etwas nicht tun können. Sie scheinen einfach nicht die Gehirnleistung darauf anzuwenden, weil Sie einfach wissen , dass Sie scheitern werden.

Also werde ich Ihnen den gleichen Rat geben, den ich meinen Kindern gebe :) Anstatt das ganze Problem „Ich kann kein Mathe“ zu betrachten, zerlegen Sie es in kleinere Teile. Wählen Sie etwas, das Sie fast verstehen, und versuchen Sie es dann auf die praktischen Probleme anzuwenden, für die Sie es verwenden. Denken Sie daran, Mathematik ist ein Prozess, ein Algorithmus, genau wie das Programmieren. Mach einen Schritt, dann den nächsten, wende die Regeln an und du wirst zur Antwort kommen :)

Nun, wie kriegen Sie das mit Ihrem Chef hin? Nun, haben Sie mit Ihrem Vorgesetzten darüber gesprochen, dass Sie Probleme haben? Wenn er oder sie es nicht weiß, kann er dir nicht helfen. Man könnte sagen, dass Sie versuchen werden, zu lernen, aber es wird Zeit und vielleicht etwas Training brauchen, das helfen könnte. Dann kann der Manager das Risiko bewältigen, Sie dort zu behalten oder jemand anderen zu finden, der diese Rolle übernimmt.

Ich würde mit Ihrem Chef sprechen, ihm sagen, wo Sie Schwierigkeiten haben und dass Sie für diese Aufgaben möglicherweise länger brauchen, während Sie versuchen, die Komplexität der Mathematik dahinter zu verstehen. Dann, wenn Sie es wirklich, wirklich nicht können, haben Sie alles getan, was Sie können, und dafür gesorgt, dass die Leute, die es wissen müssen, es tun :)

Sie sind bereit, es mir beizubringen, da ich es seit einiger Zeit langsam lerne. Sie würden die schwierigeren Probleme übernehmen. Dies geschieht nicht mehr. Dies sind hauptsächlich Fehlerberichte. Sie müssen also so schnell wie möglich behoben werden, da möglicherweise ein ganzes Team wartet. Ich habe das Gefühl, dass ich nicht genug Zeit zum Lernen habe, ich habe das Gefühl, dass mein Chef ungeduldig wird, obwohl ich das nur in meinem Kopf verspüre.
Wenn Sie sie über Ihre Bedenken informiert haben und sie bereit sind, Ihnen etwas Zeit zu geben, tragen sie das Risiko von Verzögerungen, während Sie lernen, nicht Sie. Halten Sie Ihren Vorgesetzten über Ihre Fortschritte auf dem Laufenden, konzentrieren Sie sich auf das Lernen und die Geschwindigkeit, mit der Sie sich mit allem vertraut machen.
Wenn der Chef Sie ihm zugewiesen hat, wissend, dass Sie diesen Code und die Annahmen dahinter noch lernen, dann kann der Chef nicht erwarten, dass Sie die Fehlerberichte so effizient handhaben wie diejenigen, die diesen Code seit Jahren anstarren, Und der Chef, wenn überhaupt kompetent, weiß das und weiß, dass eine bewusste Entscheidung getroffen wurde, die anderen Leute neu zuzuordnen und das Geld nicht auszugeben, um jemanden neu einzustellen. Ein Großteil des Drucks, den Sie spüren, ist also – zumindest im guten Fall – selbst erzeugt. Setzen Sie sich realistische Ziele, gehen Sie Schritt für Schritt vor und akzeptieren Sie, dass langsamere Korrekturen immer noch Korrekturen sind.
@keshlam Genau :)
Entscheidend ist der zweite Absatz. Es ist wahrscheinlich, dass jeder in seiner Karriere auf einige Probleme stoßen wird, die zunächst wie unüberwindbare Berge aussehen. Mein Ansatz in diesen Fällen war genau das, was hier befürwortet wird: Finden Sie eine Schwachstelle (eine Teilaufgabe, die machbar erscheint) und fangen Sie an zu knabbern. Die aus den ersten Knabbereien gelernten Lektionen werden auf die folgenden Stufen angewendet, bis man diesen Berg durchtunnelt hat. Das Beste daran: Wenn Sie den Prozess einmal durchlaufen haben und sehen, dass Sie auch gegen Widrigkeiten erfolgreich sein können, haben Sie mehr Selbstvertrauen, wenn das nächste Problem dieser Art auftritt.
+1: Whether you think you can or think you can't, you're right - Henry Ford.
Eine Sache, die besonders im Fall von 3D-Grafiken sehr hilfreich ist, ist das Erstellen wirklich einfacher Spielzeuganwendungen, mit denen Sie spielen können, um die Transformationen zu verstehen. Dies ist eine sehr praktische Möglichkeit, die gesamte "3D-Mathematik" in zugänglichere Aufgaben zu zerlegen, mit denen Sie experimentieren und ein Gefühl dafür bekommen können. Und hier ist ein kleines Geheimnis: Eine große Anzahl von Programmierern in Spielen versteht tatsächlich nicht alle Mathematik, die sie verwenden. Sie haben wahrscheinlich ein gewisses Grundwissen in Mathematik, aber meistens kennen sie die Techniken und wie man sie anwendet.
Hier ist eine sehr nützliche Ressource zum Erlernen der Art von Mathematik, die Sie benötigen: euclideanspace.com . Deckt eine Reihe von Themen ab, von einfachen Vektoren bis hin zu dualen Quaternionen. Haftungsausschluss: Ich habe eine kleine Menge Material zu dualen Quaternionen zu dieser Seite beigetragen.
@marsh: Hi, ich hatte etwas, das ich einen sehr erfolgreichen Lernansatz nennen würde, wenn es um die Programmierung von Spielen geht. Als Kind haben wir 3D-Spiele gespielt. Ein Freund hat herausgefunden, dass Sie mit 3d Studio MAX modellieren können. Ich habe versucht, damit zu spielen und war so interessiert, dass ich buchstäblich Nächte damit verbringen könnte, etwas Cooles zu machen (ein Vogel, Kakteen, eine Hand usw.). Dabei habe ich eine Menge Einschränkungen gelernt, indem ich sie einfach getroffen habe: Objekte sind nur einseitig (normales Konzept), menschliche Modelle haben Nähte (UV-Texturen sind flach), die N-Gons mit mehr als 4 Seiten sind Müll nicht eben usw.
@marsh: ctd .: Es gibt mehr falsche als gute Möglichkeiten, ein fliegendes Flugzeug zu modellieren (Gimbal Lock), alle organischen Formen werden angenähert (Tesselation), Sie können mit einem Bezier-Werkzeug (zumindest dem am häufigsten verwendeten rationalen) nicht einmal einen perfekten Kreis erstellen mit 4 Bediengriffen). Später im Leben hatte ich sehr wenig Probleme, die meisten mathematischen Konzepte dahinter zu verstehen (Projektionen, Kreuzvektoroperationen, Rotationen, Welt, Ansicht, Modellmatrizen usw.). Es ist extrem schwierig, dieses Zeug nur auf der „Gedankenebene“ zu verstehen. Viele Spielstunden haben mir die Konzepte sehr gut beigebracht.
@marsh: Die Mathematik in der Spieleprogrammierung ist also usedein Werkzeug, um some goal. Wie der Matrixstapel, der sehr einschüchternd erscheint (wozu das zusätzliche Gewicht? 4 Gleichungen statt 3 für 3d? Warum diese spezielle Reihenfolge der Multiplikation?) ist wirklich einfach, wenn Sie es in Modellbegriffen betrachten: Oh, so sage ich Kamera dort drüben (Ansichtsmatrix), die relativ zur Mitte der Bühne ist (Weltmatrix), wo ein Typ steht (Modellmatrix) und Gelenke hat, von denen ich direkt das Hüftgelenk kontrolliere (Wurzel von IK- und FK-Ketten-Hierarchie) und Rest folgt (lokale Transformationsmatrix).
Ich denke, jeder hier vereinfacht extrem, wie komplex die Rendering-Pipeline eines AAA-Spielestudios ist. Beim Rendern werden nicht nur ein paar Matrizen multipliziert. Das lernt man wirklich nicht an ein paar Wochenenden. Wir sprechen hier davon, den Gipfel des Echtzeit-3D-Renderings zu meistern. Marsh braucht eine Lösung für seine aktuelle Situation. Nicht einer für in ein paar Jahren. Beachten Sie, dass ich definitiv nicht sage, dass es sich nicht um eine erlernbare Fähigkeit handelt, aber wie bei allen komplexen Dingen wird es viel Zeit in Anspruch nehmen!
@RoyT.: Ich stimme zu. Ich habe meinen Kommentar mit etwas im Sinn gemacht, das ich vergessen habe zu schreiben. Jeder ist zunächst einmal überfordert, wenn er mit einer neuen Domain konfrontiert wird. Am Ende muss man es lernen, es gibt keine Abkürzungen. Das bedeutet nicht, dass man alles auf einmal wissen muss. Es ist am besten, eine einführende Domänenannäherung zu erhalten und sich auf Bereiche zu spezialisieren, in denen die Änderungswünsche dominieren. Dies ist etwas, das in einem Zeitrahmen von Wochen erledigt werden kann. Das Wichtigste ganz am Anfang ist zu wissen, welche Teile NICHT bekannt sein müssen.
@Rekin, Entschuldigung, ich weiß nicht, was "einführende Domänenannäherung" ist. Aber ich denke, es gibt nur sehr wenige Abkürzungen, wenn es um Mathematik und 3D-Rendering geht. Du brauchst eine solide Basis, bevor du Teile überspringen und dich auf ein paar Themen konzentrieren kannst. Aber anscheinend schweifen wir von der Frage ab. Lassen Sie uns einfach zustimmen, dass es eine nicht unerhebliche Zeit dauert, bis Sie brauchbares Wissen haben, das Sie am Arbeitsplatz einsetzen können.

Alle bisherigen Antworten gehen davon aus, dass Sie die gesamte 3D-Grafikmathematik lernen können (was Sie sicher können), dass Sie dies gerne tun (was möglicherweise nicht stimmt) und dass Sie das alles schnell genug lernen können Sie können diese Techniken HEUTE in einer Produktionsumgebung anwenden (was wahrscheinlich nicht stimmt).

Ich denke, das Beste, was Sie tun können, ist, mit Ihrem direkten Vorgesetzten zu sprechen. Zu sagen, dass Sie einen Teil Ihrer Arbeit nicht zu Ihrer eigenen Zufriedenheit erledigen können, ist keine Schwäche, sondern zeigt, dass Sie Ihre eigene Arbeit und Fähigkeiten kritisch sehen und das Beste für das Unternehmen wollen. Fügen Sie unbedingt hinzu (wenn Sie möchten), dass Sie bereit sind, diese Techniken zu lernen, aber dass Sie nach Kursen oder einem Mentor suchen, der Ihnen dabei hilft. Dies ist eine großartige Gelegenheit, sich weiterzuentwickeln und wertvoller für das Unternehmen zu werden. (Dinge, die Manager gerne sehen).

Ich stimme zu. "Lernen Sie es" ist leicht gesagt, aber wenn die meisten Vollzeit-Grundstudium-CS-Kurse kaum an der Oberfläche der Computergrafik kratzen, ist dies kurzfristig keine vernünftige Antwort. Langfristig können Sie kompetent werden, ja, aber kurzfristig muss etwas getan werden, während Sie noch nachschlagen, was die Wörter bedeuten.
@DavidTheWin +1. An meiner Universität müssen wir lineare Algebra und bis zu Analysis II lernen. Wir lernen jedoch nie etwas im Zusammenhang mit Computergrafik, es sei denn, Sie nehmen an dem einen Grafikkurs teil, der alle 2 Jahre angeboten wird , und selbst wenn Sie ihn belegen, kratzen Sie kaum an der Oberfläche der eigentlichen Grafikprogrammierung und schon gar nicht für Videospiele (wir bauen nur statische Modelle, die sich nicht bewegen), und sicherlich nicht in einer Produktionsumgebung, in der die Arbeit auf C-Level in Ordnung ist. +1 auch an dich Roy, dein erster Absatz ist genau richtig.

Kommunizieren Sie nach vorne und haben Sie keine Angst, zu viel zu kommunizieren. Geben Sie Ihr Bestes, um genaue Schätzungen und Bewertungen der Komplexität von Aufgaben bereitzustellen. Wenn Sie Hilfe benötigen, fragen Sie nach, wenn es vor Ort keine Hilfe gibt, gibt Stack Overflow Ihnen ziemlich oft schneller Antworten als die Leute, mit denen Sie zusammenarbeiten, wenn Sie Fragen klar stellen und die richtigen Details angeben. Lerne so viel du kannst, so schnell du kannst, sobald du dein Gehirn mit den Dingen beschäftigt hast, wird es nicht mehr so ​​kompliziert erscheinen. Versuchen Sie, einige Workshops zu finden, um mehr Erfahrung zu sammeln, oder folgen Sie einigen Tutorials online. Wenn Sie sich anstrengen und Ihr Team es sieht, wird das oft zu Ihrem Vorteil sein. Die meisten Menschen würden lieber mit jemandem zusammenarbeiten, der leidenschaftlich und motiviert ist, als mit einem Besserwisser, der eine Insel ist

Ich habe einen Doktortitel in Mathematik. Eines Tages musste ich einem Studenten die lineare Algebra erklären, nachdem ich einige Jahre lang nie wirklich Matrizen multipliziert hatte. Mir wurde klar, dass ich die Matrizenmultiplikationsregel* vergessen hatte, aber interessanterweise konnte ich immer noch viel lineare Algebra erklären. Der Grund ist: Bei vielen Konzepten der linearen Algebra geht es nicht um Details wie die Multiplikation von Matrizen.

In Ihrem Job können Sie einfach eine Bibliothek verwenden oder Code kopieren und einfügen. Das Wichtigste ist, die Ideen zu verstehen, was etwas ist, worin Sie vielleicht nicht schlecht sind. Sie werden es nie erfahren, wenn Sie es nicht versuchen.

  • Lassen Sie mich als Ego-Ding erwähnen, dass ich die Regel für den Schüler ableiten konnte.
Richtig, und Matrizen in 3D sind meistens 4 gepackte Vektoren, die die Koordinatenbasisvektoren x, y, z und Ursprungsversatz beschreiben. Ich bezweifle auch, dass er jemals den Multiplikationsteil machen muss.
@joojaa: Richtig, und es läuft alles auf Arrays von Arrays hinaus - was Sie innerhalb des ersten Monats der Programmierung lernen.
Nutzung einer Bibliothek = sehr gut. Kopieren und Einfügen von Code, den Sie nicht verstehen = sehr schlecht . Die einzige Möglichkeit, Copy-Paste-Code zu verwenden, besteht darin, ihn in einer Bibliothek selbst zu isolieren, die eindeutig als Copy-Paste gekennzeichnet ist und die Quell-URL enthält, damit zukünftige Besucher wissen, woher er stammt.
Es ist so eine schlechte Idee, dass es einen Namen hat - en.wikipedia.org/wiki/Cargo_cult_programming

Ich war in Situationen wie deiner, und es ist nie ein gutes Gefühl, überfordert und verloren zu sein. Wenn dies wirklich Ihr Traumjob ist, dann müssen Sie es nur herausfinden. Sie können nicht ewig ein Junior-Programmierer bleiben, der niedere Aufgaben erledigt.

Der Schlüssel ist, jemanden zu finden, der vor Ihnen am Code gearbeitet hat und der Sie betreuen kann. Dies ist eine Beziehung, die Sie gut managen müssen, da Ihr Mentor seine eigene Arbeit zu erledigen hat und nicht immer Zeit für Sie hat. Zu Beginn würde ich jeden, der zuvor an diesem Code gearbeitet hat, bitten, ein oder zwei Stunden mit Ihnen zu verbringen und ihn durchzugehen. Sei nicht schüchtern. Stellen Sie Fragen, machen Sie sich Notizen usw. Nutzen Sie die Zeit, die diese Person Ihnen gewidmet hat. Hoffentlich lernen Sie genug, um mit Zuversicht in den Code einzutauchen. Wenn nicht, dann ist das vielleicht doch nicht der richtige Job für dich.

Danach werden Sie sicherlich noch weitere Fragen haben, aber Sie müssen versuchen, diese selbst herauszufinden. Versuchen Sie, Ihren Mentor nur als letzten Ausweg einzusetzen. Machen Sie Ihre Hausaufgaben, damit Sie nicht dumm dastehen und ihre Zeit verschwenden. Erklären Sie, wie Sie zu Ihren Fragen gekommen sind. Sage so etwas wie: „Ich habe X herausgefunden, und ich habe Y herausgefunden, aber ich verstehe nicht, wie X und Y Z ergeben.“ Wenn Sie zeigen, dass Sie dieses Zeug lernen und sich wirklich bemühen, werden die Leute viel offener und empfänglicher für Ihre Fragen sein.

„Man kann nicht ewig ein Junior-Programmierer bleiben, der niedere Aufgaben erledigt.“ Sehr wahr, etwas, was ich nicht bedacht hatte.