
Làm việc remote, chủ động thời gian, thu nhập cao, được sống gần gia đình, không phải bon chen ở HN hay HCM. Đó là điều mà ai cũng mong muốn. Ở VN nếu như có thể làm remote cho tây và nhận lương theo mức lương bên đó thì mình nghĩ cuộc sống có thể còn tốt hơn là sang nước ngoài làm việc trực tiếp.
Tuy nhiên, để đạt được level như vậy thì ngoài chuyên môn chính, chúng ta cần phải chuẩn bị những gì? Đã làm lập trình thì kỹ năng về ngôn ngữ lập trình, về loại công nghệ mà chúng ta theo đuổi là những thứ bắt buộc mà ai cũng hiểu là phải có. Tuy nhiên khi làm việc với những team theo dạng international, có nghĩa là các member có thể ngồi rải rác khắp nơi trên thế giới, lệch về múi giờ, văn hoá và ngôn ngữ. Lúc đó chúng ta sẽ gặp thêm những khó khăn khác so với khi làm việc tại các công ty nội địa.
Trong bài viết này mình sẽ liệt kê một số kỹ năng khác ngoài phần chuyên môn chính mà mình thấy là hữu ích khi làm việc theo dạng như thế này.
-
Đầu tiên là tiếng Anh, cái này thì chắc ai cũng hiểu nên mình sẽ không đề cập nhiều ở đây. Mình chỉ muốn nhấn mạnh là khi làm việc trong các cty bản địa kể cả có yêu cầu giao tiếp bằng tiếng anh, thường sẽ có PM hoặc đồng nghiệp là người Việt. Nên nhiều khi khó khăn có thể trao đổi bằng tiếng Việt đề nhờ họ giúp đỡ. Tuy nhiên khi làm việc theo kiểu global thì chúng ta sẽ phải tự lực cánh sinh. Tất cả mọi vấn đề phát sinh trong công việc chúng ta đều phải gọi điện hoặc chát với đồng nghiệp là người nước ngoài để tìm cách giải quyết.
-
Sử dụng Git. Làm ở các cty global thì sẽ hay có project lớn và phức tạp. 1 sản phẩm có thể có vài chục đến hàng trăm branch source code khác nhau. Source code được rất nhiều developer cùng contribute nên nhiều khi khó hình dung ra được mối liên hệ đan xen giữa các luồng phát triển mã nguồn. Git ngoài việc giúp chúng ta commit phần source code theo đúng quy định của dự án, nó còn giúp chúng ta đọc hiểu code của người khác dễ dàng hơn. Ví dụ như nó giúp ta biết được dòng code này được thêm vào từ yêu cầu nào, được thêm vào trong hiện trạng source code ra sao… Khi project phức tạp và có nhiều người cùng phát triển, muốn đọc hiểu được thì bắt buộc phải sử dụng Git một cách thành thạo.
-
Devops basic. Trong các dự án phát triển phần mềm theo kiểu international thì hệ thống infrastructure thường sẽ đặt tập trung 1 chỗ và mọi người sẽ remote vào đó. Đôi khi lỗi phát sinh có thể không phải do source code mà là do môi trường. Nếu như chúng ta làm việc trong các công ty bản địa, thì chúng ta có thể hỏi đúng người đồng nghiệp có chuyên môn về Devops như fix lỗi build package, cài đặt môi trường máy server. Tuy nhiên ở các team global do tính chuyên môn hoá cao nên nhiều khi chúng ta cũng không biết chính xác ai là người phụ trách việc đó. Hoặc nhiều khi chúng ta cũng không dám khẳng định chắc chắn lỗi đó là của họ hay của chúng ta. Chưa kể việc lệch múi giờ nên việc gửi yêu và đợi họ xử lý cũng mất thời gian. Do vậy chúng ta cũng nên chủ động trong việc điều tra nguyên nhân, khoanh vùng lỗi. Những kỹ năng basic về devops như fix lỗi build open source, cài đặt môi trường làm việc, debug những lỗi liên quan đến môi trường, hạ tầng…. Nên là kỹ năng cần có để chúng ta chủ động hơn trong công việc.
-
Những ngôn ngữ phụ như shell script, makefile, automake, perl, python… cũng nên nắm được, ít nhất là ở mức độ đọc hiểu. Vì chúng được dùng để build những project lớn hoặc có thể trong việc chúng ta phải đọc hiểu code của những ngôn ngữ này để làm được phần việc của mình.
-
Kỹ năng về team work, giao tiếp, xử lý tình huống phát sinh. Trong công việc thì chắc chắn sẽ phải có vấn đề phát sinh mà chúng ta không thể tự mình giải quyết. Do rào cản về ngôn ngữ, văn hoá và địa lý nên chúng ta cần giỏi trong những kỹ năng như trình bày vấn đề, giao tiếp và xử lý tình huống phát sinh một cách hợp lý. Nhiều người chuyên môn tuy giỏi những những kỹ năng về team work như thế này lại yếu.

Nhìn chung thì khi chuyển sang làm việc theo dạng international sẽ yêu cầu người lập trình viên phải làm tốt những kỹ năng chuyên môn thuộc dạng phụ trợ, thiên hướng về full stack nhưng có thể vẫn phải nắm sâu được về skill chính của mình.
Thực sự thì list skill cần có là nhiều, và đúng là vừa rộng nhưng vẫn phải giỏi về 1 chuyên môn chính nào đó. Vậy làm sao để có thể hoàn thiện được. Theo mình thì đầu tiên thì trong đầu phải có suy nghĩ đây là những kỹ năng cần phải học. Khi đó thì mỗi khi trong công việc có vấn đề liên quan phát sinh, chúng ta sẽ cố gắng hiểu cặn kẽ và học được từ đó, thay vì cố gắng giải quyết cho xong vì nó không phải là kỹ năng quan trọng với ta.
Ngoài ra phải luôn chủ động, làm việc team work tốt và tuân thủ đúng theo process. Phải hoàn thiện bộ 3 skill chính là chuyên môn, ngoại ngữ và kỹ năng mềm dùng trong công việc. Khó khăn là có nhưng cũng giúp chúng ta trưởng thành hơn.
