Trong các bài trước, chúng ta đã tìm hiểu sơ sơ về lập trình và ngôn ngữ lập trình. Một trong những thắc mắc lớn nhất của khá nhiều bạn hiện nay đó là học lập trình thì bắt đầu từ đâu, và cần phải học những gì để có thể trở thành một lập trình viên chuyên nghiệp. Bài viết này sẽ giải đáp những thắc mắc đó.
Mục tiêu là tối thượng
Giống như tất cả mọi vấn đề khác trong cuộc sống, để học lập trình bạn cũng cần đặt cho mình một mục tiêu cụ thể. Bạn muốn học để làm gì, vì mục đích gì? Có vô số các mục đích mà các bạn có thể đặt ra cho việc học, chẳng hạn như: tôi nghe nói lập trình kiếm tiền ác lắm, lương tháng ít ra cũng vài chục củ!!!, hay tôi nghe nói học lập trình dễ kiếm bạn gái, con gái ở trường công nghệ là hàng siêu hot siêu hiếm nên muốn vào để trải nghiệm cảm giác ngôi sao, hay đọc ở đâu đó một bài viết về một lập trình viên viết app và kiếm 320 tỷ một năm!!! vân vân và mây mây…
Có vô số mục tiêu mà bạn có thể đặt ra, nhưng dù là mục tiêu nào thì nó cũng cần phải xác định cho bạn rằng: TÔI CẦN HỌC LẬP TRÌNH NGAY LẬP TỨC!!!!. Chỉ những động lực đủ mạnh và đam mê thì bạn mới có thể theo được nghề. Và nó phải đủ dài để bạn có thể đi tiếp được. Ở đây xin phép được hơi “đa cấp” chém gió một tí!! Nhưng thực sự là mục tiêu là thứ TỐI QUAN TRỌNG. Không phải sách vở nói thế nào thực tế nó là như vậy. Có rất nhiều bạn sinh viên, em trai mưa, em gái mưa sau bao năm học ở trường đại học, hoặc sau một thời gian đã ra trường đi làm rồi thì mới phát hiện ra làm lập trình mệt quá, chán quá, hay không có hứng thú để đi tiếp nữa và rẽ ngang. Điều này làm tốn rất nhiều thời gian của chính các bạn. Một cuộc đời bạn có trung bình 70 năm, trong đó có đến chục năm đầu đời và chục năm cuối đời là bạn chẳng đủ khỏe để làm gì rồi. Vậy thì thực chất thời gian nó ngắn lắm, đừng nghe những lời hứa xuông kiểu tuổi trẻ thì cứ trải nghiệm đi, cứ sai lầm đi. Vì sai lầm chán rồi thì bạn cũng đâu còn trẻ nữa! Mục tiêu sẽ giúp bạn xác định xem bạn có đi tiếp được không và đi đến đâu. Về cơ bản, mục tiêu có hai dạng:
- Các mục tiêu chung tổng quát: chẳng hạn tôi phải khởi nghiệp và công nghệ, tôi phải là Bill Gate 2.0, Elon Musk 3.0… Tôi muốn một công việc ổn định, nhàn hạ,…Cái này sẽ xác định bạn đi đến đâu. Nếu mong muốn khởi nghiệp thì bạn có thể làm lăn lộn vài năm về lập trình, trải nghiệm càng nhiều công ty, càng nhiều công nghệ càng tốt để nắm được bức tranh tổng quát của ngành, rồi thêm chút kinh tế, tài chính và vốn để xoay trở. Còn bạn muốn đi làm sáng cắp ô đi, đêm cắp ô về thì bạn nên rèn luyện những kỹ năng thật tuyệt vời dần dần và càng chuyên sâu ban đầu càng tốt. Do đó mới nói, việc học như thế nào, bắt đầu từ đâu là tùy theo mục tiêu tổng quát của bạn.
- Tiếp theo là các mục tiêu cụ thể, chẳng hạn năm nay tôi phải học thành thạo ngôn ngữ C, năm sau phải là chuyên gia về giải thuật, hay tôi phải làm một lập trình viên Android (vì có thể kiếm được 300 tỷ), tôi phải làm một lập trình viên Full-stack (vì nghe nó hot). Các mục tiêu cụ thể khác với mục tiêu tổng quát ở chỗ, nó là các mục tiêu mà các bạn hướng tới theo từng giai đoạn và rất chi tiết về vị trí mà bạn làm. Nhưng thực ra, bạn chẳng thể làm mãi một công việc trong ngành công nghệ mà không có sự thay đổi đi lên hoặc rẽ ngang được!!! Do đó, đây là các mục tiêu mà trong một giai đoạn nào đó, bạn cảm thấy muốn hoặc cần. Còn về dài hạn thì chưa chắc!!! Tất nhiên các mục tiêu cụ thể, ngắn hạn sẽ cần giúp cho bạn đạt đến mục tiêu chung tổng quát. Nếu không thì bạn đang đi lạc đường rồi !!!. Chẳng hạn, tôi phải làm chuyên gia lập trình C trong năm nay, nhưng mục tiêu tổng quát của tôi phải kinh doanh về website thương mại điện tử!!! Ồ, có vẻ như không hợp lý lắm!
Nói tóm lại là mục tiêu sẽ ảnh hưởng đến cái bạn bắt đầu và các giai đoạn bạn học tiếp theo. Do đó, trước khi bắt đầu, hãy xác định chính xác cho mình một mục tiêu.
Sau khi đã xác định được mục tiêu, đến bước thứ hai, hãy chọn cho mình một hướng đi cụ thể đầu tiên
Lựa chọn hướng đi
Sau khi đã có mục tiêu tổng thể, chúng ta sẽ đi vào mục tiêu chi tiết và cuối cùng, bạn chưa biết gì, nên bạn cần lựa chọn một hướng đi đầu tiên để bắt đầu. Trong lập trình, có rất nhiều hướng đi khác nhau mà bạn có thể lựa chọn. Trong bài viết này, chúng ta sẽ giả định là bạn muốn học lập trình và làm lập trình, còn các công việc khác, có thể bạn thấy nó hay hơn và muốn chuyển hướng qua, tuy nhiên, do thời lượng có hạn nên chúng ta sẽ giành nó cho bài sau. Bài này chúng ta chỉ tập trung đến nghề Developer (lập trình viên). Vậy, có những hướng đi nào cho lập trình viên. Về cơ bản, dựa trên môi trường phát triển mà chúng ta có thể chia lập trình viên thành sáu nhánh chính sau:
Lập trình Web
Đây có lẽ là nhánh phát triển nhất và phổ biến nhất hiện nay. Trên thế giới có khoảng 2 tỷ trang web, và số lượng công việc và nhu cầu về ứng dụng web ngày một phát triển. Chúng ta đã nghe ở đâu đó rằng các công nghệ Web đang chết dần. Nhưng thực tế nó vẫn sống rất dài. Bởi ngay cả những ứng dụng di động (vốn được coi là lên ngôi hiện nay) vẫn sử dụng rất nhiều công nghệ web, thậm chí nhiều ứng dụng được phát triển dạng Hybird đa nền tảng, trong đó dựa rất nhiều vào công nghệ Web. Chính vì thế nó vẫn là một hướng đi khá rộng mở. Về cơ bản thì các công nghệ về Web chia thành 2 mảng chính: lập trình front-end và lập trình back-end. Bên trong mỗi mảng lại có rất nhiều các đầu công việc chi tiết hơn. Tuy nhiên chúng ta không nói cụ thể ở đâu mà chỉ cần nắm được rằng Front-end tức là vẽ ra cái giao diện hiển thị cho người dùng, và thiên về đồ họa, hiển thị, tối ưu hóa giao diện…Còn back-end là vẽ ra chức năng phía sau mỗi nút bấm mà bạn tương tác, chẳng hạn bạn bấm mua hàng thì phần back-end sẽ xử lý một loạt công việc logic để đảm bảo bạn mua được hàng đúng theo quy trình và đảm bảo an toàn. Mỗi phía sẽ có những ngôn ngữ và đặc điểm cần chú trọng, cũng như hướng đi khác nhau.
Lập trình di động (Mobile)
Đây là hướng mới chỉ có khoảng chục năm phát triển, trong hướng này, bạn sẽ làm quen với các công nghệ lập trình trên hai nền tảng hệ điều hành chính hiện nay là iOS và Android (các hệ điều hành khác hoặc đang chết dần hoặc là một phiên bản cải biên của Android do đó chúng ta không quan tâm đến ở đây). Về cơ bản thì lập trình di động bạn có thể đi theo hai hướng lập trình dạng Hybrid tức là viết một bản chạy khắp nơi trên cả Android lẫn iOS (chẳng hạn như Ionic, Xamarin, gần đây là React Native hay thậm chí gần hơn nữa là Flutter…) và một hướng là các Native app tức là gắn chặt với hệ điều hành (chẳng hạn như Android Java, Kotlin với Android hay Objective-C, Swift với iOS). Và cũng như công nghệ Web, thực chất vẫn có một phần đất sống cho các công nghệ Back-end cho ứng dụng di động, đặc biệt với những ứng dụng cần xử lý lượng người dùng lớn, tương tác với máy chủ chẳng hạn như Facebook, Instagram,Shopee, Tiki…
Lập trình ứng dụng (PC)
Đây có thể coi là nghành khá cổ điển trong lập trình với lịch sử rất lâu đời. Nó giúp tạo ra các ứng dụng phía máy tính cá nhân hệ điều hành Windows, Linux hoặc MacOS. Về cơ bản nó có sự khác biệt so với hai hướng trên. Mặc dù đây là hướng phát triển có thể coi là có nhiều hạn chế hơn nhiều so với hai hướng trên bởi xu thế cloud hóa và di động hóa các ứng dụng đang ngày một gia tăng. Tuy nhiên, theo một cách nào đó thì vẫn có đất sống cho mảng này. Tất nhiên, sẽ không sôi động như hai mảng di động và web. Lí do, hầu hết những sản phẩm cần có đều đã có và rất tốt, thậm chí đã chuyển dịch lên cloud, và chỉ còn đâu đó đôi chút một số sản phẩm nghiệp vụ đặc biệt vẫn còn cần phát triển mà thôi.
Lập trình Game
Có lẽ, không thiếu các anh em có giấc mơ game thủ lúc nhỏ nhìn thấy hướng đi này thì khá là thích đây. Thực chất đây cũng là một hướng đi khá sôi động trong thời gian những năm 2010-2016 đặc biệt sau sự xuất hiện cực kỳ thành công của Flappy Bird. Người người làm game, nhà nhà làm game, thậm chí mod lại, nhái lại các game đã có trên trợ ứng dụng. Và cho đến hiện nay thì đây vẫn là một hướng đi khá hot. Mặc dù vậy, xu thế chơi của người chơi bây giờ đã rất khác và sẽ tương đối khó có được lượng khách hàng như trước đây nữa. Khách hàng đã ngày một khó tính hơn và tất nhiên, đất sống cho các nhà phát triển cá nhân cũng thu hẹp đi khá nhiều. Ngoài ra thị trường tuyển dụng của các công ty (nếu bạn không muốn tự làm ở nhà dạng freelancer) thì cũng không sôi động như Web hay Mobile. Nếu so sánh số lượng doanh nghiệp làm về Game ở Việt Nam so với làm Web và ứng dụng Mobile thì nó chỉ là một con số rất nhỏ.
Lập trình hệ thống nhùng và điều khiển công nghiệp
Đây là hướng có lẽ là tồn tại lâu đời nhất so với tất cả các hướng về lập trình, các hệ thống điều khiển công nghiệp, nhúng, vẫn đã và đang cần lập trình hàng ngày. Xe thông minh, máy giặt thông mình, Camera thông minh…. Có hàng tỷ tỷ thứ cần nhu cầu trong xã hội IoT, xã hội số hiện nay. Tất nhiên, để làm được mảng này, bạn sẽ cần phải học khá sâu sắc về phần cứng và điện tử, các thứ, nói chung là không dễ nhằn. Nếu là trước đây thì mảng này không phổ biến lắm ở Việt Nam, tuy nhiên chỉ trong vòng mấy năm trở lại đây thì đây cũng có thể coi là một hướng khá bùng nổ với nhu cầu nhân lực rất lớn và mức lương khá hậu.
Lập trình hệ thống hoặc framework
Đây có lẽ là cái khó nhằn nhất trong số những cái khó nhằn trong công việc về lập trình. Nói nôm na là bạn xây dựng một thứ để cho các ông khác có thể xây dựng cái khác lên nó. Do đó, tư duy thiết kế, khả năng tối ưu hóa, lập trình của bạn cũng phải khá siêu cao thủ. Các hệ điều hành, các framework, thư viện…. là mục tiêu của các developer dạng này. Ở Việt Nam thì các công việc dạng này cũng không nhiều.
Vậy làm AI và Blockchain thì ở đâu?
AI và blockchain chỉ là hai khái niệm ứng dụng, chúng có thể được sử dụng trong hầu hết các ứng dụng trên nếu muốn. Chẳng hạn các hệ thống Camera thông minh, các phần mềm nhận dạng chữ viết tay, các website thương mại điện tử…Tất cả chúng đều có thể cần AI hay ứng dụng trên công nghệ blockchain. Bạn thấy mức lương của các lập trình viên dạng này rất cao. Đơn giản nó cần kỹ năng lập trình các ngành ở trên OK + kiến thức và kỹ năng trong cả cách ứng dụng công nghệ này vào ứng dụng thực tế. Và tất nhiên nó khá mới nên nhu cầu cao, nguồn cung nhân sự lại ít và tất nhiên giá cả đẩy lên khá cao. Quy luật cung cầu cả!!! Vậy còn nếu muốn theo đuổi hướng đi này thì sao? Các công việc khác về hai ngành này thì có lẽ chúng ta tạm không nói ở đây, trước tiên chúng ta quan tâm đến công việc lập trình theo hướng này. Nó đòi hỏi yêu cầu khá cao về kiến thức nền tảng, lẫn khả năng lập trình tốt. Vì vậy thực ra bạn vẫn cần phải đi qua các hướng trên sau đó mới có đủ kỹ năng lập trình để theo đuổi mảng này!!! Khá thất vọng phải không ạ!!! Thôi, dục tốc thì bất đạt!!!
Lựa chọn ngôn ngữ và công nghệ
Sau khi đã chọn được một hướng đi mà bạn cho rằng là phù hợp với bản thân, thì tiếp theo, bạn có thể tiếp tục chọn cho mình một ngôn ngữ lập trình để khởi đầu.
Nghe ở trên thì có vẻ có rất nhiều ngôn ngữ phải không ạ? Mỗi mảng lại có một vài ngôn ngữ phổ biến, vậy thì nên bắt đầu với ngôn ngữ nào bây giờ? Thực ra việc lựa chọn ngôn ngữ ban đầu có hai hướng:
Hướng đầu tiên đó là chúng ta lựa chọn ngay theo mục tiêu mà chúng ta đã đặt ra ở trên, chẳng hạn nếu muốn làm lập trình web thì ta có thể nhảy ngay vào học HTML, CSS, JavaScript, PHP, NodeJS thậm chí là Ruby….Muốn làm Mobile thì cứ cái mới nhất mà học: Kotlin, Swift, React Native, Flutter… Nếu chọn theo cách này thì cũng được !!! Bạn sẽ có ngay cái bạn muốn, bạn có thể làm được việc ngay lập tức chỉ sau khoảng vài ba tháng nỗ lực chăm chỉ và làm project. Tuy nhiên, hướng đi này cũng tiềm ẩn khá nhiều rủi ro. Bởi khi bạn chọn các ngôn ngữ ứng dụng bậc cao này, các nền tảng framework đi kèm với nó đã có đầy đủ khá nhiều chức năng, bạn chỉ cần gọi nó ra và sử dụng. Vì vậy, nếu bạn cũng là một người “khá lười” thì nó sẽ làm cho bạn càng lười hơn và bỏ quên bản chất phía sau của nó. Điều đó làm bạn sẽ bỏ mất cơ số các kiến thức nền tảng cần thiết để phát triển sau này. Còn nếu bạn thực sự “chăm chỉ” cầy cuốc thêm thì cũng chẳng ảnh hưởng gì.
Hướng thứ hai đó là học một ngôn ngữ cơ sở. Có lẽ bạn thường nghe đến ngôn ngữ khởi đầu nên chọn là C/C++, Java hay Python??? Thông thường, trong các trường đại học, hướng đi này sẽ được người ta chọn sẵn cho bạn. Chẳng hạn 70% số trường ở Việt Nam bắt đầu dậy sinh viên với C/C++, 25% còn lại là Java, và một số còn lại lựa chọn Python. Các ngôn ngữ khởi đầu này khá hay ở chỗ nó sẽ làm bạn phải xây dựng mọi thứ từ đầu (dù nó cung cấp khá nhiều thư viện sẵn nhưng bạn nên bắt đầu bài bản từ đầu). Nếu bạn chăm chăm sử dụng luôn thư viện của các ngôn ngữ này thay vì kiên nhẫn để bắt đầu từ đầu với các ngôn ngữ này thì chẳng khác nào bạn đang gây khó khăn cho mình, tức là bạn đang lấy nhược điểm của hướng đi thứ nhất lẫn nhược điểm của hướng đi thứ hai trộn vào nhau. Và cuối cùng, bạn chẳng thu lại được gì cả. Có lẽ bạn đã đọc rất nhiều các hướng dẫn kiểu: Lập trình XYZ với 50 dòng code,…thì hãy nên coi chừng. Đã muốn học từ gốc, thì đừng đốt cháy giai đoạn. Mục tiêu của các ngôn ngữ này là giúp cho bạn bắt đầu với những kiến thức cơ sở nhất và có thể vận dụng sau này để đi xa hơn. Chẳng hạn C/C++ sẽ giúp bạn làm quen với các khái niệm về quản lý bộ nhớ, biểu diễn dữ liệu trong máy tính, xử lý mức thấp, con trò,…điều này sẽ khá cần thiết cho bạn để tối ưu hóa chương trình. Và tất nhiên, nếu bạn chọn hướng lập trình nhúng hay điều khiển thì C/C++ càng thể hiện sức mạnh của nó. Ngược lại Python sẽ giúp bạn dễ dàng tiếp cận các khái niệm lập trình một cách đơn giản nhất và đỡ chán nhất, bởi bạn đã có thể làm khá nhiều điều với Python cơ bản để đỡ chán. Java thì tương tự, nhưng nó phức tạp hơn ở các khái niệm và tập hợp hay hướng đối tượng. Trong ba ngôn ngữ này, bạn có thể chọn bắt đầu với bất cứ ngôn ngữ nào. Tuy nhiên, ở đây, tôi xin phép được đề xuất luôn để giúp bạn đỡ phân vân:
- Nếu làm nhúng, điều khiển thì bạn nên bắt đầu luôn với C/C++
- Nếu muốn làm di động nên bắt đầu với C/C++ hoặc Java
- Nếu muốn làm hệ thống và framework nên bát đầu với C/C++
- Còn các hướng khác bạn có thể bắt đầu với bất cứ thứ gì, có thể là Python cho đơn giản.
Học các kiến thức cơ sở
Sau khi đã có công cụ là ngôn ngữ cơ sở học ở mức thành thạo, đã đến lúc bạn tự tạo cho mình một nền tảng vững chắc với các kiến thức cơ sở. Nhìn chung, đối với lập trình viên kiến thức cơ sở cần có bao gồm:
- Cấu trúc dữ liệu và giải thuật: Đây gần như là cơ sở bắt buộc, vì thực tế kể cả đi phỏng vấn cho công việc đầu tiên thì nó cũng giúp ích khá nhiều đấy. Ngoài ra, nó sẽ giúp bạn hiểu được các thuật giải, khi nào cần áp dụng thuật toán gì, cần xử lý như thế nào cho tối ưu, hiệu quả. Rất cần thiết đấy!!!
- Mạng máy tính: bạn có thể sẽ khá bất ngờ vì bạn là lập trình viên đâu cần hiểu gì về mạng. Điều đó vừa đúng vừa không đúng, bởi có khá nhiều công việc bạn cần hiểu tương đối về cách thức mạng máy tính vận hành đó. Mặc dù bạn không cần phải hiểu sâu chi tiết nhưng một nền tảng cơ bản sẽ giúp ích khá nhiều đó. Nếu không bạn sẽ tương đối gặp vấn đề khi cấu hình để đưa web ra ngoài, làm việc với các giao thức trong kết nối IoT, debug các lỗi kết nối của chương trình…
- Sử dụng công cụ quản lý phiên bản như Git. Ngày nay, chúng ta thường phải làm việc nhóm và do đó việc sử dụng các version control như Git là điều không thể thiếu. Chính vì vậy kỹ năng này dù không được dạy trong trường cũng vẫn là một kỹ năng khá càn thiết nền tảng mà các bạn nên tự trang bị cho mình.
- Kỹ năng mềm trong thời đại công nghệ như: sử dụng các công cụ tìm kiếm, đọc hiểu tài liệu, tự học,…Các kỹ năng này rất cần thiết cho mọi người, kể cả khi bạn không làm lập trình viên.
Đó là hai phần nền tảng cơ bản nhất cần thiết đối với đa số các công việc ở trên, ngoài ra với mỗi hướng ở trên lại có những kiến thức nền tảng nữa cần phải sử dụng nhiều chẳng hạn:
- Với lập trình nhúng và điều khiển bạn nên có kha khá kiến thức về: Kiến trúc máy tính và hợp ngữ để biết cách máy tính vận hành, đôi chút về hệ điều hành để hiểu được các cơ chế quản lý bộ nhớ, tiến trình.
- Với lập trình di động, việc hiểu các cơ chế của hệ điều hành, cách thức quản lý các thành phần, bộ nhớ của máy sẽ giúp ích khá nhiều cho bạn.
- Với lập trình Game thì hơi đặc biệt một chút, đó là bạn nên biết về giải tích, đạo hàm, tích phân, vật lý, toán rời rạc, bởi nó giúp bạn tính toán các chuyển động phù hợp hơn cho game của mình, cũng như biết cách để mô phỏng nó trên ứng dụng.
- Với lập trình có AI hay blockchain thì các kiến thức cơ sở về toán khá quan trọng bao gồm cả đại số cao cấp, giải tích. Bởi để hiểu sâu về các khái niệm về AI thì đây là những kiến thức không thể thiếu. Ngoài ra với Blockchain bạn nên hiểu về toán rời rạc và lý thuyết số để nắm được các cơ chế đồng thuận và mật mã trong nó.
Làm một vài Project thực tế
Sau khi đã học kha khá cơ sở rồi, bạn nên bắt đầu bắt tay vào làm vài dự án thực tế. Có thể tăng độ khó dần cho nó. Chẳng hạn, ban đầu bạn chỉ lập trình một trong CV để layout lên web cá nhân, sau đó thêm các chức năng chat, bình luận, hỏi đáp, quản lý bài viết…Hãy tăng dần độ khó và sao cho luyện tập nhuần nhuyễn càng nhiều các kiến thức bạn học được càng tốt để bạn biết mình đang thiếu cái gì, kỹ năng gì, yếu mảng nào để cải thiện. Qua các dự án thực tế sẽ giúp bạn tự tin hơn về khả năng làm việc của mình. Sau khi tự làm một vài dự án cá nhân và cảm thấy nó ổn. Bạn có thể chuyển sang contribute (đóng góp) cho một vài dự án mã nguồn mở. Điều này sẽ giúp bạn rèn luyện các kỹ năng làm việc nhóm và biết cách để joint vào một dự án thực tế với nhiều người. Đây là cách để rèn luyện khả năng làm việc thực tế và cũng là một cơ sở để bạn có thể đưa vào CV của mình sau này.
Sau giai đoạn này, bạn đã hoàn toàn tự tin để đi xin việc hoặc thực tập. Một công việc thực tập sẽ giúp bạn rèn luyện thêm nhiều kỹ năng và nhuần nhuyễn hơn.
Rèn luyện, rèn luyện và rèn luyện
Và cuối cùng, nghề lập trình là nghề không bao giờ được hài lòng, công nghệ luôn thay đổi và mục tiêu của chúng ta vẫn luôn ở phía trước. Bạn luôn cần phải không ngừng học hỏi và cố gắng và đừng quên cố gắng theo mục tiêu chứ đừng cố gắng một cách vô định. Bạn đi 1 vạn dặm nhưng chỉ là 1000 vòng cái sân nhà, thi đích đến của bạn vẫn chỉ là tại chỗ, bạn đi vô định chẳng khác nào đi vòng tròn và bạn sẽ chẳng đi được đến đâu cả. Hãy đặt ra mục tiêu và đi theo mục tiêu đó, một cách kiên trì. Chẳng hạn, nếu bạn muốn mở một công ty về sản xuất game vậy thì bạn hãy dự kiến cho mình 2 năm học làm game freelancer tại nhà, 2 năm đi làm tại công ty phát triển về game, học các công nghệ như VR, AR, sử dụng thành thạo các ngôn ngữ và thư viện như Unity, Unreal… Nếu công việc hiện tại không có cái mình cần học đó thì hãy tự học và nhảy qua làm cái mình cần đó. Hãy bám sát mục tiêu, thật kiên định và bạn sẽ thành công.