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

Започване от дъното срещу Никой няма време за това

В класната стая на колежа имах цял семестър, за да науча какъвто и да е езикът, върху който се фокусира класът. Моите професори отделиха време да ни учат на най-основните неща - основни като 15 минути обсъждане как да декларираме променлива или цели тестови секции в подходящото време за използване на функции или подпрограми. Това не е непременно нещо лошо; ние отиваме в колеж, за да учим и да учим задълбочено. Излязох от първия си клас по програмиране — Въведение в програмирането в Java — със солидна основа не само в самия език, но и в съхранението на данни, функциите и ООП. Това бяха неща, които ми послужиха добре в бъдеще в нещо повече от Java програмиране.

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

Писане на всички основи срещу използване на код на други хора

Докато обсъждаме изучаването на езици за програмиране от самото начало, в моя опит с програмиране в колежа фокусът беше поставен върху това да можеш да правиш всичко сам. Функция, която да го накара да направи това, да го накара да направи това, да направи всичко, за да се увери, че е сигурно, и да се увери, че е бързо. Мога да създам система за управление на база данни от нулата с помощта на VB.NET. Това полезно ли е? Сигурен. Образователно и задълбочено? Абсолютно. Вредно? Не за мнозина, като се има предвид, че една и съща система е изградена 100 пъти, включително много повече функционалност, отколкото бих могъл да мечтая да създам за разумен период от време. Истината е, че курсовете по програмиране в колежите обикновено не се фокусират върху това как да се използва кодът на други хора или организации, те се фокусират върху определен език или парадигма.

Да пишете почти всяко приложение с чисто ваш собствен код и логика е в най-добрия случай неефективно. Хиляди програмисти преди нас са прокарали пътеки и са разработили код за многократна употреба, който програмисти като нас да използват за изграждане на по-големи и по-добри неща. Те се погрижиха за неща като моделите на данни и големите страшни функции, за да можем лесно да ги интегрираме в собствената си работа. Може да сте в състояние да напишете своя собствена система за потребителски профили, система за инвентаризация или приложение за обработка на абонаменти, което е страхотно (и по-евтино!), но това не означава, че е най-бързият, най-сигурният или най-добрият начин да правите нещата. Да се ​​научите как да интегрирате други приложения, рамки и библиотеки във вашия собствен код е наложително за успешното развитие.

Буквално писане на код срещу писане на код

В часовете ми прекарвахме часове пред лаптопите си, гледайки и копирайки, докато нашите преподаватели прожектираха екраните си на голямата бяла дъска отпред. След това писахме код с молив и хартия върху тестове. Вместо моите тестове с 8 избора на въпрос като във Въведение в Java (обадих се на майка ми веднага след това, за да я уведомя предварително, че вероятно ще се проваля от втория опит за специалност), много от моите тестове се състоеше в буквално писане на моя код, без IDE, която да ми напомня какво имам предвид да напиша или че съм забравил тази затваряща скоба. Познайте какво не съм правил оттогава.

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

Проблеми с думите срещу световни проблеми

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

Бизнес проблемите, които трябва да бъдат разрешени с код от реалния свят, не винаги включват всичко, което трябва да знаете. Всъщност те обикновено не го правят. От бизнес или екип за разработка зависи да дешифрира всичко, от което приложението се нуждае, и има вероятност те да не знаят точно как да напишат всеки къс код направо от прилепа. Може да се наложи да направите няколко обосновани предположения или да решите сами кой е най-добрият начин да направите нещо. Бързото вземане на решения, докато се сблъсквате с нови проблеми, е огромна част от успешното развитие и в един момент вероятно ще трябва да започнете да се движите напред, преди да се почувствате готови. Дайте всичко от себе си, това е най-бързият начин да научите.

Парите

Това е най-болезненото за един студент. Освен ако не работите в екип за разработка, докато сте в училище, вероятно наблюдавате някои от вашите връстници да правят точно същите неща, които правите и вие, само че печелят пари. И те го правят без диплома за колеж, като тази, която вие откъсвате. Повечето разработчици знаят, че не се нуждаете от диплома, за да получите работа като програмист, и може да бъде трудно да ограничите FOMO, когато видите, че работата се изплаща по-рано за другите. Студент, бъдете сигурни, че работата ви не е безполезна — стойността на вашата диплома идва от дълги часове учене и изпитване, а вашите работодатели и клиенти ще оценят вашите знания.

Нямаше да притежавам никакви технически умения, ако не бяха отдадените преподаватели в отдела по BIT във Virginia Tech и съм благодарен всеки ден, че бях част от разрастващата се програма там. Не си тръгвайте от тази публикация с идеята, че програмирането на университетско ниво не е полезно: дълбочината на знанията, която идва от изучаването на историята, структурата и дребните детайли на определени езици с преподавател в продължение на месеци, не може да бъде съперничена. Може да се твърди, че изучаването на принципите зад добре коментирания код и обектно-ориентираното програмиране е също толкова важно, колкото и самите езици. Това са неща, които класните стаи на колежа учат добре. Въпреки това, новозавършилият програмист трябва да очаква крива на обучение, когато дойде време да напише код с целия избор на езици и среди в интернет.