Ретроспектива на гребло. Како само напишаното решение се покажа подобро од платеното

Здраво! Јас се викам Алексеј Пјанков, јас сум главен програмер во Спортмастер. Веднаш ќе кажам дека „главен“ не значи „најважен од сите програмери“, не, тоа е само име, толку шармантен превод за „Senior+“.

Работам во компанијата Спортмастер од 2012 година и за ова време развојниот тим направи многу решенија кои се интересни од техничка страна. Но, денес би сакал да зборувам за нашата работа, со акцент на тоа како размислувавме во одредени двосмислени ситуации.

Оваа статија нема да содржи специфични технички решенија (или нешто воопшто техничко) што треба да ги земете и да ги примените во вашиот проект. Напротив, тоа е одраз на сработеното. Имаше такви посебни моменти кои влијаеа врз нас како тим - не обединија, не засилија и не тестираа за сила. Денес ќе се обидам да зборувам за овие моменти, за атмосферата на тимска работа, за нашите гребла и за голем број психолошки замки во кои понекогаш се втурнуваме.

Ретроспектива на гребло. Како само напишаното решение се покажа подобро од платеното

И ќе почнам со 2012 година.

Дојдов во 2012 година со главна цел во тоа време - работа на нашата водечки веб-страница. Во тоа време тоа беше „чудовиште на Франкенштајн“: дел од тимот работеше со нашиот стар систем, кој не се справуваше многу добро со оптоварувањата (Битрикс), додека друг дел од тимот (во кој бев и мене) се обиде да имплементира нов систем , кој беше избран според критериумот „Еднаш ова е најскапата е-трговија во светот, ајде да ја земеме“. Тоа беше токму „се обидоа да го спроведат“ - затоа што системот очајно се спротивстави, и за секој момент што успеваа да го средат, секогаш се појавуваше „изненадување“ како одговор. Работевме напорно, но се движевме со темпо на полжав.

За мене лично, последната капка беше моето запознавање со кодот на еден метод во оваа „најскапа е-трговија во светот“, кога неколкучасовната концентрирана работа на збунувачки бубачка доведе до фактот дека причината беше пронајдена некаде во прилагодената ознака, која работи кога се генерира html во jsp. Целта на оваа прилагодена ознака е да се прикаже збирот на некои вредности. Ова не е лошо, ова е она за што се дизајнирани прилагодените ознаки. Но, изненадувањето беше скриено во фактот што во исто време се менуваат некои податоци во базата на податоци, однесувањето на следните страници е врзано за ова, и ако притиснете F5, повикот се повторува, ова ја нарушува конзистентноста на податоците. . Згора на тоа, се прекрши на тој начин што се појави само по неколку чекори, на 3-та страница од секвенцата. Не, не ми пречи да имам таков „мајстор нинџа“ во тимот и да го задржам вниманието на моите колеги во добра форма со неговиот код. Но, исто така, во најскапиот систем!

Беше во петокот. И јас и мојот колега ги поминавме саботата и неделата во канцеларија со цел да откриеме какви задачи му поставува бизнисот на системот во моментов и кои задачи може да ги исполни за една година. Соодветно на тоа, како би ги решиле ако не сме воведени во рамката на користење на овој најскап и највознемирувачки систем.

Не порано кажано отколку направено. Направивме пилот во кој ги поставивме темелите за развој на нова веб-страница на Sportmaster. Многу од овие идеи се фатија и во моментов нивното продолжение активно циркулира на страницата.

Пилот фази и временски рамки

2 дена. Направивме микропрототип - за време на викендот ја префрливме нашата база на податоци на ElasticSearch, правејќи фацетирано пребарување. Voila! Во истиот купен систем, оваа поставка „изеде“ 2 недели. И тука - буквално за неколку часа! И исто така работи побрзо. И тоа е за ред на големина побрзо.

2 недели. Го сечеме прототипот и додаваме функционалност за соодветни персонализирани резултати.

На пример, корисникот има неколку попусти и промоции кои се релевантни конкретно за него - тогаш во резултатите од пребарувањето на производи треба да ја прикажете точно цената што може да се добие со користење на сите достапни добрите на најпрофитабилен начин.

Не е толку едноставно со акциите. На пример, купив скии, сега има 40% попуст на капа, но во исто време се откажува попустот за добредојде од 10% на целата нарачка. Да, да, ова е реален случај :) А за да се постави ваква промоција во системот за набавки, беа платени 3 консултации со добавувачот, како резултат на што добивме многу примери како се прават разни други промоции. Многу дипломатски и, со оглед на трошоците за консултации, многу добар економски.

На бизнисот му покажавме детално демо. Тие ветија дека брзо ќе го соберат пилотот и веднаш се фатија за работа.

