Cum un program mic a transformat un birou mic într-o companie federală cu un profit de peste 100 de milioane de ruble/lună

La sfârșitul lui decembrie 2008, am fost invitat la unul dintre serviciile de taxi din Perm cu scopul de a automatiza procesele de afaceri existente. În general, mi s-au dat trei sarcini fundamentale:


  • Dezvoltați un pachet software pentru un call center cu o aplicație mobilă pentru șoferii de taxi și automatizați procesele interne de afaceri.
  • Totul trebuia făcut în cel mai scurt timp posibil.
  • Aveți propriul software, mai degrabă decât achiziționat de la dezvoltatori terți, care în viitor, pe măsură ce afacerea se dezvoltă, poate fi scalat independent la condițiile de piață în continuă schimbare.

La acel moment, nu înțelegeam cum funcționează această piață și nuanțele ei, dar, cu toate acestea, două lucruri îmi erau evidente. Centrul de apeluri trebuie să fie construit pe baza software-ului open source asterisk PBX. Schimbul de informații între call center și aplicația mobilă este în esență o soluție client-server cu toate modelele corespunzătoare pentru proiectarea arhitecturii viitorului proiect și programarea acestuia.

După o evaluare preliminară a sarcinilor, termenelor și costurilor pentru proiect și după ce am convenit asupra tuturor problemelor necesare cu proprietarul serviciului de taxi, am început lucrul în ianuarie 2009.

Privind înainte, voi spune imediat. Rezultatul a fost o platformă scalabilă care rulează pe peste 60 de servere în 12 orașe din Rusia și 2 din Kazahstan. Profitul total al companiei a fost de peste 100 de milioane de ruble/lună.

Prima etapă. Prototip

Deoarece la acel moment nu aveam experiență practică în telefonia IP și eram doar superficial familiarizat cu asteriscul ca parte a experimentelor „acasă”, s-a decis să încep să lucrez cu dezvoltarea unei aplicații mobile și a unei părți de server. În același timp, eliminarea golurilor în cunoștințele cu privire la alte sarcini.

Dacă cu aplicația mobilă totul era mai mult sau mai puțin clar. La acel moment, putea fi scris doar în java pentru telefoane simple cu buton, dar scrierea unui server care deservește clienții mobili era puțin mai complicată:

  • Ce sistem de operare server va fi folosit;
  • Pe baza logicii că se alege un limbaj de programare pentru o sarcină, și nu invers, și ținând cont de punctul 1, care limbaj de programare va fi optim pentru rezolvarea problemelor;
  • În timpul proiectării, a fost necesar să se ia în considerare sarcinile mari viitoare așteptate asupra serviciului;
  • Ce bază de date poate garanta toleranța la erori la sarcini mari și cum să mențină un timp de răspuns rapid al bazei de date pe măsură ce numărul de solicitări către aceasta crește;
  • Factorul determinant a fost viteza de dezvoltare și capacitatea de a scala rapid codul
  • Costul echipamentelor și întreținerea acestuia în viitor (una dintre condițiile clientului este ca serverele să fie amplasate pe teritoriul aflat sub controlul acestuia);
  • Costul dezvoltatorilor de care va fi nevoie în următoarele etape de lucru pe platformă;

Precum și multe alte probleme legate de proiectare și dezvoltare.

Înainte de a începe lucrul la proiect, i-am propus următoarea decizie strategică proprietarului afacerii: deoarece proiectul este destul de complex, implementarea lui va dura o perioadă semnificativă de timp, așa că mai întâi creez o versiune MVP, care nu va dura mult timp și bani, dar care va permite companiei sale să obțină un avantaj competitiv pe piață deja „aici și acum”, și își va extinde și capacitățile ca serviciu de taxi. La rândul său, o astfel de soluție intermediară îmi va oferi timp pentru a proiecta mai atent soluția finală și timp pentru experimente tehnice. În același timp, soluția software implementată nu va fi garantată a fi proiectată corect și poate fi reproiectată sau înlocuită radical în viitor, dar cu siguranță va îndeplini funcționalitatea minimă necesară pentru a „se desprinde de concurenți”. Fondatorului taxiului i-a plăcut ideea, așa că până la urmă au făcut-o.

Primele două săptămâni le-am petrecut studiind procesele de afaceri din companie și studiind munca unui taxi din interior. A efectuat o analiză de afaceri despre unde, ce și cum poate fi automatizat și dacă este necesar. Cu ce ​​dificultăți și probleme se confruntă angajații companiei? Cum sunt rezolvate. Cum este organizată ziua de lucru pentru angajații companiei. Ce instrumente folosesc?

Până la sfârșitul celei de-a treia săptămâni, după ce am început munca și am studiat problemele de interes pe internet, ținând cont de dorințele proprietarului afacerii, precum și de propriile mele cunoștințe și capacități la acel moment, s-a decis să se aplice următoarea stivă :

  • Server de baze de date: MsSQL (versiunea gratuită cu limită de fișiere de bază de date de până la 2 GB);
  • Dezvoltarea unui server care deservește clienții mobili în Delphi sub Windows, deoarece exista deja un server Windows pe care urma să fie instalată baza de date, precum și mediul de dezvoltare în sine facilitează dezvoltarea rapidă;
  • Ținând cont de vitezele scăzute de internet pe telefoanele mobile din 2009, protocolul de schimb între client și server trebuie să fie binar. Acest lucru va reduce dimensiunea pachetelor de date transmise și, ca rezultat, va crește stabilitatea lucrului clienților cu serverul;

