Học lập trình có khó không? Review quá trình tự học làm App iOS và đăng lên App Store
Rất hay và hữu ích!/71 người
qsangp
6 thángBình luận: 223
Học lập trình có khó không? Review quá trình tự học làm App iOS và đăng lên App Store

1. Mình là ai

Mình là một thầy giáo tiếng Anh và đây là bài về mail tự động mình viết lần trước [Chia sẻ] [Mày mò lập trình và cái kết] - Mail tự động đã thay đổi việc dạy học của mình như thế nào | Tinh tế (tinhte.vn)

2. Vấn đề mình gặp phải trong công việc

Kỹ năng nói (speaking) là một trong những kỹ năng khó dạy nhất, mình suy nghĩ là nếu học viên chỉ luyện nói trên lớp và cầm xấp giấy A4 về nhà thì hiệu quả học kỹ năng này sẽ rất thấp.

Giải pháp đầu tiên mình nghĩ đến là một website cho phép mình tạo flashcard, bấm vô bài học sẽ nghe câu hỏi tiếng Anh: “What do you do?" chẳng hạn, rồi lật flashcard ra sẽ là phần trả lời có audio mẫu.
Và đây là thành quả của 2 năm trước:


Mình có thể thoải mái tạo bài học và website sẽ tạo audio dựa trên text mình nhập vào (web sử dụng Google API text-to-speech).

Quảng cáo


Sau khi có web-app này thì học viên mình có thể thoải mái ôn bằng bằng điện thoại ở bất cứ đâu, hiệu quả học Speaking đã được cải thiện. Nhưng! Mình muốn hơn vậy nữa.

3. Quá trình tự học ngôn ngữ Swift

Trong quá trình luyện nói, nếu có thể thu âm lại phần luyện tập để so sánh với phát âm mẫu (giống Elsa) thì sẽ ngon hơn nữa, và rồi mình nghĩ: “Chắc phải làm một cái App thôi”

Mình dò hỏi thì thấy chi phí thuê người làm App khá cao, chưa kể trong quá trình làm sẽ có thể phát sinh thêm nhiều tính năng mới (chi phí lại càng cao). Do vậy mình quyết định tự học làm App luôn vì … nghèo.

Sau khi tham khảo một bạn học viên đang làm iOS developer, và mình cũng đang có sẵn Macbook 15 và Iphone 11 thì mình ra được road map như sau:
  1. Đọc Swift Document: Swift.org - Documentation
  2. Mua một khóa online Swift trên Udemy: iOS & Swift - The Complete iOS App Development Bootcamp | Udemy (mình mua lúc sales giá khoảng 230k)
  3. Nhờ anh backend (anh làm website cho mình) gửi cho bộ API
  4. Design giao diện
  5. Code app
  6. Up lên App Store

4. Quá trình nghiên cứu Document

Screen Shot 2021-07-11 at 8.12.43 PM.png


Mình không phải dân IT nên tiếp cận với những khái niệm như variable, function, closure, optional, protocol… ta nói nản muốn chết luôn. Đọc được một tuần nản quá cầu cứu bạn học viên thì bạn chỉ phải vừa đọc vừa bỏ playground của Xcode (phần mềm Code App của Apple) coi code nó chạy thì mới nắm được khái niệm. Ok bạn!
Screen Shot 2021-07-11 at 8.17.28 PM.png
Những dòng code bập bẹ đầu tiên, code cũng dễ thôi mà, 3 dòng là chạy rồi =))

Cày hết Document mất cỡ 2 tuần, mỗi phần chỗ hiểu chỗ không, mà biết sao giờ, thầy giáo tiếng Anh bày đặt học lập trình, khúc này nản ghê lắm nha mọi người.

Quảng cáo



5. Mua khóa học Udemy và code theo

Mình lựa khóa rating cao nhất trên Udemy và mua lúc sales thì có 230k thôi (sales hoài à), còn mua không sales là hơn 2tr lận nha.

Khóa mình mua đây: iOS & Swift - The Complete iOS App Development Bootcamp | Udemy, cô giáo giảng chi tiết dễ hiểu mà lâu lâu cũng hơi buồn ngủ … vì cô giảng kĩ quá =))

Mình chỉ cày phần cơ bản thôi chứ không học hết khóa, mất khoảng 1 tháng, code theo cô giáo được kha khá App nào là App lắc xí ngầu, App hẹn giờ luộc trứng, App thời tiết, App chat… khá là vui

6. Thiết kế giao diện App

Đúng ra là phải thuê Designer để người ta thiết kế cho đẹp rồi code theo thôi, mà mình cũng tự làm luôn… vì NGHÈO


Screen Shot 2021-05-21 at 5.26.19 PM.png
Giao diện phiên bản đầu tiên design bằng Sketch, nhìn cũng ổn hen 😁

Quảng cáo



English-Journey.jpg
Giao diện phiên bản thứ 2

English-Journey.jpg
Bản hiện tại thì hoàn toàn khác so với ban đầu luôn =))

7. Quá trình code và những vấn đề gặp phải

Bài viết này mình sẽ không nói quá chi tiết về code vì mình là newbie nên code rất rất là gớm, mình sẽ chỉ nói về những tính năng của App mình làm được và những trở ngại gặp phải.

1. Social login
IMG_4644.jpg
Mình muốn học viên login nhanh bằng Google nên đây là tính năng đầu tiên mình làm, chỉ cần làm theo Document của Google cho phần này + video hướng dẫn trên Youtube là xong.

Trở ngại: khi mình up lên App Store để duyệt thì Apple reject và mail lại là “nếu như App có tính năng social login thì phải có Apple login” =)), thế là phải thêm Sign in with Apple vào dù ban đầu không định làm, cũng làm theo Document của Apple thôi, không khó lắm.

2. Thẻ bài học, phát âm mẫu và nút thu âm

Quy trình học mình design cho app đó là:
  1. Học viên sẽ chọn bài muốn học, mỗi bài học sẽ có khoảng 4 thẻ
  2. Mở bài học lên thì sẽ phát câu hỏi của thẻ, bấm sample thì sẽ hiện ra câu trả lời mẫu kèm audio
  3. Có thể bấm nút thu âm để nghe lại phần luyện tập và so với giọng mẫu
  4. Học xong thì bấm nút qua thẻ tiếp theo và tiếp tục cho đến khi học hết thẻ
IMG_4647.PNG

Phần này mình chỉ đổ dữ liệu từ website vào app qua API, phần khó nhất là làm logic cho 2 nút “I forgot” và “I remembered”.
  • Nếu người học bấm nút I forgot thì thẻ sẽ được lưu và lặp lại
  • Nếu người học bấm nút I remember thì thẻ sẽ được xóa khỏi bài
  • Sau khi học xong sẽ có nút Learn again, nếu người học chọn Learn again thì bài học phải được reset lại từ đầu
Với những bạn có chuyên ngành IT thì logic này là muỗi thôi, còn với mình thì phải mất nửa ngày suy nghĩ mới ra…

3. Tính năng random câu hỏi và lưu lại bài để ôn tập
IMG_4649.jpg
Phần Random cho phép người học chọn ngẫu nhiên một bài học trong các danh mục (reading vocabulary, speaking task 1…), là vô App bấm cái là học liền, khỏi cần lựa bài luôn. Khi ôn tập thì phần này khá lợi hại vì câu hỏi sẽ ra ngẫu nhiên nên sẽ tạo sự bất ngờ giống như đi thi vậy. Phần này mình search “random element in swift array" là làm được, khá nhanh.

Phần To Review là phần lưu lại bài học sau khi học xong, logic ở đây là mình phải thiết lập khi người dùng bấm nút “Quay lại trang chủ” khi học xong một bài thì trang chủ sẽ thêm bài đó vào phần To Review này, nghe qua thì đơn giản nhưng mình mất tận 2 ngày để tính năng này chạy được =))

8. Quá trình đăng ký Apple Developer và upload App lên App Store

Sau khi làm xong App, để người dùng có thể tải App qua App Store thì mình phải mua một tài khoản Apple Developer, 99 đô


Screen Shot 2021-07-11 at 11.28.51 PM.png
Vấn đề ở đây là không phải đăng ký xong là được liền, mà phải chờ cho đơn đăng ký được approve. Sau khi đăng ký xong thì bạn học viên có nói mình là bạn ấy có mua một tài khoản rồi mà chờ cả tháng nay chưa được approve! Nghe tới đây mình thấy hơi quải quải, làm App cực khổ, mất tiền xong mà giờ phải chờ để App được lên Store nữa, haizz. Lên mấy group coi thử thì thấy cũng nhiều người mua mới tài khoản phải chờ, cũng có bạn chia sẻ tip là gửi mail cho Apple để nhắc nếu chờ lâu quá.

Mình gửi mail liền trong hôm đó, và hôm sau thì nhận được Approve luôn, hên ghê :D
Screen Shot 2021-07-11 at 11.36.26 PM.png
Nào thì ta đăng App lên thôi

Sau khi tải App lên và bấm Submit for review thì App sẽ được Apple kiểm tra để duyệt, thời gian duyệt tầm 1-2 ngày có khi lâu hơn. Đây là quá trình App mình được duyệt:

Lần 1: bị reject vì có social login nên cần phải thêm Apple login → thêm và gửi duyệt lại
Lần 2: bị reject vì App mình có xin phép người dùng để mở tính năng thu âm nhưng không nói rõ lý do thu âm cho người dùng biết.
Lúc này mình xem lại thì thấy phần xin phép người dùng của mình chỉ là “for record audio” → mình sửa lại thành “Record and compare your practice to the sample audio for better pronunciation” → gửi lại và được lên store :D

9. Kết

Thời gian từ lúc bắt đầu học đến lúc App lên Store khoảng 2.5 tháng và quãng thời gian này cho mình những trải nghiệm thật sự rất thú vị:

1. Hiểu hơn về cuộc sống của anh em lập trình, phải vất vả suy nghĩ, thức đêm để làm ra sản phẩm, sau đó lại phải tiếp tục suy nghĩ và thức đêm để… fix bug (sửa lỗi). Song hành với làm việc là anh em lập trình phải liên tục tự học và cập nhật những công nghệ mới, cứ học rồi làm, học rồi làm liên tục.

2. Trước giờ mình chỉ là người dùng, giờ tự tay làm một sản phẩm cho khách hàng (học viên) của mình mới thấy được từng tính năng, từng cái nút bấm là cả một sự đầu tư công sức thời gian không hề đơn giản. Có những bug (lỗi) học viên feedback lại mình phải dành 1, 2 ngày mới sửa xong.

3. Qua quá trình kiểm duyệt App với Apple, mình mới thực sự cảm nhận được họ hướng đến người dùng nhiều như thế nào, sự cẩn trọng và chặt chẽ trong khâu kiểm duyệt góp phần rất lớn làm nên sự thành công của App Store.

4. Sản phẩm chính tay mình làm ra mang lại sự hữu ích cho người dùng (App giúp học viên mình luyện tập và ôn bài tốt hơn) thì thật sự là niềm vui khôn tả, cảm giác rất là phê luôn!

5. Lập trình không khó, nếu mọi người thích và vượt qua được giai đoạn đầu thì mọi thứ sẽ dần dễ dàng hơn, kĩ năng tự học là cực kì quan trọng nếu muốn theo lập trình nhé.
IMG_4653.jpg
Đây là link của App ạ: ‎English Journey by Vuive on the App Store (apple.com)
Rất mong nhận được đóng góp của mọi người để App ngày càng hoàn thiện hơn.
Xin cảm ơn đã theo dõi bài viết.
223 bình luận
Hay quá, chúc bạn thành công
AĐÙMEN
TÍCH CỰC
6 tháng
@Pim Hunter Ngon lành luôn, em xử lý hết việc sẽ ib bác liền luôn, cám ơn bác ^^
Pim Hunter
ĐẠI BÀNG
6 tháng
@AĐÙMEN Okey ban, dạo này wfh, cũng khá rãnh rỗi 😁
@Pim Hunter hay bạn tạo khóa online đi. ae học chung.
Dân ngoại đạo tự mày mò viết được app này trong 2.5 tháng từ con số 0 thì quả là đáng nể
Chúc bạn thành công, tips nhỏ cho bạn nào thấy swift hoặc obj-c quá khó học & muốn làm thêm android nữa thì có thể tham khảo thêm học Flutter hoặc React native
Code 1 lúc 2 nền tảng luôn, và cá nhân mình đã học code native (ios, android) lẫn react native & flutter thì đánh giá thằng react native & flutter dễ học hơn 2 thằng native kia nhé
minhtuanq6
ĐẠI BÀNG
6 tháng
@pikupi Chủ thớt là giáo viên Anh văn bác ơi... Kiểu như đi xe hằng ngày, muốn biết thêm cách thay bánh xe để phòng khi khẩn cấp. Bác tư vấn người ta đi học 4 năm chuyên ngành sữa chữa ô tô.
Cái này cũng là lỗi cơ bản của mấy ông dev, đi gặp khách hàng mà không hiểu khách là ai, muốn gì. Bởi vậy phải cho tụi sale đi chém gió thì mới có cơ may lấy được hợp đồng.
@duythanh90 rồi mấy cái chọt sâu vào nền tảng crossflatform khóc huhuhu 😁
epro2k7
ĐẠI BÀNG
6 tháng
@minhtuanq6 dí zụ bá cháy nha Tuấn 😁, cái này gọi là bịnh nghề nghiệp nè
@duythanh90 Đính chính với bạn là fb viết bằng native bạn nhé. Chỉ một số module nhỏ mới dùng RN. Có nhiều người nhầm lẫn cái này
Quá nể cho cách học hỏi của bạn. Từ đam mê có thể làm nên tất cả mọi thứ. Chúc bạn thành công và cải tiến cũng như có nhiều App hay hơn nữa trong tương lai.
Thầy giáo quá tuyệt vời 😃
Chúc bạn thành công
jackieTong
ĐẠI BÀNG
6 tháng
3. Nhờ anh backend (anh làm website cho mình) gửi cho bộ API
Cái quan trọng là chỗ này ấy
@jackieTong api mà code ngu ngu cũng mệt, nói chung làm app cần 2 bên. bên nào cũng cần xử lý hết chứ api có trả về hết được đâu, handle api mapping
jackieTong
ĐẠI BÀNG
6 tháng
@super_trungle Đã code ngu thì ở bất cứ công đoạn nào cũng có thể ngu cả
jackieTong
ĐẠI BÀNG
6 tháng
@Ku_dang Khổ lắm ạ, nếu tách frontend và backend ra làm 2 phần riêng biệt thì phải nói là quan trọng như nhau.
Nhưng mình đang nói là trong chủ đề thread này "viết app sau đó publish lên App Store", không có api thì publish app chay lên App Store à, còn api không có app iOS thì có thể sử dụng trên nền tảng khác app Android, .Net, web v.v
Cái này cũng là khó khăn chung cho dân viết app mobile, muốn theo ý mình thì phải full stack, còn không phải kiếm thêm ông frontend.
Làm full stack không phải không được mà thời đại chuyên môn hoá 1 ông làm nhiều quá thì lợi thì ít mà thời gian cho bản thân thì không có
Ku_dang
ĐẠI BÀNG
6 tháng
@jackieTong ok bạn
antonior
TÍCH CỰC
6 tháng
Chưa thấy giáo viên tiếng Anh nào ngầu như bạn, chúc bạn thành công.
dhnang
ĐẠI BÀNG
6 tháng
Thầy giáo có tâm quá, chúc bạn thành công
Dạo này publish lên App Store toàn bị báo Việt Nam ko nằm trong vùng cho phép, không biết bạn có bị không ?
@Super Sands Dạ không ạ
betiteo
ĐẠI BÀNG
6 tháng
Ngưỡng mộ bạn quá. Chúc mừng bạn!
quá giỏi 😃 Mình ngu lắm nên chỉ tự học thiết kế thôi. Code nhức đầu 😃)
vinghiep
ĐẠI BÀNG
6 tháng
Bác cho mình hỏi là bộ api bác xin là api gì v ạ? Mình cũng đang muốn học thêm mảng này, mong bác chỉ giáo :3
iamcuong
TÍCH CỰC
6 tháng
@tranbinh198074 Không bạn ạ, Anki là phần mềm mã nguồn mở. Anki được sử dụng từ học ngoại ngữ, y khoa, đến ôn thi Ai là triệu phú, Olympia...
@iamcuong Mình vừa xem rồi, cách tạo flashcard của nó rất hay, nhưng phần học thì lại tệ quá. Phải chi nó có dạng trắc nghiệm thì hay.
iamcuong
TÍCH CỰC
6 tháng
@tranbinh198074

Bạn search Mutiple choice Anki
@iamcuong Cái này thì phức tạp quá, cảm ơn bạn.
nkh24288
ĐẠI BÀNG
6 tháng
Tuyệt quá bạn ơi
Cho mình hỏi 1 câu ngoài lề về tiếng Anh, cái nút "Already has account" đúng ra phải là "Already has an account" mới đúng chứ phải không bác?
@Methylamine Yeah mình sẽ fix lại ạ
Giỏi quá 👍🏾
Khả năng tiếp cận tốt quá. Tuyệt vời 😁
Chúc bạn thành công.
Hun cái nè
tmdung76
ĐẠI BÀNG
6 tháng
Xuất sắc








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2022 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019