Hvis du spurgte mig for et år siden, hvad en softwareingeniør gjorde, ville jeg have sagt noget i retning af 'at løse problemer gennem kode.' Det er et simpelt svar, der peger på, hvordan det arbejde, vi producerer, evalueres. For ingeniører på produktdrevne teams kan disse problemer omfatte, hvordan man implementerer en ny funktion, som kunderne har efterspurgt , eller hvordan man forbedrer ydeevnen af ​​eksisterende funktioner.



Hvis du stiller mig det samme spørgsmål i dag, ville jeg give et lidt anderledes svar. Softwareingeniører har til opgave at løse de rigtige problemer gennem kode - og når de løses effektivt, opnår de forretningsmål. At finde ud af, hvilke problemer der skal løses, og hvordan de løses, er den vigtigste del af at være udvikler, hvor de faktiske implementeringsdetaljer er sekundære.



Min vej til software engineering

Jeg blev interesseret i programmering efter at have taget en klasse kl Øverste kode sommeren før mit første år på college. Jeg fik denne mulighed gennem et skole- og karriereparatprogram, som jeg var en del af, kaldt Mulighedsnetværket .

Upperline Code var min første introduktion til programmering, og hvor jeg hurtigt indså, at jeg var interesseret i at lære at kode. Senere samme sommer modtog jeg min Notre Dame-tilmeldingspakke og skiftede fra College of Arts and Letters til College of Engineering, så jeg kunne studere datalogi (CS).

Nogle af mine foretrukne CS-kurser var design/analyse af algoritmer, cloud computing og programmeringsudfordringer. Problemerne var interessante, og professorerne var gode til at præsentere nye ideer og forklare koncepter.

Gennem hele undergraden vidste jeg, at jeg ville arbejde som softwareingeniør og bruge de tekniske færdigheder, jeg fik. Heldigvis havde jeg sommeren før mit seniorår mulighed for at komme i praktik som softwareingeniør hos Sung og par-program med andre ingeniører for at hjælpe med at levere funktioner.

Min praktikerfaring, sammen med peptalks fra mine professorer, gav mig selvtilliden til ikke at nøjes med nogen anden rolle, da jeg først begyndte at søge job. Efter megen tid brugt i kontortid, dimitterede jeg i 2021 med en CS-uddannelse og tog imod et tilbud om at blive Associate Software Engineer her på Spire Social .




nummer nummer 330

  Julius Boateng og en gruppe kolleger fra Sprout Social

Sætter sig ind i Sprout Social

En del af at være ny i rollen og ny i virksomheden var at skulle udvikle både generelle softwareingeniørfærdigheder og Sprout-specifik domæneviden. Jeg fandt ud af, at opgaver, som krævede generel programmeringsviden at forstå, var de nemmeste for mig at løse. Opgaver, der krævede kendskab til Sprouts arkitektur, tog dog tid for mig at løse, og jeg var nødt til at stole på mit team for at få hjælp. Selvom der er nogle problemer, du kan løse ved at læse dokumentation online, kan du ikke altid finde information, der er relevant for det arbejde, du udfører – det er afgørende at kunne spørge andre om vejledning.

En af de første ting, der skilte sig ud for mig, da jeg kom til Sprout, var, hvor samarbejdende udviklingsprocessen er. Jeg vidste, at det tog hele teams at udvikle funktioner, men jeg vidste ikke, hvordan det så ud i praksis. Jeg indså hurtigt, at frigivelse af en succesfuld funktion krævede, at mange mennesker i forskellige roller arbejdede sammen – lige fra produktchefer, der definerede projektkrav, til designere, der lavede mockups og ingeniører, der implementerede funktioner. Samarbejde var ikke noget, der var valgfrit, men en nødvendighed for at nå vores teams mål.

  Foto af Julius Boating og Sprout-kolleger uden for Calder's Flamingo statue in downtown Chicago

At lære at navigere gennem de forskellige kodebaser og bygge en mental model for, hvordan forskellige tjenester interagerer med hinanden, var en stejl læringskurve. Da Sprouts kerneforretning er software, er dens arkitektur stærkt formet af virksomhedens krav. Mens jeg var i gang, måtte jeg være opmærksom på de forretningsproblemer, udviklere forsøgte at løse, og hvorfor tidligere arkitektoniske beslutninger blev truffet.



Til at begynde med var jeg en smule skræmt over, at pull-anmodninger krævede anmeldelser, før de kunne flettes ind i kodebasen. At forstå, at hovedformålet med kodegennemgange er videndeling og vedligeholdelse af kodestandarder, hjalp med at ændre mit perspektiv.

At gennemgå kodegennemgange har hjulpet med at skærpe mine tekniske færdigheder og forbedre kvaliteten af ​​mine pull-anmodninger. Det har været virkelig nyttigt at få jævnaldrende til at give mig råd om, hvad jeg skal ændre, introducere mig til nye mønstre og henvise mig til relevante områder af kodebasen. Læsning af pull-anmodninger fra andre ingeniører har også givet mig værdifuld synlighed i andre tjenester, som jeg ikke direkte arbejder på.


716 nummer

Dine tidligere erfaringer betyder noget

Der er en fremherskende idé om, at når du går ind i nye stadier i livet, betyder dine tidligere oplevelser ikke længere noget. Når du først kommer på college, betyder dine gymnasieerfaringer ikke længere noget. Når du først er kommet ind i arbejdsstyrken, betyder dine universitetserfaringer ikke længere noget.

Men noget, der ofte overses, er, at vores erfaringer, viden og vaner har en sammensættende effekt. Vi er normalt kun i stand til at opnå nye ting takket være det arbejde, vi har udført før. Den viden og de færdigheder, som jeg tidligere har fået, har i høj grad haft indflydelse på, hvordan jeg griber nye udfordringer an som entry-level software engineer.

De klasser under bacheloruddannelsen, der havde den mest direkte indflydelse på mit daglige arbejde hos Sprout, var programmeringsudfordringer og databasekoncepter. Førstnævnte lærte mig, hvordan man deler store problemer op i mindre stykker for at løse dem mere effektivt. Det hjalp mig med at blive mere bevidst om, hvordan jeg strukturerede min kode og forbedrede min kodes læsbarhed.

Databasekoncepter lærte mig grundlæggende relationelle databasekoncepter og dækkede emner som databaseskemadesign og SQL. Jeg lærte at skrive forespørgsler, hvilket har været yderst nyttigt, da jeg ofte har brug for at forespørge i vores databaser for at løse problemer eller besvare spørgsmål.

  Animeret gif af et TurtleBot-robotsæt.

De muligheder, jeg havde uden for klasseværelset, var lige så værdifulde. Java var ikke et sprog, der blev dækket i de fleste af mine kurser, men jeg havde mulighed for at arbejde på det til et forretningsprojekt, som en af ​​mine professorer ledede. Jeg fik praktisk erfaring med at skrive Java, arbejde med MySQL-databaser og skabe Docker-billeder. At lære Java var især nyttigt, da de fleste af Sprouts tjenester er skrevet i det.

Der er en masse andre færdigheder, som jeg har fået i løbet af min tid i bacheloruddannelsen, som jeg tager for givet, som at navigere på kommandolinjen og forstå kerneprogrammeringskoncepter. Det er en almindelig misforståelse, at da de fleste af de emner, der er dækket i bacheloruddannelsen, er teoretiske, vil de ikke forberede dig til softwareingeniørkarrierer. Jeg tror dog, at det modsatte er sandt - de færdigheder, du lærer i bacheloruddannelsen, har betydning, selvom de ikke er direkte anvendelige til dit daglige arbejde.

Datalogi er et meget bredt felt

CS dækker en række specialiseringer såsom kunstig intelligens, maskinlæring og datavidenskab. Den erfaring, du får i bacheloren, tjener som grundlæggende viden, der kan tjene dig godt i en række forskellige roller på entry-level, ikke eksklusive for software engineering. At tage springet fra bachelor til en fuldtidsstilling giver mulighed for at udforske, hvilken slags rolle og speciale der passer til dig.

Hvis du leder efter starte en karriere inden for software engineering , Sprout er et godt sted at begynde.

Del Med Dine Venner: