2 năm trở thành nhà phát triển Android đã “tôi luyện” tôi như thế nào?

0
175

2 năm trở thành nhà phát triển Android đã “tôi luyện” tôi như thế nào

Tôi vẫn nhớ ngày này năm 2014 khi tôi quyết định bắt đầu sự nghiệp là một lập trình viên phát triển Android. Giờ nghĩ lại thì đó thật sự là quyết định đúng đắn nhất của tôi. Trong khoảng thời gian 3 năm đi làm, tôi đã có rất nhiều cơ hội để trải nghiệm và học hỏi trong thế giới Android.

Điểm xuất phát của tôi là con số “0” tròn trĩnh. Tôi không có người hướng dẫn hay bất kì ai có thể bảo tôi rằng: Hãy làm như thế này này, thế kia mới là đúng… Lẽ dĩ nhiên, sai lầm trong quá trình làm việc là không tránh khỏi. Đặc biệt là trong thời gian đầu, tôi gần như mất rất nhiều thời gian cũng như mất luôn cả phương hướng khi “tự bơi” trong thế giới Android.

Một năm rưỡi sau đó, tôi may mắn được làm việc với một số đàn anh rất giỏi và dày dạn kinh nghiệm trong lĩnh vực phát triển Android. Ở thời điểm đó tôi được hướng dẫn rất nhiệt tình và “chu đáo”. Tôi được các anh chỉ cho cái gì cần làm và cái gì không cần làm.

Trong bài viết này, tôi sẽ chia sẻ những “kinh nghiệm xương máu” mà tôi đúc kêt được trong thời gian qua. Nó có thể giúp các bạn có thể tự tin bắt đầu sự nghiệp lập trình Android và không lặp lại những sai lầm mà tôi đã gặp trước đó.

Lưu ý: Mình sẽ chủ yếu tập trung vào phát triển Android và một số khái niệm lập trình và phát triển phần mềm nên một số bạn “ngoài ngành” sẽ hơi khó tiếp cận. Tuy nhiên, mình sẽ giải thích các khái niệm ở cuối bài viết hoặc comment cho mình giải đáp nhé ^^

1. Đừng cố gắng làm lại những gì mà thế giới đã làm tốt

Thuở mới vào nghề, mình không thích sử dụng thư viện mã nguồn mở (open-source code). Nếu cảm thấy cần thiết, mình sẽ tự tay tạo những mã code cho riêng mình. Và đó thật sự là một sai lầm.

Nếu bạn gặp phải bất cứ vấn đề gì trong trình phát triển ứng dụng, và nó đã có giải pháp khắc phục được sáng tạo bởi một đàn anh, đàn chị nào đó,thì đừng ngần ngại tận dụng nó. Chắc chắn bạn sẽ tiết kiệm được rất nhiều thời gian đấy!

Hãy tập trung nhiều hơn vào việc phát triển code của ứng dụng thay vì code lại những thứ đã có rồi. Giả sử ứng dụng của bạn cần kết nối mạng, bạn không cần phải code lại nguyên thư viện Retrofit đâu.

Bonus: Android Arsenal là hai trang web cung cấp rất nhiều thư viện tham khảo dành cho Android, mình đã thử, còn bạn thì sao?

2. Lựa chọn Libraries một cách khôn ngoan

Có rất nhiều thư viện mã nguồn mở (open-source) miễn phí trên Github(Nếu bạn chưa biết Github thì có thể tham khảo phụ lục bên dưới để biết thêm chi tiết). Nhưng bạn chớ vội vui mừng rồi sử dụng nó một cách mù quáng nhé. Trước khi lựa chọn bất kì một thư viện nào, bạn hay kiểm tra số lượng rating mà người dùng trước đó đánh giá, cũng như thời gian gần nhất mà tác giả cập nhật thư viện.Ngoài ra, bạn cũng nên tham khảo danh sách issues của thư viện (dạng chia sẻ hoặc tài liệu nội bộ) để có thể đánh giá độ tin cậy và khả năng hỗ trợ lâu dài của thư viện.

Nếu bạn ”max rảnh” thì có thể nhảy hẳn vào mã nguồn (source code) để tận mắt kiểm tra xem nó có thực sự tốt không? Cấu trúc mã nguồn có rõ ràng và có khả năng maintain cao không? source code được viết cẩn thận, có comment rõ ràng hay không? Chỉ có như vậy bạn mới thực sự kiểm soát được chất lượng của thư viện mà bạn đang tham khảo để bổ trợ cho việc hoàn thành dự án. Nếu bỏ qua bước này, bạn sẽ có nguy cơ tích trữ “một đống rác” cho dự án của mình.

Lựa chọn Libraries một cách khôn ngoan

3. Ngồi xuống, nhâm nhi tách cà phê và đọc code nhiều hơn.

Chúng ta thường dành thời gian để đọc code của người khác hơn là tự mình làm ra. Nếu bạn đang trong hoàn cảnh ngồi suy nghĩ và code tất cả thì hãy nhanh chóng thay đổi suy nghĩ đi thôi.

Bất kể đoạn code nào bạn viết ngày hôm nay, thực chất chỉ là những gì bạn đã đọc hoặc từng  học được ở đâu đó mà thôi. Tức là bạn không phải nhà phát minh gì đâu, chỉ là bạn “bắt chước” ở đâu đó mà biến thành của mình một cách sáng tạo. Thực tế đã chứng minh là bạn chỉ có thể phát triển và cải thiện khả năng code của mình bằng cách đọc và học hỏi từ người khác.

Android thật sự là một nền tảng mã nguồn mở. Đó là một điều tuyệt vời. Bạn có thể đào sâu mã nguồn để tìm hiểu xem các chuyên gia lập trình ra framework như thế nào. Như mình đã nói ở phần trước, hiện đã có hàng nghìn thư viện open-source trên Github. Bạn chỉ cần chọn lọc và nghiên cứu xem họ đã phát triển chúng như thế nào rồi sau đó học hỏi và tự nâng cao trình độ của mình.

Bonus:  Đây là hai danh sách thư viện open-source code dành cho Android mà bạn sẽ cần đến khi bắt đầu triển khai dự án của mình:

4. Hãy code theo một tiêu chuẩn nào đó

Nếu bạn so sánh việc coding với viết văn, thì các tiêu chuẩn của coding cũng giống như chữ viết tay của bạn vậy.Đó cũng giống như việc bạn đọc rất nhiều code của người khác (có thể là đồng nghiệp, chuyên gia hoặc sếp của bạn) trong khi họ cũng có thể đang đọc code của bạn viết ra.

Chắc hẳn bạn không hề muốn nhìn thấy cảnh họ phải thốt lên: “Trời ơi, nó đang viết cái quái gì đây?” đúng không? Sẽ không khó hiểu nếu bạn bị đồng nghiệp của mình “xa lánh” khi chẳng may họ vô tình đọc được code do chính bạn tạo ra.

Hãy viết code thật ngắn gọn, rõ ràng và dễ đọc (Bạn biết từ khóa này chứ: DRY? Nghĩa là: Don’t repeat yourself, nếu chưa thì Google nhé).

Đỉnh cao của lập trình viên chính là: “Hãy viết code như viết một câu chuyện!”

5. Không bàn cãi gì nữa, bạn nên sử dụng ProGuard!

Proguard là công cụ tuyệt vời không chỉ làm giảm kích thước code mà còn đảm bảo code của bạn an toàn trước các tay “đạo chích” có ý định “chôm chỉa” code của bạn. Nếu bạn đang có ý định đưa ứng dụng của mình lên Google Play, mình có lời khuyên chân thành rằng bạn nên sử dụng Proguard “liền, ngay và lập tức”.

Mình từng bắt gặp một số ứng dụng được phát hành trên Google Play nhưng lại không sử dụng Proguard. Và kết quả là các hacker chỉ mất vỏn vẹn 5 phút để “chôm chỉa” bằng cách biên dịch ngược lại 100% mã nguồn từ file apk.

Pro Tip: Nhưng nếu bạn muốn bảo vệ mã nguồn ở mức cao nhất, thì Proguard chỉ như “tấm giấy bìa mỏng manh”, DexGuard mới là “vệ sĩ đích thực” bảo vệ mã nguồn của bạn.

6. Đừng quên tận dụng các “cấu trúc” (Architecture)

Có khi nào bạn thầm tự cảm ơn mình khi đã may mắn lựa chọn một “cấu trúc” (Architecture)hợp lý từ những ngày đầu của dự án chưa?

Một Architecture hợp lý sẽ đảm bảo dự án của bạn dễ dàng duy trì cũng như mở rộng, và đọc mã nguồn cũng trở nên đơn giản hơn rất nhiều. Ở thế giới lập trình web, MVC là một trong những Architecture phổ biến nhất. Trong khi đó, với lập trình Android mọi người lại sử dụng MVP(Model-View-Presenter) nhiều hơn. Với MVP, bạn có thể phân chia source code thành 3 tầng riêng biệt, tách phần View của Android ra khỏi phần xử lý logic. Như vậy, tầng Model-Presenter sẽ chỉ có thuần code Java mà không có code Android.

Pro Tip: Đây là một ví dụ minh họa về MVP kiến trúc. Và có thể bắt đầu bằng một guide hướng dẫn chi tiết MVP

7. “Giao diện người dùng” (User Interface) là cực kì quan trọng.

“Giao diện người dùng” (User Interface) là cực kì quan trọng.

Bất kì ứng dụng nào, nếu ngay từ lần sử dụng đầu tiên đã phải nhờ đến một bài hướng dẫn cách sử dụng dài lê thê thì đó chính là “điềm báo” cho một ứng dụng thất bại.

Nếu bạn làm việc trong một công ty chuyên phần mềm với vai trò là một nhà phát triển Android (Android Developer) thì có thể bạn sẽ không cần quan tâm đến vấn đề này. Vì công ty đã có team UI/UX lo. Nhưng nếu bạn là một nhà phát triển app độc lập, làm việc một mình thì UI/UX là vấn đề bạn phải luôn ghi nhớ trong đầu.

Người xưa có câu: Tốt gỗ hơn tốt nước sơn. Nhưng ở cái thế giới mà nhiều khi “nước sơn” tốt vẫn thu hút được rất nhiều người hơn là “gỗ tốt”. Đặc biệt trong ngành phần mềm, sự cạnh tranh vô cùng khắc nghiệt cộng với người dùng ngày càng lười biếng thì UI là cái đập vào mắt họ đầu tiên trước khi họ kịp trải nghiệm tính năng bên trong. Theo số liệu thống kê từ VnTalking.com, một ứng dụng với thiết kế UI cực tệ và khó sử dụng thì khả năng thất bại của nó sẽ tăng gấp 4 lần.

Chính vì vậy, hãy đầu tư cho “nước sơn” thật tốt vào nhé!

Bonus: Nếu bạn không có khả năng thiết kế hoặc không thể tự học được thì có thể nghĩ đến chuyện đi thuê. Có rất nhiều website cung cấp dịch vụ thiết kế với giá cả rất hợp lý, mình gợi ý một nơi đó là: Fiverr.com (Chỉ 5$ cho một dự án thành công)

8. “Phân tích” (Analytics) – “bạn đồng hành” lý tưởng

Nếu bạn muốn tạo ra một ứng dụng thật sự tốt, bạn cần phải dựa vào các công cụ phân tích(Analytics tool) để biết được hiệu năng (Performance) và tần suất sử dụng các chức năng trên ứng dụng đó.

Dù bạn có là “thánh”đi chăng nữa, bạn cũng không thể nào viết một ứng dụng hoàn hảo 100%. Tất cả đều chỉ mới dừng lại ở mức “trên lý thuyết” mà thôi. Khi người dùng sử dụng ứng dụng trên thực tế, bạn sẽ có thể gặp phải những trường hợp như ứng dụng hoạt động không đúng, khác xa so với lúc test, thậm chí là “chết” (crash) và không thể chạy được. Ngay lúc này, các công cụ báo cáo lỗi (Crash Reporting) sẽ là trợ lý đắc lực, giúp bạn biết cần phải làm gì, sửa lỗi như thế nào dù sự cố crash ấy chỉ xảy ra có một lần.

Ngoài ra, xét về khía cạnh marketing, các công cụ hỗ trợ phân tích (Analytics Tools) sẽ giúp những điều bạn làm trong ứng dụng của mình trở nên gần gũi hơn với nhu cầu thực tế của người dùng. Sẽ thật hoang đường nếu nghĩ rằng nhà phát triển ứng dụng chỉ cần ngồi nhìn lên trời và biết được ngoài kia người dùng đang cần gì và muốn gì. Tất cả đều phải có số liệu. Chỉ có số liệu mới giúp suy nghĩ hoặc suy luận của bạn chính xác và có độ tin cậy hơn.

9. Hãy là một Ninja Marketing

Nếu bạn là một nhà phát triển appđộc lập, hãy tự mình thoát ra khỏi suy nghĩ: “Tôi chỉ là một nhà phát triển” (just a developer). Vì việc xây dựng code chỉ là một phần rất nhỏ trong số những việc bạn cần phải làm để hoàn thành một app và đưa nó đến tay người dùng.

Đây chính là bài học xương máu mà bản thân mình đã tự đúc kết được từ không ít thất bại. Ban đầu, mình từng nghĩ hãy cứ làm một ứng dụng thật chất lượng, UI/UX thật ngon thì nhiều người sẽ tải về và mình sẽ nhanh chóng nổi tiếng.

Nhưng thật trớ trêu, những ứng dụng mình đầu tư rất nhiều công sức thì lại chẳng có ai dùng, còn số ít ứng dụng mình viết “chơi chơi” thì lại được đánh giá khá cao. Sau rất nhiều đêm suy nghĩ, mình nhận ra ứng dụng của mình thật sự chất lượng nhưng lại không đáp ứng được nhu cầu thị trường. Bản thân mình cũng chưa biết cách tiếp cận với khách hàng, càng không biết họ thật sự muốn gì, cần gì ở một ứng dụng.

Mình nghiệm ra được một điều. Nếu bạn thực sự nghiêm túc với công việc kiếm tiền từ viết ứng dụng thì bạn phải đầu tư công sức và thời gian vào việc tiếp thị ứng dụng, nghiên cứu đối thủ cạnh tranh để tự nhận biết điểm mạnh và yếu của mình từ đó đưa ra chiến lược marketing ngắn và dài hạn. “Biết người biết ta, trăm trận trăm thắng”. Thành ngữ đó chẳng sai chút nào cả!

10. Đã đến lúc tối ưu ứng dụng của bạn.

Tối ưu ứng dụng tức là tối ưu code, tối ưu hiệu năng… là điều mà rất nhiều bạn thường “quên làm”, nhưng nó thực sự nên làm và cần làm thường xuyên.

Có một sự khác biệt lớn giữa viết code chạy được và viết “code tối ưu”. Viết code chạy được thì nhanh nhưng viết code để tối ưu được Memory, CPU, sử dụng ít Device Storage … thì lại là cả một vấn đề lớn.

Một ứng dụng không được tối ưu có thể chạy tốt ở điều kiện bình thường nhưng thực tế sử dụng thì “muôn hình vạn trạng”. Không có gì để bạn đảm bảo rằng ứng dụng của mình sẽ chạy tốt trong mọi trường hợp.

Vì vậy, hãy luôn kiểm tra bộ nhớ (Memory) bị chiếm dụng bởi ứng dụng, đề phòng các lỗi bộ nhớ (Memory Leaks). Hãy nhớ rằng: “Một vết thủng nhỏ cũng đủ để nhấn chìm cả một con tàu lớn”.

Pro Tip: Hãy dùng thư viện Leak Canary để tự động nhận diện các “Memory Leaks”. Thư viện này có thể được tích hợp dễ dàng vào code của bạn, chỉ cần khởi tạo và sau đó cứ để như thế. Khi phát hiện leaks, nó sẽ hiện thông báo và log lên màn hình.

Mình đã cố gắng chia sẻ những kinh nghiệm của bản thân được đúc kết trong quá trình làm việc và khám phá thế giới Android. Hi vọng rằng, những kinh nghiệm đó sẽ giúp cho những bạn mới bước chân vào thế giới Android có thêm thông tin và nhanh chóng gặt hái thành công.

Hãy chia sẻ bài viết nếu thấy hay hoặc comment bên dưới để góp ý cho bài viết nhé!

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo