Ако ме попитахте преди година какво прави софтуерният инженер, щях да кажа нещо от рода на „решаване на проблеми чрез код“. Това е прост отговор, който показва как се оценява работата, която произвеждаме. За инженерите в екипи, управлявани от продукти, тези проблеми могат да включват как да внедрят нова функция, която клиентите искат , или как да подобрите ефективността на съществуващите функции.





Ако ми зададете същия въпрос днес, бих дал малко по-различен отговор. Софтуерните инженери са натоварени със задачата да разрешават правилните проблеми чрез код – и когато са решени ефективно, те постигат бизнес целите. Да разберете кои проблеми да разрешите и как да ги разрешите е най-важната част от това да сте разработчик, като действителните подробности за внедряването са второстепенни.



Моят път към софтуерното инженерство

Започнах да се интересувам от програмиране, след като взех курс в Горен код лятото преди моята първа година в колежа. Получих тази възможност чрез програма за подготовка за колеж и кариера, в която бях част, наречена Мрежата за възможности .



Upperline Code беше първото ми въведение в програмирането и бързо разбрах, че се интересувам да се науча да кодирам. По-късно същото лято получих моя пакет за записване в Нотр Дам и преминах от Колежа по изкуства и литература към Колежа по инженерство, за да мога да се занимавам с компютърни науки (CS).


16 духовен смисъл

Някои от любимите ми курсове по CS бяха проектиране/анализ на алгоритми, облачни изчисления и предизвикателства при програмирането. Проблемите бяха интересни и професорите бяха страхотни в представянето на нови идеи и обясняването на концепции.

По време на бакалавърската степен знаех, че искам да работя като софтуерен инженер и да използвам техническите умения, които придобих. За щастие, лятото преди последната ми година имах възможността да стажувам като софтуерен инженер в Изпята и сдвоете програма с други инженери, за да помогнете за доставянето на функции.



Моят стажантски опит, заедно с ободряващите разговори от моите преподаватели, ми дадоха увереността да не се задоволя с друга роля, когато за първи път започнах да кандидатствам за работа. След много време, прекарано в работно време, завърших през 2021 г. със степен CS и приех предложение да бъда асоцииран софтуерен инженер тук на Sprout Social .




234 духовен смисъл

  Юлиус Боатенг и група колеги от Sprout Social

Установяване в Sprout Social

Част от това да си нов за ролята и нов за компанията беше необходимостта да развиеш както общи умения за софтуерно инженерство, така и специфични за Sprout познания за домейна. Открих, че задачи, чието разбиране изисква общи познания по програмиране, са най-лесни за решаване. Въпреки това задачите, които изискваха познаване на архитектурата на Sprout, ми отнеха време да се справя и трябваше да разчитам на моя екип за помощ. Въпреки че има някои проблеми, които можете да решите, като четете документация онлайн, не винаги можете да намерите информация, която е подходяща за работата, която вършите – възможността да помолите другите за насоки е от решаващо значение.

Едно от първите неща, които ми направиха впечатление, когато се присъединих към Sprout, беше колко съвместен е процесът на разработка. Знаех, че са необходими цели екипи, за да разработят функции, но не знаех как изглежда това на практика. Бързо осъзнах, че пускането на успешна функция изисква много хора с различни роли да работят заедно – от продуктови мениджъри, определящи изискванията на проекта, до дизайнери, създаващи макети, и инженери, внедряващи функции. Сътрудничеството не беше нещо незадължително, а необходимост за постигане на целите на нашия екип.



  Снимка на колегите на Julius Boating и Sprout извън Калдър's Flamingo statue in downtown Chicago

Научаването как да навигирате в различните кодови бази и изграждането на умствен модел за това как различните услуги взаимодействат помежду си беше стръмна крива на обучение. Тъй като основният бизнес на Sprout е софтуер, неговата архитектура е силно оформена от неговите бизнес изисквания. Докато се развивах,  трябваше да съм наясно с бизнес проблемите, които разработчиците се опитваха да решат и защо бяха взети предишни архитектурни решения.



Първоначално бях малко уплашен, че заявките за изтегляне изискват прегледи, преди да могат да бъдат обединени в кодовата база. Разбирането, че основната цел на прегледите на кода е споделянето на знания и поддържането на стандарти за код, помогна да променя моята гледна точка.



Преминаването през прегледи на кода помогна да изостря техническите ми умения и да подобря качеството на моите заявки за изтегляне. Наистина беше полезно да имам връстници, които да ми дават съвети какво да променя, да ме запознават с нови модели и да ме насочват към съответните области на кодовата база. Четенето на заявките за изтегляне на други инженери също ми даде ценна видимост в други услуги, върху които не работя директно.

Вашият предишен опит има значение

Има преобладаваща идея, че когато навлизате в нови етапи от живота, предишният ви опит вече няма значение. След като влезете в колеж, опитът ви в гимназията вече няма значение. След като влезете в работната сила, вашият опит в колежа вече няма значение.

Но нещо, което често се пренебрегва, е, че нашият опит, знания и навици имат комбиниран ефект. Обикновено успяваме да постигнем нови неща само благодарение на работата, която сме свършили преди. Знанията и уменията, които придобих преди това, силно повлияха на това как подхождам към новите предизвикателства като начинаещ софтуерен инженер.


1144 близнак пламък

Класовете по време на бакалавърската степен, които имаха най-пряко въздействие върху ежедневната ми работа в Sprout, бяха предизвикателствата в програмирането и концепциите за бази данни. Първият ме научи как да разделям големи проблеми на по-малки парчета, за да ги решавам по-ефективно. Помогна ми да стана по-съзнателен в начина, по който структурирах кода си и подобри четливостта на моя код.

Database Concepts ме научи на основни концепции за релационни бази данни и обхвана теми като дизайн на схема на база данни и SQL. Научих как да пиша заявки, което беше изключително полезно, тъй като често ми се налага да правя заявки в нашите бази данни, за да решавам проблеми или да отговарям на въпроси.


духовен номер 222

  Анимиран gif на комплект робот TurtleBot.

Възможностите, които имах извън класната стая, бяха също толкова ценни. Java не беше език, който се разглеждаше в повечето от моите курсове, но имах възможността да работя върху него за бизнес проект, който един от моите преподаватели ръководеше. Натрупах практически опит в писането на Java, работа с MySQL бази данни и създаване на Docker изображения. Изучаването на Java беше особено полезно, тъй като повечето от услугите на Sprout са написани на него.

Има много други умения, които придобих през времето си в бакалавърската степен, които приемам за даденост, като навигиране в командния ред и разбиране на основните програмни концепции. Често срещано погрешно схващане е, че тъй като повечето от темите, обхванати в бакалавърската степен, са теоретични по природа, те няма да ви подготвят за кариера в областта на софтуерното инженерство. Вярвам обаче, че е вярно обратното – уменията, които научавате в бакалавърската степен, имат значение, дори и да не са пряко приложими към ежедневната ви работа.

Компютърните науки са изключително обширна област

CS обхваща различни специализации като изкуствен интелект, машинно обучение и наука за данни. Опитът, който придобивате в бакалавърската степен, служи като фундаментално знание, което може да ви служи добре в различни роли на начално ниво, които не са изключително свързани със софтуерното инженерство. Преминаването от бакалавърска степен към позиция на пълен работен ден дава възможност да проучите каква роля и специалност е подходяща за вас.

Ако търсите да започнете кариера в софтуерното инженерство , Sprout е чудесно място да започнете.

Споделете С Приятелите Си: