Копаене на гробници, SQL Server, години аутсурсинг и първият ми проект

Копаене на гробници, SQL Server, години аутсурсинг и първият ми проект

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

За мен написаното по-долу е именно такава отправна точка. Пътят няма да е близък…

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

Често се страхуваме от провал и постоянно отлагаме важните за нас неща, а след това логически рационализираме в главите си, опитвайки се да се успокоим: "все едно нищо не се получи", "това няма да бъде одобрено от околните" и "какъв е смисълът да се занимавам с това вообще?". Много хора просто не знаят колко силни са, защото никога не са опитвали да променят нещо в живота си.

В крайна сметка, ако човек прави само това, което може – той автоматично създава шаблон в главата си: "това мога… това ще направя…". Но няма нищо забележително в това, когато човек прави само това, което може. Той го е направил, защото е можел, но при това е останал в същия диапазон на своите първоначални възможности, в който е бил през цялото време. Но ако не си могъл и си направил – тогава вече си истински герой. Всъщност само когато излизаме от зоната си на комфорт и работим извън диапазона на своите възможности – само тогава се развиваме и ставаме по-добри.

Моето първо опитване да направя нещо значимо започна още на четвъртата година в университета. Вече имах основни знания по C++, и една неуспешна опит да запомня всичките книги на Рихтер по настоятелната препоръка на потенциалния работодател. Случайно попаднах на библиотеката OpenCV и на няколко демота за разпознаване на образи. Неочаквано за себе си, започнах да прекарвам нощите в опити да разбера как да подобря функционалността на тази библиотека. Много неща не се получаваха и чрез реверс инженеринг опитвах да проуча продукти от подобна насоченост. Достигнах до момента, в който научих как да разглобявам една търговска библиотека и постепенно извличах алгоритми, които сам не можех да реализирам.

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

В течение на месец направих сайта, качих всичко на безплатен хостинг, подготвих документацията и започнах да продавам. Нямах пари за реклама и, за да привлеча вниманието на потенциални клиенти, започнах да разпространявам творбите си под формата на отворен код. Обратната връзка беше около 70%, но, неочаквано за себе си, остатъчните хора, въпреки reluctance, започнаха да купуват. Никой не се смущаваше нито от лошия ми английски, нито от безплатния хостинг, на който се намираше сайтът. Хората бяха удовлетворени от комбинацията от ниска цена и основна функционалност, която покриваше техните основни нужди.

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

Времето минаваше и тази история постепенно започна да се забравя. В плановете ми беше да наема по-опитен човек за помощ, но парите не стигаха. Алчността играеше роля и исках да грабна голямата печалба. Насрочена беше среща с нов клиент, който, както се оказа в процеса на разговор, също се намираше в същия град. Сладко описвайки перспективите на сътрудничество, той предложи да се срещнем на живо.

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

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

Отлаганите средства бързо свършваха и трябваше спешно да се справя със ситуацията, но всичко се разваляше. В този момент много ми помогна баща ми, който чрез познати намери място, където да ме вземат без излишни въпроси. По-късно разбрах, че заради мен той влезе в задължения пред далеко не най-приятните хора, но с това ми даде шанс да се проявя.

Подготвяйки се за новата работа, отново започнах да чета Рихтер и усилено изучавах Шилдт. Планирах, че ще се занимавам с разработка за .NET, но съдбата енергично разпредели нещата в първия месец на официалната ми трудова дейност. Един от служителите на компанията неочаквано напусна проекта и в новосъздадената дупка добавиха нов човек.

Докато колегата събираше вещите си, с финансовия директор проведох доста епичен диалог:

— Знаеш ли бази данни?
— Не.
— Научи ги за една нощ. Утре ще те продам на клиента като мидъл базист.

Така и започна моето запознанство с SQL Server. Всичко беше ново, непознато и най-често се правеше по метода на пробите и грешките. Много ми липсваше компетентен ментор, на когото да се равнявам.

