Ich bin ein Softwareentwickler ohne marktfähige Fähigkeiten [geschlossen]

Ich habe einen Abschluss in ECE (Electric Computer Engineering) mit den Schwerpunkten Logikdesign und digitales Design. Direkt nach dem Studium nahm ich einen EDA-Softwarejob (Electronic Design Automation) für eine Firma an, die an einem Synthesetool arbeitete, weil ich damals das Geld brauchte (Schuldarlehen aufgenommen, ich habe keine Familie). Ich arbeite im Silicon Valley.

Ich bin zu der Erkenntnis gekommen, dass EDA wahrscheinlich eine sterbende Industrie ist, und das ist das Problem. Ich bin ein "Software-Ingenieur" mit absolut keinen marktfähigen Fähigkeiten. Ich kann eigentlich kein RTL-Designer mehr sein. Ich bin auch nicht wirklich ein Software-Ingenieur, weil ich nur genug Software kenne, um das EDA-Tool zu vervollständigen und zu entwickeln. Ich habe ein schlechtes Wissen über Datenstrukturen und Algorithmen außerhalb der Arbeit. Ich sage es nur ungern, aber ich kann die hochrangigen Konzepte, die erforderlich sind, um ein vollwertiger Softwareentwickler zu werden, nicht wirklich verstehen. Der größte Teil meiner Codierung besteht nur aus einfachen Arrays, einfachen for/nested for-Schleifen und if-Anweisungen. Ich habe 6 Monate lang versucht, alleine zu programmieren, und mache jetzt Algorithmen, ich kann das Konzept einfach nicht verstehen.

Jetzt bin ich in einem Trott, weil ich 20 Jahre zu spät geboren bin, im Vergleich zu meinen Kollegen stark unterbezahlt bin und höchstwahrscheinlich in einer sterbenden Branche arbeite. Welche Möglichkeiten habe ich? Die einzige Option, die ich sehe, ist, dass ich für den Rest meiner Karriere bei meiner aktuellen Firma bleibe oder versuche, zu einem der Top-3-EDA-Unternehmen wie Cadence, Synopsys oder Mentor zu wechseln, um eine kleine Gehaltserhöhung zu bekommen und dort für den Rest meiner Karriere zu bleiben Leben.

Es fühlt sich an, als hätte ich mich wirklich sehr vermasselt. Ich suche nur nach Ratschlägen oder Erfahrungen von anderen.

TLDR ; „Software-Ingenieur“ in der Elektronikdesign-Automatisierung, der über einige Registertransfer- und Softwarekenntnisse verfügt, aber nicht weiß, was zu tun ist, und Rat benötigt

Hier ist nicht wirklich der richtige Ort, um nach Karriereberatung zu fragen (Sie sollten wahrscheinlich versuchen, einen Mentor dafür zu finden, der mit Ihnen detaillierter darüber sprechen kann, was Sie können und was nicht und was Sie wollen und was nicht tun), aber es gibt viele Software-Engineering-Jobs, die nicht viel mehr als "einfache" Codierung erfordern. Und es gibt Jobs mit nur wenig Codierung oder bei denen ein grundlegendes Verständnis der Codierung Ihnen bei der Arbeit helfen würde. Dann gibt es auch noch die Möglichkeit, das Programmieren ganz aufzugeben und sich einen anderen Beruf zu suchen (dafür ist es nie zu spät, wenn man das will).
Ich bin mir nicht sicher, ob ich wirklich glaube, dass irgendjemand grundlegend unfähig ist, fortgeschrittene Programmierkonzepte zu verstehen (zumindest/besonders nicht jemand, der einen ähnlichen Hintergrund hat). Einige müssen nur ein bisschen weiter gehen als andere, haben nicht den Glauben, dass sie es verstehen können, versuchen zu sehr, das Gesamtbild zu verstehen, anstatt nur das kleine Stück zu akzeptieren, das vor ihnen liegt (was auch beinhalten kann, zu denken, dass die Dinge einfach so sein sollten irgendwann "Klick" macht, statt dass es langsam bergauf geht) oder schlechte Lehrer haben. Aber vielleicht irre ich mich, ich weiß es nicht.
Sie werfen eine Menge Akronyme hinein. Können Sie erklären, was ECE, EDA und RTL sind? Ich bin Software-Ingenieur und habe keine Ahnung, wovon Sie sprechen.
Genau meine Gedanken (+1), aber dann beweisen wir irgendwie seinen Standpunkt, nicht wahr? :-)
Ich stimme Seth R zu, dass Sie diese Akronyme definieren sollten - ich weiß nicht, was viele bedeuten. Ich vermute, "ECE" ist "Elektrotechnik und Computertechnik". Wenn das der Fall ist und Sie digitales Design studiert haben, bin ich mir nicht sicher, warum Sie nach Software-Engineering-Jobs suchen. Haben Sie schon einmal über System-on-a-Chip-Design- oder Integrationsjobs nachgedacht? Oder numerische Steuerungsjobs? Wenn Sie ins Software-Engineering wechseln wollen, haben Sie außer dem Autodidakten schon etwas anderes gemacht? Einige Leute schneiden besser in strukturierteren Kursinhalten ab – von einem Bootcamp über Online-MOOC-Kurse bis hin zu einem Hochschulabschluss.
EDA ist keine "sterbende Industrie", sondern eine von entscheidender Bedeutung (wenn auch eine mit wenigen Akteuren). Ich glaube, Sie leiden unter dem „Gras-ist-grüner-auf-der-anderen-Seite“-Syndrom. Es ist absolut möglich, in andere Bereiche zu wechseln, die Leute tun es die ganze Zeit, aber erwarten Sie nicht, dass Sie die Arbeit woanders sinnvoller finden werden. Zumindest tun Sie etwas Reales, im Gegensatz zu vielen echten „Software-Ingenieuren“, die für Clickbait-Unternehmen arbeiten.
Sie können versuchen, in die FPGA-Anwendungsarbeit einzusteigen; Das Durchschnittsgehalt ist wahrscheinlich niedriger, aber Sie können dies wahrscheinlich ausgleichen, indem Sie die größere Anzahl möglicher Arbeitgeber nutzen.

Antworten (3)

Nur weil Sie etwas jetzt nicht können, heißt das nicht, dass Sie es in Zukunft nicht können werden. Auch wenn es den Anschein haben mag, dass Ihr Hochschulabschluss und Ihre aktuellen Fähigkeiten Ihre Fähigkeiten in ein paar Jahren bestimmen werden, ist dies nicht der Fall.

Vielleicht sind die Art der Fähigkeiten, die Sie gerade erwerben möchten, nicht das geeignete Niveau, das Sie benötigen, um voranzukommen, oder vielleicht die Kurse/Bücher/usw. die Sie verwenden, sind nicht für Ihren Lernstil geeignet.

Haben Sie etwas Geduld. Erlernen Sie vielleicht einige andere Fähigkeiten (Führung, Management, Gitarre, Tauchen) und wenden Sie sich dann vielleicht wieder den Fähigkeiten zu, die Sie heute lernen möchten, oder entdecken Sie vielleicht, dass sich Ihre eigenen Werte oder der Markt geändert haben und ein anderer Weg jetzt attraktiver ist .

Klingt so, als ob ein Gig mit System Verilog eine vernünftige Lösung wäre, und es gibt eine Menge Verifizierungsarbeit da draußen.

Software-Ingenieure sind im Allgemeinen schlechte Hardware-Designer (die Denkweise ist zu unterschiedlich, besonders wenn man sich dem Register-Transfer-Level-Design (RTL) zuwendet[1]), aber jedes ernsthafte Chip-Design erfordert riesige Schwaden von Simulationstestumgebungen, Schreiben und System Verilog scheint das moderne Werkzeug der Wahl zu sein. Das Schöne für Sie ist, dass der Großteil dieser Art von Code ziemlich einfach ist, ohne dass tiefes Wissen über Datenstrukturen erforderlich ist, und das EE-Wissen wird sehr relevant sein.

Ich bezweifle, dass Hardware Design Languages ​​(HDLs) und ihre Testbenches in absehbarer Zeit verschwinden werden.

Ich bin ein Elektronikingenieur, aber ich habe mich auf rauscharmes Analog-, Mixed-Signal- und Hochgeschwindigkeitsdesign spezialisiert, wo sich herausstellt, dass es Arbeit gibt, da nur noch sehr wenige Schulen es unterrichten.

[1] Eine Verallgemeinerung, aber Software-Ingenieure neigen dazu, dem Chip zu sagen, was er tun soll, Hardware-Designer, dem Chip zu sagen, was er tun soll, es ist mehr eine Unterscheidung, als Sie vielleicht erwarten.

Ich habe ein schlechtes Wissen über Datenstrukturen und Algorithmen außerhalb der Arbeit. Ich sage es nur ungern, aber ich kann die hochrangigen Konzepte, die erforderlich sind, um ein vollwertiger Softwareentwickler zu werden, nicht wirklich verstehen. Der größte Teil meiner Codierung besteht nur aus einfachen Arrays, einfachen for/nested for-Schleifen und if-Anweisungen. Ich habe 6 Monate lang versucht, alleine zu programmieren, und mache jetzt Algorithmen, ich kann das Konzept einfach nicht verstehen.

Dies scheint in der Tat das Kernproblem zu sein, und die Antwort ist ganz einfach: Es auf eigene Faust zu tun, ohne eine solide Grundlage, ist eine Sackgasse. Sie erfinden im Grunde die gesamte Branche neu. Ich würde vorschlagen, was ich dieses Jahr getan habe: Lesen Sie ein gutes, praktisches Buch zu diesem Thema . Der entscheidende Punkt hier ist, nicht in der Theorie zu ertrinken – die mathematischen Feinheiten von Hash-Tabellen und Hamilton-Pfade sind eine bodenlose Leere. Was Sie brauchen, ist 1) eine grundlegende Vorstellung davon zu bekommen, wann Sie was verwenden, 2) eine ähnlich grundlegende Vorstellung davon zu bekommen, wo Sie die Details nachschlagen können, wenn Sie sie brauchen.

Der gesamte Prozess, einschließlich der Übungen, wird einige Monate Abend-/Wochenendübungen erfordern. Außerdem lernen Sie die Grundlagen einer Programmiersprache Ihrer Wahl kennen, denn so testen Sie Ihre Lösungen. Was das Buch selbst betrifft, hat Cracking the Coding Interview von Gayle Laakmann McDowell für mich funktioniert. Jetzt erhalten meine Lösungen für Codierungsherausforderungen, die auf Websites mit Codierungsherausforderungen als „schwierig“ gekennzeichnet sind, konsistent hohe Punktzahlen.

Natürlich ist das nicht alles, was ein Softwareentwickler in seinem Werkzeuggürtel haben muss. Aber wenn es um Datenstrukturen und Algorithmen geht, ist es das.