Đây là 11 nội dung tôi chắt lọc lại trong quá trình dạy học và huấn luyện cho nhiều nhóm sáng tạo.
Kiến thức quá rộng, học bao nhiêu thì đủ ?
Tôi cũng là một người mê truyện kiếm hiệp của Kim Dung. Trong chuỗi tiểu thuyết của ông, có một nhân vật “Mộ Dung Phục”, là 1 thanh niên giỏi võ và khả năng học tập phi thường. Anh ta có năng khiếu võ học và ham muốn học hết các võ công của thiên hạ để phục quốc. Chỉ có nhược điểm là anh không biết sử dụng vào tình huống nào, nên khi đánh nhau, nếu có người chỉ điểm bên ngoài là dùng thế này thế kia để hóa giải hay tấn công thì lúc đó anh thật sự sắc bén, còn không thì anh ta rất dễ bị đánh bại.
Kiến thức cũng vậy các bạn à. Không tài nào chúng ta học hết được tri thức của nhân loại đâu. Chỉ riêng trong lĩnh vực mobile, có hàng trăm đầu sách hướng dẫn lập trình. Tài liệu hướng dẫn sử dụng được cung cấp miễn phí cũng nhiều và sẵn có nữa.
Điều các bạn cần đó là tinh thần cầu tiến, tính kỷ luật và may mắn hơn thì có được một người thầy/người bạn/người sếp/người huấn luyện viên (coach) tốt chỉ dẫn và rèn luyện cho. Vai trò của người thầy ngày nay khác xưa nhiều lắm. Ngày xưa, thầy là người nắm nhiều kiến thức và truyền lại cho học trò những điều mình biết. Ngày nay, kiến thức được cung cấp miễn phí và tràn ngập. Người học có thể tiếp cận đến kiến thức bất cứ lúc nào. Người thầy đóng vai trò người hướng dẫn và chọn lọc kiến thức nào là phù hợp cho từng người học trò. Vì mỗi người có những sở trường, sở đoản khác nhau, có những tố chất khác nhau, mức độ tiếp thu khác nhau.
Mỗi nội dung kiến thức, có những “chuẩn đầu ra” nhất định. Khi các bạn đã đạt các chuẩn đầu ra đó. Chứng tỏ là các bạn đã học đủ những gì cần thiết ở chuẩn đó và có thể bước vào những dự án thật sự của mình. Điều quan trọng nhất là hãy không ngừng rèn luyện và nâng cao kiến thức của mình. Lúc đó, bạn chính là thầy của bạn.
Mười một nội dung trọng yếu cho việc sáng tạo mobile app
Đây là 11 nội dung tôi chắt lọc lại trong quá trình dạy học và huấn luyện cho nhiều nhóm sáng tạo. Cũng như các nhóm sinh viên đang làm đề tài với tôi. Có thể nó sẽ không bao phủ hết mọi lĩnh vực, nhưng nó đủ để các bạn tự tin vững bước. Hơn nữa, hãy nhớ rằng, chúng ta không thể nào học hết mọi thứ được 🙂
1. Lên ý tưởng và thiết kế
Nhiều bạn nghĩ rằng khi học lập trình di động là chúng ta bắt ta ngay vào viết mã (coding). Nhưng không, trước tiên ta nên bắt đầu bằng việc mô tả ý tưởng của mình và tưởng tượng ra cái app của mình sẽ có những tính năng gì, hình dáng như thế nào, nó sẽ làm được gì.
Việc xây dựng Mockup có thể dùng phần mềm chuyên dụng, nhưng cũng có thể dùng tờ giấy và cây bút chì mà thôi. Tại đây, các bạn sẽ chuyển tải trí tưởng tượng của các bạn ra trang giấy, để từ đó có cái nhìn rõ hơn về dự án mình sẽ làm.
Giai đoạn này rất hào hứng và rất quan trọng. Nó chiếm đến hơn 50% sự thành công của dự án. Bởi vì bạn sẽ khó có thể phát triển cái phần mềm mà bản thân bạn không thể tưởng tượng ra nó được.
2. Hiểu và phát huy được hết tính năng của hệ thống ta đang phát triển:
Trong binh pháp có câu, biết người biết ta, trăm trận trăm thắng. Nếu bạn biết được những ưu điểm của chiếc điện thoại bạn đang định viết app cho, hệ điều hành nó cung cấp những khả năng gì thì bạn sẽ viết app được tốt hơn. Không có một ứng dụng nào viết một lần cho tất cả điện thoại di động, kể cả ứng dụng cross-platform. Vì mỗi cấu hình điện thoại khác nhau, do những hãng khác nhau sản xuất, có những thư viện lập trình hỗ trợ khác nhau. Kể cả cùng 1 hãng, nhưng những đời khác nhau, series khác nhau cũng gây khó khăn cho việc lập trình. Ngay cả trong cùng một đời mà những phiên bản hệ điều hành khác nhau cũng có những sự khác biệt nhất định
3. Lập trình theo sự kiện & ngữ cảnh – Event & context driven programming
Chiếc điện thoại di động là một thiết bị có môi trường làm việc cực kỳ đa dạng mà người ta hay quảng cáo “anytime, anywhere”. Các sự kiện diễn ra trên chiếc điện thoại rất đa dạng: chẳng hạn như một button được click, người dùng tương tác ở các vị trí khác nhau trên điện thoại, click vào những nút khác nhau. Khi có những sự kiện đó diễn ra, chúng ta phải đáp ứng được các sự kiện đó càng nhanh càng tốt để làm cho app có sự đáp ứng tốt mới thu hút được người dùng.
Hơn thế nữa, ứng dụng của bạn có thể bị tạm dừng hay ngắt quãng bởi rất nhiều sự kiện chẳng hạn như: pin yếu, có cuộc gọi đến, có kết nối mạng hay mất kết nối mạng, người dùng xoay ngang/dọc chiếc điện thoại, người dùng đang di chuyển với tốc độ cao, hay thậm chí người dùng không thể nhìn chăm chú vào màn hình vì họ bận lái xe hay làm việc khác quan trọng hơn, và rất nhiều sự kiện khác nữa. Ứng dụng của bạn phải “để ý đến” những yếu tố đó nữa.
Điểm khác biệt lớn nhất của app trên di động là bạn có rất nhiều sensors để làm cho ứng dụng trở nên thông minh hơn: chẳng hạn như GPS sensor, nó cho bạn biết điện thoại đang ở đâu để giúp bạn tìm đường tốt hơn; hay cảm biến gia tốc accelerometer cho biết là điện thoại đang được rung lắc hay xoay theo hướng nào. Tận dụng được những thông tin dùng để mô tả trạng thái của chiếc điện thoại được gọi chung là ngữ cảnh sẽ giúp app của bạn trở nên thông minh hơn.
Với 3 nội dung trên, đến đây bạn có thể viết được những app đơn giản như: máy tính bỏ túi, trò chơi nhìn hình đoán chữ, chiếc nón kỳ diệu, học luật giao thông, …
4. Cơ sở dữ liệu & lưu trữ file – SQLite Database, file storage, JSON
Một nhu cầu phổ biến đó là lưu trữ, trao đổi dữ liệu và truy vấn dữ liệu. Đây là một nội dung mà lập trình viên cần phải nắm. Để lưu trữ dữ liệu lâu dài. các bạn có thể nghĩ ngay đến ghi vào 1 tập tin nào đó trên hệ thống.
Trên điện thoại Android có 2 chỗ để lưu trữ dữ liệu lâu dài đó là trên bộ nhớ trong của điện thoại, trên SDCard, còn trên điện thoại iOS thì chỉ cho phép lưu trữ trên bộ nhớ điện thoại,đây chính là sự khác biệt mà các bạn cần phải biết (trừ trường hợp điện thoại Android đã được root và điện thoại iOS đã jailbreak).
Việc lưu trữ trên file có thể được thực hiện dễ dàng. Tuy nhiên, lúc đó, việc truy xuất và truy vấn dữ liệu theo các điều kiện khác nhau sẽ rất khó khăn. Cho nên các bạn cần phải nắm kiến thức về SQLite để lưu trữ có cấu trúc và truy vấn dễ dàng hơn. SQLite là một dạng CSDL dành cho di động. Nó có rất nhiều ưu điểm cho việc lưu trữ và truy vấn trên mobile.
5. Điện toán đám mây cho di động – Mobile Cloud
Chiếc điện thoại của chúng ta có những hạn chế rất lớn khó vượt qua đó là: dung lượng lưu trữ giới hạn, khả năng tính toán cũng hạn chế. Tuy nhiên, nó được hỗ trợ một cách tuyệt vời của sự phát triển công nghệ gần đây đó là cloud computing. Những dịch vụ máy chủ ảo, dịch vụ web – webservices, đã góp phần làm tăng cường thế mạnh của mobile.
Mobile có thể được lập trình để cung cấp dữ liệu lên trên cloud để tính toán và nhận kết quả trả về mà thôi. Chính điều này đã làm cho chiếc di động trở nên mạnh mẽ hơn bao giờ hết.
Những kiến thức các bạn cần phải nắm đó là kiến thức xây dựng và tiêu thụ 1 dịch vụ web.
Các chuẩn dữ liệu trao đổi như XML, hay JSON để giúp cho ứng dụng trao dổi thông tin giữa mobile và cloud
6. Lập trình mạng & lập trình đa luồng – Network programming & Multi-thread programming
Các nội dung chuyên sâu này giúp cho app có thể trao đổi thông tin qua mạng nói chung. Những kiến thức cần nắm đó là lập trình socket, lập trình TCP/IP.
Ngày nay, các thiết bị di động được trang bị CPU đa nhân, việc tận dụng được nhiều nhân của CPU sẽ giúp ứng dụng của bạn trở nên mạnh mẽ hơn và đáp ứng nhanh hơn.
Hơn nữa, đối với những trường hợp muốn tăng độ đáp ứng của chương trình lên, chúng ta cần phải đưa các tác vụ có thời gian hoàn thành lâu hoặc phải chờ đợi sang 1 thread khác để cho chương trình không bị “kẹt” lại khi một tác vụ chưa hoàn tất. Kỹ thuật này gọi là multi-thread programming.
7. Lập trình đồ họa & multimedia
Chiếc điện thoại ngày nay có khả năng đồ họa và đa phương tiện rất cao. Nếu các bạn muốn ứng dụng của mình đầy màu sắc, sinh động thì những kỹ thuật xử lý hình ảnh, âm thanh, animation, hiệu ứng, cần phải được phát huy. Điều này đặc biệt quan trọng trong ứng dụng Game, giải trí hay ứng dụng dạy học ngoại ngữ, tương tác.
8. Trải nghiệm người dùng – User Experience – UX
Trải nghiệm người dùng UX là quá trình tăng cường sự thỏa mãn của khách hàng và độ yêu thích ứng dụng bằng cách tăng cường tính tiện dụng, dễ sử dụng và sự hài lòng mang lại khi tương tác giữa người dùng và sản phẩm. UX là một bước cao cấp hơn UI – giao diện người dùng nhiều.
Một ứng dụng thành công là một ứng dụng có UX được xây dựng tốt. Để đạt được kỹ năng này, các bạn phải rèn luyện và học hỏi nhiều.
9. Mobile testing & Security coding.
Điều đặc biệt quan trọng là phải test ứng dụng của bạn trước khi đến tay người dùng. Càng test kỹ bao nhiêu, ứng dụng càng trở nên mạnh mẽ bấy nhiêu. Sẽ rất không hay nếu sản phẩm đến tay người dùng mà xuất hiện nhiều lỗi. Việc viết test trong khi coding cũng là một kỹ năng cần phải rèn luyện.
Ngoài ra, ứng dụng nào cũng vậy, luôn tìm ẩn những lỗi khó phát hiện ra trong lúc xây dựng chương trình. Điều đó khiến ứng dụng có thể mở ra những lỗ hổng khác có thể bị khai thác. Do đó, việc tuân thủ theo những quy tắc lập trình an toàn có thể giảm thiểu phần nào những lỗi security sau này.
10. Xuất bản ứng dụng lên app-store
Chúc mừng các bạn đã đọc đến bước này. Đây là bước cuối cùng để đưa sản phẩm đến tay người tiêu dùng. Tuy nhiên, điều này cũng không kém phần rắc rối.
Bạn phải hiểu những quy định của các appstore (Apple, Google Playstore) phải thiết kế hướng dẫn sử dụng, mô tả sản phẩm, các màn hình chụp – screenshot của ứng dụng để khách hàng có thể nhìn thấy trước. Hoặc thậm chí một video mô tả ứng dụng.
11. Nguyên tắc thứ 11: hãy quên hết các nguyên tắc trên đi và sử dụng trí tưởng tượng của bạn.
Điều cốt lõi của nguyên tắc thứ 11 đó là khi các bạn đã thành thạo các nguyên tắc từ 1-10 thì hãy đừng bị gò bó bởi chúng nữa mà hãy sáng tạo hơn khi cần thiết. Những phép tắc, quy định đôi khi sẽ chính là rào cản sáng tạo của các bạn.
Ba cây chụm lại nên hòn núi cao – Teamwork
Con đường tự học lập trình mobile rất chông gai. Nó đòi hỏi bạn phải có quyết tâm cao độ và tinh thần chinh phục mới có thể thành công. Ngoài ra, 11 nội dung trọng yếu tôi liệt kê ra trong mục III thì hiếm có ai có thể có đầy đủ. Cho nên một app tốt thường là sản phẩm của cả một đội, một nhóm.
Người rành giao diện, người thích đồ họa thì làm đồ họa, người có kinh nghiệm trong UX thì làm UX. Do đó, tìm người đồng hành là không thể thiếu. Có người đồng hành cùng phát triển thì sẽ tiến xa hơn.
Do đó các kỹ năng mềm, kỹ năng làm việc nhóm phải được rèn luyện song song với kiến thức thì sau này bạn mới thành công được. Hiếm có công ty nào tuyển nhân viên mà người đó không làm việc được với ai hết. Việc giao tiếp, làm việc nhóm cũng là 1 kỹ năng có thể học được.
Kết luận
Trên đây chỉ vừa trình bày những điểm trọng yếu trong việc phát triển ứng dụng trên di động. Nó giúp các bạn hiểu được con đường sẽ đi qua. Những ai đã từng trải nghiệm qua, nếu thấy mình thiếu sót chỗ nào có thể từ từ bổ sung để hoàn thiện hơn nữa. Vì kỹ năng lập trình là cả một quá trình, nó cần có thời gian để rèn luyện chín muồi.
Sách và tài liệu tham khảo
Sau đây là một số tài liệu tham khảo (update liên tục) để giúp các bạn có thể tự học. Chia theo các nội dung:
Thiết kế giao diện & trải nghiệm người dùng – UI & UX
- Jakob Nielsen, Raluca Budiu, Mobile Usability 1st Edition, Link
- Adrian Mendoza, Mobile User Experience: Patterns to Make Sense of it All, Link
- Polar Luke Wroblewski, Mobile & Multi-Device Design Lessons Learned Building, Link
- Eric Reiss, Usable Usability: Simple Steps for Making Stuff Better 1st Edition, Link
- Luke Wroblewski, Mobile First, Link
Và nhiều tài liệu nữa:
- http://uxmastery.com/resources/books/
- http://www.adhamdannaway.com/blog/ui-design/ui-design-books
- http://blog.careerfoundry.com/ux-design/best-books-ux/
Lập trình Android
- Reto Meier, Professional Android 4 Application Development, Link
- Coursera, https://www.coursera.org/learn/android-programming
- Và tất nhiên là trang developer của Android, http://developer.android.com
Lập trình iOS
- CHRISTIAN KEUR and AARON HILLEGASS, iPhone Programming : The Big Nerd Ranch Guide. Link
- Erik Buck, Donald Yacktman, Cocoa Design Patterns 1st Edition, Link
- Trang Developer của Apple: https://developer.apple.com/
Và nhiều sách nữa:
Nguồn bài viết trích từ blog tuanubicom.blogspot.com: http://tuanubicom.blogspot.com/2016/09/mobilelodestar.html