+2

Những Bài Học Và Kinh Nghiệm Sau Hai Tháng Thử Việc Ở Vị Trí Mobile Engineer

Mở đầu

Khoảng hai tháng trước, mình vẫn còn đang trong giai đoạn rải CV và tìm kiếm cơ hội đầu tiên cho vị trí Mobile Engineer. Khi đó, mình đã viết một bài chia sẻ về kinh nghiệm phỏng vấn với hy vọng có thể giúp ích cho những bạn cũng đang trong quá trình giống mình. Điều bất ngờ là chỉ một tuần sau khi bài viết được chia sẻ, mình đã nhận được offer từ một công ty công nghệ có môi trường làm việc rất tích cực tại Việt Nam, và chính thức onboard không lâu sau đó. Bây giờ, khi đã đi qua hai tháng thử việc đầy thử thách và cả những thành quả nho nhỏ, mình cảm thấy thực sự biết ơn và muốn chia sẻ lại những trải nghiệm cũng như bài học mình đã tích lũy được trong hành trình vừa qua.


Nội dung chính

🧑‍💻 Kỹ Thuật: Những Va Vấp Đầu Đời

  • Code review & PR
    Để được merge PR, code của mình phải vượt qua màn “soi kỹ” từ anh Senior. Không tránh khỏi những lần bị “ăn chửi nhẹ”, phải sửa đi sửa lại nhiều lần. Nhưng nhờ vậy mà code của mình ngày càng clean hơn và tuân theo best practice.

  • Git workflow
    Có một lần mình nhầm giữa git pushgit push -u origin, hậu quả là cả ngày phải ngồi resolve conflict liên tục, push mãi không thành công rồi lại phải fetch về làm đi làm lại. Từ đó mình học được là: những kiến thức tưởng đơn giản nhưng nếu không hiểu rõ thì cũng gây ra rất nhiều rắc rối.


🧠 Tư Duy: Từ “Code Chạy Được” Đến “Code Dễ Dùng, Dễ Mở Rộng”

  • Trước đây mình chỉ tập trung vào việc làm sao để code chạy được. Giờ mình hiểu rằng code còn phải dễ tái sử dụngdễ mở rộng.

  • Trong một buổi đi chơi với team, mình hỏi anh manager:

    “Nếu công việc quen thuộc, lặp đi lặp lại và không học thêm được kỹ năng gì mới thì mình nên làm sao?”
    Anh trả lời:
    “Hãy tìm cách làm công việc đó một cách smart hơn. Nếu hiện tại mất 4 tiếng, thì hãy nghĩ cách để làm trong 2 tiếng.”
    Câu nói này giúp mình nhận ra: thay vì nhảy việc, hãy tối ưu công việc trước.

  • Mình từng bị ám ảnh bởi title Junior, Senior. Trong một cuộc trò chuyện với anh PM, mình được giải thích:

    “Mức độ phát triển của bản thân thể hiện qua kỹ năngmức lương, chứ không phải qua title. Lên Senior là vì em làm được những việc của Senior, chứ không phải vì có title mới làm được.”
    Nhờ đó, mình hiểu: Vai trò là kết quả của hành động, không phải lý do cho hành động.

  • Ban đầu mình nghĩ Senior chỉ xây dựng codebase và kiến trúc. Nhưng sau 2 tháng, mình thấy Senior còn phải:

    1. Review code và thảo luận giải pháp

      • Phân tích, comment PR hàng ngày
      • Tổ chức pair-programming, workshop để debug và refactor
      • Đánh giá trade-offs về hiệu năng, maintainability và scalability
    2. Phân chia task và quản lý tiến độ

      • Bóc tách backlog thành user stories và task nhỏ
      • Ước lượng effort, gán task theo kỹ năng từng thành viên
      • Theo dõi blocker, cảnh báo trễ hạn qua Jira
    3. Research & đề xuất tính năng mới với client

      • Khảo sát công nghệ, thư viện, API phù hợp
      • Xây dựng proof-of-concept để đánh giá tính khả thi
      • Trình bày lợi ích, timeline và chi phí phát triển
    4. Follow-up mọi thông tin liên quan đến dự án

      • Cập nhật meeting notes, decision logs, design docs
      • Gửi báo cáo định kỳ về tiến độ, rủi ro và impediments
      • Đồng bộ thông tin giữa Frontend, Backend, QA, BA
    5. Tham gia gần như mọi cuộc họp

      • Daily Stand-up: cập nhật tiến độ & giải quyết blocker
      • Sprint Planning/Refinement: ước lượng & lên kế hoạch
      • Sprint Review/Demo: giới thiệu tính năng với client
      • Retrospective: thu thập feedback, cải thiện quy trình
    6. Giao tiếp tiếng Anh rõ ràng với team nước ngoài

      • Soạn email, chat và tài liệu bằng tiếng Anh
      • Tham gia video call, thuyết trình và làm rõ requirements
    7. Mentor và đào tạo member mới/junior

      • Onboarding: hướng dẫn dev environment, coding standards
      • Pair-programming, review code riêng để giải thích chi tiết
      • Xây dựng checklist, guideline, template tài liệu
    8. Quản lý rủi ro kỹ thuật

      • Audit kiến trúc định kỳ, đánh giá tech-debt
      • Giám sát dependencies (version, licensing)
      • Lập kế hoạch backup, rollback và disaster recovery
    9. Đánh giá hiệu suất hệ thống & tối ưu

      • Sử dụng profilers, APM, logging để tìm bottlenecks
      • Tối ưu database queries, caching, lazy-loading, CDN
      • Thiết lập alert và dashboard giám sát (Grafana, Datadog…)
    10. Tham gia tuyển dụng & đánh giá năng lực

      • Soạn bài test kỹ thuật, coding challenge hoặc live coding
      • Phỏng vấn: đánh giá thuật toán, kiến trúc và soft skills
      • Phản hồi cho HR về mức lương và vị trí ứng viên
    11. Đánh giá & phản biện yêu cầu từ BA/Client

      • Kiểm tra acceptance criteria: rõ ràng, đầy đủ, khả thi
      • Đề xuất bổ sung UI/UX, user flow và edge-cases
      • Phân tích tác động kỹ thuật (impact analysis) trước khi approve

🗣️ Kỹ Năng Giao Tiếp: Từ Mù Mờ Đến Truyền Đạt Hiệu Quả

  • Trước đây mình xem nhẹ kỹ năng giao tiếp, chỉ tập trung code. Khi discuss với team, mình nói quá nhanh, nhảy ngay vào chi tiết kỹ thuật mà không nêu vấn đề tổng quan, khiến mọi người không nắm được chủ đề.

  • Sau khi được góp ý, mình rút ra bài học:

    Trước tiên nêu vấn đề tổng quan, sau đó mới đi vào chi tiết.

  • Kỹ năng giao tiếp giờ trở thành một trong những kỹ năng sống còn khi làm việc nhóm.


🛠️ Làm Task: Từ Lý Thuyết Agile Đến Thực Tiễn

  • Dù đã học Agile ở trường, khi bước vào sprint planning thực tế, mình vẫn lúng túng trong việc estimate:

    • Căn cứ vào đâu để đưa con số?
    • Buffer thế nào?
    • Bảo vệ estimate ra sao khi bị chất vấn?
  • Kết quả: lần đầu đưa số đại, bị anh Scrum Master hỏi “Tại sao em lại ước lượng như vậy?” rồi không trả lời được. Sau đó mình hiểu rằng:

    Estimating cần có cơ sở, kinh nghiệm và sự chuẩn bị.

  • Mình từng rất sợ bug bị log ở giai đoạn SIT. Giờ thì… vẫn sợ 😅, nhưng đã biết cách đón nhậnfix bug như một phần tất yếu để hoàn thiện sản phẩm.


📬 Lời nhắn gửi đến các bạn intern/fresher đang tìm việc