2 од месецот. Правиме пилот проект во форма на веб-страница во живо со пребарување на каталог. Пребарување со аспекти, резултати од пребарување со лични попусти, пилотот изгледа речиси како веб-страницата на Sportmaster, а ние ги поставивме истите производи. Мила!

Додаваме „Елоквенција: 100“ од нашиот раководител на одделот и презентацијата на бизнисот оди со голема брзина! Нам ни е дадена карт-бланш за самите да ја развиваме платформата за е-трговија.

И ова значи, момци, чувајте го тимот, момци, чувајте го буџетот. Кул!

2 години. Пуштање на локацијата во производство. Да, долго време. Сè што знаевме тогаш, пробавме само на прототипска скала. Двајца лесно формираат добро координиран тим. А задачите што ги „кликнавме“ беа, во голема мера, мали додатоци на „Здраво свет“ во новите технологии. Лесно генериравме нови хипотези, брзо ги тестиравме, немавме време да се приврземе и затоа ги „убивме“ без жалење. Кога бевме 10, ние, по инерција, ја екстраполиравме нашата брзина на работа на сите други. И ветија такви рокови за извршување на задачата кои се еднакви на идејата за убавина помножена со нашиот ентузијазам.

Вообичаена ситуација? 🙂

Тогаш, дали веќе знаете што ќе се случи следно?

Стапица број 1. „Кулен екстраполатор“

Јасно е дека новите технологии изгледаат многу кул во презентациите и добро функционираат во апликацијата Hello World. Но, реалноста обично е малку подалеку од ова.

Па еве го. Земаме библиотека и пишуваме еден куп код за апликација. Сметаме дека единечните тестови се товар (ние сме кул и работиме на суперсонично ниво овде, кодот е модерен и така натаму). Постојано го менуваме и подобруваме API-то во движење - какви тестови има, сериозно. И сето тоа под знамето на „големо оптимизиран развојниот процес“ (да, сега е страшно дури и да се опише).

И тогаш сè е сосема очигледно.

Воведуваме нова градба на uat. Момците од бизнисот весело ќе ја тестираат целата работа и ќе притиснат копчиња. Понекогаш притискаат доста креативно - нешто паѓа. Би сакал да одам овде и да дознаам што направиле за ова. Но, од другата страна на мониторот не е тврдоглав тестер кој ќе ви ги открие сите карактеристики на околината, земајќи ги предвид временските услови во регионот, туку клиент од бизнис. Тоа едноставно „не функционира“ за него. Што значи дека е несреќен. Прашај го и тој ќе направи страшно незадоволен!

Ретроспектива на гребло. Како само напишаното решение се покажа подобро од платеното

Потоа, за да ја репродуцирате бубачката, треба да одите и со брутална сила сè. Секако, не игнориравме ниту една поплака и сè снимивме. Тие ги напуштија планираните задачи, но „го изгаснаа огнот“.

Така си ја ископавме следната дупка.

Стапица #2. „Стахановити“

Добивте не многу пријатна бубачка. Почнуваш да разбираш. Не ти оди - лутина - обиди да го сфатиш пак - уште едно гадно - појаснуваш се што можеш - пак не е исто - мислиш дека си веќе стар и сите имаат деца и хипотека - се обидуваш пак - повторно не е исто. Неколку шолји кафе, и се се повторува. 12-14 часа работа по ред е речиси норма. И сега, кога веќе се е на граница - бам, инспирација!

Ретроспектива на гребло. Како само напишаното решение се покажа подобро од платеното

Можеби, однадвор, добро и правилно е видлива оценката за ефективноста на таков ден. Но, одвнатре може да биде различно.

Во мојот случај, впечатокот од таквата работа содржеше „Супер сум, кул, добро разбрав“. Не секогаш свесно, но несвесно - секогаш!

И се навлекуваш на тоа, без шега. Излегува дека внатрешната метрика на успехот на движењето се префрла од резултатот до количината на вложениот труд и нивото на подвизите што сте ги постигнале, колку сте претрпеле додека се обидувате да го решите проблемот.

Ова е веројатно најлошата стапица.

Тогаш ќе биде полесно и позабавно :)

Стапица бр. 3. „Моќта на здрав свет“

Нашиот технолошки куп од тој период: ElasticSearch, Hazelcast, Pentaho, freemarker (и докажани Java, Spring, Tomcat, nginx). Freemarker не обезбеди многу информативни пораки за грешка. Но, ElasticSearch, Hazelcast, Pentaho мораше да се закрпат неколку пати - брилијантно најдовме случаи во кои тие не функционираа како што е наведено во документацијата.

Лесниот почеток и брзите придобивки од користењето на новата технологија се добри, но водат до еуфорија и ја намалуваат будноста. Бидејќи новата технологија содржи грешки, таа дефинитивно содржи грешки. А ако сеуште не си пишувал за нив, радувај се, ти си тој што ќе стане пионерот кој во секој случај ќе земе нешто криво и ќе оди на Гугл или на СО. Се разбира, „кривото“ може да се најде во докажани производи, но во новите е многу полесно.