Alte două săptămâni au fost petrecute proiectând protocolul și baza de date. Au rezultat 12 pachete care asigură schimbul tuturor datelor necesare între clientul mobil și server și aproximativ 20 de tabele în baza de date. Am făcut această parte a lucrării ținând cont de viitor, chiar dacă trebuie să schimb complet stiva de tehnologie, structura pachetelor și a bazei de date ar trebui să rămână neschimbată.

După lucrările pregătitoare, a fost posibilă începerea implementării practice a ideii. Pentru a accelera puțin procesul și a elibera timp pentru alte sarcini, am realizat o versiune schiță a aplicației mobile, am schițat interfața de utilizare, parțial UX și am implicat un programator java familiar în proiect. Și s-a concentrat pe dezvoltarea, proiectarea și testarea server-side.

Până la sfârșitul celei de-a doua luni de lucru pe MVP, prima versiune a prototipului de server și client era gata.

Și până la sfârșitul celei de-a treia luni, după teste sintetice și teste de teren, remedieri de erori, îmbunătățiri minore ale protocolului și bazei de date, aplicația a fost gata pentru producție. Ceea ce s-a făcut.

Din acest moment începe cea mai interesantă și mai dificilă parte a proiectului.

În timpul tranziției șoferilor la noul software, a fost organizată serviciul de 24 de ore. Deoarece nu toată lumea putea veni în timpul programului de lucru în timpul zilei. În plus, din punct de vedere administrativ, printr-o hotărâre puternică a fondatorului companiei, s-a organizat în așa fel încât autentificarea/parola să fie introdusă de către managerul serviciului de taxi și să nu fie comunicate șoferului. Din partea mea, a fost nevoie de suport tehnic pentru utilizatori în caz de defecțiuni și situații neprevăzute.

Legea lui Murphy ne spune: „Orice poate merge prost, va merge prost”. Și exact așa au mers prost lucrurile... Un lucru este când eu și mai mulți taximetriști am testat aplicația pe câteva zeci de comenzi de testare. Și este o problemă complet diferită când peste 500 de șoferi pe linie lucrează în timp real la comenzi reale de la oameni reali.

Arhitectura aplicației mobile a fost simplă și au fost vizibil mai puține erori în ea decât în ​​server. Prin urmare, principalul obiectiv al muncii a fost pe partea de server. Cea mai critică eroare din aplicație a fost problema deconectarii de la server atunci când internetul de pe telefon a fost pierdut și sesiunea a fost restabilită. Și internetul a dispărut destul de des. În primul rând, în acei ani, internetul de pe telefon în sine nu era suficient de stabil. În al doilea rând, au existat multe puncte moarte în care Internetul pur și simplu nu funcționa. Am identificat această problemă aproape imediat și în 24 de ore am remediat și actualizat toate aplicațiile instalate anterior.

Serverul a avut în principal erori în algoritmul de distribuție a comenzilor și procesarea incorectă a unor solicitări de la clienți. La identificarea erorilor, am corectat și actualizat serverul.

De fapt, nu au existat atât de multe probleme tehnice în această etapă. Toată dificultatea a fost că am fost de serviciu la birou aproape o lună, mergând doar ocazional acasă. Probabil de 4-5 ori. Și am adormit la nebunie, pentru că la acea vreme lucram singur la proiect și nimeni în afară de mine nu putea repara nimic.

O lună, asta nu înseamnă că totul s-a defectat în mod constant timp de o lună și am programat ceva fără să mă opresc. Tocmai am decis asta. La urma urmei, afacerea funcționa deja și făcea profit. Este mai bine să joci în siguranță și să te odihnești mai târziu decât să pierzi clienți și profituri acum. Cu toții am înțeles foarte bine acest lucru, așa că întreaga echipă a dedicat colectiv maximă atenție și timp pentru introducerea de noi software în sistemul de taxi. Și ținând cont de traficul actual de comenzi, cu siguranță vom elimina toate neajunsurile în decurs de o lună. Ei bine, erorile ascunse care pot rămâne cu siguranță nu vor avea consecințe critice asupra procesului de afaceri și, dacă este necesar, pot fi corectate în mod obișnuit.

Aici este de remarcat asistența neprețuită din partea directorilor și maiștrilor serviciilor de taximetrie, care, cu o înțelegere maximă a complexității situației de transfer al șoferilor pe un software nou, au lucrat cu șoferii non-stop. De fapt, după finalizarea instalării de noi programe pe telefoane, nu am pierdut niciun driver. Și nu au crescut critic procentul de neeliminare a clienților, care a revenit curând la niveluri normale.

Aceasta a încheiat prima etapă a lucrărilor la proiect. Și trebuie menționat că rezultatul nu a întârziat să apară. Prin automatizarea distribuirii comenzilor către șoferi fără intervenție umană, timpul mediu de așteptare pentru un taxi de către un client a fost redus cu un ordin de mărime, ceea ce a sporit în mod natural loialitatea clienților față de serviciu. Acest lucru a dus la o creștere a numărului de comenzi. În urma acesteia, numărul taximetriștilor a crescut. Ca urmare, a crescut și numărul de comenzi finalizate cu succes. Și, ca urmare, profiturile companiei au crescut. Bineînțeles, iată că sunt puțin înaintea mea, deoarece tot acest proces nu a avut loc instantaneu. A spune că conducerea a fost mulțumită înseamnă a nu spune nimic. Mi s-a oferit acces nelimitat la finanțarea ulterioară a proiectului.

Pentru a continua ..

Sursa: www.habr.com

Adauga un comentariu