Erfahrungen als Software-Ingenieur auf Einstiegsniveau
Veröffentlicht: 2022-08-30Wenn Sie mich vor einem Jahr gefragt hätten, was ein Software-Ingenieur tut, hätte ich so etwas wie „Probleme durch Code lösen“ geantwortet. Es ist eine einfache Antwort, die darauf hinweist, wie die von uns produzierte Arbeit bewertet wird. Für Ingenieure in produktorientierten Teams könnten diese Probleme beinhalten, wie man eine neue Funktion implementiert, nach der Kunden gefragt haben, oder wie man die Leistung bestehender Funktionen verbessert.
Wenn Sie mir heute dieselbe Frage stellen, würde ich etwas anders antworten. Softwareingenieure haben die Aufgabe, die richtigen Probleme durch Code zu lösen – und wenn sie effektiv gelöst werden, erreichen sie ihre Geschäftsziele. Herauszufinden, welche Probleme zu lösen sind und wie man sie löst, ist der wichtigste Teil des Daseins als Entwickler, wobei die eigentlichen Implementierungsdetails zweitrangig sind.
Mein Weg zum Software Engineering
Ich begann mich für das Programmieren zu interessieren, nachdem ich im Sommer vor meinem ersten Studienjahr an einem Kurs bei Upperline Code teilgenommen hatte. Ich bekam diese Gelegenheit durch ein College- und Karrierevorbereitungsprogramm namens The Opportunity Network, an dem ich teilnahm.
Upperline Code war meine erste Einführung in die Programmierung, und ich merkte schnell, dass ich daran interessiert war, Programmieren zu lernen. Später in diesem Sommer erhielt ich mein Notre-Dame-Immatrikulationspaket und wechselte vom College of Arts and Letters zum College of Engineering, damit ich Informatik (CS) als Hauptfach studieren konnte.
Einige meiner Lieblings-CS-Kurse waren Design/Analyse von Algorithmen, Cloud Computing und Programmierherausforderungen. Die Probleme waren interessant und die Professoren waren großartig darin, neue Ideen zu präsentieren und Konzepte zu erklären.
Während des gesamten Studiums war mir klar, dass ich als Softwareentwickler arbeiten und meine erworbenen technischen Fähigkeiten einsetzen wollte. Glücklicherweise hatte ich im Sommer vor meinem Abschlussjahr die Gelegenheit, ein Praktikum als Softwareentwickler bei Kantata zu absolvieren und mit anderen Ingenieuren zusammenzuarbeiten, um bei der Bereitstellung von Funktionen zu helfen.
Meine Praktikumserfahrung und die aufmunternden Worte meiner Professoren gaben mir das Selbstvertrauen, mich nicht mit einer anderen Rolle zufrieden zu geben, als ich anfing, mich zu bewerben. Nachdem ich viel Zeit in Bürozeiten verbracht hatte, schloss ich 2021 mit einem CS-Abschluss ab und nahm ein Angebot an, hier bei Sprout Social als Associate Software Engineer zu arbeiten.
Eingewöhnung in Sprout Social
Ein Teil davon, neu in der Rolle und neu im Unternehmen zu sein, bestand darin, sowohl allgemeine Software-Engineering-Fähigkeiten als auch Sprout-spezifische Domänenkenntnisse zu entwickeln. Ich stellte fest, dass Aufgaben, für deren Verständnis allgemeine Programmierkenntnisse erforderlich waren, für mich am einfachsten zu lösen waren. Aufgaben, die Kenntnisse der Sprout-Architektur erforderten, brauchten jedoch Zeit, um sie zu bewältigen, und ich musste mich auf die Hilfe meines Teams verlassen. Es gibt zwar einige Probleme, die Sie lösen können, indem Sie die Dokumentation online lesen, aber Sie können nicht immer Informationen finden, die für Ihre Arbeit relevant sind – es ist entscheidend, andere um Rat fragen zu können.
Eines der ersten Dinge, die mir aufgefallen sind, als ich zu Sprout kam, war, wie kooperativ der Entwicklungsprozess ist. Ich wusste, dass es ganze Teams brauchte, um Features zu entwickeln, aber ich wusste nicht, wie das in der Praxis aussieht. Mir wurde schnell klar, dass für die Veröffentlichung einer erfolgreichen Funktion viele Menschen in verschiedenen Rollen zusammenarbeiten mussten – von Produktmanagern, die Projektanforderungen definieren, über Designer, die Mockups erstellen, bis hin zu Ingenieuren, die Funktionen implementieren. Zusammenarbeit war nichts, was optional war, sondern eine Notwendigkeit, um die Ziele unseres Teams zu erreichen.
Zu lernen, wie man durch die verschiedenen Codebasen navigiert und ein mentales Modell dafür erstellt, wie verschiedene Dienste miteinander interagieren, war eine steile Lernkurve. Da das Kerngeschäft von Sprout Software ist, wird seine Architektur stark von den Geschäftsanforderungen geprägt. Als ich aufstieg, musste ich mir der Geschäftsprobleme bewusst sein, die Entwickler zu lösen versuchten, und warum frühere Architekturentscheidungen getroffen wurden.
Anfangs war ich etwas eingeschüchtert, dass Pull-Requests überprüft werden mussten, bevor sie in die Codebasis eingebunden werden konnten. Zu verstehen, dass der Hauptzweck von Code-Reviews der Wissensaustausch und die Aufrechterhaltung von Code-Standards ist, hat mir geholfen, meine Perspektive zu ändern.
Das Durchlaufen von Code-Reviews hat mir geholfen, meine technischen Fähigkeiten zu schärfen und die Qualität meiner Pull-Requests zu verbessern. Es war wirklich hilfreich, dass Kollegen mir Ratschläge geben, was ich ändern soll, mich in neue Muster einführen und mich auf relevante Bereiche der Codebasis hinweisen. Das Lesen der Pull Requests anderer Ingenieure hat mir auch einen wertvollen Einblick in andere Dienste gegeben, an denen ich nicht direkt arbeite.
Ihre bisherigen Erfahrungen zählen
Es gibt eine vorherrschende Vorstellung, dass, wenn Sie in neue Lebensabschnitte eintreten, Ihre früheren Erfahrungen keine Rolle mehr spielen. Sobald Sie das College betreten, spielen Ihre Highschool-Erfahrungen keine Rolle mehr. Sobald Sie in den Arbeitsmarkt eintreten, spielen Ihre College-Erfahrungen keine Rolle mehr.
Aber was oft übersehen wird, ist, dass unsere Erfahrungen, unser Wissen und unsere Gewohnheiten einen verstärkenden Effekt haben. Neue Dinge erreichen wir meist nur durch die Arbeit, die wir zuvor geleistet haben. Die Kenntnisse und Fähigkeiten, die ich zuvor erworben habe, haben großen Einfluss darauf, wie ich als Einsteiger-Softwareingenieur an neue Herausforderungen herangehe.
Die Kurse während des Studiums, die den größten Einfluss auf meine tägliche Arbeit bei Sprout hatten, waren Programmierherausforderungen und Datenbankkonzepte. Ersteres lehrte mich, wie man große Probleme in kleinere Teile zerlegt, um sie effizienter zu lösen. Es hat mir geholfen, meinen Code bewusster zu strukturieren und die Lesbarkeit meines Codes zu verbessern.
Datenbankkonzepte brachten mir grundlegende relationale Datenbankkonzepte bei und behandelten Themen wie Datenbankschemadesign und SQL. Ich habe gelernt, Abfragen zu schreiben, was äußerst nützlich war, da ich häufig unsere Datenbanken abfragen muss, um Probleme zu lösen oder Fragen zu beantworten.
Die Möglichkeiten, die ich außerhalb des Klassenzimmers hatte, waren ebenso wertvoll. Java war keine Sprache, die in den meisten meiner Kurse behandelt wurde, aber ich hatte die Gelegenheit, im Rahmen eines Geschäftsprojekts, das einer meiner Professoren leitete, daran zu arbeiten. Ich habe praktische Erfahrungen beim Schreiben von Java, beim Arbeiten mit MySQL-Datenbanken und beim Erstellen von Docker-Images gesammelt. Das Erlernen von Java war besonders hilfreich, da die meisten Dienste von Sprout darin geschrieben sind.
Es gibt viele andere Fähigkeiten, die ich im Laufe meiner Zeit im Grundstudium erworben habe und die ich für selbstverständlich halte, wie das Navigieren auf der Befehlszeile und das Verstehen grundlegender Programmierkonzepte. Es ist ein weit verbreitetes Missverständnis, dass die meisten im Grundstudium behandelten Themen theoretischer Natur sind und Sie nicht auf eine Karriere als Softwareentwickler vorbereiten. Ich glaube jedoch, dass das Gegenteil der Fall ist – die Fähigkeiten, die Sie im Grundstudium lernen, sind wichtig, auch wenn sie nicht direkt auf Ihre tägliche Arbeit anwendbar sind.
Informatik ist ein sehr weites Feld
CS umfasst eine Vielzahl von Spezialisierungen wie künstliche Intelligenz, maschinelles Lernen und Data Science. Die Erfahrung, die Sie im Grundstudium sammeln, dient als grundlegendes Wissen, das Ihnen in einer Vielzahl von Einstiegsrollen, die nicht ausschließlich auf Softwareentwicklung beschränkt sind, gute Dienste leisten kann. Der Sprung vom Grundstudium in eine Vollzeitstelle bietet die Möglichkeit, herauszufinden, welche Art von Rolle und Fachgebiet für Sie am besten geeignet ist.
Wenn Sie eine Karriere in der Softwareentwicklung beginnen möchten, ist Sprout ein großartiger Ausgangspunkt.