Lần đầu làm sản phẩm
product-thinking
3
White

ShinaBR2 viết ngày 26/02/2020

Câu chuyện

Đây là câu chuyện kể về một gamer, khi đang chơi game thì cần một tool để phục vụ nhu cầu chơi game. May thay, gamer đó là mình, vừa là một programmer, bắt tay vào làm thôi. Nhờ vào làm dự án này, mình học được nhiều thứ, hi vọng sẽ giúp các bạn nhận ra được điều gì đó, không thì xem như là một câu chuyện về lập trình thôi.

Tên game mình đang chơi: "Ulala - Idle Adventure", trang chủ: https://ulala.xdg.com/.
Sẽ không có sản phẩm gì nếu như hệ thống mô tả trong game không quá sơ sài và không được đầu tư, và mình (cũng như nhiều gamer khác), cần một trang wiki về hệ thống pet trong game. Ý tưởng khá đơn giản, là một trang web cho phép show pet và filter theo yêu cầu.

Phân tích yêu cầu

Mình không phải là người đầu tiên cần cái tool này, đã có nhiều người làm nó trước mình, nhưng họ dùng excel (đa phần là do gamer tự thu thập data và đẩy lên excel cho nhanh). Tuy nhiên mình không thích excel, và không ai muốn trải nghiệm excel trên mobile cả. Thế nên mình đặt ra những yêu cầu cho sản phẩm của mình:

  • Mobile friendly là bắt buộc.
  • Không quảng cáo, kiếm lợi nhuận dưới mọi hình thức.
  • Có credit cụ thể những ai giúp mình trong quá trình làm sản phẩm.
  • Đáp ứng nhu cầu cơ bản: filter những con pet theo yêu cầu, bạn nào chơi game sẽ hiểu được khúc này.
  • Tốc độ nhanh càng tốt.

Mình là một lập trình viên frontend, nên mình đặt ra một vài yêu cầu khác:

  • Delivery sản phẩm quan trọng hơn code hay.
  • Không cần backend, không cần đăng nhập rắc rối.
  • Quá trình deploy đơn giản, không cần devOps phức tạp, backend cồng kềnh.

Cuối cùng, mình đã chọn JAM Stack để làm, nó đáp ứng được 3 nhu cầu ở trên của mình, cụ thể là Gatsby, Netlify. Bạn có thể tự google..

Khó khăn

Bao giờ khó khăn đầu tiên của người làm sản phẩm là làm sao marketing tốt. Mình là developer, không phải chuyên SEO hay marketing, chưa kể làm hoàn toàn vì cộng đồng, không lợi nhuận, ai sẽ chịu làm cho bạn?
Solution: tự học SEO cơ bản, tự marketing sản phẩm của mình.
Những cái mình cần là:

  • Google Analytics (ai cũng biết để làm gì rồi).
  • Error Tracking (mình chọn Sentry).
  • Discord, dùng để quảng bá sản phẩm.

Kết quả

Website hoàn thành và theo kết quả từ Google Analytics, không còn gì đáng mong đợi hơn, có user dùng, và nó thực sự có ích.
Link ở đây https://www.shinabr2.com/ulala

Quá trình phát triển

Đây là phần quan trọng nhất. Khi sản phẩm ra đời, không mấy ai hiểu được bạn đã phải cực nhọc như thế nào, và những bài học bạn nhận ra, chỉ có mình bạn biết.

Quy trình làm việc

Đầu tiên, là mình tự đặt mình vào khuôn khổ, tự đặt cho mình một deadline và quy chuẩn để làm việc:

  • Tự quản lý task qua Trello, mình thích Trello vì nó cực kỳ đơn giản, dễ dùng, bắt mắt.
  • Tự ghi lại changelog mỗi khi deploy production, điều này sẽ giúp bạn hình thành một thói quan chuyên nghiệp, đặc biệt khi làm công ty product.
  • Credit những ai đã đóng góp cho dự án của bạn là cực kỳ quan trọng. Một sản phẩm dù tốt, nhưng của một kẻ vô ơn, thì cũng chỉ là đồ bỏ đi.
  • Phải luôn tiếp nhận feedback của user để hoàn thiện sản phẩm, bạn sẽ không bao giờ biết được user muốn gì. Mình phải là người đề ra cái tốt, cái hay để user dùng, ok?
  • Trong dự án, mình không còn đơn thuần là một developer nữa, mà mình là Product Owner, là Techlead, là QA, nên cần phải tuyệt đối cẩn trọng, nhất là trong quá trình deploy production.

Bạn ghi những cái này ra giấy, hoặc đâu đó mà mình thường xuyên thấy, để nhớ. Đừng xem thường những điều nhỏ nhặt được ghi ra giấy.

Tiếp theo, là bước chuẩn bị data cho dự án.
Lấy data từ đâu bây giờ???
Phần này chiếm phần lớn thời gian, vì cơ bản không giống như web, bạn có thể lấy được resouce hoặc data từ developer tool. Thêm nữa, mình hoàn toàn không biết gì về lập trình mobile cả. Sau một thời gian tìm hiểu phân tích:

  • Game là file APK => suy ra search google "how to extract data from APK".
  • Game viết bằng Unity (cái này biết được từ cái search đầu tiên) => search google "How to extract data from Unity".

==> Bài học rút ra: Không biết cái gì, hỏi google trước đã. Đừng đi hỏi người khác vấn đề mà mình còn không biết mình đang gặp là gì.

Quá trình này tốn khoảng vài ngày nghiên cứu và mày mò, giống như đi hack sản phẩm vậy =))) nhưng cuối cùng mình cũng đã có thành quả là "assets" của game. Assets là tập hợp resource dưới dạng hình ảnh, âm thanh... Tuy nhiên, mình vẫn chưa có được data về các thuộc tính của từng con pet trong game.
Làm sao đây?
Tới đây mình mới khai thác tới discord. Discord là một chat tool, tương tự như facebook messenger nhưng được thiết kế cho gamer. Và bạn tưởng tượng mình phải làm gì?
Còn cách nào khác là pm hỏi từng end game player để hỏi thôi =)))
Bạn tự tưởng tượng ra quá trình đó nó mệt mỏi như thế nào =))) không phải ai cũng sẵn sàng giúp bạn.

==> Bài học rút ra: Không ai có trách nhiệm giúp đỡ bạn dù bạn đang làm việc tốt đi chăng nữa, phải tự mình cố gắng tìm ra giải pháp.

Sau khi đi thăm hỏi từng người từng người, data của dự án dần dần trở nên nhiều hơn. Song song với đó mình phát triển tính năng cơ bản của dự án: filter pet.
Phần này không có gì phức tạp, code luôn là phần dễ nhất trong quá trình làm sản phẩm. Vì toàn bộ dự án hoàn toàn là frontend, nên không có call API hay query database gì cả, hơn hết, data không quá nhiều, và ít khi thay đổi => hard code được chỗ nào thì hard code chỗ đó cho lẹ.
Ví dụ, bạn thường lưu data theo cấu trúc, các cấu trúc có liên kết với nhau, tương tự relation trong SQL. Tuy nhiên ở đây, do data ít, và ít khi bị thay đổi, nên hầu hết những thao tác tính toán, cần quan hệ sẽ không còn cần thiết, cứ hard code. Data duplication? Ok, who cares??

==> Bài học rút ra: không phải cứ lao đầu vào làm theo lý thuyết suông, tất cả phải dựa vào tình hình thực tế mà chọn giải pháp.

==> Bài học rút ra: mindset làm sản phẩm quan trọng hơn code hay, who cares bạn code hay nhưng cuối cùng không release được?

Sau quá trình hard code đầy kì công của mình, cuối cùng đã release được sản phẩm đầu tiên, sau khoảng 1 tuần làm vào thời gian rảnh.
Như mình đã nói ở trên, mỗi lần thay đổi gì, đểu phải public changelog lại. Điều này tuy nhỏ, nhưng nó thể hiện sự tôn trọng của người làm sản phẩm dành cho user.

==> Bài học rút ra: không có gì khó hơn là làm hài lòng khách hàng, code luôn là phần dễ nhất, đừng bận tâm tới code quá nhiều.

Những gì mình trải nghiệm được

Đây là phần mình thích nhất, khi tự làm một dự án vì mình thấy thích, bạn sẽ chủ động làm và học được rất nhiều thứ.

  • Tự đặt mình vào nhiều vai trò, đặc biệt là Product Owner. Mindset làm sản phẩm, rất rất quan trọng đối với developer. Developer không phải là chỉ ngồi code, mà phải suy nghĩ làm ra sản phẩm tốt để phục vụ cho người khác.
  • Nâng cao khả năng tự tìm hiểu, tự debug, tự quản lý lỗi, rollback khi cần thiết. Sẽ là ác mộng nếu như bạn tốn hàng giờ để debug và để người dùng trải nghiệm sản phẩm lỗi. Sẽ không ai có đủ kiên nhẫn cho sản phẩm của bạn, dù bạn sai chỉ một lần.
  • Xác định rõ mục tiêu từ đầu cho dự án. Nếu mình đã xác định làm vì phục vụ cộng đồng, đừng bao giờ nghĩ tới việc kiếm tiền hay đặt quảng cáo, không ai thích những quảng cáo phiền phức cả.

Rồi, xin hết, cũng chẳng biết nói gì thêm nữa :))

ShinaBR2 14-12-2019

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ShinaBR2

13 bài viết.
124 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
71 16
Đây là một vấn đề kinh điển, và có rất nhiều bài viết về nó, tuy nhiên đa phần là dịch từ bản gốc ra và sao chép lại một vài câu lệnh, và câu hỏi t...
ShinaBR2 viết gần 3 năm trước
71 16
White
47 11
Vào một ngày đẹp trời, khi bạn nhận được yêu cầu phải thiết kế database cho một hệ thống, câu hỏi đầu tiên được đặt ra, quy trình làm ra nó sẽ cụ t...
ShinaBR2 viết gần 3 năm trước
47 11
White
40 10
Bàn về code thối Hãy tự đặt câu hỏi cho bạn, khi bắt đầu lập trình, bạn nghĩ tới điều gì? Đi phỏng vấn Điều đầu tiên tôi muốn nói về những câu hỏ...
ShinaBR2 viết hơn 2 năm trước
40 10
Bài viết liên quan
White
49 11
(Ảnh) Dân lập trình mới ra trường, nếu bay vào làm outsource liền là 1 sự uổng phí. Thay vào đó, đầu quân cho 1 công ty product, hay tốt nhất là 1...
Karmi Phuc viết hơn 4 năm trước
49 11
White
34 5
Quyển này thì khá là nổi rồi, không cần phải giới thiệu nhiều về nó nữa. (Ảnh) Quả thực thì ngay từ đầu mình không hề có ý định đọc quyển này, vì...
Huy Trần viết gần 3 năm trước
34 5
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
13 bài viết.
124 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!