Ta Reda På Ditt Antal Ängel
Lärdomar som dragits som mjukvaruingenjör på nybörjarnivå
Om du frågade mig för ett år sedan vad en mjukvaruingenjör gjorde, skulle jag ha sagt något i stil med att 'lösa problem genom kod.' Det är ett enkelt svar som pekar på hur arbetet vi producerar utvärderas. För ingenjörer i produktdrivna team kan dessa problem inkludera hur man implementerar en ny funktion som kunderna har efterfrågat , eller hur man förbättrar prestandan för befintliga funktioner.
Om du ställer samma fråga till mig idag skulle jag ge ett lite annorlunda svar. Programvaruingenjörer har till uppgift att lösa rätt problem genom kod – och när de lösts effektivt uppnår de affärsmål. Att ta reda på vilka problem som ska lösas och hur man löser dem är den viktigaste delen av att vara utvecklare, med själva implementeringsdetaljerna sekundära.
Min väg till mjukvaruteknik
Jag blev intresserad av programmering efter att ha gått en klass på Upperline-kod sommaren innan mitt första år på college. Jag fick den här möjligheten genom ett högskole- och karriärberedskapsprogram som jag var med i Möjlighetsnätverket .
Upperline Code var min första introduktion till programmering, och där insåg jag snabbt att jag var intresserad av att lära mig koda. Senare den sommaren fick jag mitt Notre Dame-registreringspaket och bytte från College of Arts and Letters till College of Engineering så att jag kunde studera datavetenskap (CS).
Några av mina favorit CS-kurser var Design/Analysis of Algoritms, Cloud Computing och Programming Challenges. Problemen var intressanta och professorerna var bra på att presentera nya idéer och förklara koncept.
522 nummer
Under hela grundutbildningen visste jag att jag ville arbeta som mjukvaruingenjör och använda de tekniska färdigheter som jag fick. Tack och lov, sommaren innan mitt sista år, fick jag möjlighet att bli praktikant som mjukvaruingenjör på Sung och para-program med andra ingenjörer för att hjälpa till att leverera funktioner.
Min praktikerfarenhet, tillsammans med peptalk från mina professorer, gav mig självförtroendet att inte nöja mig med någon annan roll när jag först började söka jobb. Efter mycket tid på kontorstid tog jag examen 2021 med en CS-examen och accepterade ett erbjudande om att bli Associate Software Engineer här på Sprout Social .

Att bosätta sig i Sprout Social
En del av att vara ny i rollen och ny i företaget var att behöva utveckla både allmänna mjukvarutekniker och Sprout-specifik domänkunskap. Jag fann att uppgifter som krävde generell programmeringskunskap för att förstå var de enklaste för mig att lösa. Men uppgifter som krävde kunskap om Sprouts arkitektur tog tid för mig att ta mig an och jag var tvungen att lita på mitt team för att få hjälp. Även om det finns några problem du kan lösa genom att läsa dokumentation online, kan du inte alltid hitta information som är relevant för det arbete du utför – att kunna be andra om vägledning är avgörande.
En av de första sakerna som stack ut för mig när jag gick med i Sprout var hur samarbetsvillig utvecklingsprocessen är. Jag visste att det tog hela team att utveckla funktioner, men jag visste inte hur det såg ut i praktiken. Jag insåg snabbt att för att släppa en framgångsrik funktion krävdes många människor i olika roller som arbetade tillsammans – från produktchefer som definierade projektkrav, till designers som skapade mockups och ingenjörer som implementerade funktioner. Samarbete var inte något som var valfritt, utan en nödvändighet för att uppnå vårt teams mål.

