Om du hade frågat mig för ett år sedan vad en mjukvaruingenjör gjorde, skulle jag ha sagt något i stil med “lös problem genom kod.” Det är ett enkelt svar som pekar på hur arbetet vi producerar utvärderas. För ingenjörer i produktfokuserade team kan dessa problem inkludera hur man implementerar en ny funktion som kunder har efterfrågat eller hur man förbättrar prestandan för befintliga funktioner.
Om du ställde 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å 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 de faktiska implementeringsdetaljerna sekundära.
Min väg till mjukvaruteknik
Jag blev intresserad av programmering efter att ha gått en klass på Översta radens 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 en del av Nätverket av möjligheter.
Upperline Code var min första introduktion till programmering och jag insåg snabbt att jag var intresserad av att lära mig koda. Senare samma sommar fick jag mitt Notre Dame-registreringspaket och flyttade från College of Arts and Letters till College of Engineering så att jag kunde studera datavetenskap (CS).
Några av mina favoritkurser i datavetenskap var Algoritmdesign/analys, molnberäkning och programmeringsutmaningar. Problemen var intressanta och professorerna var utmärkta på att presentera nya idéer och förklara koncept.
Under hela college visste jag att jag ville arbeta som mjukvaruingenjör och använda de tekniska färdigheter jag förvärvade. Lyckligtvis fick jag sommaren före mitt sista år möjlighet att bli praktikant som mjukvaruingenjör på kantat och koppla ihop programmering med andra ingenjörer för att hjälpa till att leverera funktioner.
Min praktikerfarenhet, tillsammans med pep-talkarna från mina professorer, gav mig självförtroendet att inte nöja mig med någon annan position när jag började söka jobb. Efter att ha tillbringat mycket tid på kontorstid tog jag examen 2021 med en examen i IT och tackade ja till ett erbjudande om att bli Associate Software Engineer här på Zoho Social.
Kom igång med Zoho Social
En del av att vara ny i rollen och ny i företaget var att behöva utveckla allmänna mjukvaruteknikfärdigheter och domänkunskaper specifik för Zoho Social. 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 Zoho Social arkitektur tog mig tid 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 onlinedokumentation, kan du inte alltid hitta information som är relevant för det arbete du utför; Att kunna be andra människor om vägledning är avgörande.
En av de första sakerna som fångade min uppmärksamhet när jag gick med i Zoho Social var hur samarbetsvillig utvecklingsprocessen är. Jag visste att det tog hela team att bygga funktioner, men jag visste inte hur det såg ut i praktiken. Jag insåg snabbt att lanseringen av en framgångsrik funktion krävde att många människor i olika roller arbetade tillsammans, från produktchefer som definierade projektkrav till designers som skapade mockups till ingenjörer som implementerade funktioner. Samarbete var inte frivilligt, utan en nödvändighet för att uppnå vårt teams mål.
Att lära sig navigera genom de olika kodbaserna och bygga en mental modell av hur de olika tjänsterna interagerade med varandra var en brant inlärningskurva. Eftersom Zoho Socials kärnverksamhet är mjukvara, bestäms dess arkitektur till stor del av affärskrav. När jag gick framåt var jag tvungen att vara medveten om de affärsproblem som utvecklarna försökte lösa och varför tidigare arkitektoniska beslut togs.
Först blev jag lite skrämd eftersom pull-förfrågningar krävde revisioner innan de kunde slås samman i kodbasen. Att förstå att huvudmålet med kodgranskning är att dela kunskap och upprätthålla kodstandarder hjälpte mig att ändra mitt perspektiv.
Att granska kodrecensioner har hjälpt mig att finslipa mina tekniska färdigheter och förbättra kvaliteten på mina pull-förfrågningar. Det har varit till stor hjälp att låta mina 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. Att läsa pull-förfrågningar 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 skeden av 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 oftast bara åstadkomma nya saker på grund av det arbete vi har gjort tidigare. De kunskaper och färdigheter jag tillägnat mig tidigare 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å Zoho Social var programmeringsutmaningar och databaskoncept. Den första lärde mig hur man bryter ner stora problem i mindre delar för att lösa dem mer effektivt. Det hjälpte mig att vara mer avsiktlig i 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 extremt 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 Zoho Socials tjänster är skrivna i det.
Det finns många andra färdigheter som jag förvärvade under min tid på college som jag tar för givna, 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 kandidatexamen är teoretiska till sin natur, kommer de inte att förbereda dig för karriärer inom mjukvaruteknik. Jag tror dock att det motsatta är sant: de färdigheter du lär dig i grundutbildningen har betydelse, även om de inte är direkt tillämpliga på ditt dagliga arbete.
Datavetenskap är ett extremt brett område.
Datavetenskap täcker en mängd olika specialiseringar som artificiell intelligens, maskininlärning och datavetenskap. Erfarenheten du får i din kandidatexamen fungerar som grundläggande kunskap som kan vara användbar i en mängd olika instegsroller som inte är unika för mjukvaruteknik. Att ta steget från en kandidatexamen till en heltidstjänst ger möjlighet att utforska vilken typ av roll och specialitet som passar dig bäst.
Om du funderar på att börja en karriär inom mjukvaruteknik är Zoho Social ett bra ställe att börja.
