Mình từng có 4 tháng kinh nghiệm thực tế về React Native, nhưng nó đã khá lâu về trước, khoảng chừng ~ 2021 tại một công ty khá nổi tiếng và phổ biến tại VN, đặc biệt là miền Nam. Mình khi ấy làm Fresher, nhưng vì không cân bằng được nên sau thời gian thử việc mình đã xin nghỉ.
Mình làm React Native
Khi ấy, tuyển vào khá nhiều bạn, mình nhớ là hàng trăm cho đợt tuyển đó, chia ra nhiều phòng ban, mình thì được xếp vào làm app mobile, với gần như không biết bất cứ thứ gì ngoài React căn bản!
Nói thật thì lúc đó mình cảm giác... rất oải, oải vì chiếc laptop gaming MSI mà mình nằng nặc đòi mua hồi trước (để muốn chơi game -- nhưng cũng ko chơi mấy) đã không còn đáp ứng, nó nặng, nó chậm, hao pin, lại nóng... phần vì nó là Windows, phần thêm nữa là dịch Covid, mình phải làm ở nhà trong suốt 4 tháng, còn chưa được chạm chân tới công ty lần nào luôn chứ!
Lúc đó, mỗi lần muốn dựng bản mới, là phải xài TeamViewer truy cập vô máy Macbook của anh hướng dẫn (ảnh có Macbook để dành ai muốn dựng / phát triển thì truy cập từ xa kiểu vậy), xong mỗi lần vậy là nó giật lag, dựng chậm, lại còn phát triển qua máy ảo (Simulator)...) kể ra thì hồi đó cực kì khó!
Tuy vậy phải thừa nhận là React Native lúc đó là hàng xịn xò so với phải dựng 2 ứng dụng cho Android và iOS. Với nữa mình nói nó xịn cũng phần vì chiếc ứng dụng của công ty "nấu" ra khi ấy đã vượt tầm nhiều nhiều công ty khác, nó nhanh, mượt và cực kì dễ sử dụng.
Lúc đó, mỗi bản build tốn ~20-30p cho Android/iOS. Android thì cài APK, iOS thì TestFlight (mình không nhớ rõ nhưng iOS cài khó hơn nhiều), để các anh/chị kiểm thử tải về và kiểm thử.
=> Trong đầu mình, ứng dụng di động đã vốn là một thứ cực kì khó nhằn, tốn kém.
Kể từ lúc AI trở nên phổ biến và dễ tiếp cận, những ý tưởng dần được hiện thực hoá, những việc lặp đi lặp lại có thể được tự động hoá và rất nhiều thứ ngày trước tốn rất nhiều công sức giờ đã trở nên thuận tiện hơn bao giờ hết. Xây dựng ứng dụng di động cũng thế.
Thế thì nó có dễ không? Mình sẽ nói là còn tuỳ. Tuỳ vào cách mình nhìn nhận một sản phẩm, cách mình định nghĩa nó, muốn nó dễ thì nó dễ, nó khó là nó sẽ khó. Nghĩa là với AI, mình có thể xây dựng dường như mọi thứ phần mềm, nhưng để làm cho nó "tới đâu" thì là phụ thuộc phần nhiều về "tầm nhìn" của người muốn xây dựng/sở hữu. Mình thì cho rằng AI là một công cụ cực kì tốt, nhưng để dùng nó hiệu quả thì cần sự "đầu tư nghiêm túc" đơn giản là cùng một công cụ, nhưng người lành nghề sẽ làm ra những sản phẩm khác bọt, và có chút "nghệ thuật".
AI là một công cụ cực kì tốt, đặc biệt cho những ai biết dùng (theo ý hiệu quả hơn). Ví dụ biết Excel là một kĩ năng tốt, nhưng để thuần thục nó như một bậc thầy thì đòi hỏi khả năng và kinh nghiệm vượt bậc,
Mình có cảm hứng đặc biệt với những sản phẩm, phần mềm có trải nghiệm người dùng cực kì dễ chịu và rất hay có mong muốn tạo nên những sản phẩm như vậy. Do đó, khi "xây" một sản phẩm, mình luôn rất dành nhiều thời gian cho ý tưởng, trải nghiệm hơn là những thứ đằng sau nó (cần lưu ý là điều này không đồng nghĩa những ứng dụng của mình có kết cấu yếu, mình không cần chứng minh nó mạnh, nhưng nó đủ vững để đáp ứng những yêu cầu về trải nghiệm mà bản thân mình đặt ra).
Mình và bạn mình rất hay đi ăn uống, giải trí cùng nhau, và có những khoản chi chung. Cảm thấy việc quản lý dòng tiền để thanh toán qua lại có chút khó khăn (nhưng không tới mức bất tiện), mình đã nảy sinh ý tưởng từ lâu về một ứng dụng mà mình và (các) bạn có thể dễ dàng ghi chú và quản lý những chi tiêu chung.
Mình đã dự định xây nó bằng Flutter khoảng 1.5 năm về trước, khi mà Agentic Coding vẫn chưa là thứ phổ biến(?), lúc này mình cũng cảm nhận được là xây ứng dụng di động là thứ gì đó dễ hơn trước, nhưng vẫn còn rất nhiều khó khăn. Thế là mọi thứ bị gạt sang một bên, mình lại trở về những ứng dụng web (với nhiều cải thiện so với những sản phẩm cũ)
Mãi cho đến khoảng 2 tuần gần đây, với công cụ tốt trong tay, mình tự dưng nghĩ lại hay là mình thử xây lại ứng dụng di động? Và bây giờ mình rất mừng vì mình đã chọn hướng đó 😋
Những phiên bản đầu tiên của StarK rất thô sơ, và ô dề - nó căn bản là chạy được trên cả hai nền tảng vì mình đã có thể phát hành sớm trên Google Play và Test Flight (iOS) - tuy vậy vẫn còn hơi khó sử dụng, đặc biệt là người dùng cuối.
Thế là mình gửi app cho những người bạn của mình, và đã có những góp ý vô cùng quý giá, thế là mình lại sửa, và thử lại, và sửa, và thử lại.
=> Mình chẳng thể có một chiếc ứng dụng chuẩn sản phẩm sau một vài lần, mà là rất nhiều lần, điều khác biệt là mình không dừng lại cho tới khi ra ngô ra khoai, đã làm thì phải đạt.
Với tiêu chí một sản phẩm là một thứ hoàn thiện, đóng gói, và dễ dàng trao đổi; mình đặt ra tiêu chuẩn cho riêng mình, do vậy mình cần từ A tới Á (ủa tới Z) mọi thứ: tên ứng dụng, ý tưởng, logo, thủ tục phát hành, đóng gói, giao hàng (mà ở đó "viết mã nguồn" chỉ là một phần trong toàn bộ quá trình) - AI đóng góp dường như trong mọi bước giúp cho việc chuẩn bị trở nên nhanh chóng và hiệu quả.
Dù là ứng dụng đầu tiên, mình cũng có mong muốn để làm sao nó phải phát hành được, vì nó sẽ trở nên rất vô ích với mình nếu như nó chỉ là thứ mà chỉ có thể chạy không chính thức hoặc cần một máy tính mở chạy máy chủ...
Để phát hành, đã có rất nhiều công đoạn mình cần phải chuẩn bị, làm sai, và sửa.
1043 x 455, 52.8 KB, JPG
Công sức cuối cùng cũng được đền đáp khi mà khoảng 1 tuần trước, App Store đã chính thức duyệt ứng dụng của mình - StarK đã có thể tải bởi bất kì ai!
Đây là một quá trình không dài, nhưng cũng không kém... sự may mắn - nhờ hỗ trợ đúng thời điểm và phần nổ lực của chính mình, mình chắc chắn sẽ không thể có những thứ này mà thiếu chúng hội tụ.