Att lära sig att navigera genom de olika kodbaserna och bygga en mental modell av hur olika tjänster interagerade med varandra var en brant inlärningskurva. Eftersom Sprouts kärnverksamhet är mjukvara, är dess arkitektur starkt formad av dess affärskrav. När jag ökade var jag tvungen att vara medveten om affärsproblemen som utvecklare försökte lösa och varför tidigare arkitektoniska beslut togs.
Till en början var jag lite skrämd över att pull-förfrågningar krävde granskning innan de kunde slås samman i kodbasen. Att förstå att huvudsyftet med kodgranskning är kunskapsdelning och att upprätthålla kodstandarder hjälpte till att förändra mitt perspektiv.
Att gå igenom kodgranskning har hjälpt till att vässa mina tekniska färdigheter och förbättra kvaliteten på mina pull-förfrågningar. Att låta kamrater ge mig råd om vad jag ska ändra, introducera mig för nya mönster och peka mig på relevanta delar av kodbasen har varit till stor hjälp. Att läsa pull-förfrågningarna från andra ingenjörer har också gett mig värdefull insyn i andra tjänster som jag inte direkt arbetar med.
Dina tidigare erfarenheter är viktiga
Det finns en rådande idé att när du går in i nya stadier i livet spelar dina tidigare erfarenheter inte längre någon roll. När du väl börjar på college spelar dina gymnasieerfarenheter inte längre någon roll. När du väl har kommit in i arbetskraften spelar dina högskoleerfarenheter inte längre någon roll.
Men något som ofta förbises är att våra erfarenheter, kunskaper och vanor har en sammansatt effekt. Vi kan vanligtvis bara uppnå nya saker tack vare det arbete vi har gjort tidigare. De kunskaper och färdigheter som jag tidigare tillägnat mig har i hög grad påverkat hur jag närmar mig nya utmaningar som mjukvaruingenjör på nybörjarnivå.
De klasser under grundutbildningen som hade den mest direkta inverkan på mitt dagliga arbete på Sprout var programmeringsutmaningar och databaskoncept. Den förra lärde mig hur man delar upp stora problem i mindre bitar för att lösa dem mer effektivt. Det hjälpte mig att bli mer medveten om hur jag strukturerade min kod och förbättrade läsbarheten för min kod.
Databaskoncept lärde mig grundläggande relationsdatabaskoncept och täckte ämnen som databasschemadesign och SQL. Jag lärde mig hur man skriver frågor, vilket har varit oerhört användbart eftersom jag ofta behöver söka i våra databaser för att lösa problem eller svara på frågor.

De möjligheter jag fick utanför klassrummet var lika värdefulla. Java var inte ett språk som täcktes i de flesta av mina kurser, men jag hade möjlighet att arbeta med det för ett affärsprojekt som en av mina professorer ledde. Jag fick praktisk erfarenhet av att skriva Java, arbeta med MySQL-databaser och skapa Docker-bilder. Att lära sig Java var särskilt användbart eftersom de flesta av Sprouts tjänster är skrivna i det.
Det finns många andra färdigheter som jag fått under min tid i grundutbildningen som jag tar för givet, som att navigera på kommandoraden och förstå grundläggande programmeringskoncept. Det är en vanlig missuppfattning att eftersom de flesta av de ämnen som behandlas i grundutbildningen är teoretiska till sin natur, kommer de inte att förbereda dig för karriärer inom mjukvaruteknik. Men jag tror att motsatsen är sant - de färdigheter du lär dig i grundutbildningen spelar roll, även om de inte är direkt tillämpliga på ditt dagliga arbete.
Datavetenskap är ett extremt brett område
CS täcker en mängd olika specialiseringar såsom artificiell intelligens, maskininlärning och datavetenskap. Erfarenheten du får i grundutbildningen fungerar som grundläggande kunskap som kan tjäna dig väl i en mängd olika instegsroller som inte är exklusiva för mjukvaruteknik. Att ta steget från grundutbildning till en heltidstjänst ger dig en möjlighet att utforska vilken typ av roll och specialitet som passar dig.
Om du vill starta en karriär inom mjukvaruteknik , Sprout är ett bra ställe att börja.
Dela Med Dina Vänner: