Започваме с бърз тест. Чували ли ли сте за „дейли“, „стендъп“, „грууминг“, „спринт планиране“? Ако сте отговорили с „да“ на повече от половината въпроси, без да се налага да вземаме хляба на пророците, ще ви кажем, че определено имате опит в света на софтуерните технологии. Ако не сте, а ви е станало любопитно, също има какво любопитно да научите от следващите редове.
Пред последните години Agile (от английски – „пъргав, гъвкав, подвижен“) е задължителна думичка в огромна, ама наистина огромна част от екипите, работещи по създаването на някакъв тип софтуер. За добро или лошо, защото често тази парадигма, този начин на мислене е способен да прави чудеса, но в немалко случаи става само удобно оправдание, илюзорна фасада, която не помага, а само заблуждава, че нещата вървят напред.
Което е тъжно, защото историята на движението Agile и огромният успех, който то постигна, да се превърне в толкова тотално доминиращ стандарт в областта на софтуера, показват, че очевидно става дума за много сериозна, работеща идея. Която си остава до голяма степен затворена в света на софтуера, а определено си струва да навлиза в повече браншове. Така, както навлизат и самите технологии.
А, Jail?
Ако тепърва започвате с програмирането и срещнете сред останалите изисквания за първа работа, освен програмни парадигми, основни правила, технологии, и тази думичка – Agile, не се притеснявайте. Няма тук никаква ядрена физика, всичко, което ще очакват да чуят от вас интервюиращите, ще се опитаме да съберем в следващите редове.
И така, създаването на софтуерни продукти никак не е професия като другите. Да, в началото фирмите са се опитвали да организират екипите си по начина, по който се прави в толкова много останали браншове. Докато не става ясно, че така просто няма как да се получи.
Каква ли пък е толкова голямата разлика? В обичайните производства нещо се планира дълго, изработва се, осмисля се. Накрая има резултат, който е готов да се покаже пред потенциалните купувачи и започва серийно производство, което може да върви по същия начин с десетилетия.
При софтуера това няма как да стане. Той започва с някакви очаквания, планове, идеи, те бързо се променят. После идват новите изисквания. Изскачат напълно неочаквани бъгове. Междувременно екипите стават големи, започват да работят по един и същи код. Пречат си, всяка нова функционалност е голям риск предишните да се „счупят“… Междувременно първоначалните очаквания вече всички са ги забравили, забравили са какво правят и настъпва пълен хаос.
Мойсей в планината
Това води до криза през 90-те години на миналия век, която изглежда направо нерешима. Очевидно трябва да се смени цялата парадигма, да се потърси коренно различна основа, начин, по който да се организира работата на екипите, създаващи софтуерни продукти.
Същевременно е станало ясно, че информационните технологии стават все по-популярни, може би се задава нещо голямо, все по-разпространена става и някаква компютърна мрежа, уж глобална, наречена „интернет“… Вече наистина няма как работата да тече както винаги досега, на принципа на водопада, както е популярен и до днес – организацията тип Waterfall.
Така идва новият век и една студена зимна вечер през 2001 г. малка хижа за скиори в щата Юта събира 13 „умни глави“. Почти като Тайната вечеря, само че за програмисти, които днес са своеобразни божества за наследниците си в професията. Там е Робърт Мартин, формулирал SOLID принципите, познат днес като „чичо Боб“ на всеки програмист, който заслужава да се нарича такъв. Там е Мартин Фаулър, там целият елит в професията на онова време.
Там създават един много, много кратък документ, който променя всичко.
Манифестация
Продуктът, резултат от срещата им, се нарича „Манифестът Agile“ и наистина променя начина на работа, по който ще се трудят поколенията следващи програмисти.
Можете да го прочетете тук на български, това е и оригиналният сайт на документа. Изглежда много ретро и това му е целта. Ще ви отнеме около минута. Направо… не е сериозно да вярваме, че някакви си 12 постулата наистина могат да променят организацията на работа в цял огромен сектор, който днес може би е най-големият по света според стойност на продукта, който произвежда!
Кой пък ще каже, че в наше време не се случват интересни неща и епохални събития. Ако ще и такива, които засягат само една област на икономиката. Как я засягат обаче…
И така, важното са принципите, които са заложени в онази хижа. Те после се доразвиват, бавно биват приети в практиката, но днес са в основата на работата на огромна, ама наистина огромна част от компаниите, занимаващи се по един или друг начин със софтуер.
Идея в рамка
Важно е да отбележим, че Agile не е конкретна методика, която казва как да се случват нещата. Той представлява просто сбор от принципи и постулати, които би трябвало да са водещи според всички, които приемат идеята.
Оттам нататък през годините се появяват и конкретните, доста по-строго фиксирани форми за организация на работата, които задават доста по-точно правилата, по които се постига гъвкавата работна среда. В наши дни безспорно водещата и най-често прилагана конкретна методика се нарича Scrum и за нея ще ви разкажем по-подробно съвсем скоро, защото също е задължителна част от въпросите в интервютата на начинаещите програмисти.
Съществуват още Kanban, комбинацията между двете, наричата Scrumban… и още колкото си искате конкретни рамки, които обаче се използват значително, значително по-рядко от първите три. Extreme programing дойде като още едно решение, но, като че ли, модата му премина бързо.
Истината е, че почти всички компании твърдят, че работят по методологията Scrum, почти никоя не спазва съвсем точно правилата ѝ, винаги всеки намира някаква своя особена имплементация, но, така или иначе, нещата се получават. Благодарение на гъвкавостта и начина на мислене, формулирани в прословутия манифест.
Всичко тече, всичко се променя
„Реагирането на промяната повече от следването на плана“. Като че ли това е правилото, което най-точно характеризира идеята на Agile. Екипите, които работят по създаването на софтуерни продукти, трябва да са доста по-свободни, гъвкави, да реагират бързо на промените и нуждите. Няма как да съществуват в тази професия строги планове и свръхпрецизни дългосрочни очаквания, защото тя просто е прекалено динамична, светкавично се променят и нуждите на бизнеса, който стои зад софтуерния продукт, и интересите на потребители му, и проблемите, които те срещат.
Казано малко по-философски, както и във всички други неща в човешкия живот, единственият константен фактор си остава промяната.
Иначе принципите на Agile са 12 (създадени от 13-те души в хижата, явно доста ги е бивало в маркетинга и търсенето на библейски асоциации). Можете да ги прочетете, но, ако не се занимавате (все още) със създаването на софтуер по някакъв начин, доста трудно бихте разбрали какво се крие зад тях. И обратното. Програмистите не са известни като хора, които ценят метафорите, но като цяло гилдията без резерви приема логиката, скрита зад основната идея.
Революция… и после
И ето това е Agile. Нищо повече, промяната вместо плана, хората и взаимоотношенията вместо процесите и инструментите. Гъвкаво и отворено отношение, а не строг график. Спокойна работа, а не пресиране от шефовете. От онзи момент в началото на новото хилядолетие опитът показва, че са успели само екипите, които са успели да претворят в действие тази по-скоро абстрактна рамка.
А наистина става дума за начин на мислене, които важи дори ако проектът, по който работите, създавате сами. Софтуерният свят създаде и наложи свои правила, които в някои области са доста смислени и улесняват ежедневието.
Интернет отваря възможности за всякакви чудеса. Ако още се колебаете, може би е дошъл моментът да опитате и вие от тези чудеса. Това, с което ние можем да ви помогнем, е безплатният ни хостинг. Опитайте го тук… и бъдете гъвкави, готови за промяна, за нови идеи… тогава ще дойде и успехът.