Series gồm 3 phần:
- Phần 1: Làm Junior developer tại FPT Software và Aswig Solution
- Phần 2: Làm Full-stack developer tại Lancaster ISS (UK)
- Phần 3: Làm Senior Front-end Engineer tại Algomerchant Singapore
Ở phần trước, mình đã kể về những lỗi lầm mình phạm phải khi còn là junior developer ở FPT Software và Aswig Solution.
Trong phần này, mình sẽ kể chuyện về thất bại và sai lầm của mình thời mới đi du học, đi làm bên UK, qua Trung Quốc và đi xin việc nhé!
Vài lời về chuyện du học
Đợt tìm trường du học, mình cũng chịu khó đi tìm hiểu xem đi nước nào thì được. Sing hay Anh hay Mĩ, Úc.
- Sing thì gần Việt Nam quá
- Mĩ thì nghe nói là xin Visa khó
- Úc thì … chê FPT trường mình là trường tư nên các trường ĐH top của họ không nhận bằng.
Vốn có thằng bạn đã từng du học bên UK, sau khi tìm hiểu chương trình học thấy cũng ok, lại may mắn lụm được học bổng hơn 600 củ nên mình quyết định qua đó học luôn!
Tính ra thì, cái bằng Master cũng không giúp lương mình tăng bao nhiêu. Chẳng qua quá trình sống, làm việc ở nước ngoài khiến mình trải nghiệm nhiều hơn, tự lập và chín chắn hơn thôi.

Lancaster – Lần đầu Code Dạo ở nước ngoài
Qua học ở Lancaster, mình cũng được may mắn vào làm Full Stack Developer cho phòng IT của trường. Chuyện mình phỏng vấn ra sao, làm việc thế nào các bạn xem lại 2 bài trước nhé:
Sai lầm nhẹ, tự tiện … sửa database staging
Do là full-stack nên mình phải làm cả front-end (ứng dụng iLancaster của trường) và back-end (API của ứng dụng) đó.
Đúng ra, mỗi developer sẽ có một database riêng. Tuy nhiên, do các bác IT setup nên cả team dùng chung 1 database staging. Trong quá trình viết API mới, mình cần thêm 1 vài bảng trong database.
Vốn mình tưởng là developer chỉ có quyền đọc/ghi chứ không có quyền modify database này, mình thử kết nối và chạy script migration để thêm bảng. Ai ngờ đâu, script của mình chạy được ok. Table mới được thêm vào, mình lại tiếp tục làm việc.
Lát sau, một bạn dev khác báo là code không chạy được vì database changed. Thế là bác Brian – sếp mình, hỏi team: Có ai sửa database không?
Mình thật thà bảo là: Ủa tao sửa database nè. Tao chạy thử script migation xem tao có permission không? Script chạy được nên tao nghĩ là developer được quyền sửa database mà??
Bác Brian chỉ biết … cười trừ, bảo là chỉ có team leader mới được chạy script migration thôi, để tao set lại quyền cho account dev vậy! Cũng may là không có thiệt hại gì to tát.
Bài học rút ra là: Nếu chưa rõ về qui trình, trước khi bạn thay đổi một thứ gì quan trọng trong dự án (database, architecture), nhớ hỏi rõ qui trình nhé!

Code trước khi confirm requirement, công sức một tuần … đổ sông đổ biển
Học ở UK được 1 năm, theo chương trình, mình có qua Quảng Châu – Trung Quốc để học và thực tập nửa năm, sau đó quay lại UK hoàn thành nốt khóa học. Chuyện cuộc sống, buồn vui ở Trung Quốc thì mình đã có chia sẻ trong series Chuyện Bên Khựa rồi nhé!
Qua bên này, mình vẫn tiếp tục làm việc qua mạng với team ở UK. Mạng thì sida chặn hết Google, Gmail lẫn Skype. Dùng VPN nên tốc độ khá … rùa bò, mình chỉ liên hệ được với team qua email trường là chính.
Đợt đó, mình vẫn đang làm app Digital Tour, ứng dụng giới thiệu các địa điểm tham quan du lịch ở Lancaster. Sếp ra requirement hiển thị và quản lý các event ở gần các địa điểm đó, sử dụng API của Event Brite.
Trao đổi thảo luận qua email khá chậm chạp, được nửa chừng thì … sếp đi nghỉ mất 1 tuần. Chờ cũng lâu nên mình … cắm đầu và code, thêm chức năng quản lý event cho admin, để admin lấy event từ Event Brite, assign vào các địa điểm đó.
Tới khi sếp đi về, demo cho xếp xem thì mình mới ngớ ra là đã… hiểu sai ý sếp. Nếu làm vậy thì mỗi tuần, admin sẽ phải quản lý các event nên rất tốn công, admin mà quên thì event sẽ không được cập nhật luôn.
Sau một hồi thảo luận, mình đổi hướng tiếp cận khác. Khi người dùng ghé thăm một địa điểm, hệ thống sẽ lấy vị trí GPS, gọi API của Event Brite tìm các event gần đó và hiển thị. Tiện cho người dùng, tiện cho admin, lại đỡ tốn công code.

Bài học rút ra: Hãy làm rõ requirement trước khi code. Nếu không, bạn sẽ tốn thời gian để làm ra một thứ không đúng ý khách hàng, chả ai muốn dùng. Mọi công sức của bạn sẽ đổ sông đổ bể!
Chuyện tốt nghiệp và tìm việc
Sau khi tốt nghiệp bằng Master, mình trải qua nguyên một quá trình phỏng vấn dài 20 ngày, qua 5 quốc gia, 6 công ty với tổng cộng hơn 10 vòng PV. Các bạn có thể tìm đọc trong Series Code Dạo Trời Tây nhé.
Đợt phỏng vấn này cũng để lại cho mình khá nhiều kinh nghiệm bi thương như:
- Bị hàng chục công ty từ chối vì không phù hợp (Chắc do không chịu chăm chút CV và cover letter mà cứ gửi đại trà)
- Rớt phỏng vấn vì … chưa quen viết unit test, viết một hồi code trở nên rối (Đợt phỏng vấn Canva của Úc).
Sau vài kì phỏng vấn gian khổ, cuối cùng mình trở thành Senior Front-end Engineer của Algomerchant (cày cuốc bao lâu giờ mới thành senior), một công ty startup của Singapore.

Tạm kết
Phần 2 này cũng khá là bình lặng nhẹ nhàng. Các bạn chịu khó đón xem phần cuối, về những sai lầm trong công việc hiện tại của mình nhé!
Đây mới là phần bi thương, hấp dẫn và gay cấn nhất series đấy!
Em khi làm dự án đầu tay cũng bị mắc những sai lầm này xD Nghe qua requirements của khách hàng, nhưng không hỏi và xác nhận kỹ lại, thành ra lúc bàn giao sản phẩm chạy thử, phát sinh ra thêm 1 đống thứ khách yêu cầu mà chưa có. Nhưng âu cũng là kinh nghiệm cả, vậy mới phát triển được chứ anh nhỉ.
LikeLike
Ừ hihi :3
LikeLike
Unit test ở đây là viết chương trình chạy các case test ạ ….
LikeLike
Khi anh Hoàng xin học bổng thạc sĩ trường Lancaster thì có yêu cầu điểm thời phổ thông phải tốt không anh? Hồi phổ thông em học tệ quá nên điểm xấu quắc à 😀 giờ lên đại học em mới quyết tâm “làm lại cuộc đời” không biết có gỡ gạc được gì không.
LikeLike
Cần bảng điểm Đại Học thôi bạn ơi,
LikeLike