Софтуерната месомелачка

Баси заглавието за пост, в който искам да опиша отношението, на което се натъквам в софтуерната индустрия в България в момента. Но това е първото нещо, което ми идва на ум.

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

Преди да започнеш работа

Изискванията

Много опит на една работа

Най-важното от нещата е да имаш много опит и то не на множество работни места, а на максимум 2 (поглед с недоверие за 3) за период от 10 години. Неща като 10 години в една фирма по един проект или 20 години писане на уеб приложения отново в една фирма, всяват респект и уважение във всеки един HR. Ако случайно сте от хората, които сте сменили повече от 1 работа в рамките на 2 години, сте от съмнителните типове, които обичат да експериментират по различните фирми. „От къдя на къдя“ ще си позволите да сменяте толкова често фирмите!? Дори и 90% от тях да са прекрасната фирма с уникалната обстановка, чиято единствена скрита цел е да впрегне още един работник да бута талигата с огромния камък, изграждайки проект стар колкото Хеопсовата пирамида. И тук следва въпросът „Ама вие защо искате да си смените работата?“. Разбира се този въпрос винаги следва преди въпроса „Вие какво търсите?“, за да може HR-ът първо да разбере любопитните детайли покрай желанието ви за напускане, а не нещата, които биха ви накарали да изберете друго работно място.

Лични проекти – Прекрасно, но НЕ

„Имате ли лични проекти? Колко? Какви? Прекрасно, опитът ви ще ни бъде много полезен. Но нали знаете, че ще дойде момент, в който ще трябва да избирате между нас и личните ви проекти? Е?“ – ето в такова интервю участвах преди няколко дни в голяма софтуерна фирма, която се гордее, че работи върху собствен продукт над 10 години и има над 1 милион активни потребители дневно. Този разговор дойде след като вметнах, че имам лични проекти и ги правя в личното ми свободно време. И CTO-то на фирмата реши, че щом искам да работя за фирмата, то тя може да разполага с личното ми време и да ми заповядва какво да правя в него. А фактът, че разнообразните ми знания в различни сфери се дължат главно на личните ми проекти, е приветстван с отворени обятия и изпратен като ненужно допълнение към CV-то. Така и не се научих да си мълча, когато трябва да говоря какво правя в личното ми време.

Личното работно време

Незнайно защо от всеки нов служител се очаква, че ако има някакви непълни знания по проблем, върху който работи, той трябва да ги допълни във времето извън работа. Въпроси като „Колко често работите по проекта от работа вкъщи?“ или „Склонни ли сте при нужда да работите и извън работното ви време?“ без да се споменава за „overtime“ са въпроси, които присъстват по интервютата. Сякаш има някакво изискване, което казва, че отдадеността към даден проект трябва да е такава, която не признава правото на почивка и спокойствие след работа. Сещам се за един велик лозунг: „При капитализма човек експлоатира човека, при комунизма е обратното!“.

Обещанията

Фиксирано гъвкаво работно време

Несбъднатата мечта на 21 век. Едва ли има човек, който не си е мечтал да работи от където поиска – докато се наслаждава на спокойствието на планината или красотата на морето. А какво остава за професия, която може да работиш от компютър? Е, на теория звучи така, но на практика нещата са доста по-различни. Всяка една фирма обещава гъвкаво работно време с опцията да работиш от вкъщи ако си болен или имаш някакъв важен ангажимент. Това е така, докато не започнеш работа и още на първия ден получиш имейла с детайлите на работа във фирмата. Този уникален имейл много често съдържа великото изречение „Клиентите ни държат на проектите си, затова ако сте болни избягвайте да си взимате отпуск или болничен, а просто работете от вкъщи“. Какво по дяволите би казал клиентът ако работиш от вкъщи и пукнеш, защото фирмата ти държи повече на работата, отколкото на здравето ти? „Тези програмисти много мрат. Докарайте следващия!“ !? Или пък какво биха казали родителите ти? „Ми той пукна, щото много държеше на проекта“. Все още ми е трудно да повярвам как един трудов договор дава правото на банда хора да дават заповеди, сякаш разполагат с вас и личното ви време.

Test Driven Development – „Разбира се!“, че не го правим

Много болна тема. В 21 век ставам свидетел на какво ли не. И то особено на апове, чиято цел е да работят с пари и нямат нито един тест в тях. И всичко това е с цел. „Първо да направим продукта и след това ще мислим за тестовете“. И така 2 години по-късно продуктът е над 200 екрана и няма нито 1 проклет тест. Но когато отворите темата за тестове по време на интервютата, CTO-тата винаги са съгласни, че тестовете са прекрасно нещо, но „Ние много бързаме с пускането на приложението и затова не можем да пишем тестове“. И в този момент ви се налага да решите дали да направите компромис със себе си и да преглътнете това, че ще се появяват по 100 пъти едни и същи бъгове, че няма да може да разчитате на нито 1 тест да гарантира, че кодът ви не чупи нещо друго, че няма да се ядосвате на QA-ите, чието образование в сферата на маркетинга понякога ви кара да си напуснете работата и да отидете да копате картофи или просто да отидете на поредното интервю, където поредното CTO ще ви обясни на теория колко яко звучи да имаш тестове, а на практика е много трудно да се реализират. Да, идеята с картофите все пак не звучи толкова лошо.

Програмиране през палеолита

25 000 години преди новата ера. Група неандерталци са застанали пред огъня в 9 сутринта и мълчат. Чакат някой да даде първи знак. Ето че един от тях повдига тъй важния въпрос: „Как ще хванем плячка днес?“. Въпросът му е посрещнат с мълчаливо неодобрение. Всеки от присъстващите има правото на 5 минути, през които да даде идеи. Предложенията варират от хвърляне на камъни до „Тя плячката сама ще дойде при нас, ако я почакаме“. Срещата приключва с неясно решение какво ще се прави, което устройва абсолютно всички.

Историята от горните редове е съвременната история на процеса на писане на софтуер в някои фирми. Някои от тях са чували за agile, scrum, kanban и OKRs, но защо са им. Имат платени профили за сайтове като JIRA, които помагат с управлението на процеса по създаване на софтуер, но защо? По-лесно е да се ползва Excel. Все пак кой не разбира от таблици? Е, разбира се, на интервюто за работа говориха за неща като спринтове, седмични и месечни ревюта, спецификации, документация. Но това, че говорят за тези неща, не значи, че ги ползват. Кой има време за документация, когато проектът е толкова динамичен. Все пак се пише вече 2 години, те всички са наясно как работи. Единственото важно е да се дадат точки и да се знае коя нова функционалност колко време ще отнеме.

2 седмици по-късно се включва нов програмист в екипа. 1 месец по-късно той все още не знае какво по-дяволите се случва като натисне бутонът Get Started …

Направи го да работи там

„Чували ли сте за MVP, MVVM, MVC? Какви технологии използвате? А може ли да ни покажете проект, който сте писали? А да спретнете един малък такъв? „. 4 дни по-късно сте изписали проект, който е отнел по около 5 часа на ден от времето ви, но нищо. Все пак е за новата ви „бъдеща“ фирма, така че може би усилието си заслужава. Очаровате техническия екип с решението ви и бум, вече сте на работа.

Ето че идва вече денят. Отивате нетърпеливо на работа, запознавате се с новите ви колеги, приготвяте си служебната машина и всички неща покрай нея – монитори (ъ, исках да кажа монитор, кой ще ви даде повече от 1 монитор на първия ден…), мишки, клавиатури и прочие. Инсталирате операционната система, правите си едно кафе, получавате си служебната поща и с нея имейла, който предизвиква цялото ви вълнение и ви дава достъп до проекта. Сваляте проекта, отваряте го и … !? Какво по дяволите е това праисторическо животно, което току що открихте? King Kong, това ти ли си?

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

Програмиране x2

Не, това не е програмирането, при което като ви донесат втори монитор след 6-тия месец работа (понеже може да напуснете, сещате ли се), почвате да работите двойно. Тук става на въпрос за методологията наречена Pair Programming.

Какво е определението за Pair Programming? Това е начин на работа, при който двама човека работят заедно на един компютър. Единият пише код, докато другият наблюдава. По този начин човекът, който пише кода е свободен да се фокусира върху логиката по завършването на кода. А наблюдаващият следи за допускането на грешки и за коректността на използваната логика.

Разбира се, коя фирма ще е луда да инвестира времето на двама програмиста да правят едно нещо!? Все пак има функционалности да се пишат, а това, че ще бъде спестено двойно, дори тройно повече време в дебъгване на код е нещо, което няма голямо значение. Самата мисъл 2-ма човека да работят едно нещо е контраинтуитивна в очите на всеки един собственик на фирма. Нищо, че в повечето фирми картинката изглежда ето така за Хосе:

