Tại Sao Mình Rời Bỏ 'Vùng An Toàn' Android Để Lao Vào AI
Anh em theo dõi Iced Tea Labs chắc biết mình là dân Android “nòi”. Custom Views, Dagger, Hilt, Clean Architecture, RxJava — đó là thế giới của mình suốt hơn chục năm qua. Mình đã ship app ở Lazada, build side projects như Buckist và myMoney, và thú thật? Cuộc sống Android dev rất ổn, rất “chill”.
Nhưng có một thứ cứ lởn vởn trong đầu mình suốt năm qua.
Mở tin công nghệ: AI. Conference talk: AI. Job posting hay ho: AI. Không phải kiểu hype rồi xịt, mà là một sự thay đổi tận gốc trong cách phần mềm được xây dựng.
Nên đây, mình công khai luôn: Mình sẽ dành 6 tháng tiếp theo để chuyển từ Android Engineering sang Machine Learning. Và mình sẽ document toàn bộ hành trình trên blog này.
Cái Bẫy Của Sự Thoải Mái
Nói thật. Sau 10+ năm làm Android, mình có thể build gần như mọi thứ người ta giao. Jetpack library mới? Cho mình cuối tuần. Migrate sang Compose? Xong rồi. RecyclerView phức tạp với animation custom? Dễ ợt.
Và đó chính xác là vấn đề.
Thoải mái chính là kẻ thù của sự phát triển. Nó giống như anh em cứ ở yên trên compileSdkVersion 28 trong khi cả thế giới đã lên SDK 35. App vẫn build được, vẫn chạy ngon — nhưng anh em đang dần trở nên “lỗi thời” mà không hay biết. Cho đến một ngày ngẩng đầu lên, ecosystem đã bỏ mình lại phía sau.
Trong khi đó, thế giới xung quanh đang thay đổi với tốc độ chóng mặt:
- Thị trường Edge AI được dự báo tăng từ 25 tỷ USD lên 119 tỷ USD vào năm 2033
- Google, Apple, Samsung, Meta đang tuyển vị trí “Mobile ML Engineer” — role yêu cầu cả kỹ năng Android VÀ ML
- On-device inference đang trở thành chuẩn mực, không còn là thí nghiệm nữa. LiteRT (tên mới của TensorFlow Lite), ML Kit, PyTorch Mobile — tất cả đều production-ready
Giao lộ giữa Mobile và ML không phải chuyện tương lai xa vời. Nó đang diễn ra ngay lúc này. Và mình không muốn chỉ ngồi xem.
Tại Sao AI? Tại Sao Là Bây Giờ?
Đây là những con số thuyết phục mình rằng đây không phải hype:
Thị trường đang “khát” ML Engineer. Số lượng job posting ML tăng 150% so với năm trước (tính đến giữa 2025). Nhưng đây mới là phần thú vị: chỉ có 3% job ML là entry-level. Các công ty không muốn fresh graduate cho ML — họ muốn nó là giai đoạn sự nghiệp thứ hai. Họ cần người đã biết cách ship phần mềm production.
Mà đó… chính là anh em mình. Software Engineer.
Một con số nữa khiến mình “à há”: 23.9% job ML không yêu cầu bằng cấp cụ thể. Portfolio mạnh có thể thay thế bằng Master. Không cần quay lại trường đại học — chỉ cần build đồ thật.
Và rồi mình phát hiện ra một ngách mà như được “đo ni đóng giày” cho mình: Mobile ML Engineer. Google đang tuyển vị trí này (lương cơ bản $141K–$202K+) với yêu cầu rõ ràng: “quen thuộc với phát triển ứng dụng trên Android” kết hợp “kiến thức về AI và ML”. Apple, Samsung, Meta, Snap, Qualcomm cũng có role tương tự.
Cạnh tranh cho vị trí ML Engineer chung? Khốc liệt. Cạnh tranh cho vị trí Mobile ML Engineer cần người vừa train model vừa deploy lên Android mượt mà? Ít hơn nhiều.
Kinh Nghiệm Android Không Phải Hành Lý Thừa
Đây là insight thay đổi hoàn toàn góc nhìn của mình. Lúc đầu nghĩ đến việc chuyển sang ML, bản năng mách bảo: “Phải quên hết mọi thứ, học lại từ đầu.”
Sai bét.
Kinh nghiệm Android không phải hành lý thừa — nó là vũ khí cạnh tranh hiếm có. Skills chuyển đổi thế nào:
- Clean Architecture / MVVM → Kiến trúc ML pipeline. Phần lớn dân ML viết code trong Jupyter notebook như một cục bột. Mình sẽ tự động structure code với separation of concerns, testability, và maintainability.
- Tối ưu hiệu năng → Tối ưu model. Bao năm chiến đấu với memory Android, APK size, render performance? Map thẳng sang model quantization, pruning, và latency profiling. ProGuard/R8 ≈ model compression.
- JUnit + Espresso testing → ML testing. Unit test model, integration test API, CI/CD cho ML pipeline — đây là lỗ hổng khổng lồ trong thế giới ML mà dân Software Engineer có thể lấp đầy.
- Firebase A/B testing → ML model A/B testing. Concept y chang: controlled experiments, statistical significance, đo impact lên user metrics.
Trong khi hàng nghìn người chuyển sang ML từ non-engineering background, mình đã biết viết production code, setup CI/CD, xử lý edge cases, và ship phần mềm cho user thật dùng hàng ngày. Phần lớn ứng viên ML không có được điều đó.
Đây không phải restart sự nghiệp. Đây là mở rộng sự nghiệp.
Lộ Trình 6 Tháng
Đây là kế hoạch tổng quan. Mình sẽ đi sâu vào từng giai đoạn trong các bài viết tiếp theo:
Tháng 1 — Python cho Data Science + Thống kê NumPy, pandas, matplotlib, seaborn. Nền tảng thống kê: phân phối xác suất, kiểm định giả thuyết, tư duy Bayesian. Capstone: một dự án EDA hoàn chỉnh deploy lên Streamlit.
Tháng 2 — SQL + Visualization + Khoá ML đầu tiên SQL nâng cao (window functions, CTEs), Tableau/Power BI dashboards. Bắt đầu Machine Learning Specialization của Andrew Ng trên Coursera.
Tháng 3 — Machine Learning với scikit-learn Thuật toán ML cổ điển (random forests, XGBoost, SVMs). Feature engineering, xử lý data “bẩn”, toàn bộ modeling workflow. Dự án: dự đoán customer churn end-to-end.
Tháng 4 — Deep Learning + MLOps PyTorch, CNNs, transformers, transfer learning. MLflow cho experiment tracking, FastAPI + Docker cho model serving. Dự án: NLP sentiment analysis pipeline.
Tháng 5 — Capstone: App Android chạy ML Đây là “chiêu tuyệt” của mình. Train model bằng Python, optimize, rồi deploy lên Android bằng Kotlin. On-device inference với LiteRT hoặc PyTorch Mobile. Rất ít ML Engineer có thể build app Android “ra hồn” — đây là lợi thế không cân xứng của mình.
Tháng 6 — Chứng chỉ + Luyện phỏng vấn + Tìm việc Một chứng chỉ Cloud ML (AWS/GCP/Azure). System design cho ML. Polish portfolio và bắt đầu apply.
Học Công Khai
Mình không chỉ học trong im lặng — mình sẽ viết về từng bước. Đây là series 12 bài blog bao trùm toàn bộ hành trình:
- Tại sao mình rời Android sang AI (bài này)
- Toán cho ML: cẩm nang sinh tồn cho Software Engineer
- Model ML đầu tiên: những gì tutorial không dạy
- SQL cho Data Science: đời không chỉ có SELECT *
- PyTorch qua góc nhìn Software Engineer
- Build dự án ML end-to-end đầu tiên
- 80% công việc mà không ai nói đến: data wrangling
- MLOps cho Software Engineer: CI/CD cho ML
- Deploy ML lên Android: lợi thế từ background mobile
- Kaggle competitions vs. dự án thực tế
- Xây dựng trước công chúng: khi viết blog mở ra cánh cửa bất ngờ
- 6 tháng sau: bài retrospective trung thực
Tại sao phải blog? Ba lý do:
- Feynman technique. Nếu không giải thích được bằng văn viết, nghĩa là mình chưa thật sự hiểu.
- Trách nhiệm công khai. Commit trước bàn dân thiên hạ khiến việc bỏ cuộc khó hơn rất nhiều (mà kiểu gì cũng có lúc muốn bỏ).
- Trả ơn cộng đồng. Hồi mới học Android, blog của dev khác là “cứu cánh” của mình. Đến lượt mình trả lại cho người tiếp theo.
Mình không giả vờ là chuyện này sẽ dễ dàng. Mình sẽ vật lộn với thống kê (chắc chắn luôn). Sẽ có lúc cảm giác imposter khi so sánh với mấy cha PhD Computer Science. Sẽ có tuần chẳng hiểu gì hết và chỉ muốn quay về với cái RecyclerView adapter thân thương.
Nhưng như mình đã học được từ bouldering: Phân tích → Thử nghiệm → Thất bại → Điều chỉnh → Hoàn thành.
Tường đã dựng. Đến lúc bắt đầu leo rồi.
Hẹn gặp anh em ở bài tiếp theo — nơi chúng ta sẽ “xắn tay” với NumPy và phát hiện ra tại sao array không phải list!
Happy learning! 💻🧠