Loading...

Пътят на успешния програмист с Георги Георгиев

avatar Катерина Костадинова 9 минути
Пътят на успешния програмист с Георги Георгиев

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

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

Ето и въпросите, които му зададохме:

Кратко представяне – ключовите точки от твоя опит, както като лектор, така и като програмист.

„Започнах да се занимавам с програмиране в училище (исках да правя игри, изненада!), като първите ми по-съществени проекти бяха свързани със C++, 3D графика, физика и симулации на автомобили. Участвахме с мой приятел по различни национални и международни състезания и трябваше да представяме това, което сме направили, така че заедно с писането на сложен (за опита ни) софтуер, се научихме да презентираме пред критична публика - това ни донесе няколко големи награди.

Като естествено продължение на това, още в началото на първи курс, се озовах в един и същи екип от лектори със Светлин Наков, Дончо Минков и Николай Костов (а малко по-късно към нас се присъедини и Ивайло Кенов), където около две години здраво се занимавах с водене на лекции и изготвяне на материали за тях. Всичко - от алгоритми и структури данни, различни .NET технологии, чак до HTML & CSS.

След това започнах в един startup, VirtualRacingSchool.com, свързан с електронните спортове, по-конкретно със симулатора iRacing, и последните 5 години работя там. Най-общо казано, анализираме данните от шофирането на състезаващите се и чрез различни евристики за анализ и графични представяния им показваме как могат да бъдат по-добри състезатели. Там до голяма степен съм one-man-army и се занимавам с всичко от Gooogle Cloud Datastore, през back-end разработката ни на Java и изчисленията, които правим, до front-end частта на проекта, която е базирана на Google Web Toolkit, и различните интеграции с библиотеки за графика, както и тези за онлайн плащания (услугите ни се предлагат чрез месечен абонамент). От време на време пиша и C++ за компонента, който взема данните (телеметрията) от iRacing. Не съм спирал да водя и лекции, като почти всяка година водя няколко курса в СофтУни.“

Разкажи ни вълнуваща случка от пътя на кариерното ти развитие

„Подобни случки има ужасно много, но ако трябва да избера една конкретна – то това би било първата среща в живота ми със Светлин Наков. Аз и мой приятел участвахме в Националната олимпиада по информационни технологии, годината беше 2010-та, а Наков беше част от журито. Тогава с моите съотборници направихме много интересен проект за програма за 3D моделиране, която включваше 3D графика, чертане, геометрия, доста изчисления. Публиката много хареса проекта, журито също се впечатли, но дойде и неловкият момент. Светлин Наков ни помоли да предадем файловете си с кода, за да ги прегледат, тъй като това всъщност съставяше не малка част от финалната оценка. Да, обаче по това време ние не бяхме наясно съвсем как точно трябва да организираме кода и че всъщност трябва да е разделен в няколко файла, за да е по-удобно и нагледно. Вместо това, ние подадохме флашка с един единствен файл, в който се съдържаше код от 16 хиляди реда. Наков го отвори и физиономията му беше безценна, никога няма да я забравя (Ха-ха-ха!)… Именно това ни попречи да грабнем първото място на олимпиадата, но пък за сметка на това се научихме как да организираме код само в един файл, по начин, по който лесно да се ориентираме в него и да си намираме всичко необходимо.“

Какви са перспективите на ИТ сферата в твоите очи?

„Прави ми впечатление, че в момента е модерно да се говори за автоматизация чрез machine learning във всички сфери, включително и в ИТ. Има доста проекти, създадени с амбицията да бъде автоматизирана част от програмирането. И действително, голяма част от програмирането е да вземеш данни от едно място и да ги обработиш, след което да ги пренесеш на друго, при което има много съвпадащи последователности в оформянето на кода (това, което на английски бихме нарекли patterns), a machine learning е особено добър подход за проследяване и създаване на такива неща. Мисля, че в близките 10-20 години, по-голямата част от кода ще бъде генерирана така – описваш какво искаш и какви резултати очакваш, а на базата на това , чрез machine learning се намират общите пътища за реализация на подобни решения в даден проект, и бива създаден код, който постига съответните резултати. Това означава, че писането на приложения ще става по-бързо. А това пък, от своя страна, означава, че усилията по това да се превърнеш в програмист ще бъдат намалени значително и бариерите по навлизането в тази сфера ще паднат. Търсенето на програмисти едва ли някога ще намалее, напротив – колкото по-бързо расте кодовата база на един проект, толкова по-сложна става и толкова повече труд е нужен за по-нататъшно развитие. Необходимостта от създаване на нови приложения и програми, от разрешаването на проблеми по стари такива, от повишаване качеството на поддръжка се увеличават драстично с всеки следващ ден, месец, година. Работата ще става все по-динамична, по-достъпна. Автоматизацията в програмирането ще е просто поредният инструмент в историята на развитието му – започнали сме от големи компютри, колкото цели стаи, и програмирани с перфокарти, преминали сме към писане на код на асемблер, след това на езици като C и C++ (които тогава са наричали „езици от високо ниво“), за да стигнем до съвременните среди за разработка и повсеместното ползване на скриптови езици. И въпреки, че всеки един от тези инструменти е улеснявал решаването на проблемите на времето си с по-малко програмистки труд, програмистите далеч не сме на изчезване. Всеки инструмент, който намаля скучната част от програмирането, отваря нови възможности.“

Как смяташ, че ИТ сферата влияе на развитието на света?

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

Какви отличителни качества трябва да притежава програмистът?

„Редовният въпрос е дали трябва да си математик, за да бъдеш програмист. Отговорът ми винаги е – много по-важно е да знаеш английски, отколкото да можеш да смяташ бързо и правилно. Когато хората казват „математика“, те си представят онази, която учим в училище. А математиката в програмирането е насочена изцяло към аналитичното мислене. Освен, разбира се, ако не искаш да правиш игри (или да работиш в някоя силно-специализирана, научно-ориентирана сфера) – там ще ти трябват определени изчисления, да използваш геометрия, да смяташ дали правата се пресича с даден правоъгълник и т.н. Но във всяка друга област на софтуерното инженерство изчисленията са работа на компютъра, твоята роля, като програмист, е когато видиш една задача – да знаеш от какво се състои и как трябва да постъпиш, за да произведеш нужния резултат. А ако има нещо по-тясно свързано с математиката – при наличието на аналитично мислене, лесно ще го усвоиш. Така стана и с мен – при създаването на приложението за 3D моделиране (онова, с 16-те хиляди реда код в един файл), не знаех дори как да намеря разстоянието между две точки в равнината, при дадени техни координати, което, ако го кажа на зала с математици, всички ще ми се изсмеят. В процеса на работа обаче за 1 година вече знаех какво е кватернион и как (и защо) да го използвам, за да правя ротации на обекти в тримерното пространство. Трябва да можеш да учиш, колко математика знаеш в момента не е важно. Което ме връща на английския – това е основното качество, необходимо за всеки, който желае да стане програмист, защото повечето качествено познание онлайн е на английски. Всичко останало е бонус, който просто ще ви помогне да се изкачите малко по-бързо по стълбичката.“

С какво те изненадват студентите ти?

„На няколко пъти след курсовете по C++, където материята е доста по-тежка и сложна, студентите ми разказват как отиват в големи корпорации и успяват да впечатлят работодателите с дълбоки познания, до степен, в която интервюиращите остават ахнали. В България се търсят често C++ разработчици на доста напреднало ниво, не е като повечето други технологии . Тази обратна връзка за мен е огромно признание и ме прави откровено щастлив.“

Кое е отличителното в цялостната програма по софтуерно инженерство на СофтУни?

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

Ако историята на Георги ви е вдъхновила и си мечтаете и вие да направите първата стъпка в посока постигане на мечтаното професионално развитие в IT сферата – присъединете се към някой от предстоящите модули по софтуерно инженерство! Обучението е с изключителна практическа насоченост и имате възможността да получите кариерно съдействие за над 70 от най-добрите технологични компании в света!
Предстоящи модули:

МОДУЛ: Fundamentals Module – септември 2019

МОДУЛ: C# Advanced - септември 2019

МОДУЛ: Java Advanced - септември 2019

МОДУЛ: JS Advanced - септември 2019

МОДУЛ: C# DB - септември 2019

МОДУЛ: Java Web - септември 2019

МОДУЛ: JS Web - септември 2019

МОДУЛ: Front-End - септември 2019