Những sản phẩm chúng tôi tự xây và tự vận hành: bản đồ danh mục của Yeowubie
Vì sao một công ty phát triển phần mềm lại tự làm sản phẩm riêng
Lý do một công ty phát triển tự làm sản phẩm riêng không phải để kéo dài danh sách thành tích. Dự án của khách hàng kết thúc ở thời điểm bàn giao, còn sản phẩm của chính mình thì ngày phát hành mới là điểm bắt đầu. Có những cảm nhận chỉ hình thành khi bạn tự trả giá cho phán đoán sai của mình. Yeowubie Interaction làm và tự vận hành sản phẩm để có được cảm nhận đó.
Một đội chỉ nhận gia công luôn đứng ở phía tiếp nhận yêu cầu. Người quyết định làm gì là một người khác, và khi quyết định đó chệch hướng thì bên đặt hàng gánh phần thiệt. Đội phát triển chỉ cần chứng minh rằng mình đã làm đúng tài liệu đặc tả là xong phần việc. Nếu cấu trúc này kéo dài, đội sẽ giỏi lên trong việc đọc đặc tả nhưng không lớn lên trong việc hỏi trước những thứ không nằm trong đặc tả.
Sản phẩm riêng lật ngược cấu trúc đó. Người quyết định đưa tính năng nào vào và người trả giá cho quyết định ấy là cùng một người. Bị từ chối ở khâu duyệt của App Store và Play Store, thêm một ngôn ngữ thì nửa màn hình vỡ bố cục, người dùng yêu cầu sửa dữ liệu của họ nhưng cả quy trình tiếp nhận yêu cầu đó lại chưa tồn tại. Những chuyện như vậy không nằm trong bản kế hoạch. Phải trải qua thì mới có trong danh sách.
Bài viết này là bản đồ sắp xếp các sản phẩm Yeowubie đang vận hành theo ba nhánh vấn đề. Ở nhánh giảm bớt việc ghi chép lặp lại có dịch vụ quản lý chấm công onSpots. Ở nhánh nối người với người có Langtori, dịch vụ ghép cặp cho việc học tiếng Hàn. Ở nhánh thu hẹp bất đối xứng thông tin của thị trường có Job Connect VN, dịch vụ tuyển dụng tại Việt Nam. Cùng với đó là Winnie, nền tảng hỗ trợ hộ kinh doanh nhỏ tại Việt Nam vận hành cửa hàng và chuyển đổi số. Winnie có nhiều nội dung nên đã được viết riêng trong một bài khác, ở đây chỉ nhắc đến như một trục của danh mục.
Có một điều cần nói trước. Bài viết này không có con số nào về lượng người dùng hay lượt tải. Chỉ số sử dụng của sản phẩm nội bộ chưa hoàn tất khâu tích hợp đo lường nên giá trị chính xác chưa tồn tại, và chúng tôi không dựng ra những con số nghe có vẻ hợp lý. Thay vào đó, chúng tôi ghi lại vì sao mỗi quyết định trong từng sản phẩm lại được đưa ra như vậy. Khi chọn đối tác phát triển, thứ thật sự giúp phân biệt thường là căn cứ của phán đoán chứ không phải con số thành tích.
Giảm bớt việc ghi chép lặp lại: những gì chúng tôi học từ quản lý chấm công
Nhìn vào danh sách tính năng thì quản lý chấm công có vẻ đơn giản. Chấm giờ vào, chấm giờ ra, tưởng như xong. Khi thật sự làm và vận hành, thành bại của sản phẩm lại nằm ở các ngoại lệ chứ không phải ở bản thân việc ghi nhận. Đó là chuyện phân định đi muộn, đơn xin làm việc từ xa, giả mạo vị trí, và bước cuối cùng chuyển dữ liệu cho người tính lương.
onSpots ghi nhận giờ vào và giờ ra bằng một lần chạm trong phạm vi khoanh vùng địa lý của văn phòng. Người quản lý nhìn trên một màn hình để biết ai đang ở văn phòng, ai đến muộn, ai làm từ xa và ai đang vắng. Đơn xin làm từ xa và đơn nghỉ phép được gửi ngay trong ứng dụng, việc duyệt hay từ chối cũng xử lý tại đó. Thông báo toàn công ty có thể phát đi qua push, và bản xuất CSV theo tháng tạo ra bảng chấm công dùng cho khâu tính lương. Ứng dụng hỗ trợ tiếng Hàn, tiếng Việt và tiếng Anh.
Bài học đầu tiên là quy tắc khác nhau ở mỗi tổ chức. Coi mấy giờ là giờ vào làm, dung sai bao nhiêu phút thì chưa tính là muộn, mỗi công ty vận hành một kiểu. onSpots phân loại đúng giờ và đi muộn một cách tự động, nhưng mở phần khoảng dung sai dùng cho phán định đó cho tổ chức tự đặt. Nếu chôn cứng phần này thành hằng số thì đến khách hàng thứ hai là vỡ ngay. Trong công cụ vận hành nội bộ, chính sách phải là dữ liệu chứ không nên là mã nguồn.
Bài học thứ hai là dữ liệu ghi nhận chỉ có ích khi nối được với phán định. Dù nhật ký thô có chính xác đến đâu, nếu người tính lương vẫn phải sắp xếp lại bằng tay thì khối lượng công việc của đội đó không giảm. Thậm chí họ còn có thêm một màn hình phải kiểm tra. Vì vậy chúng tôi đặt bản xuất theo tháng ở vị trí đoạn cuối của sản phẩm chứ không phải một tính năng phụ. Giá trị của công cụ nội bộ nên đo bằng lượng thao tác tay biến mất phía sau màn hình, chứ không phải bằng độ hoàn thiện của chính màn hình đó.
Bài học thứ ba là cách xử lý việc giả mạo vị trí. Ứng dụng giả tọa độ có tồn tại, và phát hiện chúng không phải bài toán khó. Phần khó nằm ở bước sau khi phát hiện. Nếu tự động vô hiệu hóa lượt chấm công thì người có tín hiệu nhảy do sóng yếu cũng bị đẩy sang diện vắng mặt. onSpots chọn cách gắn dấu lên bản ghi đáng ngờ và hiển thị cho người quản lý. Đây không phải cấu trúc máy phán quyết còn người nhận thông báo, mà là máy chỉ ra còn người quyết định. Trong công cụ động đến chuyên cần của con người, khác biệt này liên quan trực tiếp đến lòng tin.
Bài học thứ tư là đa ngôn ngữ không phải một tính năng mà là tiền đề. Một tổ chức làm việc ở cả Hàn Quốc và Việt Nam thì trong cùng một công ty đã có những thành viên dùng ngôn ngữ khác nhau. Nếu để việc chuyển ngôn ngữ thành tùy chọn gắn thêm về sau, những câu chữ đọc mỗi ngày như nội dung thông báo, lý do phê duyệt hay nhãn trạng thái sẽ lần lượt kẹt lại ở ngôn ngữ gốc. Thiết kế màn hình với tiền đề ba ngôn ngữ ngay từ đầu là một việc hoàn toàn khác với việc dịch chồng lên sau này.
Với người phụ trách đang đặt hàng một công cụ vận hành nội bộ, phần này chỉ để lại một câu. Nếu đặc tả chỉ ghi sẽ ghi nhận cái gì thì mới viết được một nửa. Phải ghi cả việc khi tình huống lệch khỏi quy tắc thì ai nhìn cái gì và bấm cái gì, thì mới ra được công cụ thật sự có người dùng.
Nối người với người: những gì chúng tôi học từ nền tảng ghép cặp học tiếng
Điều học được từ ghép cặp học tiếng là cái khó của việc kết nối nằm ở việc sắp xếp điều kiện chứ không nằm ở tìm kiếm. Langtori là dịch vụ ghép cặp và định vị giữa người muốn học tiếng Hàn và người dạy. Yeowubie không cung cấp lớp học. Chủ thể giảng dạy là các giáo viên cá nhân và tổ chức tham gia nền tảng, còn thứ chúng tôi làm là cấu trúc để họ tìm được nhau.
Trên Langtori, người học lọc giáo viên theo mục đích. Có phân loại theo mục đích như giao tiếp, ngữ pháp, TOPIK, tiếng Hàn thương mại, EPS-TOPIK, và có cả phân loại cho các kỳ thi ngôn ngữ khác như TOEIC, IELTS, TOEFL, OPIc. Có phần ghép cặp tùy chỉnh dựa trên khu vực, trình độ và mục tiêu học, còn lớp thì mở theo cả hình thức trực tuyến và trực tiếp. Các địa danh như Hà Nội hay Thái Nguyên hiển thị cùng lựa chọn trực tuyến, và lịch học cùng tiến độ của lớp đã đặt được quản lý trong một màn hình. Giáo viên có thể tạo trang lớp học của riêng mình và chia sẻ lên mạng xã hội, còn hồ sơ thì kèm đánh giá và nhận xét của người học. Nền tảng hỗ trợ tiếng Hàn, tiếng Việt và tiếng Anh, trong đó tiếng Việt là ngôn ngữ chủ lực.
Điều đầu tiên chúng tôi học được là thị trường hai chiều thực chất là hai sản phẩm. Màn hình tốt cho người học và màn hình tốt cho giáo viên có định nghĩa thành công khác nhau. Người học muốn thu hẹp nhanh về người phù hợp với điều kiện của mình, còn giáo viên muốn bộc lộ chính xác thế mạnh của bản thân. Cố gộp cả hai vào một bộ màn hình thì cả hai phía đều nửa vời. Trên báo giá thì đây là một dự án, nhưng trong thiết kế thì phải xử lý như hai dự án.
Điều thứ hai là bộ lọc không phải bài toán giao diện mà là bài toán thiết kế hệ phân loại. Người ôn TOPIK và người ôn EPS-TOPIK có mục đích khác nhau và cần giáo viên khác nhau. Gộp hai nhóm này vào một ô thì bộ lọc có đẹp đến mấy chất lượng ghép cặp cũng sụp. Nghĩa là hiểu lĩnh vực phải đi trước việc vẽ màn hình. Nếu đối tác phát triển không hỏi lại chính xác về thuật ngữ trong lĩnh vực của bạn, đó là tín hiệu cảnh báo đầu tiên.
Điều thứ ba liên quan đến định vị. Vì có lớp trực tuyến nên tưởng như vị trí không còn ý nghĩa, thực tế lại không phải vậy. Với người học muốn học trực tiếp thì khoảng cách di chuyển được là một điều kiện, và cùng khu vực thì nhịp sinh hoạt lẫn mục đích học cũng có xu hướng trùng nhau nhiều hơn. Ghép cặp bỏ hẳn yếu tố vị trí trông thì gọn gàng nhưng đã xóa mất một tiêu chí mà người ta thật sự dùng khi chọn.
Điều thứ tư là cách xử lý nguồn cung ban đầu. Với dịch vụ ghép cặp, chỉ cần một phía trống thì màn hình phía còn lại dù làm tốt đến đâu cũng là màn hình rỗng. Langtori bỏ tiền đề rằng nền tảng phải tự gom toàn bộ nguồn cung, và đưa vào cơ chế để giáo viên tạo trang lớp học của mình rồi tự phân phối. Mỗi người mang theo học viên của mình, và học viên đó lại nhìn thấy các giáo viên khác. Đây không phải lời giải hoàn hảo, nhưng là hướng vận hành được trên thực tế ở giai đoạn đầu của thị trường hai chiều.
Với những ai đang cân nhắc làm sàn giao dịch hay dịch vụ ghép cặp, chúng tôi muốn nói điều này. Nếu trong đặc tả không có phần trả lời cho câu hỏi lấp đầy nguồn cung ban đầu bằng cách nào, thì dù tính năng hoàn thiện hết, màn hình ngày đầu tiên vẫn trống. Đây là hạng mục thiết kế sản phẩm chứ không phải bài toán tiếp thị.
Thu hẹp bất đối xứng thông tin: những gì chúng tôi học từ tuyển dụng
Thứ chúng tôi muốn thu hẹp trong mảng tuyển dụng là bất đối xứng thông tin. Job Connect VN là dịch vụ giới hạn trong thị trường Việt Nam, kết nối nhân sự Việt Nam biết tiếng Hàn với doanh nghiệp. Dịch vụ không dừng ở việc tập hợp tin tuyển dụng để xem, mà đặt trọng tâm vào việc cho ứng viên thấy hồ sơ của mình hiện đang ở đâu.
Dịch vụ vận hành quanh bảng tin tuyển dụng tập hợp các vị trí đang mở. Người tìm việc giữ hồ sơ cá nhân và CV trong tài khoản của mình, đồng thời xem riêng danh sách các vị trí đã ứng tuyển và các tin đã lưu vì quan tâm. Giao diện lấy tiếng Việt làm chuẩn và thị trường mục tiêu cũng giới hạn ở Việt Nam.
Bài học đầu tiên là bất đối xứng không chỉ đi theo một chiều. Người tìm việc khó biết công ty thực sự là nơi thế nào và các điều kiện ghi trong tin có được giữ đúng hay không. Doanh nghiệp thì không có cách nào thuận tiện để xác nhận trình độ tiếng Hàn của ứng viên có đúng như trong hồ sơ. Chỉ làm thuận tiện cho một phía thì phía kia rời đi, và cuối cùng phía ở lại cũng mất chỗ để đến. Dịch vụ trung gian chỉ đứng vững khi thiết kế giảm được sự nghi ngại của cả hai bên cùng lúc.
Bài học thứ hai là sự im lặng sau khi ứng tuyển chính là thứ đẩy người dùng rời đi. Nếu trạng thái không có tin tức kéo dài sau khi bấm nút ứng tuyển, người ta sẽ không mở lại dịch vụ đó nữa. Màn hình lịch sử ứng tuyển nhìn bề ngoài giống một tính năng phụ, nhưng thực chất là đoạn cốt lõi giữ lòng tin cho dịch vụ. Ngay cả khi kết quả không tốt, chỉ cần thấy được mình đang ở bước nào thì cảm nhận đã khác hẳn. Chúng tôi thường thấy quyết định đẩy màn hình này xuống thứ tự sau khi làm dịch vụ tuyển dụng, và theo đánh giá của chúng tôi thì thứ tự đó bị đảo ngược.
Bài học thứ ba là việc giới hạn thị trường không phải điểm yếu mà là điều kiện thiết kế. Ghi gì trong hồ sơ, chia nhóm công việc thế nào, chứng chỉ nào thật sự có giá trị khi tuyển, mỗi thị trường một khác. Nếu ngay từ đầu định ôm nhiều quốc gia cùng lúc thì sẽ ra một cấu trúc trường dữ liệu không vừa với thị trường nào. Thu hẹp đối tượng thì mới xếp được các trường dữ liệu khớp chính xác với tập quán của thị trường đó. Tính phổ quát có thể gắn thêm sau, nhưng cấu trúc trường sai thì rất khó sửa khi dữ liệu đã tích lại.
Bài học thứ tư là cách chứa CV quyết định mọi thứ về sau. Nếu chỉ nhận CV dưới dạng tệp tải lên thì lưu trữ đơn giản nhưng gần như không dùng được cho tìm kiếm và ghép cặp. Nếu nhận theo các trường có cấu trúc thì việc nhập liệu phiền hơn, đổi lại số việc làm được với dữ liệu đó tăng lên. Chọn hướng nào thì quyết định ấy cũng được đưa ra trong tuần đầu tiên và chi phối vài năm sau đó. Nếu đối tác phát triển coi những quyết định như vậy là lựa chọn triển khai vặt vãnh, chi phí sẽ quay lại rất lớn về sau.
Với những ai đang chuẩn bị một dịch vụ mang tính tuyển dụng hay trung gian, chúng tôi để lại điều này. Nếu chỉ lập đặc tả quanh các thao tác cơ bản là đăng tin và nhận hồ sơ thì phần lớn sẽ không ra được kết quả mong muốn. Cơ chế khiến hai bên tin nhau phải nằm trong đặc tả như một hạng mục cụ thể.
Con đường bài học từ sản phẩm quay lại dự án khách hàng
Thứ còn lại từ sản phẩm riêng không phải mã nguồn dùng lại được, mà là tiêu chí phán đoán. Thói quen đưa đa ngôn ngữ vào như một cấu trúc ngay từ đầu, thói quen hỏi trước về ngoại lệ ngay ở giai đoạn đặc tả, thói quen phản ánh gánh nặng vận hành sau phát hành vào báo giá. Ba thứ đó quay lại dự án khách hàng.
Bắt đầu từ đa ngôn ngữ. Vì xử lý tiếng Hàn, tiếng Việt và tiếng Anh trên cả ba sản phẩm, chúng tôi liên tục xác nhận rằng mức ứng phó tách chuỗi văn bản ra tệp riêng là chưa đủ. Thứ tự viết ngày tháng, thứ tự viết tên người, cấu trúc các trường nhập địa chỉ, cách viết số và tiền tệ đều khác nhau theo ngôn ngữ. Phông chữ cũng vậy. Phông chọn cho màn hình tiếng Việt không có glyph tiếng Hàn, nên khi tiếng Hàn xen vào là chữ vỡ ngay. Ở Job Connect VN chúng tôi giải quyết bằng cách gắn thêm bộ phông dự phòng cho tiếng Hàn. Từng hạng mục như vậy đều nhỏ, nhưng thiết kế ban đầu của đội đã trải qua và đội chưa trải qua khác nhau rõ rệt.
Tiếp theo là gánh nặng vận hành. Chúng tôi tự làm phần phát hành lên store và ứng phó khâu duyệt, tự gửi thông báo push, tự xử lý câu hỏi của người dùng và yêu cầu sửa dữ liệu cho sản phẩm của mình. Vì biết những việc đó thực tế tốn bao nhiêu thời gian nên trong dự án khách hàng chúng tôi cũng đưa đoạn ấy vào báo giá và lịch trình. Giữa ngày kết thúc phát triển và ngày dịch vụ ổn định có một khoảng cách, và nếu bỏ khoảng cách đó ra khỏi phép tính thì cuối cùng vẫn có người phải gánh chi phí ngoài dự kiến.
Điều thứ ba là hướng của câu hỏi. Đội đã tự vận hành sản phẩm thì khi nhận yêu cầu sẽ hỏi về ngoại lệ trước khi hỏi về tính năng. Ở trạng thái này mà người dùng hủy thì chuyện gì xảy ra, người phê duyệt vắng mặt thì hồ sơ đó dồn về đâu, dữ liệu vào sai thì ai sửa ở màn hình nào. Những câu hỏi này làm cuộc họp đầu dài hơn một chút, nhưng giảm hẳn việc phải mở lại đặc tả ở giữa kỳ phát triển. Chính trải nghiệm trả giá bằng tiền của mình đã tạo ra danh sách câu hỏi ấy.
Nhìn toàn bộ danh mục thì ba nhánh cuối cùng vẫn tụ về một trục. onSpots gỡ bớt thao tác tay của con người khỏi những ghi chép lặp lại mỗi ngày, Langtori giúp các cá nhân rời rạc tìm thấy nhau, còn Job Connect VN thu hẹp khoảng cách hiểu biết giữa hai phía về nhau. Cùng với đó, Winnie bổ sung kinh nghiệm vận hành cùng dòng thông qua việc hỗ trợ hộ kinh doanh nhỏ tại Việt Nam vận hành cửa hàng và chuyển đổi số. Winnie có nhiều nội dung nên đã được viết riêng trong một bài khác.
Yeowubie Interaction là một studio phát triển làm việc cùng nhau ở hai địa bàn là Hàn Quốc và Việt Nam. Chúng tôi vừa tự làm và tự vận hành sản phẩm riêng, vừa thực hiện các dự án phát triển cho khách hàng. Lý do làm cả hai là vì thứ học được ở bên này dùng được ngay ở bên kia.
Cuối cùng, xin đề xuất ba câu hỏi cho người phụ trách đang ở vị trí chọn đối tác phát triển. Thứ nhất, nếu bên đó có dịch vụ đang tự vận hành, hãy hỏi họ đã nhận ra điều gì là sai từ dịch vụ ấy. Nếu chỉ nhận lại toàn chuyện tốt thì nhiều khả năng họ không thật sự vận hành. Thứ hai, hãy hỏi trong ba tháng sau phát hành thì ai làm gì. Báo giá không chuẩn bị sẵn câu trả lời này chắc chắn sẽ phình ra về sau. Thứ ba, hãy xem họ có hỏi lại về thuật ngữ trong lĩnh vực của bạn không. So với bên đưa báo giá ngay mà không hỏi lại điều gì, bên truy vấn kỹ về phân loại và ngoại lệ rốt cuộc lại ít tốn kém hơn.