Chào những người đã theo dõi hành trình của tôi trong suốt một năm vừa qua.
Điều đầu tiên tôi muốn nói là cảm ơn.
Cảm ơn vì đã đọc, đã phản hồi, đã đồng cảm với những bài viết tôi chia sẻ về tư duy tài chính, về sản phẩm, về những va chạm rất thật trong quá trình tôi vừa sống, vừa xây dựng, vừa tự thử thách mình. Sự đón nhận đó là một nguồn động lực rất lớn trong giai đoạn tôi gần như "đóng cửa trong hang" để làm nền móng.
Điều thứ hai tôi muốn nói là xin lỗi.
Tôi biết có nhiều người đã chờ ngày Finvoras chính thức lên Store. Và đến lúc này, tôi vẫn chưa thể nói rằng sản phẩm đã sẵn sàng để mọi người dùng đại trà.
Finvoras vẫn chưa chạy.
Tôi hiểu cảm giác chờ đợi đó. Và chính vì vậy, tôi nghĩ mình cần nói rõ hơn một điều: một năm vừa qua tôi đã thực sự dùng thời gian vào việc gì.
Tôi Đã Chọn Xây Móng Trước Khi Xây Mặt Tiền
Là người chịu trách nhiệm xuyên suốt cho hạ tầng kỹ thuật của Finvoras, tôi đã chọn một con đường chậm hơn nhưng bền hơn.
Thay vì cố đẩy ra một phiên bản chắp vá chỉ để "có mặt trên Store", tôi dành phần lớn thời gian để xây kiến trúc có thể đi đường dài:
- thiết kế một Modular Monorepo có khả năng mở rộng
- viết bộ công cụ CLI nội bộ để chuẩn hóa cách dự án được khởi tạo và vận hành
- đẩy mạnh khả năng tái sử dụng mã nguồn thay vì tiếp tục nhân bản logic theo từng app
- đặt nền cho một tư duy local-first, maintainable, documentation-first
Nếu bạn từng đọc bài Vì Sao Tôi Chuyển Dự Án Flutter Sang Monorepo?, bạn sẽ hiểu đây không phải là một lựa chọn ngẫu hứng. Nó là định hướng tôi đã suy nghĩ rất kỹ và theo đuổi nhất quán.
Tôi không xem phần nền đó là việc "chưa làm ra sản phẩm". Tôi xem đó là phần khiến sản phẩm có cơ hội sống đủ lâu để đáng được xây.
Một Năm Qua Không Chỉ Là Gõ Code, Mà Là Học Cách Xây Hệ Thống
Nhìn lại, điều tôi tích lũy được trong một năm này không phải chỉ là thêm vài repository hay vài màn hình UI.
Đó là quá trình học cách tư duy như một Technical Architect và một người giải bài toán sản phẩm bằng kỹ thuật.
1. Thiết Kế Nền Móng Cho Finvoras
Tôi xây dựng kiến trúc Modular Monorepo với nhiều package chuyên biệt, đẩy mạnh khả năng tái sử dụng qua theme system, widget system và các lớp dùng chung.
Mục tiêu của tôi không phải là làm kiến trúc cho đẹp. Mục tiêu là giảm chi phí phát triển về sau, để mỗi thay đổi không kéo theo sự rạn nứt của toàn bộ codebase.
2. Tự Động Hóa Bằng CLI Nội Bộ
Một trong những phần tôi thấy đáng giá nhất là việc tự xây một CLI bằng Dart để chuẩn hóa cách dự án được tạo ra, cấu hình môi trường và gắn vào pipeline kỹ thuật.
Điều này giúp loại bỏ rất nhiều thao tác lặp lại và giảm đáng kể thời gian setup. Nhưng quan trọng hơn, nó làm cho chất lượng không còn phụ thuộc quá nhiều vào trí nhớ hoặc sự cẩn thận thủ công của từng người.
3. Kiểm Chứng Hạ Tầng Bằng Sản Phẩm Thực Tế
Tôi không muốn hạ tầng chỉ đẹp trên giấy. Vì vậy, tôi cùng các cộng sự tại enth17.io.vn dùng chính nền móng đó để thử nghiệm và triển khai những sản phẩm thực tế cho người dùng và doanh nghiệp.
Những sản phẩm như CID Watermark cho tôi một điều rất quan trọng: bằng chứng rằng framework kỹ thuật chỉ thực sự có ý nghĩa khi nó sống được trong môi trường vận hành thật.
Một Năm Tự Tài Trợ Cho Bản Thân Cũng Là Một Năm Tái Định Nghĩa Vị Trí Của Mình
Trước đây, tôi vẫn luôn xem mình là một mobile engineer tập trung sâu vào Flutter.
Sau một năm này, cách tôi định vị bản thân đã thay đổi rõ ràng hơn.
Tôi không còn nhìn mình như một người chỉ nhận spec rồi hiện thực hóa thành code.
Tôi định vị mình là một Software Product Engineer.
Điều đó có nghĩa là:
- tôi quan tâm đến kiến trúc đủ để sản phẩm có thể scale
- tôi quan tâm đến tooling đủ để đội ngũ có thể làm việc với ít ma sát hơn
- tôi quan tâm đến technical trade-offs đủ để không hy sinh toàn bộ tương lai chỉ để đổi lấy một bản release nhanh
- tôi quan tâm đến sản phẩm đủ để không xây những thứ "đúng kỹ thuật" nhưng sai thực tế
Tôi Đã Tích Lũy Gì Cho Chặng Đường Tiếp Theo?
Ngoài giai đoạn tự xây dựng vừa qua, tôi vẫn mang theo nền tảng gần 4 năm trước đó tại Enlab Software, nơi tôi có cơ hội dẫn dắt các thay đổi về:
- Clean Architecture
- Dynamic UI dựa trên JSON Schema
- tối ưu các biểu mẫu phức tạp
- triệt tiêu rò rỉ bộ nhớ
Kết hợp với một năm tự làm founder-operator của chính mình, tôi thấy kỹ năng của mình đã dịch chuyển từ "xây đúng" sang "xây đúng thứ cần thiết, đúng lúc, bằng nền móng chịu được tương lai".
Hôm Nay Tôi Bước Ra Để Tìm Một Bến Đỗ Mới
Sau một năm gần như dồn toàn lực cho nền móng, tôi chính thức mở mình ra để tìm kiếm một cơ hội toàn thời gian mới trong vai trò Software Product Engineer, với trọng tâm sâu nhất vẫn là Flutter.
Tôi phù hợp với các môi trường đang cần:
- xây mới hoặc tái cấu trúc ứng dụng mobile từ giai đoạn đầu
- chuẩn hóa kiến trúc đa mô-đun
- tối ưu tooling, linting và trải nghiệm offline-first
- cân bằng giữa time-to-market và khả năng bảo trì dài hạn
Tôi hiện ở Đắk Lắk và sẵn sàng làm việc full-time remote.
Portfolio chi tiết của tôi: phamhoangsang.finvoras.com
Email: phsang49@gmail.com
Số điện thoại: 0332148505
Lời Kết
Finvoras chưa ra mắt đúng như kỳ vọng ban đầu là một điều khiến tôi có lỗi với những người đã chờ.
Nhưng nếu có một điều tôi không xem là lãng phí trong suốt một năm qua, thì đó là phần tư duy, hệ thống và bài học tôi đã tích lũy được từ chính hành trình này.
Tôi bước ra khỏi "hang" không phải với một câu chuyện thành công hoàn chỉnh, mà với một nền tảng kỹ thuật, một góc nhìn sản phẩm trưởng thành hơn, và một sự sẵn sàng rất thật cho chặng đường tiếp theo.
Nếu anh chị đang xây một bài toán kỹ thuật hoặc một sản phẩm cần một người có thể vừa đào sâu kỹ thuật, vừa giữ được góc nhìn sản phẩm, tôi rất sẵn sàng kết nối.
[Đọc thêm] Để hiểu rõ hơn về vị thế hiện tại của bạn, hãy xem qua 7 Cấp độ Tài chính Cá nhân. Việc xác định đúng cấp độ sẽ giúp bạn áp dụng các giải pháp trong bài viết này một cách phù hợp nhất.
![[Bước Ra Khỏi "Hang"]: Hành Trình 1 Năm Tự Gánh Vác Hạ Tầng Của Một Software Product Engineer](/_next/image?url=%2Fimages%2Ffounder.png&w=3840&q=78)