+82

Yếu tố nào để trở thành Global Software Engineer?

© Dat Bui | Buy me a coffee & give your kindness to the world

Bài viết xoay quanh ý kiến quan điểm cá nhân và kinh nghiệm thực tế mình đã trải qua.

Chưa quan tâm đến chuyện mức lương chục nghìn USD mỗi tháng, hãy tập trung vào việc làm thế nào để trở thành Global Software Engineer thực thụ.

Một khi đã trở thành G-SE thì $$$ không còn là mục tiêu quá quan trọng.

1) Target

Đi đâu cũng được, phương tiện nào cũng được, nhưng quan trọng nhất cần biết đích đến. Mục đích thực sự mà bạn mong muốn khi trở thành G-SE là gì?

Mỗi người có một hoài bão riêng không giống nhau. Tuy nhiên, chỉ khi xác định được mục tiêu, chúng ta mới biết được cần làm gì.

  • Bạn muốn hoàn thành tất cả các task được giao? Được vinh danh trong YEP.
  • Bạn muốn mức lương nghìn USD mỗi tháng?
  • Bạn muốn nhiều người biết đến?
  • Bạn muốn học hỏi và cống hiến cho ngành Software phát triển hơn?
  • Hay chỉ đơn giản là muốn thỏa mãn đam mê của mình?

Mình chắc đa số đều đã xem bộ phim Three idiots với câu nói nổi tiếng Hãy cứ theo đuổi đam mê, thành công sẽ theo đuổi bạn.

Mục tiêu của chúng ta thay đổi qua mỗi giai đoạn, gần đúng như theo thứ tự trên, ứng với tháp nhu cầu Maslow.

Để đạt được tất cả các mục tiêu đó, về cơ bản sẽ bao gồm 3 nền tảng chính:

  • Nhiệt huyết, tò mò và sự kiên nhẫn.
  • Kiến thức căn bản.
  • Ngoại ngữ.

Với các practice:

  • Code và code thật nhiều. Chắc chắn rồi, code luôn là bước căn bản nhất và kéo dài cho đến khi kết thúc sự nghiệp.
  • Đọc sách, học course, viết blog.
  • Giao lưu, chia sẻ, học hỏi từ những người xung quanh.
  • Tham gia phát triển các open source.
  • Thi chứng chỉ. Có quan điểm cho rằng bằng cấp không quan trọng. Nhưng nghĩ kĩ một chút, nếu bạn có chứng chỉ Java và đi làm cho công ty sử dụng .NET thì đúng là không quan trọng.. với công ty thật. Nói thế là hiểu rồi 😂.

2) Passion, curious and patient

Chúng ta rất giỏi, nhưng thiếu sự tò mò, sự nghi ngờ về những thứ mà chúng ta đã biết hoặc đang biết, đặc biệt sau khi ra trường vài năm.

Nói riêng về sự nhanh nhạy thì chúng ta có thừa. Học library mới, framework mới rất nhanh để giải quyết vấn đề hiện tại. Một khi đã giải quyết xong thì.. lại bị cuốn theo các task khác, hoặc do.. hơi lười để tìm hiểu cụ thể xem framework đó giải quyết vấn đề thế nào. Bí ẩn đằng sau nó là gì?

Thời gian đi làm đã chẳng đủ, hoàn thành task là tốt lắm rồi, lấy đâu thì giờ mà nghiên cứu thêm. Không giải quyết được vấn đề gì, công ty cũng chẳng trả lương cho việc này.

Tuy nhiên, mọi thứ sẽ khác khi chúng ta có lửa nhiệt huyết và tò mò với những thứ ta đang làm. Hãy luôn đặt ra câu hỏi trong đầu. Nó không đem lại lợi ích tức thời, nhưng nó là cả một gia tài đồ sộ mà bạn không thể ngờ trong tương lai.

Nó hoạt động thế nào, tại sao làm như vậy? Vì sao lại là thế này mà không phải thế khác? Tưởng chừng như những câu hỏi vô nghĩa chả giúp ích gì.