Trong suốt hành trình tìm việc, mình rút ra một số bài học và lời khuyên dành cho các bạn đang ở giai đoạn khởi đầu:

  • Kiên trì là chìa khóa
    Mình bắt đầu hành trình tìm việc từ tháng 10/2024, và phải đến tận trước Tết Âm lịch mới nhận được offer đầu tiên — hơn ba tháng đầy thử thách và cả chút hoang mang. Trong suốt khoảng thời gian đó, mình gần như "càn quét" mọi nền tảng tuyển dụng có thể: từ LinkedIn, Facebook, Thread, Google cho đến các trang tuyển dụng phổ biến khác. Hồ sơ thì gửi không biết bao nhiêu, còn số lần bị từ chối thì... đếm cũng không xuể. Nhưng mỗi lần “tạch” phỏng vấn lại là một cơ hội để mình học thêm điều gì đó. Mình dần điều chỉnh CV để làm nổi bật hơn những điểm mạnh cá nhân, cập nhật lại danh sách câu hỏi - câu trả lời phỏng vấn, và quan trọng nhất là nhận ra những điểm mình còn thiếu sót để tìm cách cải thiện. Nhìn lại, đó là một hành trình tuy mệt nhưng rất đáng để trải nghiệm và trưởng thành.

  • Luôn chủ động học hỏi và làm mới bản thân

    • Cập nhật công nghệ mới: Hiện tại, techstack của mình chủ yếu là Flutter, nhưng mình định hướng phát triển trong mảng Mobile. Vì vậy, mình dành thời gian học thêm các ngôn ngữ lập trình khác như Kotlin, React Native, cùng với các kiến thức về Clean Architecture, design patterns, system design, và các kỹ thuật tối ưu hiệu suất trên mobile.
    • Dự án cá nhân: Mình thực hiện các project nhỏ để vừa học lý thuyết, vừa thực hành. Các project này không cần phải hoàn chỉnh với đầy đủ các tính năng như đăng nhập, đăng ký,... Mình chỉ tập trung vào một vài tính năng thiết yếu, đảm bảo rằng nếu sau này join vào một dự án với techstack đó, mình có thể dễ dàng thích nghi.
    • LeetCode & mock interview: Mình luyện tập thuật toán hàng ngày và tham gia các buổi mock interview với bạn bè để rèn luyện kỹ năng giải quyết vấn đề dưới áp lực thời gian.
  • Đối mặt với thị trường đầy cạnh tranh
    Ngành công nghệ phần mềm hiện nay đang đối mặt với nhiều thử thách, khi mà số lượng người học IT ngày càng tăng từ những năm trước, cộng với sự phát triển mạnh mẽ của AI, khiến tỷ lệ đào thải trong ngành càng cao. Vì vậy, để tồn tại và phát triển, bạn phải không ngừng cập nhật bản thân. Chỉ khi bạn thật sự nổi bật hơn những người khác, cơ hội mới có lý do để chọn bạn.

  • Xây dựng giá trị khác biệt

    • Tham gia mã nguồn mở (Open Source), đóng góp vào cộng đồng.
    • Viết blog chia sẻ kiến thức (như bài này!), tạo dấu ấn cá nhân.
    • Tham gia hackathon, workshop để kết nối và học thêm kỹ năng mềm.
  • Giữ tinh thần tích cực và chăm sóc sức khỏe
    Stress, bế tắc khi không thấy kết quả là điều không tránh khỏi. Hãy dành thời gian cho sở thích, tập thể dục, ngủ đủ giấc để tinh thần luôn sảng khoái khi tiếp tục “chiến đấu” với CV và phỏng vấn.


Lời kết

Qua những chia sẻ trên, mình hy vọng rằng các bạn đang bắt đầu sự nghiệp, đặc biệt là các bạn fresher hoặc intern, sẽ tìm thấy những bài học giá trị trong hành trình của mình. Công việc không chỉ đơn thuần là làm xong task mà còn là một quá trình học hỏi và phát triển không ngừng. Đôi khi, thành công không đến ngay lập tức, nhưng kiên trì và cải thiện bản thân mỗi ngày sẽ giúp bạn vươn đến mục tiêu.

Chúc các bạn luôn vững bước, kiên nhẫn trên con đường chinh phục vị trí intern/fresher, và sớm tìm được môi trường làm việc phù hợp để phát triển bản thân!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí