Làm thế nào một chương trình nhỏ đã biến một văn phòng nhỏ thành một công ty liên bang với lợi nhuận hơn 100 triệu rúp/tháng

Vào cuối tháng 2008 năm XNUMX, tôi được mời đến một trong những dịch vụ taxi ở Perm với mục tiêu tự động hóa các quy trình kinh doanh hiện có. Nói chung, tôi được giao ba nhiệm vụ cơ bản:


  • Phát triển gói phần mềm tổng đài với ứng dụng di động dành cho tài xế taxi và tự động hóa các quy trình nghiệp vụ nội bộ.
  • Mọi thứ phải được thực hiện trong thời gian ngắn nhất có thể.
  • Có phần mềm của riêng bạn, thay vì mua từ các nhà phát triển bên thứ ba, trong tương lai, khi doanh nghiệp phát triển, có thể mở rộng quy mô độc lập để phù hợp với điều kiện thị trường thay đổi liên tục.

Vào thời điểm đó, tôi không hiểu thị trường này hoạt động như thế nào và các sắc thái của nó, tuy nhiên, tôi thấy rõ hai điều. Tổng đài phải được xây dựng trên nền tảng phần mềm mã nguồn mở PBX. Việc trao đổi thông tin giữa trung tâm cuộc gọi và ứng dụng di động về cơ bản là một giải pháp máy khách-máy chủ với tất cả các mẫu tương ứng để thiết kế kiến ​​trúc và lập trình của dự án trong tương lai.

Sau khi đánh giá sơ bộ về nhiệm vụ, thời hạn và chi phí của dự án, đồng thời thống nhất tất cả các vấn đề cần thiết với chủ dịch vụ taxi, tôi bắt đầu làm việc vào tháng 2009 năm XNUMX.

Nhìn về phía trước, tôi sẽ nói ngay. Kết quả là một nền tảng có thể mở rộng chạy trên hơn 60 máy chủ ở 12 thành phố ở Nga và 2 thành phố ở Kazakhstan. Tổng lợi nhuận của công ty là hơn 100 triệu rúp/tháng.

Giai đoạn một. Nguyên mẫu

Vì vào thời điểm đó, tôi chưa có kinh nghiệm thực tế về điện thoại IP và chỉ mới làm quen với dấu hoa thị như một phần của thử nghiệm “tại nhà”, nên tôi quyết định bắt đầu phát triển ứng dụng di động và phần máy chủ. Đồng thời, lấp đầy lỗ hổng kiến ​​thức ở các nhiệm vụ khác.

Nếu với ứng dụng di động thì mọi thứ ít nhiều đã rõ ràng. Vào thời điểm đó, nó chỉ có thể được viết bằng java cho điện thoại nút bấm đơn giản, nhưng việc viết một máy chủ phục vụ khách hàng di động thì phức tạp hơn một chút:

  • Hệ điều hành máy chủ nào sẽ được sử dụng;
  • Dựa trên logic là ngôn ngữ lập trình được chọn cho một nhiệm vụ chứ không phải ngược lại và có tính đến điểm 1, ngôn ngữ lập trình nào sẽ tối ưu để giải quyết vấn đề;
  • Trong quá trình thiết kế, cần phải tính đến tải trọng cao dự kiến ​​​​trong tương lai đối với dịch vụ;
  • Cơ sở dữ liệu nào có thể đảm bảo khả năng chịu lỗi khi tải cao và cách duy trì thời gian phản hồi cơ sở dữ liệu nhanh khi số lượng yêu cầu gửi tới nó tăng lên;
  • Yếu tố quyết định là tốc độ phát triển và khả năng mở rộng mã nhanh chóng
  • Chi phí thiết bị và bảo trì thiết bị trong tương lai (một trong những điều kiện của khách hàng là máy chủ phải được đặt trong lãnh thổ do khách hàng kiểm soát);
  • Chi phí cho các nhà phát triển sẽ cần thiết trong các giai đoạn làm việc tiếp theo trên nền tảng;

Cũng như nhiều vấn đề khác liên quan đến thiết kế và phát triển.