Nhưng khi suy nghĩ đến những điều này, tức là chúng ta đang tự cho bản thân cơ hội để tìm ra những thứ hay ho hấp dẫn hơn. Đó chính là thứ tạo nên sự khác biệt, chưa nói đến việc có thể tạo ra những thứ tương tự, thậm chí tuyệt vời hơn thứ đang có.

Chúng ta có thể làm rất nhanh, phát triển thần tốc. Nhưng chính điều đó làm đánh mất đi cơ hội để phát triển lâu dài và bền bỉ.

Ít nhất, việc đào sâu hiểu kĩ cũng đem lại lợi ích ngắn hạn là pass qua những vòng phỏng vấn đầy lý thuyết 😂, giúp bạn dễ dàng deal lương hơn trong vòng tiếp theo.

Niềm đam mê và sự tò mò sẽ vẽ ra con đường tương lai tươi sáng phía trước. Sự kiên trì, bền bỉ sẽ giúp chúng ta đi trên con đường đó lâu hơn.

Tò mò trong công việc thôi chứ đừng tò mò chuyện hàng xóm nhé 😂.

Ngoài ra, ngành IT đã, đang và luôn luôn cực HOT. Số lượng đào tạo tuyển sinh rất lớn, thế hệ Z ngày càng thông minh và tốc độ hơn chúng ta nhiều lần. Nếu không giữ cho mình ngọn lửa đam mê và sự tò mò thì rất dễ dàng bị đào thải khỏi cuộc chơi này.

Các bạn có thể tham khảo điểm chuẩn tuyển sinh ngành IT của các trường Đại Học là cực cao. Trung bình khoảng 24 điểm, cao nhất là Bách Khoa 29 điểm 😟. Yêu cầu năng lực cao tương đương ngành Y.

Một thực tế phũ phàng khác là công nghệ thay đổi chóng mặt, ngôn ngữ mới xuất hiện liên tục. Chúng ta không đủ khả năng chạy đua với nó. Do vậy, hãy tập trung vào một vài thứ nền tảng, tò mò về nó để nắm thật chắc, thật sâu để trở thành expert trong lĩnh vực đó. Bạn sẽ chiến thắng.

3) Kiến thức căn bản

Riêng ngành IT, cá nhân mình thấy knowledge quan trọng hơn experience khá nhiều. Không có nghĩa rằng experience không quan trọng, mà là chúng ta cần mở rộng knowledge của mình hơn nữa.

Vài năm đầu đi làm mình học hỏi được kha khá kinh nghiệm. Tuy nhiên sau đó, mình thấy rằng việc vẫn cứ lặp đi lặp lại như thế, vẫn là phân tích như này, design như này, code như này, review như này...

Công nghệ thay đổi chóng mặt, kinh nghiệm làm việc với những thứ trước đó không phát huy được quá nhiều giá trị.

Thực tế, requirement thay đổi từng ngày và chỉ có phức tạp lên chứ không đơn giản đi. Bài toán ngày càng lớn, kinh nghiệm chưa có cũng không sao, nhưng chắc chắn cần phải có kiến thức để xử lý được nó.

Kinh nghiệm giúp chúng ta giải quyết các vấn đề.. lặp đi lặp lại rất tốt. Nhưng nó không giúp ích nhiều trong việc xử lý những vấn đề mới.

Ví dụ mình là Java Developer, sếp yêu cầu xử lý bài toán ML, AI các kiểu... Chẳng có tí kiến thức nào thì làm kiểu gì?

Muốn tiếp xúc nhiều thứ lớn hơn, cơ hội việc làm mới mẻ thì.. kinh nghiệm chẳng giúp ích gì trong chuyện này 🐹.

Như vậy, hãy gia tăng lương kiến thức của mình từng ngày, từng giờ thay vì cố gắng tích lũy kinh nghiệm đang có. Ngành nào thì mình không biết, ngành IT thì nó phũ phàng như vậy đấy.

Càng biết nhiều thì càng có cơ hội biết nhiều hơn nữa. Kiến thức giống như một khoản đầu tư sinh lời gấp đôi, gấp ba, gấp n lần trong lương lai. Còn cụ thể gấp bao nhiêu lần thì.. phụ thuộc vào kiến thức đó là gì và đã áp dụng nó thế nào.

Ngoài những kiến thức tự học, một nền tảng kiến thức khác mà chúng ta hay.. coi thường khi còn đi học đó là kiến thức cơ bản. Những thứ quan trọng rất hay bị xem nhẹ, để đến bây giờ ngân nga hai chữ.. giá như:

  • Giải tích, đại số, hình học không gian, đạo hàm, cực trị, tích phân...
  • Thuật toán sắp xếp.
  • Thuật toán tìm đường.
  • Xác suất thống kê.
  • Cấu trúc dữ liệu: queue, stack, array, tree, graph...
  • Quy trình phát triển phần mềm...
  • Kiến thức về testing, tạo test case, các phương pháp test...
  • Đấy là còn chưa kể một đống các thứ khác khi học nó sẽ mà cảm thấy.. không có ích, vô dụng.

Tất cả chi thay đổi cho đến khi chúng ta bắt đầu đi làm. Và càng làm lâu năm càng thấy thấm thía những thứ đó là quan trọng. Vì sao nó quan trọng đến vậy thì.. mình nghĩ mỗi chúng ta đều có câu trả lời.

Mình thấy khá nhiều câu hỏi và bài viết liên quan đến việc Không học giỏi toán thì có làm lập trình viên được không?

Đa số các câu trả lời là làm được, toán học chỉ là công cụ, không giỏi cũng không sao. Ngoài toán học còn nhiều kĩ năng khác phải quan tâm như kĩ năng thuyết trình, làm việc nhóm, quản lý thời gian... Mình cũng không phản đối câu trả lời này.

Nhưng...

Theo quan điểm cá nhân, nó chỉ đúng một phần. Đồng ý rằng không cần giỏi toán cũng có thể trở thành developer, nhưng muốn trở thành một engineer giỏi thì điều kiện cần chắc chắn là phải nắm rõ căn bản và cần giỏi toán. Các kĩ năng như thuyết trình, làm việc nhóm, phân chia task, quản lý thời gian thì.. bất kì ngành nghề nào cũng cần.

  • Giải bài toán AI, ML, Recommendation System... cần áp dụng xác suất thống kê.
  • Bài toán giao hàng liên quan đến thuật toán tìm đường, tối ưu khoảng cách.
  • Bài toán sắp xếp hàng, quản lý kho bãi liên quan đến hình học không gian, tính diện tích, thể tích...
  • Bài toán sắp xếp dùng các thuật toán sắp xếp khác nhau tuỳ thuộc vào cấu trúc và khối lượng dữ liệu...
  • Bài toán bảo mật liên quan đến thuật toán mã hóa RSA, AES với phi hàm Euler, phi hàm Carmicheal...

Nếu không nắm rõ kiến thức nền tảng và thuật toán căn bản thì cũng giải quyết được, nhưng hiệu quả đem lại có thể không cao.

Ngành nào mình không biết chứ riêng ngành này, sự khác biệt nằm ở lượng kiến thức mà bạn có, khả năng phân tích vấn đề và áp dụng các kiến thức ấy vào một cách linh hoạt để đem lại hiệu quả cao.

Thực tế khi phỏng vấn với các công ty trong và ngoài nước, có 2 điểm khác biệt chính:

  • Trong nước: không nhiều nơi có entry test, phỏng sẽ hỏi về lý thuyết và tập trung nhiều vào kinh nghiệm.
  • Nước ngoài: gần như luôn có test, không những một mà hai thậm chí nhiều vòng. Test trên máy, vào đến vòng trong là test trên trên giấy hoặc bảng trắng luôn. Hỏi kĩ và sâu về lý thuyết, đôi lúc có cảm khác hơi thừa thãi vì gần như chẳng bao giờ đụng đến phần đó. Nhưng với họ, đã là một kĩ sư thì cần phải nắm được những lý thuyết đó, không những nắm được mà còn phải hiểu sâu hiểu kĩ.

