Ретроспективті. Өздігінен жазылған шешім ақылы шешімнен қалай жақсы болды

Сәлеметсіз бе! Менің атым Алексей Пянков, мен Sportmaster компаниясының бас бағдарламашысымын. Мен бірден айтайын, «басшы» «барлық бағдарламашылардың ішіндегі ең маңыздысы» дегенді білдірмейді, жоқ, бұл жай ғана атау, «Аға+» үшін керемет аударма.

Мен Sportmaster компаниясында 2012 жылдан бері жұмыс істеймін және осы уақыт ішінде әзірлеушілер тобы техникалық жағынан қызықты көптеген шешімдер қабылдады. Бірақ бүгін мен белгілі бір түсініксіз жағдайларда қалай дәлелдегенімізге баса назар аудара отырып, жұмысымыз туралы айтқым келеді.

Бұл мақалада жобаңызда қабылдауға және қолдануға болатын нақты техникалық шешімдер (немесе мүлдем техникалық ештеңе) болмайды. Керісінше, бұл атқарылған жұмыстың көрінісі. Ұжым ретінде бізге әсер еткен ерекше сәттер болды - олар бізді біріктірді, бізді шыңдады және күшімізді сынады. Бүгін мен осы сәттер туралы, командалық жұмыс атмосферасы туралы, біздің тырмаларымыз туралы және кейде өзімізді өзіміз айдайтын бірқатар психологиялық тұзақтар туралы айтуға тырысамын.

Ретроспективті. Өздігінен жазылған шешім ақылы шешімнен қалай жақсы болды

Ал мен 2012 жылдан бастаймын.

Мен 2012 жылға сол кездегі басты мақсатпен келдім – флагмандық сайтымызда жұмыс істеу. Ол кезде бұл «Франкенштейн құбыжығы» болды: команданың бір бөлігі біздің ескі жүйемен жұмыс істеді, ол жүктемені жақсы көтере алмады (Bitrix), ал команданың басқа бөлігі (оның ішінде мен де бар) жаңа жүйені енгізуге тырысты. , ол «Бірде бұл әлемдегі ең қымбат электрондық коммерция болса, оны алайық» критерийі бойынша таңдалған. Дәл «олар іске асыруға тырысты» - өйткені жүйе қатты қарсылық көрсетті және олар реттей алған әр сәтте жауап ретінде әрқашан «тосын» пайда болды. Біз көп жұмыс жасадық, бірақ ұлу қарқынымен қозғалдық.

Жеке мен үшін соңғы тамшы осы «әлемдегі ең қымбат электрондық коммерциядағы» бір әдістің кодымен танысу болды, бұл кезде шатастыратын қате бойынша бірнеше сағаттық шоғырландырылған жұмыс оның себебін бір жерден табуға әкелді. jsp файлында html жасау кезінде жұмыс істейтін теңшелетін тег. Бұл реттелетін тегтің мақсаты - кейбір мәндердің қосындысын көрсету. Бұл жаман емес, пайдаланушылық тегтер осы үшін жасалған. Бірақ таң қалдыратын нәрсе, бір уақытта деректер қорындағы кейбір деректер өзгереді, келесі беттердегі мінез-құлық осыған байланысты және 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, фримаркер (және дәлелденген Java, Spring, Tomcat, nginx). Freemarker өте ақпарат беретін қате туралы хабарларды бермеді. Бірақ ElasticSearch, Hazelcast, Pentaho бірнеше рет түзетуге тура келді - біз олар құжаттамада көрсетілгендей жұмыс істемейтін жағдайларды таптық.

Жаңа технологияны пайдаланудан оңай бастау және жылдам пайда жақсы, бірақ олар эйфорияға әкеледі және қырағылықты төмендетеді. Жаңа технологияда қателер бар болғандықтан, ол міндетті түрде қателерді қамтиды. Егер сіз олар туралы әлі жазбаған болсаңыз, қуаныңыз, сіз кез келген жағдайда қисық нәрсені алып, Google немесе SO-ға кіретін пионер боласыз. Әрине, «қисық» дәлелденген өнімдерде кездеседі, бірақ жаңаларында бұл әлдеқайда оңай.

Ретроспективті. Өздігінен жазылған шешім ақылы шешімнен қалай жақсы болды

Қанша қиыншылық болса да өндіріске кірістік. Иә, кешігулермен. Иә, өте тұрақты емес. Бірақ жалпы алғанда, апаттар жоқ.

Қорытындылай келе, мен жұмыс процесін дұрыс қабылдауды бұзатын тұзақтарды тағы бір рет атап өтемін.

  1. «Салқын экстраполятор». Қазіргі жетістіктерге таңдана отырып, біз даму жылдамдығын алдағы жобаларға қуана экстраполяциялаймыз.
  2. «стахановшылар». Біз көп жұмыс істейміз, өзімізге қанағаттанамыз, бірақ біз шешетін мәселелер біздің жеке қателіктеріміздің/кемшіліктеріміздің/елеусіздігіміздің салдары екенін байқамаймыз. Орындалмайтын жұмыстар.
  3. «Сәлем әлемінің күші». Біз барлық жаңа және ең қызықты нәрселерді өндіріске енгізуге асығамыз.

Неліктен бәрі ойдағыдай болды?

Әрине, мен осы уақыт ішінде бізде болған барлық қателерді санамадым, бірақ кез келген ерекшеліктегі жоба үшін ең көп тараған қателер. Қателерді жазудың бұл түрі болашақта оларды болдырмауға көмектеседі.

Біз компания ішінде осындай шағын стартапты қалай құрғанымыз және бизнесті сатып алынған жүйеден өзіндік бір нәрсеге көшуге қалай сендіру туралы аз.

№0 шарт. Компаниядағы салауатты климат. Бұл печенье алудың стресстік жағдайында қызметкерлердің «жанып тұрған көздері» және қарым-қатынас дағдылары ғана емес. Бұл барлық өзара әрекеттесулер туралы.

№1 шарт. Не істеп жатқаныңызға сеніңіз. Шынымды айтсам, егер біз сатып алынған жүйені болтқа дейін бөлшектемей, яғни шегініп, бұл жүйенің салқын екенін және бізді жеңетінін біле тұра, ұшқышты қабылдағанда ешқандай мүмкіндік болмас еді деп ойлаймын.

Біз не істедік: 1) сатып алу жүйесін анықтадық, оның көмегімен біз бизнестің негізгі сұраныстарын шештік жақсырақ жарасады. Содан кейін, шешімге берген бағамыз сарапшылардың бағасы болды.

Егер біз жай ғана келіп: «Жігіттер, бәрі бос, біз мұнымен айналысқымыз келмейді және нөлден өзімізді өзіміз жасауды шештік» десек, олар бізге ештеңе берер ме еді? Әрең. Оның үстіне, жауап жақсы есте қалатындай түрде алынады :)

№2 шарт. Біз бірінші қадамды кішкентай жасаймыз. Бірінші гипотезаны жасап, оны тексерейік. Бұған жеке уақытыңызды да жұмсай аласыз. Егер сіз уақытыңызды босқа өткізгіңіз келмесе, онда мұндай нәрсені мүлдем қабылдамауыңыз керек. Ал егер сіз кішкентай гипотезаны сынағыңыз келмесе, бірақ оны бірден керемет және тамаша орындағыңыз келсе, мұндай адамдардан аулақ болыңыз!

Біздің жолымыз болды және ең бірінші гипотеза жұмыс істеді. Бірақ бұл әрқашан бола бермейді. Мысалы, келесі жобалардың бірінде әкімші панелін ұқсас пилоттың бөлігі ретінде алға жылжытқанда, біз үшін тек 18-ші нұсқа жұмыс істеді. Ал снарядқа алғашқы 17 жақындау нәтижесіз болды. Айтпақшы, әкімші панелін құру тарихында сюжеттік бұралулар бразилиялық телехикаялар деңгейінде болды, өйткені команда сол кезде ардагер болған жігіттерден, нағыз «үгітілген орамдардан» құралған.

№3 шарт. Біз MVP жасаймыз және шешім қабылдаушыдан ауырсынуды іздейміз. Әрине, сіз оған отызыншы рет қандай да бір идеяны әкеліп жатқаныңыздан-ақ оның жүзінде қорқыныш болуы мүмкін. Бірақ бәрібір. Біз оның проблемаларын өз өнімімізбен қалай шешетінімізді нақты көрсетеміз.

№4 шарт. Тізеде біз тез көрінетін ұшқышты жасаймыз шамамен шамамен түпкілікті нәтиже ретінде. Барлығын шынымен керемет ету қызықтырады, бірақ сіз перфекционизмге түсіп қалуыңыз мүмкін, бұл ұшқыштың орнына қазірдің өзінде тамаша өнімнің пилоттық нұсқасын көрсеткіңіз келуі мүмкін. Бірақ олар жоқ. Сондықтан тек таяқшалардан біреуін жасаңыз.

№5 шарт. Өнім. Жоба өсіп жатыр, қаржы бөлініп, тәжірибесі мол мамандар келіп жатыр.
Ал егер сіз классикалық стартапшы болсаңыз, онда бұл сізге ысқырықпен тастау керек болатын сәт. Өйткені ең шыңға оңай ұшулар және болып жатқан оқиғалардың жалпы бақыт сезімі тез таралады.

Өндіріске өту нақты жұмыс жүктемелерімен бетпе-бет келуді, ондаған жүйелермен интеграцияны білдіреді және сіз жаңа функционалдылықты жасағанда, техникалық қызмет көрсету бөлігі ретінде бір уақытта ескі нұсқаларды нақтылайсыз. Мұның бәрі идеяны ойлап табудан және клиенттің бір ғана мәселесін жақсы болса да шешуден әлдеқайда күрделі мәселелер.

Бұл қиындықтар және дағдылардың өсуі дәл осы кезеңде орын алады.

Оқығаныңыз үшін рахмет. Жаңа код құтты болсын!

Ақпарат көзі: www.habr.com

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster