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

Pada akhir Desember 2008, saya diundang ke salah satu layanan taksi di Perm dengan tujuan mengotomatisasi proses bisnis yang ada. Secara umum, saya diberi tiga tugas mendasar:


  • Mengembangkan paket perangkat lunak untuk pusat panggilan dengan aplikasi seluler untuk pengemudi taksi dan mengotomatisasi proses bisnis internal.
  • Semuanya harus dilakukan dalam waktu sesingkat mungkin.
  • Miliki perangkat lunak Anda sendiri, daripada membeli dari pengembang pihak ketiga, yang di masa depan, seiring berkembangnya bisnis, dapat disesuaikan secara mandiri dengan kondisi pasar yang terus berubah.

Pada saat itu, saya tidak memahami cara kerja pasar ini dan nuansanya, namun ada dua hal yang jelas bagi saya. Pusat panggilan harus dibangun berdasarkan perangkat lunak PBX sumber terbuka. Pertukaran informasi antara pusat panggilan dan aplikasi seluler pada dasarnya adalah solusi klien-server dengan semua pola yang sesuai untuk merancang arsitektur proyek masa depan dan pemrogramannya.

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

Ke depan, saya akan segera mengatakannya. Hasilnya adalah platform terukur yang berjalan pada 60+ server di 12 kota di Rusia dan 2 di Kazakhstan. Total keuntungan perusahaan adalah 100+ juta rubel/bulan.

Tahap satu. Prototipe

Karena pada saat itu saya tidak memiliki pengalaman praktis dalam telepon IP, dan saya hanya mengenal asterisk secara dangkal sebagai bagian dari eksperimen "rumah", diputuskan untuk mulai bekerja dengan pengembangan aplikasi seluler dan bagian server. Pada saat yang sama, menutup kesenjangan pengetahuan pada tugas-tugas lain.

Jika dengan aplikasi seluler semuanya kurang lebih jelas. Pada saat itu, ini hanya dapat ditulis dalam java untuk telepon tombol sederhana, namun menulis server yang melayani klien seluler sedikit lebih rumit:

  • OS server apa yang akan digunakan;
  • Berdasarkan logika bahwa bahasa pemrograman dipilih untuk suatu tugas, dan bukan sebaliknya, dan dengan mempertimbangkan poin 1, bahasa pemrograman mana yang optimal untuk menyelesaikan masalah;
  • Selama perancangan, perlu memperhitungkan perkiraan beban tinggi di masa depan pada layanan;
  • Basis data mana yang dapat menjamin toleransi kesalahan pada beban tinggi dan bagaimana mempertahankan waktu respons basis data yang cepat seiring dengan meningkatnya jumlah permintaan;
  • Faktor penentunya adalah kecepatan pengembangan dan kemampuan untuk menskalakan kode dengan cepat
  • Biaya peralatan dan pemeliharaannya di masa depan (salah satu syarat pelanggan adalah server harus berlokasi di wilayah yang dikuasainya);
  • Biaya pengembang yang akan dibutuhkan pada tahap pengerjaan platform selanjutnya;

Serta banyak masalah lain yang terkait dengan desain dan pengembangan.

Sebelum mulai mengerjakan proyek, saya mengusulkan keputusan strategis berikut kepada pemilik bisnis: karena proyek ini cukup kompleks, implementasinya akan memakan banyak waktu, jadi pertama-tama saya membuat versi MVP, yang tidak akan memakan banyak waktu dan uang, tetapi akan memungkinkan perusahaannya memperoleh keunggulan kompetitif di pasar β€œdi sini dan saat ini”, dan juga akan memperluas kemampuannya sebagai layanan taksi. Pada gilirannya, solusi perantara seperti itu akan memberi saya waktu untuk merancang solusi akhir dengan lebih cermat dan waktu untuk eksperimen teknis. Pada saat yang sama, solusi perangkat lunak yang diterapkan tidak dijamin dirancang dengan benar dan mungkin didesain ulang atau diganti secara radikal di masa mendatang, namun solusi tersebut pasti akan menjalankan fungsionalitas minimum yang diperlukan untuk β€œmelepaskan diri dari pesaing.” Pendiri taksi menyukai ide tersebut, sehingga pada akhirnya mereka melakukannya.

Saya menghabiskan dua minggu pertama mempelajari proses bisnis di perusahaan, dan mempelajari cara kerja taksi dari dalam. Melakukan analisis bisnis tentang di mana, apa dan bagaimana dapat diotomatisasi dan apakah hal itu diperlukan. Kesulitan dan permasalahan apa yang dihadapi karyawan perusahaan? Bagaimana cara mengatasinya. Bagaimana hari kerja diatur bagi karyawan perusahaan. Alat apa yang mereka gunakan?

Pada akhir minggu ketiga, setelah mulai bekerja dan mempelajari isu-isu yang menarik di Internet, dengan mempertimbangkan keinginan pemilik bisnis, serta pengetahuan dan kemampuan saya saat itu, diputuskan untuk menerapkan tumpukan berikut :

  • Server basis data: MsSQL (versi gratis dengan batas file basis data hingga 2GB);
  • Pengembangan server yang melayani klien seluler di Delphi pada Windows, karena sudah ada server Windows tempat database akan diinstal, serta lingkungan pengembangan itu sendiri memfasilitasi perkembangan pesat;
  • Mengingat rendahnya kecepatan Internet di ponsel pada tahun 2009, protokol pertukaran antara klien dan server harus berupa biner. Hal ini akan mengurangi ukuran paket data yang dikirimkan dan, sebagai hasilnya, meningkatkan stabilitas kerja klien dengan server;

