Pull to refresh

Копание могил, SQL Server, годы аутсорса и свой первый проект

Reading time13 min
Views9.9K
image

Практически всегда мы создаем свои проблемы своими же руками… своей картиной мира… своим бездействием… своей ленью… своими страхами. Что потом становится весьма удобно плыть в общественном потоке канализационных шаблонов… ведь это тепло и весело, а остальное пофиг – принюхаемся. Но после жесткого фейла приходит осознание простой истины – вместо генерации бесконечного потока причин, жалости к себе и самооправданий достаточно просто взять и сделать то, что ты считаешь самым важным для себя. Это и будет отправной точной твоей новой реальности.

Для меня написанное ниже является именно такой отправной точкой. Путь будет не близкий…

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

Часто мы боимся неудачи постоянно откладывая на потом важные для себя вещи и далее логически рационализируем в своей голове пытаясь себя успокоить: «все равно ничего не вышло», «это не найдет одобрения у окружающих» и «какой вообще толк этим заниматься?». Многие просто не знают насколько они сильные, потому что никогда не пробовали что-то поменять в своей жизни.

Ведь если человек делает только то, что он может – он уже автоматом создает шаблон в своей голове: «это я могу… это я сделаю...». Но нет ничего выдающегося в том, когда человек делает только то, что он может. Он это сделал, потому что мог, но при этом остался в том же диапазоне своих первоначальных возможностей, в которых и был все это время. Но если ты не мог и сделал – вот тут ты настоящий красавчик. Ведь только когда мы выходим из зоны комфорта и работаем за диапазоном своих возможностей – только тогда мы развиваемся и становимся лучше.

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

Близился конец пятого курса и мне все больше начиналось нравиться, то, чем я занимался все это время. Поскольку уже нужно было начинать полноценно работать, я решил написать разработчикам той самой коммерческой библиотеки, откуда черпал свои идеи. Мне казалось, что они легко бы взяли меня к себе, но после пары писем о моем желании у них поработать наш разговор ни к чему не привел. Появилось легкое разочарование, и сильная мотивация доказать, что я могу сам чего-то добиться.

В течение месяца сверстал сайт, закинул все на бесплатный хостинг, подготовил документацию и начал продавать. Денег на рекламу не было, и чтобы, хоть как-то, привлечь внимание потенциальных клиентов я начал распространять свои поделки под видом опенсорса. Отскок был примерно 70%, но, неожиданно для себя, оставшийся народ, пусть и неохотно, но начал покупать. Никого не смущал ни мой кривой английский, ни бесплатный хостинг, на котором располагался сайт. Людей устраивало сочетание низкой цены и базового функционала, который покрывал их основные потребности.

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

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

По факту вместо него на встречу пришли молодые люди приятной наружности и, особо не спрашивая моего мнения, предложили проехаться за город аргументируя это острой необходимостью «подышать свежим воздухом». Уже на месте была выдана именная лопата с целью проверить навыки, полученные мною в детстве на бабушкиных картофельных плантациях. И на протяжении часа в доходчивой форме мне объяснили мои перспективы, предложили не распылять силы, перестать заниматься глупостями, а главное – прекращать хамить серьезным людям.

В один момент мир перестал казаться солнечным и приятным местом. Сложно сказать правильно ли я тогда поступил… но я сдался… опустил руки и забился в угол. И это во многом определило то, что было дальше: латентная злость к окружающим из-за нереализованности, неуверенность на долгие годы, апатия в принятии важных для себя решений, перекладывания ответственности за свои косяки на кого-то другого.

Отложенные деньги быстро заканчивались и нужно было срочно приводить себя в порядок, но все валилось из рук. На тот момент очень помог отец, который через знакомых нашел место куда меня бы взяли без лишних вопросов. Уже потом я узнал, что ради меня он влез в обязы перед далеко не самыми приятными людьми, но этим он дал мне шанс себя показать.

Готовясь к новой работе, я опять начал вчитываться в Рихтера и усиленно штудировал Шилдта. Планировал, что буду заниматься разработкой под .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 года.

На тот момент, чтобы хоть как-то взбодрить себя от рабочей рутины, я планировал выступить на конференции. Во время обеда случайно перекинулся на кухне парой слов с коллегой. Вскользь он сказал мне: «Оказывается ты личность известная… тебя и в других городах народ знает». Сперва не понимая, о чем идет речь, он мне показал переписку в телеграмме. Сразу же узнал ту девушку, которая приходила ко мне на выступления, когда я с докладами в Днепр ездил. Мне было безумно приятно, что человек обо мне помнит. Без лишних мыслей решил написать ей и пригласил в Харьков на конференцию, в рамках которой готовил доклады.

Я выступал одним из первых, и сразу же увидел ее во втором ряду. То, что она приехала было для меня неожиданным и приятным событием. Мы обменялись парой фраз и начался мой длительный марафон лясоточения длиною в шесть часов. Тот день был одним из самых ярких в моей жизни: полностью забитый зал, 5 докладов подряд и непередаваемое ощущение, когда людям нравится тебя слушать. Мне было тяжело фокусировать внимание на всем зале и мой взгляд инстинктивно тянулся к ней… к той девушки, которая приехала из другого города… которую я знал два года, но мы с ней так и не общались… мы просто знали друг о друге все это время.

После завершения конференции я был уставшим и сильно депрессировал, но все же мне хотелось сделать девушке приятное – пригласив ее вместе поужинать в компании людей, с которыми мы оба были. По правде, тогда я был ужасным собеседником, постоянно язвил и требовал внимание. Сложно сказать, что со мной тогда происходило. Наша прогулка по ночному городу тоже не заладилась. Мне показалось что лучшее это довести девушку до отеля и поехать домой выспаться. Следующий день я провел в постели, не имея сил встать и лишь к вечеру начал прокручивать в голове сказанные ею слова: «Сережа я приехала ради тебя...». Мне искренне хотелось ее еще раз увидеть, но к тому времени она уже уехала.

Мы общались пару недель, пока я не решил, что нужно поехать к ней…

Накануне релиза никому не нужно хрени для клиента, я перенес деплой и поехал в Днепр. Сложно сказать, что творилось в моей голове, но я хотел ее увидеть, даже не зная о чем буду говорить. Договорились встретиться в парке, но я эпично перепутал адрес и 5 километров шел не туда. Через время поняв свою ошибку, я быстро вернулся на такси с цветами, которые нашел в каком-то гоп-районе. И все это время она меня ждала с какао.

Мы сидели на недостроенной театральной сцене, пили холодное какао и говорили обо всем, что приходило в голову. Перепрыгивая с темы на тему, она рассказывала мне о своем нелегком прошлом, про инмутабельность строковых типов данных на .NET… я ловил каждое ее слово. Она была проницательной и умной, порой смешной, чуточку наивной, но все что говорила было искренним. Уже тогда понял, что влюбился в нее.

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

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

Месяц я злился на себя… срывался на окружающих… наговорил таких вещей человеку, которой мне искренне понравился, за которые невозможно простить. От этого было еще хуже на душе и в итоге все закончилось нервным срывом и сильной депрессией.

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

После этого моя жизнь сильно изменилась. Я очень понимаю, что значит быть слабым и неуверенным в себе. Но когда я начал тренироваться, то почувствовал лучшее, что может дать зал. Это то самое чувство уверенности в себе и в своих силах. Ощущение того, как меняется отношение других людей к тебе. И в тот момент я понял, что не хочу возвращаться к прежней жизни, которая у меня была. Я решил посвятить себя тому, что все это время откладывал в своей жизни.

Но обращали ли вы внимание, что когда человек начинает что-то новое, то он начинает заявлять о своих намерениях в окружающую действительность. Всем постоянно рассказывает с горящими глазами о своих планах, но проходит время и ничего не происходит. Такие люди постоянно говорят в будущем: «я сделаю», «я добьюсь», «я изменюсь» и так из года в год живут своими хотелками. Они как пальчиковая батарейка – мотивационного заряда хватает лишь на одну вспышку и потом все. Я был таким же…

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

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

Никогда не делитесь своими планами пока не реализуете их. Делитесь лишь результатами как бы тяжело не было делать это все самому. Да, в таком случае, выбранный нами путь не всегда будет приносить удовольствие и розовых единорогов с радугой из пятой точки. Нас не всегда будут направлять светлые побуждения в работе над своими приоритетами. Зачастую жизнь будет постоянно посылать туда куда идти совсем не хочется. Но всякий раз открывая Visual Studio или приходя в зал я вспоминал о том каким был и каким могу быть. Вспоминал о встрече с той девочкой из Днепра, которая заставила задуматься о моем отношение к жизни… я многое понял.

Обычно заключительное слово должно быть достаточно емким, чтобы надолго врезаться в память. Хочу процитировать слова, которые однажды услышал в зале от одного умного человека.

Думаешь ты приходишь в зал бороться железками? Нет… ты борешься с самим собой… со своими шаблонами… со своей ленью… со своими рамками в которые ты сам себя вогнал. Ты хочешь постоянно решать чужие проблемы откладывая на потом свои? Пусть мелкими шагами, но нужно уверенно идти к тому, чтобы в один момент найти свое счастье в жизни. Потому что счастье – это когда на тебе не висят принципы и правила, которые придумал не ты. Счастье – когда у тебя есть вектор развития, и ты кайфуешь уже по дороге, а не от конечной цели. Так может все же стоит поднять ж… пу и начать трудиться над собой?

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

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

SQL Index Manager

Последняя версия приложения можно скачать на GitHub. Исходники лежат там же.
Буду рад критике и фитбекам :)
Tags:
Hubs:
Total votes 21: ↑19 and ↓2+17
Comments19

Articles