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

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 International Software Engineer thực thụ. Một khi đã trở thành ISE thì $$$

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 International Software Engineer thực thụ.

Một khi đã trở thành ISE 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 ISE 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. 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 kiến thức từ nhiều người.
  • Tham gia phát triển các open source.

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: ít công ty 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ư 100% luôn có test, không những một mà hai thậm chí nhiều vòng. Qua vòng test trên máy vào đến vòng trong là test trên giấy hoặc trên bảng luôn. Chém gió hay đến đâu nhưng cái cần là phải làm được. Hỏi rất 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 đó, nhưng những nắm được mà còn phải nắm chắc.

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, mình nghĩ bạn 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 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 ISE đú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.

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

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

Đa số làm hết 8 tiếng trên công ty là oải lắm rồi. Dân IT thì hết giờ làm là bóng bánh, chén chú chén anh, tuần đôi ba lần. Tối về chăm vợ con, hoặc không thì đi chơi với gấu là hết ngày. Mỗi người một cuộc sống, phải biết hưởng, thụ work – life balance.

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

Bản thân mình vẫn đi code thuê với mức lương đủ sống, work for food. Đang cố gắng cải thiện.. sự lười biếng bằng cách đi sớm về muộn tiết kiệm thời gian tránh tắc đường. Thời gian rảnh thì code, viết OSS (open-source software), học course, viết blog.. bla… blo.

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 ▶️.

© Dat Bui

Nguồn: viblo.asia

Bài viết liên quan

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,