Trước khi bắt đầu thực hiện dự án, tôi đã đề xuất với chủ doanh nghiệp quyết định chiến lược sau: vì dự án khá phức tạp nên việc triển khai dự án sẽ mất một khoảng thời gian đáng kể, vì vậy trước tiên tôi tạo một phiên bản MVP, sẽ không mất nhiều thời gian và tiền, nhưng điều này sẽ cho phép công ty của anh ta đạt được lợi thế cạnh tranh trên thị trường “ở đây và bây giờ”, đồng thời cũng sẽ mở rộng khả năng của mình như một dịch vụ taxi. Đổi lại, giải pháp trung gian như vậy sẽ giúp tôi có thời gian để thiết kế giải pháp cuối cùng một cách chu đáo hơn và thời gian cho các thí nghiệm kỹ thuật. Đồng thời, giải pháp phần mềm được triển khai sẽ không đảm bảo được thiết kế chính xác và có thể được thiết kế lại hoặc thay thế hoàn toàn trong tương lai nhưng chắc chắn sẽ thực hiện được chức năng cần thiết tối thiểu để “vượt xa đối thủ”. Người sáng lập hãng taxi thích ý tưởng này nên cuối cùng họ đã thực hiện được.

Tôi đã dành hai tuần đầu tiên để nghiên cứu quy trình kinh doanh trong công ty và nghiên cứu công việc của một chiếc taxi từ bên trong. Đã tiến hành phân tích hoạt động kinh doanh về địa điểm, cái gì và bằng cách nào có thể được tự động hóa và liệu nó có cần thiết hay không. Nhân viên công ty gặp phải những khó khăn, vướng mắc gì? Chúng được giải quyết như thế nào. Cách tổ chức ngày làm việc cho nhân viên công ty. Họ sử dụng công cụ gì?

Đến cuối tuần thứ ba, sau khi bắt đầu công việc và nghiên cứu các vấn đề được quan tâm trên Internet, cân nhắc mong muốn của chủ doanh nghiệp cũng như kiến ​​thức và năng lực của bản thân lúc đó, tôi quyết định áp dụng ngăn xếp sau :

  • Máy chủ cơ sở dữ liệu: MsSQL (phiên bản miễn phí với giới hạn tệp cơ sở dữ liệu lên tới 2GB);
  • Phát triển một máy chủ phục vụ các máy khách di động ở Delphi trong Windows, vì đã có một máy chủ Windows nơi cơ sở dữ liệu sẽ được cài đặt trên đó, cũng như bản thân môi trường phát triển tạo điều kiện cho sự phát triển nhanh chóng;
  • Do tốc độ Internet thấp trên điện thoại di động vào năm 2009, giao thức trao đổi giữa máy khách và máy chủ phải ở dạng nhị phân. Điều này sẽ làm giảm kích thước của các gói dữ liệu được truyền và do đó, tăng tính ổn định khi làm việc của máy khách với máy chủ;

Hai tuần nữa được dành để thiết kế giao thức và cơ sở dữ liệu. Kết quả là 12 gói đảm bảo trao đổi tất cả dữ liệu cần thiết giữa máy khách và máy chủ di động và khoảng 20 bảng trong cơ sở dữ liệu. Tôi đã thực hiện phần công việc này có tính đến tương lai, ngay cả khi tôi phải thay đổi hoàn toàn nền tảng công nghệ, cấu trúc của các gói và cơ sở dữ liệu sẽ không thay đổi.

Sau công việc chuẩn bị, ý tưởng đã có thể bắt đầu được thực hiện trên thực tế. Để tăng tốc quá trình một chút và giải phóng thời gian cho các tác vụ khác, tôi đã tạo một phiên bản nháp của ứng dụng di động, phác thảo giao diện người dùng, một phần UX và mời một lập trình viên java quen thuộc vào dự án. Và anh ấy tập trung vào việc phát triển, thiết kế và thử nghiệm phía máy chủ.

Vào cuối tháng thứ hai làm việc trên MVP, phiên bản đầu tiên của nguyên mẫu máy chủ và máy khách đã sẵn sàng.

Và đến cuối tháng thứ ba, sau các thử nghiệm tổng hợp và thử nghiệm hiện trường, sửa lỗi, cải tiến nhỏ đối với giao thức và cơ sở dữ liệu, ứng dụng đã sẵn sàng để sản xuất. Đó là những gì đã được thực hiện.

Từ thời điểm này, phần thú vị nhất và khó khăn nhất của dự án bắt đầu.

Trong quá trình chuyển đổi trình điều khiển sang phần mềm mới, nhiệm vụ XNUMX giờ đã được tổ chức. Vì không phải ai cũng có thể đến vào giờ làm việc trong ngày. Ngoài ra, về mặt hành chính, theo quyết định kiên quyết của người sáng lập công ty, nó đã được tổ chức theo cách người quản lý dịch vụ taxi nhập thông tin đăng nhập/mật khẩu và chúng không được thông báo cho tài xế. Về phần tôi, cần hỗ trợ kỹ thuật cho người dùng trong trường hợp xảy ra lỗi và các tình huống không lường trước được.

