Sinh viên Mobile nên trang bị những gì, vì sao nên chọn Mobile App?
Lập trình di động (Mobile developer) và lập trình web (web developer) hiện đang là 2 mảng phổ biến với nhu cầu tuyển dụng cao nhất trong lĩnh vực lập trình. Theo báo cáo từ TopDev, mức lương trung bình của Mobile Developer là $1,178, cao hơn so với Backend và Frontend Developer ($901 & $897). Thực tế thì thị trường Mobile App đang diễn ra thế nào?
Cùng TopDev trò chuyện với anh Trần Duy Thanh – giảng viên, phó trưởng bộ môn khoa Hệ thống thông tin Đại học Kinh tế – Luật để nghe câu chuyện nghề nghiệp của anh và những góc nhìn từ giảng đường đến thực tế.
Về khách mời Trần Duy Thanh:
- Hiện tại đang là giảng viên công tác tại trường Đại học Kinh tế – Luật, Đại học Quốc gia TP. HCM.
- Là phó trưởng bộ môn khoa Hệ thống thông tin, tham gia giảng dạy từ năm 2009 tới giờ và hiện đã công tác tại trường Kinh tế – Luật khoảng 4 năm.
- Anh vừa giảng dạy vừa tham gia quản lý dự án cũng như tham gia một số startup, các phần mềm liên quan đến AI Machine Learning chạy trên robo, cụ thể là chuyên về lĩnh vực giáo dục.
Vì sao anh lựa chọn mảng lập trình mobile app, đặc biệt là Android?
Năm 2008 Google bắt đầu thông báo đưa ra các framework liên quan đến Android để phát triển, ngay tại thời điểm đó mình biết là thị trường thế giới cũng đang phôi thai và chắc chắn trong tương lai nó sẽ bùng nổ. Tất cả các ngành nghề đều liên quan đến lập trình cả và mỗi người chúng ta đều có một cái smartphone, đi đâu cũng dùng smartphone để làm việc. Ngoài tính năng nghe, gọi, nhắn tin trên điện thoại còn có chức năng app để tương tác phần mềm cũng như xem các báo cáo, đặc biệt là những leader dù đi công tác người ta cũng có thể dùng điện thoại để tương tác rất dễ dàng.
Từ các thống kê, nhu cầu sử dụng rất lớn nên mình thấy rằng các trường đại học nên phát triển các chương trình đào tạo liên quan đến mobile app và bản thân các lập trình viên đó nếu đã có kiến thức cũng có thể tự nghiên cứu được mobile app, hoặc nếu chỉ đang là sinh viên (chưa là kỹ sư) cũng nên cố gắng tìm những trung tâm hay trường học hoặc những “sư phụ” nào chuyên về mobile app để mình có thể học, trao đổi thêm kiến thức và có nền tảng vững chắc về mobile app sau này.
Anh hãy chia sẻ thêm con đường nghiên cứu, những kiến thức mà anh đã trau dồi để đến được level như hiện tại?
Năm 2001 là năm đầu tiên mình học về lập trình, lúc đó không có máy tính. Mình mới ngộ ra một điều là để muốn học cho giỏi, trước tiên chúng ta phải “cày” cho nhiều, ngoài những kiến thức cơ bản trên trường chúng ta được học, mình còn học được từ đồng nghiệp, từ bạn bè và các trang mạng cũng được.
Nhưng học là một chuyện, chúng ta phải dấn thân vào, phải “cày bừa” nó, làm thật nhiều dự án. Trong quá trình đi học, mình luôn cố gắng cày bừa rất là nhiều môn, học từ các nhóm chứ không bỏ tiền ra học thêm như bây giờ. Khi mình học nhiều, làm nhiều đồ án như vậy thì thầy cô sẽ để ý đến, cụ thể mình lọt vào mắt xanh của thầy mình, mình có kiến thức môn học để áp dụng vào dự án. Ngoài ra các thầy sẽ trực tiếp gửi mình đi thực tập ở các công ty.
Mình rất muốn đi dạy, ngày xưa nhà rất nghèo nên chỉ muốn đi dạy thôi nhưng mà không được. Mãi đến khi đi làm được 5 năm thì nhận được lời mời từ thầy của mình và mình đồng ý ngay lập tức. Trong quá trình đi dạy đó mình mới nhận ra là kiến thức khi đi làm đó cũng chưa đủ, vì nó chỉ rèn luyện mình thành kỹ sư lành nghề, mình chưa thật sự hiểu sâu hiểu rộng được, nên khi đi dạy mình đối mặt với áp lực đó là tất cả công nghệ liên quan đến chương trình đào tạo, liên quan đến xu thế công nghệ của công ty và trên thế giới mình bắt buộc phải nghiên cứu. Lúc đó mình rơi vào trạng thái thiếu kiến thức và phải nghiên cứu rất nhiều.
Năm 2005 ai cũng nhắc đến bộ XML, nhưng bây giờ XML nó lại trở nên phổ biến, sau đó lại có JSON. Đến năm 2008 thì bắt đầu làn sóng về mobile, mobile app phát triển rất mạnh như vũ bão vậy. Mình tự cảm thấy và mình nghĩ phải chọn cái môn gì khó nhất, những ngành nghề gì khó nhất để mình làm. Tại vì những cái gì đơn giản mình làm được thì người khác cũng làm được, như vậy sẽ có tính cạnh tranh cao, do đó mình chọn môn nào khó nhất, đỉnh nhất, rõ ràng là không có ai cạnh tranh với mình và khi đi làm thì các công ty sẽ chọn mình, nhờ đó mình sẽ thành công.
Sau đó đến những năm vừa rồi, blockchain, AI machine learning bắt đầu um sùm lên và đa phần người ta tuyển dụng về AI. Sắp tới mình nghĩ rằng nó còn liên quan đến cả robot nữa, theo mình thì có thể nghiên cứu về robot trong tương lai. Do đó phải luôn luôn lắng nghe và nắm bắt xu thế công nghệ để hướng theo đó mà phát triển, mình phải luôn luôn đi nhanh nhất. Như trong một nhóm lập trình tầm trung mình phải đứng nhất trong đám lập trình tầm trung đó, trong một nhóm chuyên gia mình phải đứng nhất trong các chuyên gia. Cái đích mình hướng tới như vậy để nó tụt xuống là vừa.
Đường đi là phải nắm bắt công nghệ của các công ty, thế giới cần cái gì để mình nghiên cứu. Dĩ nhiên là khi đi dạy trong các nhà trường đa phần sẽ lạc hậu 4 – 5 năm so với ở ngoài, vì một chương trình đào tạo 4 năm mới xong, sau 4 năm mới đánh giá được, nên phải chấp nhận trong trường thì mình sẽ lạc hậu 4 – 5 năm. Nếu mình lạc hậu vậy thì mình sẽ đi thế nào so với doanh nghiệp, làm sao để sinh viên hiểu được những kiến thức đó nên mình phải dấn thân thôi. Vai trò giảng viên thì phải đi nghiên cứu và đưa công nghệ mới vào nên mình mời rất nhiều chuyên gia công nghệ về cùng giảng dạy, tham gia thảo luận và có những talkshow.
Chương trình học tại UEL nói riêng và bậc đại học nói chung, các bạn có được lựa chọn và được giảng dạy chi tiết về lập trình mobile app không hay chỉ là những kiến thức cơ bản, nền tảng và từ đó các bạn sẽ phải tự lựa chọn hướng đi, tự trau dồi nếu muốn xây dựng được những ứng dụng có thể “thương mại hóa”?
Khoa Hệ thống thông tin của mình có 3 ngành: Hệ thống thông tin Quản lý (MIS – Management Information System), Thương mại điện tử và Kinh doanh số & Trí tuệ nhân tạo. Đặc điểm của trường mình là 50% về kinh tế và 50% về tin học. Trong quá trình giảng dạy thì chương trình sẽ dạy lập trình từ cơ bản đến nâng cao, rõ ràng là sinh viên phải được cung cấp các kiến thức như kỹ thuật lập trình, cơ bản về lập trình web, web nâng cao, xử lý cơ sở dữ liệu như mobile app, phân tích cơ sở dữ liệu AI.
Dĩ nhiên là mỗi trường sẽ có chương trình đào tạo khác nhau, có các mảng khác nhau, mình không thể so sánh các trường với nhau vì mỗi trường lại có một mục tiêu đào tạo khác nhau. Tuy mình chuyên về lập trình nhưng bản thân vẫn học về kinh tế, tức là mình vẫn có bằng đại học quản trị kinh doanh, mình vẫn có bằng về phần mềm là khoa học máy tính, nhưng trong quá trình học mình lại thích về lập trình hơn nên mình rẽ ngang đi theo lập trình.
Cũng may mắn là khi được thầy trưởng khoa mời về giảng dạy, khoa lại kết hợp 50% kinh tế và 50% lập trình thì rõ ràng đúng là thế mạnh của mình. Mình thấy rất hay vì nếu như chỉ biết về kỹ thuật không thì chỉ biết cắm cúi suốt ngày làm code, còn khi mình biết về kinh tế thì ứng dụng công nghệ thông tin vào việc kinh doanh rất là hay. Nếu như mình biết tiếng Việt không, rất giỏi tiếng Việt thì đưa quyển sách y khoa hay triết học đọc vẫn không hiểu. Trong lập trình cũng vậy, mình giỏi lập trình là một việc, chỉ giỏi mỗi lập trình mà không có kiến thức về kế toán, không có kiến thức về y học, ví dụ vậy, nếu mình nắm dự án yêu cầu viết phần mềm chuyên về kế toán, mình hoàn toàn không biết gì về kế toán thì không làm được. Do đó thời đại này đòi hỏi phải liên ngành, nếu như vừa biết kinh tế, vừa biết phần mềm sẽ rất hay. Mình có thể viết các phần mềm liên quan đến kinh tế, mình có thể vừa nói được vừa làm được. Người ta đã từng nói đa phần dân kỹ thuật làm được mà khó nói, suốt ngày chỉ ngồi coding, máy tính chính là người yêu thứ hai của lập trình viên (cười). Kết hợp 50% kinh tế và 50% lập trình sẽ rất hài hòa, mình mạnh cả hai, nhiều người nói mình học cả 2 thì sẽ yếu cái này hoặc yếu cái kia, mà quan điểm mình thì khác.
Các chương trình đào tạo trong khoa đều có đầy đủ những thứ đó. Dĩ nhiên trong 4 năm sinh viên sẽ học rất nhiều môn, có 1 – 2 năm sinh viên học các kiến thức chuyên ngành, lúc đó sẽ được học các kiến thức chuyên sâu kể cả lập trình và kinh tế. Chúng ta hay nghe người ta nói sinh viên ra trường sẽ được đào tạo lại, mình thì mình không đồng ý lắm, nghe nó nặng nề quá. Sinh viên phải “mài đũng quần” trên ghế nhà trường 4 năm thì mới thành thạo được một nghề nhưng chưa chắc đã làm được, do đó các công ty chỉ bổ sung thêm thôi chứ không thể nói là đào tạo được. Công ty sẽ giúp những vấn đề đó, giúp sinh viên thăng hoa hơn, được triển khai những ý tưởng, những kỹ năng của mình.
Anh nhận thấy đặc điểm chung của các bạn sinh viên về việc xác định hướng đi cụ thể cho sự nghiệp của mình như thế nào?
Trong trường mình thì đa phần đầu vào các sinh viên định hình là sẽ đi theo kinh tế, bằng bên trường mình cũng là cử nhân kinh tế, học 50% kinh tế, 50% kỹ thuật nhưng vẫn là cử nhân kinh tế. Xu hướng chọn vào hiện nay các sinh viên chọn cả 3 là thương mại điện tử, hầu như tất cả mọi ngành nghề chúng ta đều liên quan đến thương mại điện tử, rồi hệ thống thông tin quản lý, quản trị doanh nghiệp các loại. Trong năm nay thì khoa cũng đã phát triển Kinh doanh số và Trí tuệ nhân tạo, sắp tới sẽ tuyển sinh. Ngành này rất nặng về kỹ thuật. Kỹ thuật ở đây không phải là nhăn nhó làm thế nào để coding ra một chương trình nào đó mà là làm thế nào để ứng dụng vào. Cụ thể là phải làm thế nào để print code, học về AI xử lý như thế nào và ứng dụng ra sao API phục vụ cho người dùng. Mình có một bài toán, mình tìm những công cụ để giải quyết bài toán đó chứ không phải chỉ chăm chú tìm ra những đoạn code.
Anh có lời khuyên nào dành cho các bạn sinh viên đang muốn theo nhóm ngành này không?
Nếu khuyên là chọn ngành nào thì đó không phải là nhiệm vụ ngay từ đầu lúc tuyển sinh, nhiệm vụ lúc này có phòng truyền thông. Còn khi đã vào học và chọn chuyên ngành, mỗi lớp sẽ có cố vấn học tập, họ sẽ tư vấn cho từng trường hợp cụ thể. Mình phải biết cụ thể “nội công” của em đó như thế nào, mong muốn của em ra sao, em muốn ra trường làm cái gì, chuyên về ngành gì thì lúc đó mình mới khuyên rõ ràng được. Còn bây giờ hỏi anh lời khuyên như thế nào, chọn ra sao thì rất khó, vì theo quan điểm của anh thì như vậy nhưng năng lực và mong muốn của bạn đó khác. Tại vì năng lực là một chuyện còn muốn là một chuyện khác, họ giỏi về lập trình nhưng lại không muốn lập trình thì sao, không phải ai giỏi cái gì cũng đều thích cái đó, giỏi lập trình và muốn làm kinh tế hoàn toàn không sao cả.
Còn lời khuyên thì bây giờ anh chỉ khuyên là nếu sinh viên muốn chọn ngành nghề thì khi chọn rồi nên cố gắng theo tới cùng, điều quan trọng của con người là ý chí muốn vượt qua và đạt được. Đa phần sinh viên rất mơ mộng, học được vài môn 8, 9, 10 đã nghĩ mình giỏi, nhưng khi vào ngành chuyên về kỹ thuật học rất khó. Mới đầu học phải chấp nhận là nó khó, chứ nếu dễ thì ai cũng đã làm được, nếu mình chọn dễ thì cạnh tranh cao, mình sẽ trở thành con tốt thí, nếu làm không được họ sẽ loại mình luôn, sẵn sàng thay thế mình, như trong cây nhị phân chúng ta học là phần tử thế mạng. Nên đôi khi thấy khó mình phải mừng chứ, khó sẽ ít người theo. Đỗ đại học là mình đã trùng rồi, đặc biệt là các sinh viên Đại học Quốc gia đầu vào rất cao, trung bình từ 7, 8 điểm một môn mới đỗ được, sinh viên đã có căn bản rất tốt rồi vào chỉ định hướng là xong thôi. Do đó anh chỉ có thể khuyên là nếu các em đã lựa chọn ngành của mình rồi thì hãy yêu thích nó, có ý chí theo đuổi đến cùng.
Các em sinh viên hay nhìn qua nhìn lại rồi lo lắng “Ô người kia lương cao quá”, “Ô người đó làm này làm kia”, chúng ta phải nhìn vào quá trình người ta làm việc chứ không phải nhìn vào kết quả. Vì bố mẹ đã tốn rất nhiều tiền lo cho mình ăn học thì mình phải học cho ra trò, mục tiêu phải lấy được cái bằng loại ưu càng tốt rồi xuống dần, phải ra được trường chứ. Đừng lấy Bill Gates ra để nói không cần bằng đại học vẫn thành công, nếu như vậy thì cả thế giới đã không cần phải đi học rồi. Anh cũng khuyên thật sự là ở xã hội Việt Nam thì vẫn cần cái bằng đại học trước đã, vì lần đầu tiên đi xin việc giới thiệu em giỏi lắm nhưng em không có bằng thì không được, gặp lần đầu họ phải cần một cái gì để minh chứng chứ đúng không?
Tóm lại là cần phải cố gắng học cho tốt, trong quá trình học biết đâu thầy cô thấy vậy sẽ gửi bạn đi thực tập, bạn thực tập tốt sẽ được công ty giữ lại làm luôn, mình đỡ mất thời gian xin việc.
Vậy theo anh 1 bạn sinh viên học lập trình nên rèn bản thân đủ cứng trước khi ra trường hay nên tìm công việc thực tập từ những năm 3-4?
Anh dạy một số trường thì trong đó có 1 trường ở Đồng Nai, có một bạn mới sinh viên năm 2 đã đi làm. May mắn là anh sếp đó rất quan tâm đến khả năng làm việc, anh cần người làm được việc. Nhưng đi làm rất xa nha, em này kiên trì đi làm, lương lúc đó chỉ có mấy trăm đô, cứ lặp đi lặp lại như vậy sau 3, 4 năm đi học, vừa ra trường là có kinh nghiệm 2, 3 năm làm việc, tiền lương cao, hiện tại bạn ấy đã mua được một căn nhà bên Gò Vấp. Cho nên anh muốn khuyên là không nhất thiết đợi cho hết 4 năm học rồi mới đi thực tập, đi làm mà bất cứ khi nào có cơ hội hãy cứ đi làm nhưng không được bỏ học nha. Mình không được lấy lí do là em bận làm quá em không có thời gian học. Nếu làm một việc thì quá đơn giản, anh phải vừa học vừa làm chứ, vừa học vừa làm tốt tôi mới định hình anh là một người bản lĩnh, biết sắp xếp công việc của bạn. Nên anh hay khuyên sinh viên em đi làm càng sớm càng tốt mà không được lơ là việc học vì học là việc tối thượng của sinh viên, còn làm thêm là tùy mỗi người chọn cho phù hợp, những người con nhà giàu sẽ có cơ hội hơn.
Anh hay nói với sinh viên là, 2 sinh viên giỏi giống nhau, tính cách giống nhau, ý chí giống nhau nhưng một người con nhà giàu, một người con nhà nghèo thì chắc chắn con nhà giàu sẽ học tốt hơn vì họ có điều kiện hơn. Vậy nếu em con nhà nghèo không có điều kiện thì thay vì mình có 4 tiếng học hãy học 8 tiếng, người ta ngủ 10 tiếng thì em ngủ 2 tiếng thôi, đi học và làm nhiều thứ vào để có kinh nghiệm. Về việc có nên để “cứng cáp” hay là không, theo anh thì đối với mỗi trường đại học, sau khi sinh viên học đến năm 3 năm 4 là bắt đầu thực tập, tức là ai cũng “cứng” rồi, còn “cứng” như thế nào là tùy vào yêu cầu công việc, mỗi công ty sẽ có đòi hỏi khác nhau.
Về nhu cầu Mobile App và nền tảng của Mobile App
Anh nhận thấy nhu cầu, cơ hội làm việc của Mobile App Dev nói chung và Android Dev nói riêng hiện như thế nào?
Hiện nay tất cả ngành nghề đều liên quan đến tin học, đặc biệt là lĩnh vực mobile app. Mobile app trước kia có 3 ông lớn là iPhone, Android và Windows, nhưng vừa rồi Windows đã “bỏ cuộc chơi” rồi. Theo như thống kê ở thị trường Việt Nam, Mobile App về Android tính đến tháng 6 chiếm khoảng 20%, iOS chiếm khoảng 18%. Độ chênh chỉ khoảng 2% thôi nên cơ hội nghề nghiệp đới với Android và iOS là ngang nhau.
Nhưng theo anh với những tin tức thì android dễ xin việc hơn, vì nó rẻ và các thông tin sử dụng nó rất là nhiều, đặc biệt là Android có thể tương tác trực tiếp phần cứng, có thể gọi điện thoại, nhắn tin,… Còn iOS cũng có thể làm được nhưng khó hơn, các công cụ, thiết bị liên quan đến android cũng rẻ tiền hơn, phần đông chúng ta dễ tiếp cận hơn, vì sinh viên tài chính ít. iOS vẫn tham gia nhưng theo anh nghĩ thì thị phần nó ít hơn một xíu, vì nó khó cả về triển khai phần cứng và giới hạn tài chính. Hầu như các trường học không dám dạy iOS, vì muốn dạy cần phải có tài khoản này tài khoản kia, ít nhất là tài khoản 99 USD/năm, mỗi năm renew một lần, rồi phải sắm máy Mac. Cho nên sử dụng android có vẻ dễ dàng hơn, đó là quan điểm cá nhân của anh thôi. Còn nếu có điều kiện để trang bị thì tốt, tài chính mạnh thì dễ nhưng tài chính eo hẹp trong khi học phí thấp thì cũng không đòi hỏi cao được.
Một sinh viên có kỹ năng thì anh nghĩ sinh viên có khả năng tự học được. Nhà trường đã dạy Android thì sinh viên phải tự mapping qua nghiên cứu iOS chứ, cái gì cũng phải dạy thì bao giờ mới trưởng thành. Các trường đại học thường dạy nền tảng, sinh viên có thể tự bươn chải ra khi có công nghệ mới. Như xây dựng từ gốc thì hầu như gặp giông bão nó không trốc gốc, còn nếu xây từ ngọn thì chỉ cần cơn bão nhẹ đã sụp đổ rồi. Do đó là cơ hội nghề nghiệp của sinh viên android và iOS là ngang nhau, tương đương.
Có vài khái niệm mới cũng đang trở nên phổ biến là Cross Platform. Nếu so sánh với Native App hay Hybrid App thì cả 3 khác nhau như thế nào?
Đó cũng là một số khái niệm khá phổ biến như Native app, Cross Platform, Hybrid App. Mỗi một nền tảng lại có ưu điểm và nhược điểm riêng của nó, tùy vào nhu cầu, khả năng tài chính và kỹ thuật của công ty, người ta sẽ áp dụng cho phù hợp.
Theo kinh nghiệm 20 năm lập trình của anh thì mới bắt đầu học thì học nền tảng quan trọng, cụ thể như một người lập trình viên muốn giỏi trước tiên phải giỏi về kỹ thuật lập trình như C++ chẳng hạn rồi đến cấu trúc dữ liệu giải thuật. Đối với ngành lập trình chỉ cần 2 môn mà giỏi thì anh cam đoan những môn khác không có nghĩa lý gì cả, tại vì có kỹ năng rồi thì những môn khác chỉ là tham chiếu qua và phát triển lên thôi.
Quay lại việc học 3 nền tảng này thì theo anh trước hết nên học về Net app, vì đó chính là cái nền tảng liên quan trực tiếp đến hệ điều hành của nó. Nó sẽ sử dụng hết toàn bộ, khai thác hết toàn bộ tài nguyên hạ tầng trên hệ điều hành đó, bản thân hệ điều hành đó nó xài luôn. Nhưng cái dở là rõ ràng khi nó phân mảnh ra rất nhiều hệ thống, nhiều loại Mobile App, vừa iOS vừa Android, nếu như muốn viết Native app muốn làm 2 app thì em phải viết 2 lần, rất tốn thời gian và chi phí.
Nếu như dùng Cross Platform hay còn gọi Motive Platform, cái quan trọng nhất của nó là tìm ra phím word phù hợp để viết 1 lần mà nó chạy tương thích với nhiều hệ điều hành khác nhau. Bản chất của nó là nó viết ra phần mềm và build ra Native app vậy thì Native app là cái gốc, từ Cross platform cụ thể như Xamarin – một trong những platform rất tốt để viết Motive platform, viết nó ra để build android và build iOS. Dĩ nhiên nó bắt mình tạo máy ảo mình mới build ra được, bản thân cái Cross platform là nó giúp chúng ta build ra nhiều native app cho phù hợp với hệ điều hành đó, cái hay của nó là viết một lần xài nhiều lần nhưng cái dở là nó không tận dụng được hết cơ sở hạ tầng trong hệ điều hành của nó và nguy hiểm nhất là khi gốc bị thay đổi thì Cross platform phải làm lại từ đầu. Đơn cử như Android, version 4 khác, 6.0 khác, 11 khác rõ ràng nếu Cross platform không đổi thì sẽ “chết” ngay, không tương thích.
Còn với Hybrid nó có nhiều khái niệm, mà nhìn chung là nó sự kết hợp của web HTML, CSS… và nhúng vào mobile app để đưa lên chợ ứng dụng. Điểm lợi của nó là cũng viết một lần nhưng dùng nhiều hệ điều hành khác nhau vì nhúng web vào bên trong app, cái dở là nó không mượt bằng Native app và cũng không thể lấy được hết toàn bộ tài nguyên của hệ điều hành đó.
Mỗi nền tảng lại có lợi hại khác nhau nên nếu như phải chọn thì sẽ tùy vào nhu cầu của mình. Nếu chỉ viết android thì viết Native app, còn nếu phải chạy vừa android vừa iOS thì dùng Cross platform.
Java & Kotlin hiện đang là 2 ngôn ngữ phổ biến nhất. Anh có thể so sánh giữa 2 ngôn ngữ này?
Trước kia Android đa phần dùng Java, sau này Kotlin mới ra đời và được Google mua lại và đã nhúng vào trong hệ thống để lập trình. Theo anh, một ngôn ngữ nào đã là chính thống của nền tảng đó, như Google quá mạnh thì theo anh chúng ta nên viết cả 2. Giống như một “đại ca” nào đó biết nhiều ngón võ công, biết cả của Võ Đan và Thiếu Lâm thì đều tốt, Java và Kollin cũng vậy nên viết cả hai. Nhưng nó cũng có những điểm mạnh và điểm yếu khác nhau,
Điểm mạnh của Kotlin là ra đời sau thì nó sẽ kế thừa lại những cái trước. Java hiện nay thì nó khoảng 20 năm rồi và số lượng thiết bị dùng cho Java rất nhiều, Java có thể già cỗi theo vấn đề thời gian, Kotlin thì nó mới và kế thừa những cái gì hay của Java, những cái gì dở của Java nó sẽ cải tiến. Kotlin có thể viết nhanh hơn, trình dịch nó xây dựng tốt hơn và bảo mật hơn, đặc biệt là nó tương thích với toàn bộ các framework trước đó người ta viết bằng Java, có thể chuyển đổi qua lại, cách viết của Kollin ngắn hơn.
Tuy nhiên ngôn ngữ mới nào nó cũng khó khăn, Java đã 20 năm rồi sinh viên học cách đây 10 năm cũng đã quen rồi hay là 3, 4 năm nay cũng quen rồi nên bây giờ chuyển qua Kollin cũng hơi sốc. Anh khuyên là học tốt Java trước vì Java là cái gốc, nó phổ biến rồi, hệ thống của nó đã ổn định rồi. Những hệ thống nào đã là Java rồi thì cứ làm bình thường, những hệ thống mới nếu chúng ta cảm thấy Kotllin phù hợp thì nên dùng Kotlin vì nó có nhiều ưu điểm mà cũng vì nó mới quá nên trở thành nhược điểm. Kollin mới ra đời mà tâm lý của chúng ta là chống đối lại những cái gì mới đã nhưng chúng ta nên bình tĩnh phán đoán đã, rằng cái mới này nó hay như thế nào.
Do đó mình thấy những cái hay cái dở nhưng mình phải quyết định nên chọn nó vì điểm nào. Nó hay là một chuyện nhưng có phù hợp hay không lại là một chuyện khác.
Học như thế nào là hiệu quả?
Anh có thể chia sẻ kinh nghiệm, làm thế nào để học và theo đuổi hiệu quả đối với việc lập trình mobile app?
Như anh đã nói “ngành gì cũng phải cày như trâu”, trước khi làm thầy hãy làm thợ trước đã, muốn làm chuyên gia thì phải làm nghiệp dư trước đã. Nói chung là học ngành nghề gì, dù làm bất cứ ngành nghề nào đều phải “cày” đã, đã yêu rồi thì phải yêu cho tới cùng, chung thủy với nó.
Có những người lại chung thủy theo kiểu, em chỉ học cái này thôi không học những cái khác nữa, em chỉ biết Android thôi, em học thật sâu, em học 20 năm về Android là em sẽ giỏi, điều đó là không đúng về quy tắc triết học. Tại sao biển nó rộng? Biển rộng là nhờ nó sâu, biển sâu là nhờ biển rộng, nghĩa là nếu em muốn kiến thức em sâu thì em học cho rộng, nếu em muốn kiến thức em rộng thì em học cho sâu vào. Có nhiều bạn cho rằng chỉ viết android thì sẽ học android cho chuyên sâu vào thế là khi viết phần mềm về chẩn đoán y khoa các bạn không biết, không biết cái gì về phần mềm y khoa thì làm sao viết, không được để xảy ra sai sót về vấn đề bệnh tật đó. Vậy rõ ràng ngoài học chuyên môn của mình, mình còn phải có những môn liên ngành, học cho rộng ra, rộng với nghĩa chuyên gia.
Do đó theo anh học ngoài những môn lập trình trong nhà trường dạy mình phải có trách nhiệm tự lắng nghe, tự đọc báo chí, xem các tin tức về công nghê, đi talkshow như TopDev mình đây có rất nhiều chương trình như Web Summit, Mobile Day chẳng hạn. Chúng ta có thể đi nghe những hội thảo đó để chúng ta nắm bắt công nghệ. Anh khuyên là sinh viên muốn học giỏi thì ngoài những môn mình học trong trường cày đi cày lại và có học nhóm, học nhóm để mình brainstorming với nhau, nói chuyện với nhau trường hợp đó nên làm thế nào, dùng công nghệ gì, trong trường hợp đó dùng kỹ thuật nào là phù hợp và cùng triển khai các dự án thì sẽ tốt hơn. Một điều chắc chắn là phải nghiên cứu công nghệ ở ngoài, nghe và nắm bắt công nghệ chứ. Vì như đã nói thì một chương trình đại học thường học 4 – 5 năm, kết thúc 4 năm mới đánh giá được, lúc đó thì công nghệ nó đã đổi rồi vì trường học thường lạc hậu 4 – 5 năm, đó là một khoảng thời gian phù hợp. Một công ty muốn phát triển một hệ thống cần cả chục năm mới hoàn thiện và ổn định mà.
Anh có thể recommend cho các bạn nguồn tài liệu bổ ích để có thể học thêm kiến thức về mobile app không?
Có rất nhiều tài liệu, tùy vào năng lực của mỗi sinh viên, nếu em giỏi tiếng Anh thì nên đọc tiếng Anh, phải đọc tiếng anh với điều kiện là có nền tảng về tiếng Anh nha. Thường thì các sinh viên ở tỉnh sẽ không có điều kiện để tiếp cận với máy tính và tiếng Anh đâu nên việc đọc rất là khó khăn, vậy thì các em có thể chọn tiếng Việt. Còn đối với người giỏi tiếng Anh thì anh khuyên là nên đọc tiếng Anh luôn để vừa giỏi được kiến thức, vừa nâng cao được tiếng Anh chuyên ngành. Đó là cơ hội vì bây giờ ngoài vấn đề chuyên môn mình phải có tiếng Anh để lương được cao hơn một ít. Bây giờ làm việc đa quốc gia, có công ty nước ngoài mình không biết nói chuyện thế nào rồi trao đổi về chuyên môn bằng tiếng Anh cũng không nói được.
Tài liệu thì trong trường đại học đều có cả, mỗi một chương trình đào tạo đều có nên anh không dám nói là chương trình này hay hơn chương trình kia, theo anh thì cứ lên Google search các tài liệu bản quyền liên quan đến tiếng Anh để chúng ta giải, nó chỉ có mấy chục USD thôi nhưng mà nhiều sinh viên không có tính xa đâu. Cứ kêu sao nó mắc vậy để hack cho rồi. Thế câu hỏi ngược lại là em viết phần mềm ra em có muốn người ta hack không, em hack người ta thì em viết phần mềm em đâu bán được, em viết tài liệu thì người ta cũng hack lại của mình thôi nên là cố gắng bỏ tiền ra mua tài liệu. Tài liệu cụ thể như thế nào thì ứng với mỗi chương trình đào tạo sẽ có, ví dụ như bên trường anh thì khoa có viết 2 cuốn giáo trình là Lập trình mobile cơ bản và nâng cao chuyên về android.
Còn đối với sinh viên kỹ thuật khác thì họ sẽ phải nghe tư vấn của các trường khác, nói chung từng trường sẽ học theo giáo trình của trường mình, vì học kiểu gì học, giỏi mấy thì cũng phải qua môn đã. Nên về giáo trình tiếng việt thì anh khuyên là cứ bám theo giáo trình của khoa đưa, còn tài liệu tham khảo thì em có thể tham khảo bất cứ chỗ nào.
Như của anh thì có 2 nguồn, từ cái giáo trình của chính nhóm anh viết hoặc từ những video anh dạy hay blog. Theo anh khảo sát thì sinh viên thích xem qua blog và video, youtube cũng vậy. Về tiếng Anh thì rất nhiều, nếu như chưa biết gì về android cả thì nên học cuốn Absolute Beginner liên quan đến Android chẳng hạn hoặc về sau nó có Professional Android khoảng mấy ngàn trang rất là nhiều, đương nhiên những cuốn đó thì phải trả tiền. Nếu là sinh viên thì em tải được vì người ta share trên các trường đại học rất là nhiều, còn khi em đi làm rồi thì cố gắng trả bằng tiền. Thực ra mình phải thay đổi tư duy đi, cái gì cũng muốn hack thì khi em viết ra phần mềm, người hack em đâu cãi lại được.
Anh có thể chia sẻ về kỉ niệm đáng nhớ nào khi làm giảng viên? Hay về một bạn sinh viên nào để lại ấn tượng với anh không
Anh đã có được 2 sinh viên bây giờ sinh viên về kỹ thuật mà nhỏ thì có 2 em cuối năm 3 là đi làm, cũng rất là vui về điều đó. Còn kỷ niệm mà anh hạnh phúc nhất thì chắc là sinh viên của anh luôn, hồi đó anh là trưởng bộ môn ở một trường Đồng Nai. Bạn này tên là Trịnh Vĩnh Phúc rất giỏi, bắt đầu từ năm 1 là môn nào anh đi dạy cũng thấy bạn học hết, làm mình nhớ mình của ngày xưa cũng như vậy, môn nào bạn cũng học mà học rất là tốt. Lúc đó có MSP (Microsoft Student Partner) họ vào và bạn này làm rất tốt, được làm kiểu như truyền bá công nghệ, đại sứ cho họ, đi dạy từ lúc sinh viên luôn. Đi dạy chỉ là miễn phí cho họ nhưng được cái là mình đưa được rất nhiều tài nguyên về trường như những phần mềm miễn phí của họ chẳng hạn, hay là các cuộc thi, giải thưởng cũng khá nhiều. Năm 2 thấy bạn giỏi thì cho đi làm luôn. Sau khi đi làm bạn đã tiết kiệm được 100 – 200 rồi và mấy năm kinh nghiệm nữa, rất là giỏi. Mình rất hạnh phúc về điều đó. Hiện tại bạn này vẫn đang làm dự án với anh, thầy trò vẫn đang làm với nhau.
Xin cảm ơn phần chia sẻ từ anh Trần Duy Thanh, hy vọng các bạn sinh viên ngành Mobile nói riêng và lập trình viên nói chung sẽ có thêm những kiến thức, lời khuyên từ chính giảng viên trường Đại học Kinh tế Luật và áp dụng vào chính hàng trang của mình. Ngoài ra, các bạn có thể tham khảo những bài giảng online của anh tại trang WordPress duythanhcse.wordpress
Xem thêm các việc làm Mobile App hấp dẫn tại TopDev
Có thể bạn quan tâm:
- Làm thế nào để chọn được framework phát triển Mobile app tốt nhất?
- Flutter là gì? Nó có ưu điểm vượt trội ra sao để làm một ứng dụng mobile?
- 8 câu hỏi phỏng vấn dành cho các lập trình viên Mobile app
- Ứ Ứng dụng Map platform trong phát triển sản phẩm
- H Hành vi mua sắm mới trên Meta Social Commerce và LiveStream
- O Offline Mode và Giải Pháp Cho Doanh Nghiệp
- T Tích hợp AI trong an ninh mạng: Mặt lợi và mặt hại
- G Gamification – Ứng Dụng Đa Lĩnh Vực và Xu Hướng Tương Lai
- K Khám phá cách xây dựng một Mobile Product cùng GEEK Up
- H Hành trình chuyển đổi doanh nghiệp tài chính tiêu dùng sang nền tảng di động
- K Khoa Học Dữ Liệu và Hành Vi Thanh Toán Di Động
- T Tính Bền Vững: Yếu Tố Chất Lượng Mới Trong Kiến Trúc Phần Mềm
- T Từ Web2 đến Web3: Xu Hướng Công Nghệ Mới