Ein bisschen Hintergrund:
Ich bin einer der beiden Softwareentwickler in meiner Firma und wir arbeiten derzeit mit C++ auf eingebetteten Maschinen. Mein Kollege arbeitet seit langem mit C und nun wollte mein Chef die Entwicklung mit C++ verbessern. Nach einem Praktikum im Bereich Webanwendungen bat mich mein Chef, mit diesen Maschinen zu arbeiten, ohne etwas über die Maschine selbst zu wissen.
Als ich übernommen wurde, wusste mein Chef, dass ich in der Schule nur Dinge in C++ gemacht hatte und dass ich persönlich nichts weiter gemacht hatte, aber dass ich mehr darüber wissen wollte, wie man Software auf eingebetteten Maschinen entwickelt.
Die Quelle meiner Probleme:
Also, wie gesagt, ich habe ganz frisch angefangen, Software für Maschinen zu entwickeln, die ich noch nie zuvor gesehen habe. Diese haben ein sehr komplexes Programm, das auf sehr komplexe Weise gebaut wurde, dem manchmal die Fähigkeiten von OOP und C++ fehlen (da vorher alles in C gebaut wurde (was ich nicht weiß und mein Chef das wusste)) und ich habe viele Schwierigkeiten verstehen, wie es funktioniert, warum etwas auf eine bestimmte Weise gebaut wurde, was für eine Idee hinter etwas steckt usw. usw. usw.
Ich kann den Senior nicht fragen, da er Dinge in C gemacht hat und diese neue Maschine nicht programmiert (oder er macht es sowieso mit C und will C++ nicht lernen) und er ist sowieso zu beschäftigt.
Aber trotz all dieser Probleme habe ich die Situation in den Griff bekommen und zumindest angefangen zu wissen, wie man ein paar Kleinigkeiten macht, und für meinen Chef lief das gut ... bis jetzt.
Das eigentliche Problem:
Jetzt, nach einem Monat, werde ich aufgrund von Firmenschwierigkeiten gebeten, die Funktionen des Architekten zu verwenden und nicht die, die ich alleine gemacht habe. Er ist der Mann hinter den Kulissen, der das gesamte Betriebssystem der Maschine geschrieben hat, und ich kann ihn nicht kontaktieren, seit er die Firma verlassen hat, und kann mir helfen, wenn er um "Beratung" gebeten wird.
Das Problem ist, dass ich nicht wissen kann, was eine Funktion tut und sich verhält, weil das Funktionsverhalten in *.a-Dateien eingeschlossen ist. Als ich über eine der seltenen Mails nachfragte, die ich senden konnte, lautete die Antwort: "Der Name der Funktion und die Parameter sollten die Dinge klarstellen, Sie haben sowieso eine Menge Dokumentation".
Eigentlich ... dieser Dokumentation fehlen Informationen (sie ist zu etwa 30% vollständig, um die Idee zu verstehen). Und überhaupt erklärt es allgemein, was eine Funktion tut, vorausgesetzt, ich weiß, wie das Betriebssystem funktioniert, was der Zweck einer bestimmten Idee ist oder andere zufällige Dinge, die ich mir nicht vorstellen kann.
Ich habe viele Probleme im Kopf, welches ist, dieses Unternehmen zu verlassen und nach Webentwicklung zu suchen (was wirklich mein Interesse geweckt hat), aber bevor ich mich an seltsame Ideen gewöhne, möchte ich nur fragen:
Ist es üblich, als Entwickler zu arbeiten, ohne die Möglichkeit zu haben, wichtige Dinge im Projekt zu wissen?
Eigentlich verstehe ich hier und da ein wenig. Aber ich werde wirklich gebeten, ein riesiges Puzzle zu lösen, ohne zu wissen, wie die endgültige Figur aussehen wird. Da dies mein erster Job ist, weiß ich nicht wirklich, was ich tun soll, vielleicht ist das in den Unternehmen üblich und ich werde nur entmutigt.
Es ist völlig normal, dass ein Entwickler in einer solchen Situation Wunder vollbringen muss – in einer schlechten Gesellschaft .
Ich habe in Genossenschaften gearbeitet, in denen der Eigentümer des Unternehmens von mir erwartete, Bill Gates zu übertreffen und sein Geschäft zu revolutionieren. Ich habe mein Bestes gegeben, aber seien wir ehrlich, es ist nicht ganz so gelaufen, wie sie es sich erhofft hatten.
Das Problem ist, dass viele Manager Softwareentwicklung nicht verstehen .
Sie verstehen nicht, wie unterschiedlich eine Sprache von einer anderen sein kann. Sie verstehen nicht, dass bestimmte Bereiche der Entwicklung nicht sehr eng miteinander verbunden sind (z. B. Webentwicklung vs. Maschinenprogrammierung). Sie verstehen den Zeitplan für die Bereitstellung eines komplexen Softwarepakets, die Auswirkungen einer Änderung des Projektumfangs – selbst in scheinbar geringfügiger Weise – usw. nicht.
Das sind Themen, denen Sie im Laufe Ihrer Karriere immer wieder begegnen werden . Sie müssen lernen, wie Sie Ihre Bedenken äußern, Lieferzeiten abschätzen (nehmen Sie sich die Zeit, die Sie für möglich halten, und multiplizieren Sie sie mit 3, ist eine gute Regel) und lernen Sie auch, wann es Zeit für GTFO ist.
Dieses Unternehmen klingt chaotisch und schlecht organisiert. Darüber hinaus hat die verantwortliche Person eindeutig keine Ahnung, was zum Teufel sie von Ihnen verlangt, und bietet Ihnen wenig oder keine Unterstützung.
An dieser Stelle können Sie sich lauter äußern, Ihre Bedenken äußern und Ihren eigenen Plan und Zeitplan für die Erfüllung ihrer Anforderungen erläutern.
Sie könnten zum Beispiel ein paar Tage anfordern, um einfach mit der Bibliothek zu experimentieren und Ihr Wissen zu vertiefen. Sie mögen es vielleicht nicht, aber Sie sollten erklären, dass Sie ohne weiteres Verständnis Ihre Aufgaben wahrscheinlich nicht erfolgreich erledigen werden.
Ich möchte mich auch an den Kommentar wenden, den Sie an Kilisi gerichtet haben:
Ich habe nicht die Absicht, C++ zu Hause zu lernen oder so
Als Entwickler müssen Sie Ihr Wissen im Laufe Ihrer Karriere ständig erweitern. Nur ein sehr schlechter Entwickler stagniert.
Ich sage nicht, dass Sie Ihr Privatleben opfern sollten, aber wenn ein bisschen zusätzliche Anstrengung erforderlich ist, um langfristig erfolgreich zu sein, dann seien Sie nicht so negativ, wenn Sie ein paar Stunden Ihrer eigenen Zeit für das Lernen aufwenden eine neue Technologie.
Wenn Sie Webentwickler werden möchten, sollten Sie sich letztendlich nach einem neuen Job umsehen.
Es ist nicht üblich, jemandem, der neu in der Branche ist, solche Aufgaben zu übertragen, es sei denn, er wurde als fähig erachtet. Es scheint, dass Sie ins kalte Wasser geworfen wurden (was ziemlich häufig vorkommt).
Sie müssen mit Ihrem Vorgesetzten darüber sprechen. Insbesondere müssen Sie Ihre Wissensbasis mit dem Produkt nur für den Anfang aufbauen. Sie können nach diesem Gespräch weitermachen.
Abgesehen von den anderen Antworten. Von Entwicklern wird erwartet, dass sie Repositories verwenden, um ihren Code zu speichern. Selbst wenn sie das Unternehmen verlassen, sollten sie die Quelle dem Unternehmen überlassen, das für ihre Arbeit bezahlt hat. Ich glaube, dass die Wiederherstellung des Quellcodes nicht nur für Sie nützlich ist, sondern auch für das Unternehmen, das dieses Know-how verlieren kann, wenn es vergessen wird. Einmal müssen sie vielleicht eine Funktion in einer .a-Datei ändern, und niemand wird sie ändern können.
Ich gehe davon aus, dass dieser Code von Ihrer eigenen Firma stammt. Es gibt einige punktuelle Fälle, in denen der Quellcode nicht verfügbar ist. Das könnte beinhalten:
Bei der Codierung gegen Code anderer Unternehmen ist diese Situation recht häufig und macht die Dinge unweigerlich schwierig. Guter Code braucht normalerweise nicht zu viel Erklärung, aber guter Code ist nicht die Norm und Quellcode ist hilfreich beim Debuggen, wenn Sie nicht wissen, was passiert. Viel Glück.
Lilienthal
Mark Wuji
Brandin
Mark Wuji
Lilienthal
Mark Wuji
jamesqf