Ретроспектива на гребло. Како само напишаното решение се покажа подобро од платеното

И покрај сите тешкотии, влеговме во производство. Да, со заостанувања. Да, не многу стабилно. Но, генерално, нема катастрофи.

Накратко, уште еднаш ќе ги истакнам замките кои ја нарушуваат здравата перцепција за работниот процес.

  1. „Кулен екстраполатор“. Импресионирани од тековните успеси, одиме и среќно ја екстраполираме брзината на развој на претстојните проекти.
  2. „Стахановити“. Работиме напорно, задоволни сме со себе, но не забележуваме дека проблемите што ги решаваме се последица на нашите лични грешки/недостатоци/запоставувања. Работи што не треба да се прават.
  3. „Моќта на здрав свет“. Брзаме да ги воведеме сите најнови и најинтересни работи во производство.

Зошто сè успеа?

Се разбира, не ги набројав сите грешки што ги имавме во ова време, туку најчестите, најверојатно за проект со каква било специфичност. Ваквото снимање на грешки помага да се избегнат во иднина.

Малку за тоа како успеавме да создадеме таков мини-стартап во рамките на компанијата и да го убедиме бизнисот да премине од веќе купен систем на нешто свое.

Состојба бр.0. Здрава клима во компанијата. Ова не се само „запалените очи“ на вработените и комуникациските вештини во стресни услови на добивање колачиња, бр. Се работи за сите интеракции.

Состојба бр.1. Верувај во тоа што го правиш. Сериозно, не мислам дека ќе имавме никакви шанси ако го преземевме пилотот без да го расклопиме купениот систем до штрафот - односно да се повлечеме и потсвесно да знаеме дека овој систем е поладен и ќе не победи.

Што направивме: 1) го сфативме системот за купување, со негова помош ги решивме главните барања од бизнисот 2) составивме листа на задачи кои не само што постојат сега, туку ќе постојат и во догледна иднина 3) избравме решение кое се вклопува подобро. И тогаш, нашата проценка за решението беше проценка на експерти.

Дали би ни дале нешто ако само дојдеме и речеме: „Момци, сè е срање, не сакаме да се занимаваме со ова и решиме да си направиме свое од нула“? Тешко. Згора на тоа, одговорот би бил примен во таква форма што добро ќе се памети :)

Состојба бр.2. Првиот чекор го правиме мал. Ајде да ја генерираме првата хипотеза и да ја тестираме. Можете исто така да го потрошите вашето лично време на ова. Ако не сакате да го губите вашето време, тогаш воопшто не треба да преземате такво нешто. И ако не сакате да тестирате мала хипотеза, туку сакате веднаш да го направите тоа кул и брилијантно, држете се настрана од таквите луѓе!

Имавме среќа и проработи првата хипотеза. Но, ова не се случува секогаш. На пример, во еден од следните проекти, кога го промовиравме административниот панел како дел од сличен пилот, ни работеше само 18-тата опција. И првите 17 приоди кон проектилот беа залудни. Патем, во приказната за создавањето на админ панелот, пресвртите на заплетот беа на ниво на бразилски ТВ серии, бидејќи тимот беше составен од момци кои дотогаш веќе беа ветерани, вистински „рендан кифлички“.

Состојба бр.3. Правиме МВП и бараме болка кај одлучувачот. Се разбира, тој може да има изглед на ужас на лицето само од фактот што му носите некаква идеја по триесетти пат. Но сепак. И ние се грижиме да покажеме точно како ги решаваме неговите проблеми со нашиот производ.

Состојба бр.4. На коленото брзо правиме пилот што изгледа приближно како конечен резултат. Примамливо е да направите сè навистина кул, но може да заглавите во перфекционизам, што може да доведе до тоа да сакате да покажете пилот верзија на веќе совршен производ наместо пилот. Но, тие не постојат. Затоа само направете едно од стапчиња.

Состојба бр.5. Производ. Проектот расте, добива средства, а доаѓаат специјалисти со солидно искуство.
И ако сте класичен стартап, тогаш ова е токму моментот кога треба да се откажете со свиреж. Затоа што лесните летови до самиот врв и чувството на општо блаженство од она што се случува брзо исчезнуваат.

Влегувањето во производство значи соочување со вистински обем на работа, интеграција со десетици системи и кога креирате нова функционалност, истовремено ги усовршувате старите верзии како дел од одржувањето. Сите овие се предизвици кои се многу посериозни отколку да се дојде до идеја и да се реши, иако добро, само еден проблем на клиентот.

Тоа се предизвици, а растот на вештините се случува токму во оваа фаза.

Ви благодариме за читањето. Среќен нов код!

Извор: www.habr.com

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster