Če bi me pred enim letom vprašali, kaj je naredil programski inženir, bi rekel nekaj v smislu »reševanja težav s kodo«. To je preprost odgovor, ki kaže na to, kako se ocenjuje delo, ki ga naredimo. Za inženirje v skupinah, ki temeljijo na izdelkih, lahko te težave vključujejo, kako implementirati nova funkcija, ki so jo stranke zahtevale ali kako izboljšati delovanje obstoječih funkcij.



Če bi mi danes postavili isto vprašanje, bi odgovoril nekoliko drugače. Programski inženirji so zadolženi za reševanje pravih problemov s kodo – in ko so rešeni učinkovito, dosežejo poslovne cilje. Ugotavljanje, katere težave je treba rešiti in kako jih rešiti, je najpomembnejši del razvijalca, dejanske podrobnosti o implementaciji pa so drugotnega pomena.




17 duhovni pomen

Moja pot v programski inženiring

Programiranje me je začelo zanimati po tečaju pri Koda zgornje vrstice poleti pred prvim letnikom fakultete. To priložnost sem dobil prek programa za pripravo na fakulteto in kariero, v katerega sem bil vključen Omrežje priložnosti .

Upperline Code je bil moj prvi uvod v programiranje in kjer sem hitro ugotovil, da me zanima učenje kodiranja. Kasneje tisto poletje sem prejel vpisni paket Notre Dame in zamenjal College of Arts and Letters na College of Engineering, da sem lahko študiral računalništvo (CS).

Nekateri izmed mojih najljubših tečajev CS so bili načrtovanje/analiza algoritmov, računalništvo v oblaku in programski izzivi. Problemi so bili zanimivi, profesorji pa so odlično podajali nove ideje in razlagali pojme.

Med dodiplomskim študijem sem vedel, da želim delati kot programski inženir in uporabiti tehnična znanja, ki sem jih pridobil. K sreči sem poleti pred zadnjim letnikom imel priložnost postati programski inženir pri Zapeti in združite program z drugimi inženirji za pomoč pri zagotavljanju funkcij.

Izkušnje s pripravništvom, skupaj s spodbudnimi govori mojih profesorjev, so mi vlile samozavest, da se nisem zadovoljil z nobeno drugo vlogo, ko sem se prvič začel prijavljati na delovna mesta. Po veliko časa, preživetega v pisarniških urah, sem leta 2021 diplomiral z diplomo CS in sprejel ponudbo za pomočnika programskega inženirja tukaj na Sprout Social .



  Julius Boateng in skupina kolegov iz Sprout Social

Ustanovitev v Sprout Social

Del tega, da sem bil nov v tej vlogi in nov v podjetju, je bil razviti splošne veščine programskega inženiringa in znanje o domeni, specifično za Sprout. Ugotovil sem, da mi je bilo najlažje rešiti naloge, za razumevanje katerih je bilo potrebno splošno znanje programiranja. Vendar so naloge, ki so zahtevale poznavanje Sproutove arhitekture, zahtevale čas, da sem se jih lotil, zato sem se moral za pomoč zanesti na svojo ekipo. Čeprav obstaja nekaj težav, ki jih lahko rešite z branjem dokumentacije na spletu, ne morete vedno najti informacij, ki so pomembne za delo, ki ga opravljate – ključnega pomena je, da lahko druge vprašate za navodila.

Ena od prvih stvari, ki mi je padla v oči, ko sem se pridružil Sproutu, je bilo, kako sodelovalen je razvojni proces. Vedel sem, da so za razvoj funkcij potrebne cele ekipe, vendar nisem vedel, kako je to videti v praksi. Hitro sem spoznal, da je za izdajo uspešne funkcije potrebno sodelovanje veliko ljudi v različnih vlogah – od produktnih vodij, ki definirajo zahteve projekta, do oblikovalcev, ki ustvarjajo modele, in inženirjev, ki izvajajo funkcije. Sodelovanje ni bilo nekaj neobveznega, ampak nujnost pri doseganju ciljev naše ekipe.

  Fotografija sodelavcev Julius Boating in Sprout zunaj Calderja's Flamingo statue in downtown Chicago

Naučiti se krmariti po različnih kodnih bazah in zgraditi miselni model medsebojne interakcije različnih storitev je bila strma krivulja učenja. Ker je osnovna dejavnost podjetja Sprout programska oprema, njegovo arhitekturo močno oblikujejo njegove poslovne zahteve. Ko sem se razvijal,  sem se moral zavedati poslovnih težav, ki so jih poskušali rešiti razvijalci, in zakaj so bile sprejete prejšnje arhitekturne odločitve.



Sprva sem se nekoliko prestrašil, da zahteve za vlečenje zahtevajo preglede, preden jih je mogoče združiti v kodno zbirko. Razumevanje, da je glavni namen pregledov kode izmenjava znanja in vzdrževanje standardov kode, je pomagalo spremeniti moj pogled.

Pregledi kode so mi pomagali izostriti tehnične spretnosti in izboljšati kakovost mojih zahtev za vlečenje. To, da so mi vrstniki svetovali, kaj naj spremenim, me seznanili z novimi vzorci in me usmerili na ustrezna področja baze kod, je bilo zelo koristno. Branje zahtev za vleko drugih inženirjev mi je dalo tudi dragocen vpogled v druge storitve, na katerih ne delam neposredno.

Vaše prejšnje izkušnje so pomembne

Prevladuje ideja, da ko vstopite v nova obdobja življenja, vaše prejšnje izkušnje niso več pomembne. Ko vstopiš na kolidž, tvoje srednješolske izkušnje niso več pomembne. Ko vstopite v delovno silo, vaše izkušnje na fakulteti niso več pomembne.

Toda nekaj, kar se pogosto spregleda, je, da imajo naše izkušnje, znanje in navade sestavljen učinek. Običajno lahko dosežemo nove stvari samo zaradi dela, ki smo ga opravili prej. Znanje in veščine, ki sem jih prej pridobil, so močno vplivale na to, kako se lotevam novih izzivov kot programski inženir začetnika.

Predavanja med dodiplomskim študijem, ki so imela najbolj neposreden vpliv na moje vsakodnevno delo pri Sproutu, so bili Programski izzivi in ​​Koncepti baz podatkov. Prvi me je naučil, kako velike probleme razdeliti na manjše kose, da bi jih učinkoviteje rešil. Pomagal mi je, da sem postal bolj nameren glede strukture svoje kode in izboljšal berljivost kode.

Koncepti baze podatkov so me naučili temeljnih konceptov relacijskih baz podatkov in obravnavali teme, kot sta načrtovanje sheme baze podatkov in SQL. Naučil sem se pisati poizvedbe, kar je bilo izjemno koristno, saj moram pogosto poizvedovati po naših zbirkah podatkov, da bi rešil težave ali odgovoril na vprašanja.

  Animirani gif kompleta robota TurtleBot.

Priložnosti, ki sem jih imel zunaj učilnice, so bile enako dragocene. Java ni bila jezik, ki bi ga obravnavala večina mojih tečajev, vendar sem imel priložnost delati na njej za poslovni projekt, ki ga je vodil eden od mojih profesorjev. Pridobil sem praktične izkušnje s pisanjem Jave, delom z bazami podatkov MySQL in ustvarjanjem slik Docker. Učenje Jave je bilo še posebej koristno, saj je večina Sproutovih storitev napisanih v njej.

Obstaja veliko drugih veščin, ki sem jih pridobil v času študija in se mi zdijo samoumevne, na primer krmarjenje po ukazni vrstici in razumevanje osnovnih konceptov programiranja. Pogosta napačna predstava je, da ker je večina tem, obravnavanih na dodiplomskem študiju, teoretične narave, vas ne bodo pripravile na poklic inženirja programske opreme. Vendar verjamem, da je res ravno nasprotno – veščine, ki se jih naučite na dodiplomskem študiju, so pomembne, tudi če niso neposredno uporabne za vaše vsakodnevno delo.

Računalništvo je izjemno široko področje

CS pokriva različne specializacije, kot so umetna inteligenca, strojno učenje in podatkovna znanost. Izkušnje, ki jih pridobite na dodiplomskem študiju, služijo kot temeljno znanje, ki vam lahko dobro služi pri različnih vlogah na začetni ravni, ki niso izključno namenjene programskemu inženirstvu. Preskok z dodiplomskega študija na položaj za polni delovni čas ponuja priložnost, da raziščete, kakšna vloga in posebnost sta prava za vas.


846 angelsko število

Če iščete začnite kariero na področju programskega inženiringa , Sprout je odličen kraj za začetek.

Delite S Prijatelji: