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

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

Практично завжди ми створюємо свої проблеми своїми ж руками… своєю картиною світу… своєю бездіяльністю… своєю лінню… своїми страхами. Що потім стає дуже зручно плисти у суспільному потоці каналізаційних шаблонів… адже це тепло і весело, а решта пофіг – принюхаємось. Але після жорсткого фейлу приходить усвідомлення простої істини – замість генерації нескінченного потоку причин, жалю до себе та самовиправдань досить просто взяти і зробити те, що ти вважаєш найважливішим для себе. Це і буде відправною точною твоєю новою реальністю.

Для мене написане нижче є саме такою відправною точкою. Шлях буде не близький.

Усі люди соціально залежні і підсвідомо ми хочемо бути частиною соціуму, прагнучи отримати схвалення своїх вчинків із боку. Але разом зі схваленням нас постійно оточуватиме громадська оцінка, яка підкріплюється внутрішніми комплексами та постійними обмежувачами.

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

Адже якщо людина робить тільки те, що вона може - вона вже автоматично створює шаблон у своїй голові: "це я можу ... це я зроблю ...". Але немає нічого видатного в тому, коли людина робить тільки те, що вона може. Він це зробив, тому що міг, але при цьому залишився в тому ж діапазоні своїх первісних можливостей, у яких був весь цей час. Але якщо ти не міг і зробив – ось тут ти справжній красень. Адже тільки коли ми виходимо із зони комфорту та працюємо за діапазоном своїх можливостей – тільки тоді ми розвиваємось і стаємо кращими.

Моя перша спроба зробити хоч щось значуще розпочалася ще на четвертому курсі інституту. За плечима вже були базові знання з 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 Server, роки аутсорсу та свій перший проект

Остання версія програми можна завантажити на GitHub. Вихідники лежать там же.
Буду радий критиці та фітбекам 🙂

Джерело: habr.com

Додати коментар або відгук