Dua minggu berikutnya dihabiskan untuk merancang protokol dan database. Hasilnya adalah 12 paket yang memastikan pertukaran semua data yang diperlukan antara klien seluler dan server dan sekitar 20 tabel di database. Saya melakukan bagian pekerjaan ini dengan mempertimbangkan masa depan, bahkan jika saya harus mengubah tumpukan teknologi sepenuhnya, struktur paket dan database harus tetap tidak berubah.

Setelah pekerjaan persiapan, dimungkinkan untuk memulai implementasi praktis dari ide tersebut. Untuk sedikit mempercepat proses dan meluangkan waktu untuk tugas-tugas lain, saya membuat versi draf aplikasi seluler, membuat sketsa UI, sebagian UX, dan melibatkan programmer Java yang sudah dikenal dalam proyek tersebut. Dan dia fokus pada pengembangan, desain, dan pengujian sisi server.

Pada akhir bulan kedua pengerjaan MVP, versi pertama prototipe server dan klien telah siap.

Dan pada akhir bulan ketiga, setelah pengujian sintetik dan pengujian lapangan, perbaikan bug, perbaikan kecil pada protokol dan database, aplikasi siap untuk produksi. Itulah yang telah dilakukan.

Mulai saat ini bagian paling menarik dan tersulit dari proyek ini dimulai.

Selama transisi pengemudi ke perangkat lunak baru, tugas XNUMX jam diatur. Karena tidak semua orang bisa datang pada jam kerja siang hari. Selain itu, secara administratif, atas kemauan keras pendiri perusahaan, diatur sedemikian rupa sehingga login/password dimasukkan oleh pengelola layanan taksi dan tidak dikomunikasikan kepada pengemudi. Bagi saya, dukungan teknis dari pengguna diperlukan jika terjadi kegagalan dan situasi yang tidak terduga.

Hukum Murphy memberi tahu kita: "Apa pun yang salah, akan salah." Dan justru itulah yang menjadi salah... Ada satu hal yang terjadi ketika saya dan beberapa pengemudi taksi menguji aplikasi tersebut pada beberapa lusin pesanan pengujian. Dan itu adalah masalah yang sama sekali berbeda ketika 500+ pengemudi di jalur bekerja secara real time berdasarkan pesanan nyata dari orang-orang nyata.

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

Server terutama mengalami kesalahan dalam algoritma distribusi pesanan dan kesalahan pemrosesan beberapa permintaan dari klien. Setelah mengidentifikasi gangguan, saya memperbaiki dan memperbarui server.

Faktanya, tidak banyak masalah teknis pada tahap ini. Kesulitannya adalah saya bertugas di kantor selama hampir sebulan, hanya sesekali pulang ke rumah. Mungkin 4-5 kali. Dan saya tertidur dalam keadaan bugar, karena pada saat itu saya sedang mengerjakan proyek sendirian dan tidak seorang pun kecuali saya yang dapat memperbaiki apa pun.

Sebulan, ini tidak berarti bahwa semuanya terus-menerus bermasalah selama sebulan dan saya mengkodekan sesuatu tanpa henti. Kami baru saja memutuskan itu. Toh, bisnisnya sudah berjalan dan menghasilkan keuntungan. Lebih baik bermain aman dan beristirahat nanti daripada kehilangan pelanggan dan keuntungan sekarang. Kami semua memahami hal ini dengan sangat baik, sehingga seluruh tim secara kolektif mencurahkan perhatian dan waktu maksimal untuk memperkenalkan perangkat lunak baru ke dalam sistem taksi. Dan dengan mempertimbangkan lalu lintas pesanan saat ini, kami pasti akan menghilangkan semua kekurangannya dalam waktu satu bulan. Nah, bug tersembunyi yang mungkin masih ada tentu tidak akan berdampak kritis pada proses bisnis dan, jika perlu, dapat diperbaiki secara rutin.

Di sini perlu diperhatikan bantuan yang sangat berharga dari direktur dan mandor layanan taksi, yang, dengan pemahaman maksimal tentang kompleksitas situasi peralihan pengemudi ke perangkat lunak baru, bekerja dengan pengemudi sepanjang waktu. Faktanya, setelah menyelesaikan instalasi program baru di ponsel, kami tidak kehilangan satu driver pun. Dan mereka tidak secara signifikan meningkatkan persentase klien yang tidak dikeluarkan, yang segera kembali ke tingkat normal.

Ini menyelesaikan tahap pertama pengerjaan proyek tersebut. Dan perlu dicatat bahwa hasilnya tidak akan lama lagi. Dengan mengotomatiskan distribusi pesanan kepada pengemudi tanpa campur tangan manusia, waktu tunggu rata-rata taksi oleh klien berkurang beberapa kali lipat, yang secara alami meningkatkan loyalitas pelanggan terhadap layanan tersebut. Hal ini menyebabkan peningkatan jumlah pesanan. Setelah itu, jumlah supir taksi bertambah. Hasilnya, jumlah pesanan yang berhasil diselesaikan pun meningkat. Dan sebagai hasilnya, keuntungan perusahaan meningkat. Tentu saja, di sini saya terlalu terburu-buru, karena seluruh proses ini tidak terjadi secara instan. Mengatakan bahwa manajemen senang berarti tidak mengatakan apa-apa. Saya diberi akses tak terbatas untuk pendanaan proyek lebih lanjut.

Bersambung ..

Sumber: www.habr.com

Tambah komentar