Tất nhiên, mỗi môi trường sẽ có nhược điểm, ưu điểm, yêu cầu và tiêu chuẩn khác nhau. Hãy nhìn vào thực tế phát triển và định hướng nghề nghiệp, mình nghĩ mỗi người sẽ tự tìm ra được câu trả lời rằng điều gì tốt hơn, nơi nào là phù hợp với mình. Bỏ qua cá vấn đề râu ria không liên quan khác nhé.

Cuối cùng là English:

Nó là điều không thể thiếu nên không bàn luận thêm. Ngoài reading và writing là hai thứ tối thiểu cần có, chúng ta cần thêm khả năng speaking để thực sự trở thành Global SE đúng nghĩa. Trả lời, phát biểu và diễn đạt được ý của mình cho mọi người cùng hiểu.


NOTE: tranh thủ kiếm tìm talent về với team mình. Nếu bạn đang cân nhắc một cơ hội mới với 2 mục tiêu:

  • Job remote full time, không quản thúc thời gian hay địa điểm. Bạn hoàn toàn có thể vừa nhâm nhi li cocktail bên bãi biễn, vừa fix bug và trò chuyện với crush.
  • Package hàng năm lên tới 50k USD (chưa tính thưởng + bonus), tất nhiên nó còn tùy thuộc vào sự chai lì của bạn.

Đừng ngại ngần contact với mình nếu có nhu cầu nhé. Mà thời buổi này ngại chỉ có thiệt thân thôi, good luck!


4) Lời thú tội ngọt ngào

Tất cả những thứ trên ai cũng biết, ai cũng nói được. Chỉ có hành động mới thật sự là điều khó khăn.

Để kiên trì với mục tiêu và thực sự hành động là điều không dễ.

Đa số làm hết 8 tiếng trên công ty là oải lắm rồi. Dân IT hết giờ làm là bóng bánh, chén chú chén anh, tuần đôi ba lần. Mỗi người một cuộc sống, một mục tiêu khác nhau, phải biết hưởng, thụ work - life balance này nọ lọ chai. Cũng là điều hợp lí.

Công ty Product đâu đó có nhiều thời gian hơn, Outsource thì OT ON sấp mặt... Nhưng tựu chung lại vẫn là mục tiêu tới đâu, bền bỉ thế nào, lộ trình ra sao để đạt được cái đích mình mong muốn.

May mắn chỉ là một phần trong cuộc chơi, điều còn lại là kiên trì tới đâu mà thôi ▶️.

After credit

Cuộc hành trình ngàn dặm luôn bắt đầu từ những bước chân nhỏ bé...

Nói xa vời chẳng bằng nói những thứ ngay xung quanh chúng ta, liệu bạn đã thực sự làm tốt những thứ hiện tại. Hãy tự đặt ra một vài câu hỏi, và follow theo vài tip dưới đây mình đã đúc kết được để nâng cao skill và level của bản thân:

  • Điều quan trọng nhất luôn là thái độ, nó quan trọng hơn kĩ năng rất nhiều. Hãy có một thái độ cầu tiến, làm mọi thứ tốt nhất có thể trong khả năng của bạn.
  • Tư duy phản biện, không phải bảo thủ nhé.
  • Design kĩ càng, vẽ vời đủ kiểu, nghĩ về các khả năng có thể xảy ra trong tương lai trước khi nhảy vào implement. Mình hay nói đùa là design và code cho 10 năm tới.
  • Implement xong hãy review kĩ lại một lượt, một lượt nữa.. và một lượt nữa.
  • Tạo PR xong tiếp tục review lại trên PR một lần nữa. Nó đủ tốt chưa, có thể tốt hơn được không? Đồng ý rằng nó có thể mất thời gian, nhưng hãy nghĩ đến việc chính bạn là người thức dậy lúc 2h sáng để xử lí đống bùi nhùi mà mình viết ra, đen hơn thì phải đi xử lí đống shit của đứa khác.
  • Code thật nhiều và view code thật nhiều. Xem code của những guru trên github, tìm cách giải khác nhau cho cùng một solution để xem họ xử lí thế nào và so sánh. Học từ code của người khác luôn là một tip đơn giản và rất nhanh để nâng cao skill bản thân. Tất nhiên phải biết chọn code chọn người mà view nhé.

© Dat Bui | Buy me a coffee & give your kindness to the world


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.