Từ Zero đến với Swift trong 30 ngày

275

Tôi đã bắt đầu với Swift chính xác là cách đây 30 ngày. Ba ngày trước, ứng dụng đầu tiên của tôi được Apple approve bản beta review. Quy trình beta review xem ra chẳng là gì so với phiên bản chính thức, nhưng đối với tôi, đây là thành tựu lớn.

Tôi không có bằng CS (Computer of Science – Cử nhân Khoa học máy tính) hay kinh nghiệm chuyên nghiệp của 1 lập trình viên, nhưng tôi đã làm việc cùng 1 team lập trình phần mềm trong vai trò Product manager được 5 năm qua và cũng tạo vui vài app Ruby on Rails. Tôi đã luôn muốn tham gia trực diện hơn vào những thứ mình đang làm, vì vậy, tôi đã bắt đầu viết code.

Tại sao lựa chọn iOS và Swift?

  • Di động rộng lớn; di động thuộc về cá nhân.  Tôi muốn tạo phần mềm mà mọi người thực sự dùng và tôi thích sự thân mật mà mọi người trao nhau qua những chiếc điện thoại di động. Điện thoại biết về chúng ta rất rõ – khi bạn tỉnh dây và khi đi ngủ, nơi bạn đang ở và làm cách nào để đến đó, lịch trình, những đoạn hội thoại với bạn bè và gia đình… Đó là tương lai mà tôi rất hứng thú, bên cạnh đó tôi còn là 1 người dùng Apple lâu nay, nên cũng rất tự nhiên, tôi bắt đầu với iOS. Cách đây không lâu, tôi đã cố gắng thử nghiệm với Objective-C và cảm thấy khá sợ hãi, nên Swift trở thành ngôn ngữ chào đón tôi.
  • Khó khăn mang đến điều tốt. Lập trình các ứng dụng trong các khung platform của Apple và trên 1 màn hình phù hợp với túi tiền mang đến những trở ngại tốt cho bạn. Những trở ngại này giúp tôi tập trung vào những gì phải học (trái với tình huống khó khăn không-hồi-kết của lập trình web) và thúc đẩy sự sáng tạo xung quanh trải nghiệm người dùng.
  • Swift là 1 ngôn ngữ phát triển nhanh chóng. Tôi thích tham gia ngay từ ban đầu, xem mọi thứ lớn dần và phát triển, trở thành 1 phần của cộng đồng nhỏ – đó là lý do tôi thích làm việc tại các startups. Có điều gì đó đặc quyền khi bạn phát triển 1 ngôn ngữ ít trưởng thành và là 1 phần của nhóm cộng đồng nhỏ cố gắng để nhận diện mọi thứ cùng nhau. Tôi cũng phấn khích với khả năng đóng góp vào ngôn ngữ và cộng đồng.

Tài nguyên dành cho người mới bắt đầu

Khi bắt đầu hành trình Swift của mình vào ngày 01/07, tôi đã có ý định phát triển 1 ứng dụng đơn giản đầu tiên. Tôi luôn nghĩ về điều này để tạo động lực cho bản thân cũng như sắp xếp lại những gì mình đang học.

Tôi đã dành rất nhiều thời gian để lục lọi Internet, tìm kiếm các tài nguyên, các bài hướng dẫn và các khóa học Swift tốt nhất. Có rất nhiều thứ tuyệt vời ngoài kia dành cho những bạn mới bắt đâu, nhưng hãy giả dụ như bạn chưa từng nhìn thấy 1 dòng code nào và đang bắt đầu rất chậm. Mặc khác, bạn chỉ đọc được các bài viết kĩ thuật và tài liệu tham khảo (gồm tài liệu của Apple) nếu đã có kinh nghiệm hoặc đang chuyển từ Objective-C sang Swift.

Thực lòng, tôi đã tìm thấy được điểm giao thoa phù hợp với khả năng mới bắt đầu của mình và đây là những gì hữu ích mà tôi tìm hiểu được:

  1. Khóa học Stanford Developing iOS8 Apps with Swift của Paul Hegarty. Tôi đã bắt đầu từ đây, trải qua 5 bài giảng đầu tiên và hoàn thành bài tập về nhà thứ 2 trong vòng chỉ hơn 1 tuần. Khóa học dần khó hơn, nên sau khi đã làm quen, tôi đã dừng việc học để giải quyết các hướng dẫn thực tế hơn như bên dưới. Nhưng đây là 1 khóa học tuyệt vời và Giáo sư Professor Hegarty có nhiều kiến thức và kinh nghiệm thực tế, nên tôi đang lên kế hoạch sao lưu nó lại. Nếu bạn gặp khó khăn với 1 bài tập (và không có được cách giải quyết nó trên iTunesU), website hữu ích này sẽ giải đáp từng vấn đề và đưa ra từng phương án.
  2. The Swift Programming Language by Apple. So với tài liệu iOS SDK của Apple, nếu bạn đã có kinh nghiệm lập trình ban đầu, quyển sách về ngôn ngữ Swift này rất dễ đọc. Nó rõ ràng, súc tích và bạn có thể đọc nhanh được khi gặp vấn đề, cần tham khảo 1 concept. Big Nerd Ranch có bài tập pre-reading dành cho bootcamp Swift, bao gồm các concept tương tự, nhưng thiên về những người mới bắt đầu với các ví dụ thực tế mà bạn có thể thực hành.
  3. www.raywenderlich.com. Trang web này trông như 1 website riêng của 1 anh chàng nào đó, nhưng đừng để điều đó đánh lừa bạn. Nếu chưa từng lập trình 1 ứng dụng iOS, hãy bắt đầu tại web này bằng cách đăng kí newsletter và nhận được “hướng dẫn dài hoành tráng” mà bạn có thể đọc hết trong 1 ngày. Hướng dẫn này là con đường đầu tiên để tôi thâm nhập vào những thứ kì quặc trong lập trình iOS và làm sáng rõ những thứ có thể gây nản lòng cho 1 người mới bắt đầu. Tôi thường tham khảo tài liệu này khi đang lập trình ứng dụng và muốn nhớ lại 1 số tính năng hoặc 1 số hàm trong Xcode. Sau khi kết thúc tutorial đầu tiên này, sẽ có hàng tá những tutorials miễn phí khác trên website, mà tôi cẩn thận chọn lựa để nghiên cứu các concepts cần thiết cho ý tưởng ứng dụng của mình. Có rất nhiều nội dung hay ở trang web này nên tôi rất muốn quay lại đây nhiều hơn.

Khung thời gian (thô) của tôi

  • Tuần 1: Dấn thân. Tôi nhảy vào học ngay các bài giảng và các bài tập từ khóa học Stanford ở trên, đọc kĩ 1 đoạn trong quyển Swift Language và hoàn thành “tutorial dài hoành tráng” từ raywenderlich.com. Sau tuần này, tôi  cảm thấy mình đã sẵn sàng để bắt đầu ứng dụng của mình.
  • Tuần 2 – Tuần 3: Mãi giũa. Vào ngày tôi bắt đầu code ứng dụng, tôi cũng vô tình bắt đầu cuộc sống làm việc 12 ngày trên 1 chiếc thuyền buồm tại Maine. Với coffee và trên mặt nước yên tĩnh, tôi đã dành vài giờ mỗi sáng để code. Không kết nối được Internet đem đến cơ hội tập trung vào Xcode mà không cần bật qua bật lại giữa 40 tabs trình duyệt. Nó khiến tôi dừng mọi thứ và bắt đầu suy nghĩ về những gì tôi đang cố làm và tại sao tôi phải làm điều này. Qua những ngày đó, tôi đã suy nghĩ về công việc code của mình, nghĩ ra những cách thức mới và nung nấu cả sự háo hức muốn tìm hiểu chúng vào sáng hôm sau.
  • Tuần 4: Tôi đang thực sự làm. Khả năng học của tôi phát triển nhanh chóng. Vì vậy, trong 1 ngày, tôi làm việc năng suất hơn so với tuần trước. Tôi đã dành 1 ngày cuối để dọn dẹp code, làm việc qua các edge cases (các nhiệm vụ khó và gần như bất khả thi) và rất hài lòng. Là 1 product manager, tôi băn khoăn về những tình huống như thế và giao hàng tá những nhiệm vụ cho các kỹ sư để giải quyết. Có quyền hạn để tự mình thu xếp công việc như thế là 1 trải nghiệm tuyệt vời. Cuối cùng, tôi đã tự tạo ra 1 icon ứng dụng cơ bản trong Sketch và làm theo tất cả các bước để upload ứng dụng lên iTunes Connect và submit đến Apple, chuẩn bị cho giai đoạn beta review. Quá trình review tốn chưa đến 24 giờ.

Trong tháng thứ 7 (theo ghi nhận của RescueTime), tôi đã dành 25 hrs với Xcode, 2 giờ 52 phút với iOS simulator, 4 giờ 23 phút preview (đọc các tutorials) và 51 phút  với Stack Overflow. Tôi cũng đọc rất nhiều các tài liệu trên điện thoại của mình.

Cộng đồng Swift

Tôi còn làm nhiều thứ khác nữa để gia nhập ngay vào cộng đồng Swift

  • Đăng kí newsletter của We Swift
  • Đăng kí iOS Dev weekly của Dave Verwer
  • Theo dõi “Swift” tag trên Medium
  • Nghe podcast của raywenderlich.com
  • Tìm kiếm các hội thảo, meetup, sự kiện tại nơi mình sống (tôi đã tham gia sự kiện Brooklyn Swift Developers* và iOSoho)
  • Tham gia nhóm Slack:
    (1) helpMeCodeSwift là 1 nhóm nhỏ mà tôi vô tình bắt gặp. Hiện tại, chỉ có vài ba người hoạt động năng nổ nhưng họ cực kì thân thiện và không phiền hà với những câu hỏi của người mới
    (2) swift-lang slack là 1 nhóm lớn hơn, có thể tham gia ngay, nhưng nhóm hình như không có nhiều người mới và tôi cũng thấy 1 chút sợ hãi khi nhảy vào nói chuyện. Nhiều khả năng, tôi sẽ tìm hiểu việc tạo 1 kênh dành cho người mới bắt đầu.

Trên đây là những thứ mà tôi thấy rất hữu ích. Nếu bạn có những nguồn nào muốn đề xuất thì có thể comment những gì bạn thích và ưu điểm của chúng.

*Cuộc gặp gỡ đầu tiên mà tôi dự là buổi nói chuyện với Dave Grandinetti: “Learning Swift the Euler Way”. Dave đã tạo 1 công cụ mà bạn có thể xem tại EulerKit, gồm các helper methods giúp bạn giải quyết các vấn đề trong Project Euler. Tôi đã hoàn thành được 2 nội dung đầu tiên, nhưng sau đó các nội dung ngày càng khó hơn.

Và cuối cùng, ứng dụng đầu tiên của tôi – RoundTrip

Tên của ứng dụng là RoundTrip, dành cho những người sống ở New York để tối ưu hóa chi phí MetroCard. Đây là 1 app có tính ứng dụng cao.

  1. App hỗ trợ tính toán số tiền thêm vào MetroCard của bạn, để không bị dư những đồng lẻ không sử dụng. MTA sẽ bonus cho bạn 11% nếu khoản tiền bạn thêm vào trên 5,5 USD và chỉ cho phép bạn thêm vào với mức tăng 5 cents. Đây là những phép toán không dễ thực hiện được ngay nếu bạn không dùng app.
  2. Ước lượng khối lượng lái xehằng tháng, xem thử bạn có thể tiết kiệm được với card không giới hạn 30 ngày hay không. Bạn cũng có thể đăng nhập vào các chuyến đi và xem biểu đồ mức độ đi xe thường xuyên của bạn.

Nếu bạn muốn tham gia với vai trò beta tester cho ứng dụng này và các ứng dụng tương lai, có thể đăng kí ở đây.

Nguồn: IDE Academy via Medium