Следващите няколко месеца всичко напомняше на абсолютен хаос. Проектите бяха интересни, но ръководството ги остави на произвола на съдбата. Започнаха аврали, постоянни извънредни часове и задачи, които никой не можеше дори ясно да формулира. Моето любимо занимание стана вечната доработка на отчет за разпределението на готови торти на прости полуфабрикати. Но тъй като всяка торта можеше да бъде част от друга, тази сурова бизнес логика ми извади акъла.

Разбрах, че ще става само по-лошо и реших да действам. Освежих в паметта си теорията и реших да опитам късмета си на други места, но на интервютата ми липсваше опит, за да се класирам поне за стабилен джун. Първите няколко дни бях впечатлен от провалите си и сериозно обмислях, че е твърде рано да сменям работата и трябва да натрупам опит.

Започнах активно да изучав материята по SQL Server и с времето напълно се отдадох на разработка на бази данни. Не мога да скрия, че тази работа за мен беше истински ад, където, от една страна, практикуващ шизофреник в лицето на техническия директор ми забавляваше всеки ден, а му акомпанираше финансист, който в изблик на емоции отхапваше главите на гумените патици по време на обедната почивка.

В един прекрасен момент осъзнах, че съм готов. Събрах цялата критично важна работа, осигурих висока честота на релийзите и директно нормализирах отношенията с клиентите. В крайна сметка, поставих финансовия директор в поза като нарязано дърво. Сега можеше да се пошегувам за 23-годишни сениори, но точно така успях да увелича заплатата си четири пъти.

Следващия месец бях изпълнен с гордост за това, което успях да постигна, но каква беше цената? Началото на работния ден в 7:30 сутринта и до 10 вечерта. Здрава ми здраве започна да дава първите сбои и това беше на фона на планомерни намеци от ръководството, че е по-добре да провалим проекта умишлено, отколкото да ти позволим да печелиш повече от средното 'в нашата болница'. Макар в нещо, те спазиха обещанието си и аз застанах пред дилемата да търся ново работно място.

След време ме поканиха да дойда на интервю в продуктова компания. Планирах да премина на аналогична позиция по .NET, но на практика завалих заданието. Вече искахме да се сбогуваме, но най-интересното стана, след като потенциалните работодатели научиха, че имам опит с SQL Server. В резюмето си не бях описал много, защото никога не считах, че знам достатъчно в тази област. Въпреки това, тези, които ми направиха интервюто, бяха на малко по-различно мнение.

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

Тези два месеца станаха безценен нов опит за мен в сравнение с предишната ми активност по развиването на тортили. Но всичко хубаво рано или късно свършва и управлението неочаквано смени приоритетите си. В този момент работата беше свършена и не намериха нищо по-добро за мен от преквалификацията в тестер, което малко противоречеше на нашите споразумения за разработка на нови продукти. Бързо ми намериха алтернатива – "малко да почакам", да се занимавам със социална активност и в същото време доброволно да се съглася да напусна разработката за ръчно тестване.

Работата стана монотонна последователност от регресии, която не мотивираше за по-нататъшно развитие. И за да се отърва от регресите, започнах да пиша технически статии в Хабр, а после и на други платформи. В началото не се получаваше много добре, но най-вече това започна да ми харесва.

След време ми се довериха да повиша рейтинга на официалния профил на компанията в Stack Overflow. Всеки ден се сблъсквах с интересни казуси, разгадавах тонове индийски код, помагах на хората, а най-важното – учих се и натрупвах опит.

По случайност попаднах на първия си SQL Saturday, който се проведе в Харков. Моят колега трябваше да говори пред аудиторията за разработка на бази данни с помощта на продуктите, които ние всички това време правехме. Не помня защо, но в последния момент презентацията се наложи да направя аз. Денис Резник с традиционната си усмивка ми предава микрофона, а ти с притеснителен глас се опитваш да разкажеш нещо на хората. В началото беше страшно, но после "Остапа понесло".

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

Вдъхновявайки се от специалисти като Резник, Короткевич, Пилюгин и други страхотни момчета, с които имах щастието да се запозная… осъзнавах, че в рамките на текущата работа нямам задачи за бърз напредък. Зад мен имаше добра теория, но ми липсваше практика.

Получих предложение да стартирам нов проект от нулата на ново място. Работата започна веднага. Всичко, което преди това исках от живота, ми се предостави: интересен проект, висока заплата, възможност да влияя на качеството на продукта. Но в определен момент се отпуснах и направих доста сериозна грешка, веднага след като завършихме MVP-то за клиента.

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

От моя страна беше направен опит да изравня ситуацията в проекта, да въведа ред и да се върна към по-спокойна разработка, но не ми позволиха. Всички бяха доволни от постоянните пожари, които трябваше да гасим.

След анализ на ситуацията реших, че искам да си почина от целия този цирк и предложих на CEO от предишната ми работа да се върна при него при условие, че заедно ще правим нов проект. Обсъдихме всички нюанси и за около месец планирахме да стартираме разработката. Измина месец… след това още един… и още един. На всичките ми въпроси отговорът беше един и същ – чакай. Мисълта да направя нещо свое не ме напускаше, но все пак трябваше временно да се върна на фриланс, помагайки на народите от Средна Азия да завоюват банковия сектор на Украина.

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

Бившият CTO предложи да му помогне с текущите проекти и аз започнах да правя това, което умея най-добре – да гася пожари. Отново потъвайки в трудохолизма, събирах последствията: неправилно хранене, далеч от нормално разбиране за съня и постоянен стрес. Всичко това беше обяснено с два проекта, които редувах да тласкам към светло бъдеще. Единият проект носеше радост с 24/7 работа, а вторият имаше просто извращено разбиране за мениджмънт, затова екипът работеше в постоянно напрежение. Този период от живота ми не може да бъде наречен иначе освен мазохизъм, но имаше и весели моменти.

Спокойно си копаеш картофите на градината при родителите под ретровейт и внезапно получаваш обаждане: „Серога… кончетата спряха да бягат…”. След няколко секунди размисъл, стоейки на лопатата и поподобно тренирайки уменията на баба Ванга в себе си, диктуваш по памет последователните команди, за да може човекът да реши проблема на сървъра. Нито секунда не съжалявам за такъв опит – беше страхотно!

Но тук започва най-интересното…

Една среща в края на септември 2017 година коренно промени моя живот.

В онзи момент, за да намеря поне малко вдъхновение от работната рутинка, планирах да се изявя на конференция. По време на обяда случайно обсъждахме няколко думи с колега в кухнята. Той ми каза мимоходом: „Оказва се, че си известна личност… хората те познават и в други градове”. Първоначално не разбирах за какво става въпрос, той ми показа разговор в Telegram. Веднага разпознах момичето, което идваше на моите изказвания, когато пътувах с доклади в Днепър. Беше ми изключително приятно, че този човек си спомня за мен. Без излишни размишления реших да ѝ пиша и я поканих в Харков на конференция, в рамките на която подготвях доклади.

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

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

Общувахме две седмици, докато реших, че трябва да отида при нея...

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

Седяхме на недостроената театрална сцена, пиехме студено какао и говорехме за всичко, което ни хрумваше. Прескачайки от тема на тема, тя ми разказваше за своето трудно минало, за неизменността на типовете данни в .NET… улавях всяка нейна дума. Тя беше проницателна и умна, понякога смешна, малко наивна, но всичко, което казваше, беше искрено. Вече тогава разбрах, че се влюбих в нея.

Когато се върнах на работа, в аврален режим се опитвах да намеря няколко дни отпуск и да отидя при нея за втори път, за да призная чувствата си. В действителност всичко стана по друг начин...

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

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

Изходът от порочния кръг на самобичуването и вътрешните комплекси ми помогна да намеря бившият колега – Дмитрий Скрипка, който ме заведе на фитнес.

След това животът ми се промени значително. Много добре разбирам какво означава да си слаб и несигурен в себе си. Но когато започнах да тренирам, почувствах най-доброто, което може да ми даде залата. Това е онова чувство на увереност в себе си и в собствените ми сили. Осъзнаването как се променя отношението на другите хора към теб. И в този момент разбрах, че не искам да се връщам към предишния живот, който имах. Реших да се посветя на това, което все това време отлагах в живота си.

Но забелязвали ли сте, че когато човек започне нещо ново, той започва да изразява намеренията си към заобикалящата действителност. Постоянно разказва на всички с горящи очи за плановете си, но минава време и нищо не се случва. Такива хора постоянно говорят в бъдеще време: "ще направя", "ще постигна", "ще се променя" и така от година на година живеят със своите желания. Те са като батерия с пръстови отпечатъци – мотивационният заряд е достатъчен само за един блясък и след това всичко приключва. И аз бях такъв...

Първоначално планирах, че в компанията на мотивирани колеги можем да преминем през планини, но често очакванията за светло бъдеще не съвпадат с практиката. Започвайки проекта си, постоянно планирахме и обсъждахме вместо да започнем и да действаме.

Често все искат бързо… все искат от първия опит… все са спринтьори… все започват да бягат, но минава време… предава се един… предава се втори. Когато финалната права не се очертава на хоризонта, малко хора искат да работят, просто защото трябва да преминат дистанцията до края… сутрин, през деня или дълбоката нощ… когато никой не вижда, никой не хвали и никой не оценява това, което правиш.

Никога не споделяйте своите планове, докато не ги реализирате. Споделяйте само резултатите, колкото и трудно да е да правите всичко сами. Да, в такъв случай избраният от нас път не винаги ще донесе удоволствие и розови еднорози с дъга от петата точка. Не винаги ще ни водят светли подбуди в работата над приоритетите ни. Често животът постоянно ще ни изпраща на места, където не искаме да отидем. Но всеки път, когато отварям Visual Studio или отивам във фитнеса, си спомням какъв бях и какъв мога да бъда. Спомням си за срещата с онова момиче от Днепър, което ме накара да се замисля за моето отношение към живота… разсъждавах много.

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

Мислиш, че идваш във фитнеса, за да се бориш с железа? Не… ти се бориш със себе си… със своите шаблони… със своята мързеливост… със своите ограничения, в които сам си се затворил. Искаш постоянно да решаваш чужди проблеми, отлагайки своите? Нека и с малки стъпки, но трябва уверено да вървиш към момента, в който да намериш своето щастие в живота. Защото щастие е, когато на теб не тежат принципи и правила, измислени не от теб. Щастие е, когато имаш вектор на развитие и се наслаждаваш по пътя, а не само на крайния резултат. Така че, може би все пак си струва да се понапрегнеш и да започнеш да работиш върху себе си?

Ах да, напълно забравих… първоначално тази статия беше замислена, за да запознае хората с проекта, който създавах през това време. Но така се случи, че в процеса на писане приоритетът се измести към описанието на причината, поради която изобщо започнах да се занимавам с тази активност и защо не искам да я оставям в бъдеще. Ако накратко за проекта, то…

SQL Index Manager – е безплатна и по-функционална алтернатива на търговските продукти от Devart (99$) и RedGate (155$) и е предназначена за поддръжка на индексите на SQL Server и Azure. Не мога да кажа, че моето приложение е по-добро от скриптовете на Ola Hallengren, но благодарение на по-оптимизираното описание на метаданните и наличието на различни полезни дреболии, за някого този продукт определено ще бъде полезен в ежедневните задачи.

Копаене на гробници, SQL Server, години аутсурсинг и първият ми проект

Последната версия на приложението може да бъде изтеглена на GitHub. Източниците са там също.
Ще се радвам на критика и обратна връзка 🙂

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster