Ивайло Кенов е вдъхновяващ учител, помогнал на толкова много хора да станат програмисти. Насочва се към тази професия случайно, след като разбира, че строителното инженерство не е за него. Решава да опита като преподавател, въпреки че е срамежлив по природа.
Дълги години е начело на екипа програмисти в СофтУни, води лекции по безброй технологии. Преподава, увлича и дава занаят, от него и аз съм научил основите на технологията, с която днес си изкарвам хляба. Повече от успешен със своите начинания – приложението му My Tested ASP.NET е с над 2 милиона сваляния, той притежава и един от най-популярните български профили в GitHub.
Днес Ивайло е изправен пред ново начинание. Екипът му се превърна във фирма, която се е устремила към амбициозната задача да припомни, че създаването на софтуер все повече трябва да бъде инженерен процес, а не просто кодене.
- Наистина ли всеки може да стане програмист, както казва учителят, помогнал на мнозина да изпълнят тази мечта? Какви са основните трудности, които спират хората? (Тук.)
- Кои са големите проблеми, с които се сблъскват днешните програмисти? Защо си струва те вече да са не просто кодери, а да подхождат инженерно и към останалите страни от работата си? (Тук.)
- Дали наистина е толкова трудно да си намериш първа работа в тази област? Кои са най-честите грешки? (Тук.)
- Как Ивайло, на когото лекарите предричат, че няма да може да ходи, днес вдига 150-килограмови тяги благодарение на… инженерния подход? (Тук.)
– Начело си на AMBITIONED – софтуерна компания, която в същото време помага на младите кадри в първите им стъпки. Може ли да разкажеш повече за идеята?
– СофтУни досега имаше 10-ина платформи, развивали сме ги с екип от 15-ина човека. Почти всички идваха като завършили курсисти, а днес са доста опитни. Същевременно системите ни вече са зрели, изискват по-скоро поддръжка. Затова решихме да изнесем целия екип като софтуерна компания. Искаме да я развием, като се позиционираме в .NET технологиите. Ще правим проекти, като другата голяма цел е да изграждаме професионалисти.
Какво ще е различното от всички други компании? Визията ни е да имаме много добре обмислени процеси – както инженерни, така и мениджърски.
Искам да наблегнем на инженерния подход в софтуерната разработка.
Да оптимизираме процесите така, че да доставяме по-качествен код по-бързо. Разработката все повече да се доближава до всички други инженерни дейности – все едно произвеждаш автомобили, къщи. Струва си да вземем от този подход всичко, което можем. Никой не би се качил в кола, която не е тествана, нали? Или не би живял в сграда, която не е строена по стандартите.
Разбира се, не можем да сравняваме физически продукт с виртуален, при едното може да си много по-гъвкав в планирането.
– По идея и сега софтуерната разработка трябва да се случва така, но е факт, че много често остава само на думи.
– Разпитах изключително много софтуерни инженери за това какво не им харесва в работата, на която са в момента.
Най-често срещаните отговори са: липса на качество, неясен жизнен цикъл, няма структурирана система за управление. Мениджмънтът обещава неща, които не могат да се изпълнят, никой не ми следи кода, никой не ме менторира.
Да кажа, че ще оправим всички тези проблеми, е безумно романтично, но това ни е визията, искам да работим в тази посока. Ще се позиционираме на чуждестранните, развити пазари, където биха оценили такъв вид услуга.
Може би звучи романтично, трудно, но има и компании, които успяват да постигнат баланс между развитие, приходи, качество и оптимални процеси. Доста често такъв тип проекти са тези, които са по някакъв начин животозастрашаващи. А на мен ми се иска това да се превърне в стандартна разработка.
Според мен много базови неща, от които тръгват проблемите, могат да бъдат решени с процеси и инженерен подход.
– Много добре разбирам за какво говориш. Подобни неща ми каза в интервю Вели Пехливанов и така за известно време и аз професионално се оказах част от екипа на Resolute.
– Да, чел съм негови интервюта и напълно споделям неговата гледна точка.
Ето нещо елементарно – оценяването на времето за една задача. Това е фундаментален принцип, всеки програмист, всеки инженер го прави постоянно. Но колко хора са обучени да оценяват по един и същи начин? Колко са обучени да описват задачите? На колко хора им е обяснено каква е дефиницията, че нещо е готово? Има много хубава статия на Васил Терзиев за дефиницията на готово, която е много различна за хората в компанията. За един е готово, когато си написал кода, за друг – когато е тествано, за трети – когато е стигнало до потребителите. За инженерите е четвърто.
Искам да наричам „инженери“ всички колеги, това искам да постигнем.
Не искам да сме кодери!
Не просто програмисти, просто да пишем код, а да мислим инженерно. Не само в самия код, а и в процесите около него, в метриките. Знаем ли какво оценяваме, или всичко се случва на око?
На повечето места хората не ги обучават. Често това е наследен проблем – тийм лидерите, които никога не са били научени, няма как да учат тези след тях.
– Хубаво го каза – да сме инженери, не само докато пишем код.
– Да тръгнем оттам. Да обучим хората, да подредим малките, фундаментални задачи, да бъдем наистина инженери. Тогава смятам, че нещата постепенно ще започнат да се подобряват, ще имаме работещ процес.
Да, не съм измислил топлата вода, но това са проблеми, които често остават неразпознати. И много пречат на работата.
Нашият екип през годините е бил попълван от завършили курсисти. Досега всички, които са излизали, са ставали много добри, превръщали са се в лидери. Помага това, че с колегите сме преподаватели и знаем как да подходим към някого, за да го дообучим. Когато той вече няма какво да вземе при нас, отива в индустрията. Искаме да постигнем същото, но в компания от 100 човека.
– Учил си нещо съвсем различно в университета. Как и защо реши да станеш програмист?
– Някак си дойде от само себе си. Избрах да уча за строителен инженер, защото бях ходил на много олимпиади по математика. Бях силен в състезанията, които не изискваха дълбоки познания и тежка теория, а по-скоро бързина. В първи курс се учеше само математика, беше ми интересно, изкарвах шестици. А после изведнъж… двойки и тройки. Стигнах до предметите, които искат много четене и там приключих.
Започнах да се чудя какво да правя с живота си. Пробвах да започна малък онлайн бизнес, купих си някакъв скрипт на PHP – тогава ми се струваше, че е за огромни пари. Пускам сайта, рекламирам,
спамя по форуми и започва някакъв бизнес. Смешна работа, каубойската.
Скриптът скоро се оказа недостатъчен, започнах да ровя във файловете и да променям, без изобщо да знам какво правя. Допуснах SQL injection и… ми откраднаха целия оборот. После пуснах хакерското разследване, намерих човека. Той се уплаши, върна ми парите, даже каза къде са ми пропуските. Дори се включи като програмист в проекта, почасово.
– Много интересна история! И сигурно тогава си решил, че си струва да учиш повече в тази посока?
– Не точно. Видях, че програмирането ми се удава, моите родители също го бяха забелязали. Точно те ми казаха, че има някаква академия – „Телерик“, където се водят курсове и мога да се запиша. Така направих, записах се, курсът щеше да започва след половин година… и забравих. Сетих се в последния момент. 14 септември, изведнъж си спомних, че трябва да пиша мотивационно писмо.
Но в началото не исках да се занимавам с това. Бях седял на компютъра 10 години,
не ми се правеше същото, исках нещо по-свързано с хората, с повече комуникация, по-смислено.
По онова време беше доста различно, по новините не повтаряха, че програмистите са добре платени, нямаше такъв наплив. В гимназията се преподаваше толкова скучно, че всички се отказваха.
Отидох в академията случайно, само за да видя какво представлява. Не знаех какво да правя с живота си, бях решил, че със строително инженерство няма да се занимавам. Но изведнъж… започнаха да се случват успехи. Скоро изпреварвах повечето хора, дори такива с образование в тази област. Започнах да ставам първи на курсовете от 1200 души. И ми ставаше все по-интересно, програмирането се оказа точно това, което ми харесва – решаване на казуси.
Без да се усетя, се занимавах по 16 часа на ден и така 3-4 години. Всичко друго остана на заден план. Идваше ми отвътре, имах огромно желание и ми беше много интересно. Това е нещо, което може да те изстреля напред, така стана и с мен.
Освен това осъзнах, че програмирайки, човек може да помага наистина за напредъка на технологиите. Това много силно ме мотивира.
– Как започна да преподаваш?
– На 6-ия месец в академията, заради няколкото първи места по курсовете, ги питах какви са условията да си трейнър. Мислех си, че ще ми откажат, защото съм интровертен и ми е трудно да говоря пред хора.
Беше ми харесала средата на академията, културата, и исках да продължа да съм част от нея. Да помагам и да давам на хората това, което академията ми даде – смисъл в живота и интересни казуси за решаване.
Въпреки това аз съм такъв човек, че ми е трудно дори да питам непознат колко е часът.
По-затворен съм, трудно ми е да комуникирам с непознати, имам всички предпоставки да не съм добър лектор.
Две години започвах лекциите с огромно сърцебиене! Интересно е, че и до ден днешен ми е неудобно да питам колко е часът, но излизам пред 4000 души да водя лекции и, съдейки по обратната връзка, нещата се получават. Хората се радват на лекциите, гледат, купуват ги, постоянно ме питат и имат желание за още.
Имам над 1000 лекции, средно по 3 часа, за съжаление не всички ги има онлайн. 10 години не съм спирал да водя, нямах почивка, освен по празниците. После продължих нататък – едни от най-интересни ми лекции са от поредицата Code It Up за напреднали. Серията за софтуерни архитектури е особено търсена, защото предоставя над 30 часа видео по темата в подреден и смилаем вид.
– Какви са най-честите причини, заради които хората не успяват да станат програмисти?
– Повечето имат самоограничаващи вярвания: „не съм добър в математиката, в говоренето пред хора“. И аз спокойно можех да си кажа „няма да съм добър лектор, само ще се излагам“. Но щом станах лектор и успях да преборя себе си, макар че видимо не съм бил талантлив за това, значи всеки е способен на всичко.
Постоянно виждам, че хората се съмняват в себе си изключително много.
Според мен в днешно време е елементарно да станеш програмист, без да подценявам онези, които не са успели. Материята е събрана, смилаема, подготвена, трябва само да не те мързи. Да, може да успееш за 6 месеца, може и за 2 години да не стане, всички започваме от различно място. Но хората се съмняват в себе си и се отказват прекалено лесно.
За да успееш, даже не са нужни особени предварителни условия – само базова грамотност, четене, разбиране, здрав разум. През моите обучения успешно са станали програмисти хора от всякакви области – хуманитарни, икономически, музиканти, художници, хора само със средно образование, дори 15-годишни. На много от тях в началото им беше изключително трудно, но не се отказаха и сега са лидери в индустрията.
Всеки може да стане програмист! Свикваш и се учиш.
Например курсът по обектно-ориентирано програмиране е едно от най-лесните неща, нищо алгоритмично, въпрос на синтаксис. Аз бях кръгла нула! Курсът е 4 седмици, на третата нищо не разбирам, гледам лекциите по няколко пъти, изпитът тропа на вратата. Но седна една колежка, показа ми го за 2 часа, аз го схванах и станах първи на изпита. Не бива да се отчайваш лесно, не бива да се отказваш.
Процесът на учене е в това нонстоп да получаваш шамари.
Нямаш информация, все нещо не си доразбрал, причини бол. Удрят те, удрят те и накрая свикваш, знаеш какво да правиш и как да се защитиш.
Във всяко нещо е така. И след като започнах работа, учех още нови неща. След това в мениджмънта – напуска цял екип от 6 ключови човека, какво правиш? Силен шамар! Но ако сега напуснат, знам какво да правя.
– Наистина ли е трудно в нашата област да си намериш първа работа? Защо фирмите като че ли не наемат достатъчно джуниъри?
– Често хората завършват някаква академия и си мислят, че нищо друго не им трябва. Според мен маркетингът ги подвежда, отвсякъде се чува: „Ела да учиш и за 3 месеца ще си намериш работа“. Това не е невъзможно, но се случва рядко и изисква много усилия. Но ако анализираш проблема, изводите идват лесно.
Да кажем, че на всеки 3 месеца академиите завършват 500 души. Всичките – с абсолютно еднакъв профил, едно и също CV. По какво да изберат работодателите?
Най-големият ми съвет към всички начинаещи: да си направят един проект от самото начало до краен продукт, да го дадат на приятели. Примерно, хобито ти е фитнес – правиш приложение, обмисляш дизайна, правиш му инфраструктура, хостинг… Ясно е, че архитектурата ще е сбъркана, кодът ти няма да става за показване, но ще си научил много. Не е лесно, ще има много перипетии, но с възможностите на интернет в никакъв случай не е невъзможно. И аз правех това първите години и после интервютата ми се струваха смешно лесни.
Първата ти задача, като завършиш, е да не спреш да учиш. Процесът по намиране на работа не е две седмици, отнема време. Имаш този период, за да продължиш да се подобряваш. Ако седнеш и вместо да се вайкаш, че никой не те взема на работа, разпишеш този проект, от тези 500 човека вече си елиминирал 400, потенциалният работодател има какво да види.
Много важно е и да си направиш CV-то да е смислено и да изглежда добре, да се отличава от останалите. Процесът на наемане на практика е това да успееш да се продадеш по-добре от всички останали. За това трябва да изпъкнеш по някакъв начин. Не трябва да се подценява и предишен опит, дори да е в съвсем друга област и на начална позиция. Това показва дисциплина, трудова култура и умения за работа в екип.
И още нещо – ако ти дадат задача, трябва да ѝ обърнеш внимание и да я изпълниш така, че да се отличиш.
Хората си мислят, че няма джуниър позиции, защото не виждат толкова обяви. Истината е, че компаниите знаят как да намерят кандидати – наемат хора през академиите, такива, които са се представили най-добре по време на обучението. Имаме партньори, които почти всеки месец наемат по 5 човека. Това означава, че само те на година имат 60 позиции, над 10% от онези 500 човека! Ето още една причина да се стараеш по време на обучението.
– За финал оставих една доста различна тема… Как ти стига времето и за преподаване, и за проекти, а и да ходиш доста често и във фитнеса?
– Отделно от тази компания съветвам още 4-5. От 15-20 стартъпа през годините, чак през последните 1-2 години се научих и започнаха да се случват нещата. Работните ми дни сега пак са по 16 часа, стигнах същия цикъл.
Ако трябва да бъда честен, не ми стига времето и ги въртя чрез качествена приоритизация на седмична база. Планирал съм си да работя от понеделник до събота. Но тренирането за мен също е като работа, защото съм със стар гръбначен проблем, поддържам го със здрава мускулатура, иначе няма да мога дори да седя.
– Правиш салта и вдигаш 150-килограмови тяги, а преди 10 години лекарите са ти казвали, че няма да можеш да ходиш. Как стана това?
– Да, така ми бяха казали. Всичко започна с изключително силна гръбначна болка, месеци наред не можех да спя. Не успях да намеря правилните лекари, които да решат проблема и през годините се научих да си го решавам сам с проба и грешка. Знам, че не е правилно, но нямах друг избор.
Някои видове упражнения много пречат, различни видове храни влияят… като някаква реакция на тялото. Събрах цяла книга със записки и накрая стигнах до един момент, когато вече нямах такъв проблем.
Спаси ме отново аналитичният, инженерният подход…