human-resources-manager-marketing-manager-jose-logistic-manager-communication-manager-241608

Мечтата за увеличение

1 година бъхтене, стотици бъгове зад гърба ви, десетки функционалности от край до край, безброй малки детайли, които плуват из съзнанието ви и които ви създават усещането, че ще бъдат с вас доста дълго време и идва време за годишното ревю. Разбира се, за вас то е от изключителна важност, защото очаквате тъй мечтаното увеличение и не толкова него, колкото признателността за вашия труд и едно простичко „Благодаря!“. Със закъснение от 3 седмици (няма време, много работа), интервюто все пак се провежда. И то за рамките на не повече от 10 минути, в които разбирате за увеличението ви от 3 процента и благодарности от тези, които казвате на кучето си, когато е изпълнило дадена команда без грешка. Да, оставаше да кажете само „Бау“ при приключването на ревюто.

Някои фирми в ИТ сектора имат строги правила за увеличението и за времето, през което труда ви подлежи ревю. Но във всяка една ИТ фирма всичко опира до пазарлък. Ако се продадете евтино и очаквате увеличението ви година по-късно да компенсира това, че сте взимали малко пари, то тогава е по-вероятно да изпитате едно от разочарованията на живота и да си подадете молбата час по-скоро. Увеличението в някои фирми е между 3-5% и минава под следната форма: „Добра работа, доволни сме от теб, увеличаваме ти заплатата с 3%, добро момче, сега си ходи“. Няма критики или нещо, което да те накара да се почувстваш добре. Сух и изпит разговор, чието съдържание е чисто информативно и неангажиращо. Все пак си взимате заплатата, това ви стига.

Работим както знаем, да става каквото ще

Обещания за документация, стендъпи, методологии и писане на код с тестове. Ясно е, че в някои фирми тези неща са диамантите, които всеки един програмист търси, за да започне работа. И малко по-късно се оказват фалшиви. А какво остава за хората?

Обещават се прекрасни обстановки с нахъсаниза работа хора, чието време минава в отдаденост на проекта и реализирани идеи. А на практика срещате хора, които толкова са се отчаяли с целия проект и са осъзнали, че нищо няма да се промени, че просто карат всичко по старо му вглъбени в ежедневието, след което си тръгват точно в 5 часа и с това приключва драмата наречена работа. Понякога чак аз се съмнявам в представата ми за нахъсан човек. Вярвам, че всеки един, който е почвал проекта е бил нахъсан в самото му начало. После мудността, липсата на документацията, разправията с Project Manager-и, които не знаят какво искат, събиране на код от 9 дерета, само и само да тръгне изискването, което CEO-то иска изпълнено и още куп други неща могат да убият ентусиазма на всеки. Накрая идването на работа и писането на компютъра се превръщат в ето това:

maxresdefault

Роман „Трудов договор“ в 4 тома

Значи обещания, обещания, обещания и накрая идва време да подпишете договора. Изпращат ви го по Speedy 2 дни по-късно, получавате пратка, която тежи над 1 кг и се чудите какво по дяволите има в този плик, сигурно някое месечно списание на фирмата, с което целят да ви зарибят повече. Отваряте плика и от него изваждате един роман, пред който дори Записките по българските въстания бледнеят. Вътре личности биват унищожени и заробвани, трудове биват изгорени и иззети, свободата ви бива заключена в кафез, а правото да ви отключат имат само HR-ите от фирмата ви. Но ако посмеете да отлетите и по случайност някой колега напусне с вас в договора има клауза – съд и пак съд. Ако решите да работите по проект в личното ви време – проектът е на фирмата. Ако посмеете да закъснеете 10 минути – подлежите на глоби. Фирмата има ангажимент да ви осигури добро работно място, а вие – да й робувате, докато не ви писне.

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

Край

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

Вашият коментар

Попълнете полетата по-долу или кликнете върху икона, за да влезете:

WordPress.com лого

В момента коментирате, използвайки вашия профил WordPress.com. Излизане /  Промяна )

Google photo

В момента коментирате, използвайки вашия профил Google. Излизане /  Промяна )

Twitter picture

В момента коментирате, използвайки вашия профил Twitter. Излизане /  Промяна )

Facebook photo

В момента коментирате, използвайки вашия профил Facebook. Излизане /  Промяна )

Connecting to %s