Иван Георгиев: Програмирането е свободата да създаваш
|Кои са най-успешните проекти, по които си работил?
Бих посочил два коренно различни примера – единият е проект на online и CD каталог (offline), които трябваше да бъдат с еднакъв интерфейс и да могат да използват една и съща база данни. Избрахме графичния интерфейс да бъде разработен на Flash, което ни позволи голяма степен на интерактивност и в online варианта, а за CD варианта, който трябваше да позволява offline работа с каталога, избрахме слабо позната платформа за интегриране на native библиотеки и използването им от Flash. Така получихме desktop приложение с графичен интерфейс, разработен на Flash, използващо native функционалност (разработена на C++) за търсене, заявки и др. Моята роля в този проект беше на проектант и ръководил на разработката.
Вторият пример е за две малки библиотеки, които разработих в контекста на дипломната си работа за магистърската степен по Информатика в Софийския университет – едната за генетични алгоритми (Genetic Algorithms), другата за изкуствени невронни мрежи (Artificial Neural Networks) – и двете на C++, използващи пълните възможности на езика – включително templates, обекти и др. Категоризирам ги като „успешни“, въз основа на времето за проектиране и разработка, както и в лекотата на тяхното използване.
Кои са най-„екзотичните“ (слабо познати в България) технологии, с които си
работил?
Като начало имам резерви към експлозията от нови „технологии“ в областта, защото повечето не са нови, а по-скоро нов прочит на стари такива. Все пак, като малко по-екзотичен пример бих дал отново описания по-горе проект за използване на Flash технология за разработка на самостоятелно desktop приложение, като по-“екзотичното“ в случая е начинът на употреба на иначе добре известна технология. В подобна насока съм правил прототипи на приложения за използване на SVG-базиран интерфейс на desktop приложения и смятам, че това е област с голямо бъдеще.
Експериментирал съм с по-екзотични езици за програмиране, като Lisp и Prolog, но това предимно в контекста на висшето ми образование.
Откъде идва страстта ти към програмирането, какво ти дава то?
Буквалният повод е малко прозаичен, тъй като съм навлязъл в областта на програмирането на около десет годишна възраст – от книгата „Аз, роботът“, която ме ентусиазира да се опитвам да създам „мислещи“ машини.
Към днешна дата, по-точният отговор е, че програмирането ми дава усещането за огромна свобода за създаване, за креативност – област, в която (привидно) няма ограничения за това какво може да бъде направено.
От какво не заспива нощем един разработчик?
Или от нова идея, или от трудно-откриваем проблем (bug).
Какво правиш, за да си в крак с новостите? Кои са за теб надеждните източници на информация?
Основно, като чета новинарски сайтове – включително такива, като dir.bg, BBC или пък KurzweilAI.net, където често се вижда как новите технологии се срещат със света на хората. Когато нещо ми привлече вниманието, търся конкретна и подробна информация за въпросната нова технология, за да разбера какво представлява и какво наистина ново има в нея.
На въпроса „Кои са надеждните източници“ бих казал: „многото“, т.е. единственият начин за търсене на по-достоверна и адекватна информация е тя да бъде търсена и „засичана“ от различни места.
Какви са професионалните ти планове?
В близък и по-конкретен план смятам да инвестирам все повече време в опознаване и разработки на мобилни приложения, предимно малки и фокусирани върху конкретни проблеми, които да използват огромния и все още бегло използван потенциал на новите интерфейси за общуване с компютъра (touch екрани, акселерометри, GPS и др.).
В дългосрочен план ще продължавам да търся начини, и да експериментирам с идеи за усъвършенстване на общуването ни с компютрите по всякакви начини, включително такива, граничещи и навлизащи в областта на изкуствения интелект.
Кои са най-важните качества, които трябва да притежава един разработчик?
Адаптивност и принципност – въпреки привидното наличие на противоречие. Първото се налага от факта, че знанията в тази област твърде бързо остаряват и единственият начин човек да е адекватен на обстановката е да се адаптира заедно с нея.
За второто имам предвид „упование на принципите, а не на изключенията“, тъй като за цялата (кратка) история на софтуерната индустрия, компютрите имат все същите принципи на работа, до колкото и различни „технологии“ да са довели те.
В по-тесен план, когато говорим за разработка на едно конкретно приложение, принципността – в смисъла на „самодисциплина“ – има също така огромно значение – както в процеса на самата разработка, така и в процеса на поддръжка и развитие след това.