Định luật Murphy cho chúng ta biết: “Bất cứ điều gì có thể sai thì sẽ sai”. Và đó chính xác là cách mọi thứ đã diễn ra không như ý muốn... Có một điều xảy ra khi tôi và một số tài xế taxi đã thử nghiệm ứng dụng này trên hàng chục đơn đặt hàng thử nghiệm. Và đó là một vấn đề hoàn toàn khác khi hơn 500 tài xế trực tuyến làm việc theo thời gian thực theo đơn đặt hàng thực từ người thực.

Kiến trúc của ứng dụng di động rất đơn giản và có ít lỗi hơn đáng kể so với trên máy chủ. Vì vậy, trọng tâm chính của công việc là ở phía máy chủ. Trục trặc nghiêm trọng nhất của ứng dụng là sự cố ngắt kết nối với máy chủ khi Internet trên điện thoại bị mất và phiên được khôi phục lại. Và Internet biến mất khá thường xuyên. Thứ nhất, trong những năm đó Internet trên điện thoại không đủ ổn định. Thứ hai, có nhiều điểm mù khiến Internet không hoạt động. Chúng tôi đã xác định được sự cố này gần như ngay lập tức và trong vòng XNUMX giờ đã khắc phục và cập nhật tất cả các ứng dụng đã cài đặt trước đó.

Máy chủ chủ yếu có lỗi trong thuật toán phân phối đơn hàng và xử lý không chính xác một số yêu cầu từ khách hàng. Khi xác định được trục trặc, tôi đã sửa và cập nhật máy chủ.

Trên thực tế, không có nhiều vấn đề kỹ thuật ở giai đoạn này. Khó khăn nhất là tôi phải trực ở cơ quan gần một tháng, thỉnh thoảng mới về nhà. Chắc là 4-5 lần. Và tôi đã ngủ say, vì lúc đó tôi đang thực hiện dự án một mình và không ai ngoài tôi có thể sửa được bất cứ thứ gì.

Một tháng, điều này không có nghĩa là mọi thứ liên tục trục trặc trong một tháng và tôi đã viết mã thứ gì đó không ngừng nghỉ. Chúng tôi vừa quyết định điều đó. Suy cho cùng, doanh nghiệp đã hoạt động và có lãi. Thà chơi an toàn và nghỉ ngơi muộn còn hơn là mất khách hàng và lợi nhuận bây giờ. Tất cả chúng tôi đều hiểu rất rõ điều này nên cả nhóm đã cùng nhau dành sự quan tâm và thời gian tối đa để đưa phần mềm mới vào hệ thống taxi. Và xét đến lưu lượng đơn hàng hiện tại, chúng tôi chắc chắn sẽ loại bỏ được mọi thiếu sót trong vòng một tháng. Chà, những lỗi ẩn có thể còn sót lại chắc chắn sẽ không gây hậu quả nghiêm trọng cho quá trình kinh doanh và nếu cần, chúng có thể được sửa chữa định kỳ.

Ở đây cần ghi nhận sự hỗ trợ vô giá từ các giám đốc và quản đốc dịch vụ taxi, những người hiểu biết tối đa về mức độ phức tạp của tình huống chuyển tài xế sang phần mềm mới, đã làm việc với tài xế suốt ngày đêm. Trên thực tế, sau khi hoàn tất việc cài đặt các chương trình mới trên điện thoại, chúng tôi không hề mất một driver nào. Và họ đã không tăng đáng kể tỷ lệ khách hàng không loại bỏ, tỷ lệ này đã sớm trở lại mức bình thường.

Điều này đã hoàn thành giai đoạn đầu tiên của công việc trong dự án. Và cần lưu ý rằng kết quả sẽ không còn lâu nữa. Bằng cách tự động hóa việc phân phối đơn đặt hàng cho tài xế mà không cần sự can thiệp của con người, thời gian chờ taxi trung bình của khách hàng đã giảm đi rất nhiều, điều này làm tăng lòng trung thành của khách hàng đối với dịch vụ một cách tự nhiên. Điều này dẫn đến số lượng đơn đặt hàng tăng lên. Sau đó, số lượng tài xế taxi ngày càng tăng. Nhờ đó, số lượng đơn hàng hoàn thành thành công cũng tăng lên. Và kết quả là lợi nhuận của công ty tăng lên. Tất nhiên, ở đây tôi đang đi trước bản thân một chút vì toàn bộ quá trình này không diễn ra ngay lập tức. Nói rằng ban quản lý hài lòng là không nói gì. Tôi đã được cấp quyền tiếp cận không giới hạn để tiếp tục tài trợ cho dự án.

Để được tiếp tục ..

Nguồn: www.habr.com

Thêm một lời nhận xét