Bagaimana sebuah program kecil mengubah sebuah kantor kecil menjadi perusahaan federal dengan keuntungan 100+ juta rubel / bulan

Pada akhir Desember 2008 saya diundang ke salah satu layanan Perm taksi untuk mengotomatisasi proses bisnis yang ada. Secara umum, tiga tugas mendasar ditetapkan sebelum saya:


  • Kembangkan paket perangkat lunak untuk call center dengan aplikasi seluler untuk pengemudi taksi dan otomatisasi proses bisnis internal.
  • Segalanya harus dilakukan sesegera mungkin.
  • Untuk memiliki perangkat lunak mereka sendiri, dan tidak dibeli dari pengembang pihak ketiga, yang di masa depan, seiring perkembangan bisnis, dapat ditingkatkan secara mandiri untuk terus mengubah kondisi pasar.

Pada saat itu, saya tidak mengerti bagaimana pasar ini terstruktur dan nuansanya, tetapi bagaimanapun juga ada dua hal yang jelas bagi saya. Call center harus dibangun atas dasar pertukaran perangkat lunak asterisk open source. Pertukaran informasi antara call center dan aplikasi mobile pada dasarnya adalah solusi client-server dengan semua pola yang relevan untuk merancang arsitektur proyek masa depan dan pemrogramannya.


Setelah penilaian awal dari tugas, tenggat waktu dan biaya proyek, setelah menyetujui semua pertanyaan yang diperlukan dengan pemilik layanan taksi, pada Januari 2009 saya mulai bekerja.


Ke depan, saya akan katakan segera. Hasilnya adalah platform yang dapat diukur berjalan di 60+ server di 12 kota di Rusia dan 2 Kazakhstan. Total laba perusahaan adalah 100+ juta rubel / bulan.


Tahap Satu. Prototipe


Karena pada waktu itu saya tidak memiliki pengalaman praktis dalam IP telephony, dan saya terbiasa dengan asterisk secara dangkal sebagai bagian dari eksperimen "rumah", diputuskan untuk mulai bekerja dengan pengembangan aplikasi mobile dan bagian server. Sepanjang jalan, menutup celah pengetahuan pada tugas-tugas lain.


Jika dengan aplikasi seluler, semuanya kurang lebih jelas. Pada saat itu, itu hanya bisa ditulis dalam java untuk telepon tombol-tekan yang sederhana, kemudian dengan penulisan server yang melayani klien seluler, pertanyaannya agak lebih rumit:


  • OS server apa yang akan digunakan;
  • Berdasarkan logika bahwa bahasa pemrograman dipilih untuk tugas, dan bukan sebaliknya dan memperhitungkan klaim 1, bahasa pemrograman mana yang akan optimal untuk menyelesaikan masalah;
  • Ketika merancang, perlu untuk memperhitungkan beban tinggi yang diharapkan di masa depan pada layanan;
  • Basis data apa yang dapat menjamin toleransi kesalahan pada beban tinggi dan bagaimana mempertahankan waktu respons basis data yang cepat dengan peningkatan jumlah akses ke dalamnya;
  • Faktor yang menentukan adalah kecepatan pengembangan dan kemampuan untuk dengan cepat skala kode
  • Biaya peralatan dan pemeliharaannya di masa depan (salah satu kondisi pelanggan - server harus berlokasi di wilayahnya);
  • Biaya pengembang yang akan dibutuhkan pada tahap kerja berikutnya di platform;

Serta banyak masalah lain yang berkaitan dengan desain dan pengembangan.


Sebelum memulai pekerjaan pada proyek, saya mengusulkan solusi strategis berikut kepada pemilik bisnis: karena proyek ini cukup kompleks, implementasinya akan memakan banyak waktu, jadi pertama saya membuat versi MVP yang tidak memakan banyak waktu dan uang, tetapi yang akan memungkinkan perusahaannya untuk mendapatkan keunggulan kompetitif pasar sudah "di sini dan sekarang", dan juga akan memperluas kemampuannya sebagai layanan taksi. Bagi saya, pada gilirannya, solusi perantara semacam itu akan memberi saya waktu untuk lebih sengaja merancang solusi final dan waktu untuk eksperimen teknis. Pada saat yang sama, solusi perangkat lunak yang diimplementasikan tidak akan dijamin dirancang dengan benar dan mungkin akan diulang secara radikal atau diganti di masa mendatang, tetapi pasti akan melakukan fungsi minimum yang diperlukan untuk "pemisahan dari pesaing". Pendiri taksi menyukai ide itu, jadi pada akhirnya mereka melakukannya.


Dua minggu pertama saya habiskan untuk mempelajari proses bisnis di perusahaan, dan mempelajari pekerjaan taksi "dari dalam". Melakukan analisis bisnis, di mana, apa dan bagaimana mengotomatisasi dan apakah itu perlu sama sekali. Kesulitan dan masalah apa yang dihadapi karyawan perusahaan? Bagaimana mengatasinya. Bagaimana hari kerja diselenggarakan oleh karyawan perusahaan. Alat apa yang Anda gunakan.


Pada akhir minggu ketiga setelah mulai bekerja dan mempelajari masalah menarik di Internet, dengan mempertimbangkan keinginan pemilik bisnis, serta pengetahuan dan kemampuan saya sendiri pada waktu itu, diputuskan untuk menggunakan tumpukan berikut:


  • Database Server: MsSQL (versi gratis dengan batasan file database hingga 4GB);
  • Pengembangan server yang melayani klien seluler di Delphi untuk windows, karena sudah ada server windows di mana basis data akan dipasang, serta lingkungan pengembangan itu sendiri berkontribusi terhadap perkembangan yang cepat;
  • Mengingat kecepatan Internet yang rendah pada ponsel pada tahun 2009, protokol pertukaran antara klien dan server harus biner. Ini akan mengurangi ukuran paket data yang ditransmisikan dan, sebagai hasilnya, meningkatkan stabilitas klien yang bekerja dengan server;

Dua minggu lagi dihabiskan untuk mendesain protokol dan basis data. Ternyata 12 paket yang menyediakan pertukaran semua data yang diperlukan antara klien seluler dan server dan sekitar 20 tabel dalam database. Saya melakukan bagian pekerjaan ini dengan pandangan ke masa depan, bahkan jika saya harus mengubah tumpukan teknologi sepenuhnya, struktur paket dan basis data harus tetap tidak berubah.


Setelah pekerjaan persiapan, adalah mungkin untuk memulai implementasi ide secara praktis. Untuk mempercepat proses sedikit dan membebaskan diri untuk sisa tugas, saya membuat versi konsep aplikasi mobile, membuat sketsa UI, sebagian UX, dan menarik seorang programmer java yang akrab dengan proyek. Dan dia fokus pada pengembangan sisi server, desain dan pengujian.


Pada akhir bulan kedua bekerja di MVP, versi pertama dari server dan klien prototipe siap.


Dan pada akhir bulan ketiga setelah uji sintetik dan uji coba lapangan, memperbaiki bug, perbaikan kecil pada protokol dan database, aplikasi siap untuk output ke produksi. Yang sudah dilakukan.


Mulai saat ini dimulai bagian yang paling menarik dan paling sulit dari proyek.


Selama transisi driver ke perangkat lunak baru, tugas 24 jam diselenggarakan. Karena tidak semua orang bisa tiba di siang hari selama jam kerja. Selain itu, secara administratif, dengan keputusan yang kuat dari pendiri perusahaan, itu diatur sehingga login / kata sandi dimasukkan oleh manajer layanan taksi dan mereka tidak dikomunikasikan kepada pengemudi. Untuk bagian saya, saya membutuhkan dukungan teknis dari pengguna jika terjadi kegagalan dan situasi yang tidak terduga.


Hukum Murphy memberi tahu kita: "Segala sesuatu yang bisa salah akan salah." Dan bukan itu yang terjadi ... Ini adalah satu hal ketika saya, dan beberapa pengemudi taksi menguji aplikasi pada lusinan pesanan tes. Dan satu hal lagi adalah ketika 500+ driver on the line bekerja secara real time dengan perintah nyata dari orang-orang nyata.


Arsitektur aplikasi seluler sederhana dan ada lebih sedikit bug di dalamnya daripada di server. Oleh karena itu, fokus utama pekerjaan adalah di sisi server. Kesalahan paling kritis dalam aplikasi adalah masalah pemutusan dari server ketika Internet menghilang di telepon dan sesi dipulihkan kembali. Dan Internet menghilang cukup sering. Pertama, Internet pada ponsel itu sendiri tidak cukup stabil pada tahun-tahun itu. Kedua, ada banyak titik buta di mana Internet tidak berfungsi. Kami mengidentifikasi masalah ini segera dan menghilangkan dan memperbarui semua aplikasi yang sebelumnya diinstal dalam waktu 24 jam.


Di server, terutama ada kesalahan dalam algoritma untuk distribusi pesanan dan pemrosesan yang salah dari beberapa permintaan dari klien. Atas fakta mengungkapkan gangguan, dikoreksi dan diperbarui server.


Faktanya, tidak ada begitu banyak masalah teknis pada tahap ini. Seluruh kesulitannya adalah bahwa selama hampir sebulan saya bertugas di kantor, hanya sesekali pulang. 4-5 kali, mungkin. Dan dia tidur bugar dan mulai, karena pada saat itu sendirian bekerja di proyek dan tidak ada yang bisa memperbaiki apa pun kecuali saya.


Sebulan, ini tidak berarti bahwa semuanya terus-menerus buggy selama sebulan, dan saya, tanpa henti, kode sesuatu di sana. Kami baru saja memutuskan begitu. Lagi pula, bisnisnya sudah bekerja dan menghasilkan untung. Dan lebih baik memainkannya dengan aman dan rileks daripada kehilangan pelanggan dan keuntungan sekarang. Kami semua sangat memahami hal ini, sehingga seluruh tim bersama-sama memberikan perhatian dan waktu maksimum untuk memperkenalkan perangkat lunak baru ke dalam sistem taksi. Dan dengan mempertimbangkan lalu lintas pesanan saat ini, dalam sebulan kami pasti akan menghilangkan semua kekurangan. Nah, bug tersembunyi yang mungkin tetap tidak akan memiliki konsekuensi kritis pada proses bisnis dan, jika perlu, mereka dapat diperbaiki dalam urutan kerja.


Di sini, perlu diperhatikan bantuan yang tak ternilai dari para direktur dan pemimpin tim layanan taksi, yang, dengan pemahaman maksimum tentang kompleksitas situasi pemindahan pengemudi ke perangkat lunak baru, bekerja sepanjang waktu dengan pengemudi. Bahkan, setelah menyelesaikan instalasi program baru di ponsel, kami tidak kehilangan satu driver. Dan mereka tidak secara kritis meningkatkan persentase pelanggan non-ekspor, yang segera kembali ke tingkat normal.


Ini adalah tahap pertama pekerjaan proyek. Dan perlu dicatat bahwa hasilnya tidak lama datang. Dengan mengotomatiskan distribusi pesanan kepada pengemudi tanpa campur tangan manusia, waktu tunggu rata-rata untuk taksi oleh klien dikurangi dengan urutan besarnya, yang secara alami meningkatkan loyalitas pelanggan terhadap layanan. Ini telah menyebabkan peningkatan jumlah pesanan. Menyusul peningkatan jumlah pengemudi taksi. Akibatnya, jumlah pesanan yang berhasil diselesaikan meningkat. Dan sebagai hasilnya, laba perusahaan meningkat. Tentu saja, di sini saya berlari sedikit ke depan, karena seluruh proses ini tidak instan. Mengatakan bahwa manajemen sudah cukup berarti tidak mengatakan apa-apa. Saya tidak terbatas dalam pembiayaan lebih lanjut dari proyek ini.


Dilanjutkan ..

Source: https://habr.com/ru/post/id455405/


All Articles