Phát triển lập trình Android cùng Kotlin

903

Kotlin là một plug-in giúp bạn tăng tốc lập trình Android. Vì sự bất tiện của việc truy xuất các control trên giao diện nên plug-in Kotlin ra đời. Hiện nay, nhiều công ty tại Việt Nam cũng đang tìm kiếm các lập trình viên có thể lập trình Android với Kotlin.

Về chuyên gia chia sẻ

  • Anh Toàn Trần hiện hiện đang là Vice President, Mobile tại LAZADA. Đồng thời anh cũng là chuyên gia trong mảng Kotlin, được công nhận bởi Google (GDE).
  • Anh đã gắn bó với công việc Software Developer được hơn 9 năm. Anh đã trải qua quá trình làm việc với nhiều công việc khác nhau nhưng khoảng 80% thời gian làm việc cho đến hiện tại chủ yếu đều liên quan đến phát triển app Android.

Anh có gặp khó khăn nào khi chuyển từ nghiên cứu NLP sang lập trình Android không?

Nếu bạn là người làm thuần về nghiên cứu thì sẽ dễ dàng hiểu rằng ngôn ngữ sử dụng trong AI programming chủ yếu liên quan đến việc cố gắng xử lý logic như thế nào thôi, do đó khi chuyển sang làm về ứng dụng sẽ có một vài thứ bạn cần phải bổ sung. Phần chuyển giao giữa hai yếu tố này không yêu cầu bạn cần phải thông suốt mọi thứ ngay từ đầu mà chỉ cần có đam mê và cảm thấy hứng thú thì bạn có thể dành thời gian để bổ sung dần những kiến thức mình còn thiếu.

May mắn là thời gian đầu thực hiện việc nghiên cứu mình chủ yếu làm việc với Java nên sau này chuyển giao sang làm Android thì Java vẫn là ngôn ngữ chính. Nhờ vậy, về mặt ngôn ngữ không có giới hạn gì quá lớn nên có thể xem đây là điều khá thuận lợi cho mình khi bắt đầu lộ trình lập trình Android với Kotlin.

  Có nên học Kotlin?
  Java đang ngăn cản sự phát triển của Android và Kotlin không phải là cách giải quyết

Động lực nào để anh đưa ra sự thay đổi trên?

Cá nhân mình nghĩ khi còn trẻ chúng ta có nhiều lựa chọn hơn nên có thể dễ dàng hơn trong việc đưa ra quyết định, chứ không hẳn là vì một động lực quá to tát nào khác. Lúc đó mình đã làm việc trong nhóm nghiên cứu của các thầy được một thời gian, sau đó việc chuyển giao cũng diễn ra một cách hết sức tự nhiên.

Mình có hợp tác làm chung một số projects với bạn bè cũng như các dự án freelance và thấy khá thú vị. Mình cảm thấy việc có thể kiếm thêm thu nhập và tích lũy kinh nghiệm từ các dòng code trong phát triển phần mềm là một điều rất hay ho và quyết định gắn bó với công việc này.

Anh có thể chia sẻ về công việc hàng ngày tại Lazada?

Hiện tại ở Lazada mình đang là leader của một team với khoảng 6 thành viên. Công việc chính của mình là đảm bảo toàn bộ hệ thống ứng dụng dùng trong logistics được vận hành trơn tru ở tất cả các quốc gia mà Lazada hoạt động.

Một ngày mình phải làm khá nhiều việc nhưng có thể tóm tắt lại trong hai công việc quan trọng nhất là communicate – giao tiếp và trao đổi để đảm bảo các hoạt động được thông suốt giữa các stakeholders có liên quan đến công việc của mình. Cũng như khi mọi người cần giúp đỡ thì mình sẽ đóng vai trò giúp mọi người không bị block và công việc trôi chảy hơn.

Ứng dụng thương mại điện tử có gì khác so với các ứng dụng thông thường?

Khi làm việc để phát triển những ứng dụng ở mức vài trăm đến vài nghìn users so với vài chục triệu users, đây đã là hai câu chuyện khác nhau. Bất cứ khi nào có sự cố xảy ra thì ảnh hưởng của app lên user là rất lớn. Do đó, điều cần tập trung cao độ nhất của một ứng dụng có lượng user lớn là đảm bảo tính ổn định của hệ thống. Khi hệ thống có bất kỳ vấn đề nào xảy ra mà không có khả năng giải quyết sự cố trong thời gian thật, không biết nguồn cơn của vấn đề là từ đâu thì rắc rối sẽ rất lớn.

Điều gì khiến anh yêu thích ngôn ngữ lập trình Kotlin?

Mình đến với Kotlin theo một cách khá tình cờ. Năm 2015 – 2016, khi lần đầu tiên xuất hiện Kotlin chỉ là một dạng dự án đang được nghiên cứu. Mình vô tình biết được có nhiều người đã lập trình Android với Kotlin, vì thời điểm đó mình chỉ quan tâm đến các vấn đề của android nên đó cũng là lý do mình bắt đầu tìm hiểu về Kotlin.

Khi tìm hiểu sâu hơn, mình nhận thấy Kotlin có thể giải quyết được rất nhiều thứ. Kotlin ngắn gọn, viết ít nhưng vẫn giải quyết được mục tiêu đã đặt ra. Nó cũng rất chú trọng vào vấn đề readibility của ngôn ngữ.

Chẳng hạn như khi làm việc với Java 8 (dùng trong lập trình Android), bạn sẽ phải viết khá nhiều nhưng đạt được rất ít các tính năng cơ bản của feature. Trong khi đó, khi chuyển sang Kotlin, bạn sẽ có được tính năng feature gói gọn trong data class. Rất nhiều tính năng mình phải vật vã làm việc với Java thì lại trở thành một feature rất hiển nhiên trong Kotlin, đó chính là một trong những lý do mình quyết định lựa chọn nó. Sau đó may mắn là Google quyết định lựa chọn Kotlin trở thành first class language để hỗ trợ cho Android và trở thành trending của cả cộng đồng.

Anh có nhận xét gì về cộng đồng sử dụng Kotlin tại Việt Nam?

Đối với những người mình biết và đang làm trong mảng Android, hầu hết mọi người đều chuyên lập trình Android với Kotlin. Lí do là nhờ sự thuận tiện mà Kotlin mang lại khi sử dụng. Khi bạn đang làm việc với một hệ thống được build bằng Java thì bạn không cần shut down phần làm việc vẫn có thể chuyển 100% sang Kotlin. Vừa có thể làm việc bằng Java vừa có thể làm việc bằng Kotlin.

Sự kết hợp và chuyển tiếp giữa Kotlin và Java diễn ra rất tự nhiên, bạn có thể gọi Java code từ Kotlin và gọi Kotlin code từ Java. Bên cạnh đó, có thể thấy rằng phần lớn cộng đồng tập trung hơn ở mảng Kotlin vào Android, dùng Kotlin để build ứng dụng Android. Ngoài ra, hiện tại cũng có một số dev đang cố gắng thử nghiệm Kotlin trên backend development. Chẳng hạn như Spring vài framework của backend service, nhưng hiện tại vẫn chưa thật sự phổ biến.

Xem thêm 5 điều lập trình viên Java Developer chắc chắn sẽ thích ở Kotlin

Dự đoán của anh về ngôn ngữ này trong 5 năm sắp tới?

5 năm là khoảng thời gian khá dài, nhưng theo mình suy đoán thì mọi thứ vẫn sẽ ở đấy. Hiện tại Google đang chuyển đổi các libraries, các projects mà họ support cho Android development thành Kotlin code.

Nghĩa là toàn bộ thư viện đó sẽ được support theo feature của ngôn ngữ Kotlin, sử dụng Kotlin làm ngôn ngữ chính để lập trình Android với Kotlin. Điều đó sẽ giúp động viên cộng đồng developers cố gắng tuân theo các tiêu chuẩn của Kotlin khi sử dụng những projects mới của Google support cho developers.

Anh có thể chia sẻ bí quyết cho các bạn đang tìm hiểu về Kotlin không?

Nếu dành mỗi ngày một buổi để nghiên cứu thì sau khoảng một tuần, bạn sẽ nắm được hầu hết các feature căn bản của Kotlin. Còn để thật sự chuyên nghiệp và hiểu hết các vấn đề thì bạn phải đọc code, sử dụng code cũng như để biết được khi nào nên sử dụng feature nào, bạn phải luyện tập nhiều hơn. Sẽ phải mất ít nhất 1 – 3 tháng cho việc cải thiện kiến thức của mình về Kotlin và có thể thành thục việc lập trình Android với Kotlin.

Video demo cách tạo một ứng dụng bằng Jetpack Compose

Công việc đầu tiên về Android anh làm sau khi ra trường như thế nào?

Trong 3 tháng thực tập đầu tiên, mình chịu trách nhiệm chính trong việc assignment web với các công nghệ của Microsoft. May mắn là công ty mình làm việc lúc đó cho phép các thực tập sinh được phép chọn đường hướng phát triển công việc. Lúc đó công ty đang thiếu nhân sự tiếp nhận project mới về mobile app, và mình là người làm việc với dự án này. Sau đó mình lựa chọn đi theo con đường phát triển mobile app trên Android luôn.

Anh có thể chia sẻ kỷ niệm đáng nhớ trong quá trình làm việc của mình?

Kỷ niệm đáng nhớ nhất có lẽ là ở công việc thứ 3 của mình. Khi đó mình phải trải qua quá trình phỏng vấn với rất nhiều vòng. Đó cũng là lần đầu tiên mình được trải nghiệm khái niệm phỏng vấn hai chiều, nghĩa là người đi tìm việc đang cố gắng bán kỹ năng của mình và tìm kiếm công ty phù hợp với nhu cầu, bạn thấy công ty đó có thỏa mãn nhu cầu của mình không.

Tức là bạn cần có một bộ tiêu chuẩn riêng phù hợp với nhu cầu phát triển bản thân của mình và đồng thời bán kỹ năng mình có cho công ty đó để công ty, làm thế nào để công ty muốn mua bạn về làm việc ho họ. Quá trình phỏng vấn này của mình kéo dài 3 – 4 tháng trước khi mình ký hợp đồng chính thức.

Quan điểm của anh khi là leader có gì khác biệt so với khi còn là junior?

Mỗi công ty khác nhau sẽ có một bộ tiêu chuẩn khác nhau để định nghĩa xem bạn đang ở level nào và khi nào thì có thể đạt được level mới.

Vị trí leader đầu tiên là khi mình làm việc ở công ty software outsourcing chuyên về base startup cho các công ty bên Mỹ. Họ có một bộ tiêu chuẩn riêng về việc khi nào bạn sẽ sẵn sàng lên một vị trí mới và trở thành lead.

Trong đó tập trung làm rõ các vấn đề: thứ nhất bạn muốn trở thành một leader như thế nào? Một trong những tiêu chuẩn để thành leader là phải có khả năng giao tiếp tốt. Vì trong quá trình làm việc, bạn sẽ phải trao đổi và cộng tác liên tục với các stakeholders, với team, với nhiều thành phần khác nhau trong một công ty.

  10 tài liệu lập trình Android miễn phí từ cơ bản đến nâng cao

Khi có vấn đề xảy ra mỗi ngày thì giao tiếp trở thành yếu tố then chốt để bạn có thể giải quyết được vấn đề, giải quyết mâu thuẫn và những bài toán hóc búa có thể xảy ra. Leader phải giải quyết được các vấn đề này để sản phẩm của công ty có thể mang lại giá trị cuối cùng hữu ích cho người dùng. Do đó, khả năng giao tiếp trở thành một trong những yếu tố then chốt mà một leader cần có.

Thứ hai là yếu tố kỹ thuật, một trong những yếu tố quan trọng là bạn cần biết mình đang nói về vấn đề gì và có thể giải thích các yếu tố này một cách rõ ràng, có thể hỗ trợ người khác để giải quyết vấn đề.

Một yếu tố khác cũng rất cần thiết là giúp đỡ các thành viên trong team phát triển, để đạt được những vị trí mới trong sự nghiệp của họ.

Với vị trí hiện tại thì công việc của anh đang thiên về kỹ thuật hay phát triển con người nhiều hơn?

Công việc của mình chịu trách với cả hai mảng này nhưng nhiệm vụ chính vẫn là quản lý team và các dự án mà team chịu trách nhiệm, đảm bảo sản phẩm hoạt động tốt và team có thể gắn kết được với phần còn lại của cả công ty.

Còn về vấn đề phát triển con người thì nhiệm vụ chính của mình là cải thiện khả năng làm việc của cả team. Mình sẽ có một hệ thống đánh giá và hỗ trợ tất cả thành viên để đảm bảo mọi người cùng follow một giá trị của engineering và cải thiện engineering base của cả team cũng như đảm bảo product được tạo ra có thể match với practice của cả team.

Đồng thời mình cũng thường xuyên training và sharing kiến thức cho tất cả mọi người trong team và chịu trách nhiệm cho việc tuyển dụng nhân sự. Mình phải dành khá nhiều thời gian cho việc quản lý team và thời gian dành cho việc coding sẽ không còn nhiều. Do đó đối với những leads vẫn muốn dành thời gian cho việc coding, bạn không nên làm việc ở những phần quá quan trọng để tránh làm gián đoạn công việc của cả team.

Anh có lời khuyên nào dành cho các bạn theo đuổi mảng này không?

Một trong những mô hình phát triển phù hợp với khá nhiều người ở nhiều domain khác nhau là mô hình chữ T. Ở giai đoạn đầu, hãy cố gắng mở rộng kiến thức của bạn càng nhiều càng tốt. Vì ở giai đoạn đầu, lúc mới ra trường nhiều khi bạn vẫn chưa thật sự xác định được bạn muốn gì và thích làm gì.

Khi đã làm quen và biết được các công việc khác nhau bạn sẽ xác định được mình muốn đi theo hướng nào nhất. Sau đó hãy bắt đầu phát triển theo chiều sâu, tập trung vào chuyên môn mà mình thích nhất. Hơn nữa, nhờ việc đã làm quen với nhiều domain khác nhau nên khi làm việc, trong quá trình cộng tác với các team khác bạn sẽ có đủ kiến thức để hiểu được và giao tiếp tốt với team khác một cách hiệu quả.

Lời khuyên của mình khi muốn đánh giá xem khả năng của bạn đang ở đâu so với thị trường là apply và đi phỏng vấn. Khi đó bạn sẽ biết được nhà tuyển dụng offer bạn cho vị trí nào và giá trị mà mình có thể mang lại đang nằm ở mức nào.