Loading...

Георги Георгиев за развитието в ИТ сферата, Java и пътят към успеха в програмирането

avatar Катерина Костадинова 9 минути
Георги Георгиев за развитието в ИТ сферата, Java и пътят към успеха в програмирането

Днес ви представяме Георги Георгиев – той е част от лекторския състав на цялостната програма по софтуерно инженерство на СофтУни. По професия е софтуерен инженер във VirtualRacingSchool.com, занимава се усилено с back-end и front-end, както и всичко между и около тях, предимно Java с Google App Engine, но част от работата му включва и работа със C++.

Защо да изберем да се развиваме в света на информационните технологии, какви са перспективите, които ще получим?

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

Но когато аз почвах да се занимавам с това, преди десетина години, тези неща нито ги знаех, нито щяха да ме впечатлят толкова. Това, с което конкретно програмирането ме впечатли, е че имах свободата да създавам неща, които дотогава само бях виждал (и играл) по начин, по който аз исках. В програмирането е много по-ясно изразена възможността да решиш една „задача“ по различни начини, отколкото на други места („коя ли формула се ползваше тук“). С времето се научаваш, че някои начини са по-добри от други, и това ти помага да научиш една много голяма концепция – какво е „правилно“ зависи от това какво се търси – например дали искаме една програма да работи по-бързо, или ползвайки по-малко памет. След това научаваш, че тези trade-offs преливат и в дългосрочната разработка – дали нещо е важно да работи ефикасно, или е важно лесно да се поддържа и променя, дали е важно да е готово бързо или е важно да е изпипано, дали е важно да е строго дефинирано или да е гъвкаво към нови изисквания. Всичко това е приложимо и извън ИТ. Освен това се научаваш да разделяш отговорностите на отделни части от кода, учиш се на понятието абстракция и как да обобщаваш близки задачи, така че да можеш да преизползваш код, който да ги решава. Учиш се да мислиш за задачите като поредица от парчета информация – какво получаваш, какво се очаква да произведеш, и какви са изискванията към него. Научаваш се, че програмирането не е писане на код, а е решаване на логически проблеми с постоянното ограничение, че решението ти ще трябва да позволява надграждане и промяна.

И всички тези умения са уменията на бъдещето. Независимо на какъв език пишем някой ден (и дали изобщо „пишем“ в класическия смисъл) и какви машини ще изпълняват написаното от нас, всичко се свежда до обработка на информация, вземане на решения и управляване на сложността на разработеното.

Разкажи ни малко повече за Java - лесен ли е за изучаване, какви приложения намира в практиката, колко е разработен и поддържан?

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

Разбира се, никой няма да нарече Java модерен език, и няма да чуете да се говори за него със същото прехласване за някои функционалности, които улесняват всякакви дребни детайли от разработката на софтуер. Но езикът е достатъчно зрял за да предоставя всички неща нужни за съвременната разработка на софтуер, без да има сериозни подводни камъни. И може да не е „модерен“, но е осъвременен – има огромна общност около него, много информация и уроци, достъпни свободно в мрежата, и има група, която работи по нови версии на езика, в които се вкарват и най-новите концепции в програмирането.

Количеството код, което се пише, за да се постигне нещо, понякога е по-голямо, в сравнение с други езици (не си говорим за в пъти повече), но това всъщност дава някои много сериозни предимства от гледна точка на обучение.

Първо, по-изричното (думата, която се ползва в индустрията е verbose) описание на кода допринася за повече яснота какво всъщност този код прави, което намаля грешките от недоглеждане.

Второ, и може би по-важно, учещите се сблъскват с това сами да реализират някои много класически концепции в програмирането. В последно време попадам на доста хора, които нямат усещане за някои фундаментални неща в обработката на данни, защото са свикнали просто да ползват 2-3 вградени неща в езика, който ползват. А това е проблем, защото – както споменах по-горе – програмирането не е основно писане на код, а е разбиране и решаване на проблеми, чрез логическа обработка на информация. Разбира се, Java също има такива вградени неща, така че там пак съществува този риск да се научиш да караш „автоматик“ без да разбираш какво се случва. Но тези вградени неща в Java са по-малко на брой и обикновено изискват повече описание, и са по-приложими в по-големи проекти, отколкото в задачите, с които начинаещите се сблъскват.

С две думи - ако можеш да пишеш качествен код на Java, и си учил така, че да разбираш нещата, които правиш (а не да повтаряш примери), можеш много бързо да превключиш на друг език. Това важи и за други езици, разбира се, но превключването от Java на друг по-нов език е като минаването от кола с ръчни на кола с автоматични скорости – в обратната посока е малко по-трудно.

Каква кариерна реализация можем да намерим с Java?

Както споменах, Java се използва почти навсякъде. Но типично големите компании с дълга история и голяма кодова база имат най-много позиции за Java разработчици. Оттам нататък и много мобилни разработчици за Android ползват Java, заедно с екосистемата ѝ за техните проекти. Възможностите са страшно много, Java е един от „сигурните“ избори, ако искате да се развивате в ИТ сферата.

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

Защо да изберем да се включим в цялостната програма на СофтУни?

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

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

Програмата на СофтУни покрива всички тези аспекти – от самите основи на програмирането, през концепции за структуриране на код като ООП, през структури данни и алгоритми, след това бази данни и оттам нататък към конкретни инструменти за разработване на приложения. Материалът е добре организиран и се преглежда и осъвременява за всяко издание на програмата – всички материали се преглеждат и обновяват, преди да бъде водена съответната лекция, което е голямо предимство пред други организации. Понякога се преструктурира цялата програма, на база наблюденията върху това кое наистина помага на студентите да учат ефективно.

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

Какъв е ключовият съвет, който би отправил към бъдещите курсисти на СофтУни?

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

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

Има причина програмата на СофтУни да е структурирана така и да отнема толкова време – всички тези неща са ви нужни, за да сте наистина добри програмисти. Така че си отделете време, и стига да ви е интересно и да учите сериозно, нещата ще се получат. Успех!
---

Ако и ти нямаш търпение да се впуснеш в необятния свят на програмирането - включи се в някой от предстоящите модули още днес: