Bài này được mình dịch từ đây.

Động lực cá nhân

Tôi thường xuyên nhận được nhiều emailmessage.

“Bob, làm thế nào để trở thành developer bá đạo?”

“Bob, Tôi muốn thay đổi sự nghiệp. Tôi thích những bài viết và video của bạn. Làm thế nào để trở thành iOS developer?”

“Bob, Tôi không biết bắt đầu như thế nào. Tôi chưa từng lập trình trước đó. Bạn có thể giúp tôi không?”

Tôi hiểu, nhưng tôi không nói dối. Tôi không thể trả lời những câu hỏi chung chung như thế. Tôi gọi nó là những câu hỏi thời tiết. Nó vô nghĩa. Nó cho thấy sự thiếu chuẩn bị.

Nếu họ là bạn thân của tôi, có lẽ tôi sẽ bắt bẻ lại,

“Mày đã google chưa? Nếu rồi thì tìm thêm đi.”

Tuy nhiên, tôi có thể chia sẽ những hiểu biết giới hạn của mình thông qua bài viết này. Thứ hai là khi một ai đó hỏi câu tương tự, tôi sẽ nói, “Xin hãy đọc bài viết này trước và sau đó hãy hỏi”.

Không chịu trách nhiệm: Bài viết này chỉ là góc nhìn riêng của tôi, có thể tôi thiên vị. Tôi chỉ chia sẻ kinh nghiệm của mình như Swift là ngôn ngữ đầu tiên của mình.

1.Hãy thư giãn và học kỹ những nguyên tắc cơ bản

Tôi hiểu. Khi tôi bắt đầu học iOS, tất cả những gì tôi nghĩ là tạo ra những thứ to lớn. Tôi đã mua những khoá học online và sách - “Bạn chỉ cần 1 khoá học để trở thành iOS developer và tạo ra 18 app” - Tôi đã cắn câu. Thật là nhảm nhí.

Tôi không bao giờ hiểu những keyword như super, !, ? , as, if let. Tôi viết và copy từ màn hình như con vẹt mà không hiểu gì. Nếu bạn đang ở level này hãy học Swift trước. Không phải về iOS, hãy học những nguyên tắc cơ bản trước. Điều đó giống như việc bạn học làm thế nào để viết cuốn sách trước khi bạn học ngữ pháp và từ vựng. Đúng là bạn vẫn có thể xuất bản cuốn sách đó.

Nếu bạn không hiểu bất kỳ khái niệm trong Swift ở bên dưới, bạn cần đánh dấu và tìm hiểu hãy chắc rằng bạn hiểu nó delegate extension Protocol optionals super generics type casting error handling enum closures completion handlers property observer override class vs struct

Đừng lo lắng. Bạn có thể tìm hiểu ở đây.

Đừng cố gắng học functional programming, protocol-oriented programming, nếu bạn chưa làm chủ được Object Oriented Programming.

2.Không nên cố gắng hiểu hết tất cả. Thay vào đó hãy tìm hiểu patterns

Điều này dựa trên thực tế bạn đã quen thuộc với các khái niệm cốt lõi trong Swift, và bạn đang học về hệ sinh thái iOS.

Bạn không cần biết mọi thứ về iOS. Thực tế thì nó rất rộng. Nó có rất nhiều class và framework mà chúng ta phải giải quyết, và iOS developer không thể biết nhiều vì nó là mã đóng.

Kết quả, tôi muốn mô tả sự phát triển ứng dụng iOS giống như vận hành một lò vi sóng. Tất cả những gì bạn cần là đọc hướng dẫn sử dụng, nhưng để đọc được nó, bạn phải biết đọc như thế nào và tìm một số pattern thích hợp.

Ví dụ, để đun nóng, bạn bấm một vài nút và đĩa sẽ quay cùng với ánh sáng vàng trong lò. Tương tự, nó chỉ hoạt động vì các kỹ sư của Apple đã thiết kế như vậy. Nhưng với vai trò là iOS developer, công việc của bạn là hiểu rõ tại sao họ lại thực hiện theo cách đó. Ví dụ, tôi hỏi, “Làm thế nào mà xoay cái đĩa có thể đun nóng thức ăn?”. Bạn không cần phải biết chi tiết cách điện từ làm việc, mặc dù chắc chắn nó sẽ giúp bạn giải thích được.

Ví dụ, tôi hay hỏi, tại sao các kỹ sư của Apple thực hiện delegate patterns và MVC? Hãy tìm động cơ của họ, và nếu bạn hiểu qua quá trình tìm kiếm, bạn thực sự hiểu nó.

3.Hãy xử lý với các API và tài liệu

Một khi bạn đã hiểu các khái niệm delegate, protocol, nó trở nên dễ dàng hơn khi bạn đọc các tài liệu về API. Tuy nhiên, phần lớn các hướng dẫn vẫn còn được viết bằng Objective-C.

Đừng lo. Bạn có thể dễ dàng chuyển đổi từ Objective-C sang Swift. Bạn có thể tìm ở đây.

Tôi thường miêu tả quá trình tìm hiểu API như là cách học lái các phương tiện khác nhau. Ví dụ, UITableViewUICollectionView giống như đang lái xe đạp và xe máy. Sử dụng NSURLSession để download và upload dữ liệu cảm giác giống như lái 1 chiếc BMW. Tạo một dự án mã nguồn mở giống như điều khiển một chiếc máy bay.

Bất kể đó là phương tiện gì, tất cả đều có các tính năng và pattern cơ bản. Tất cả đều có bộ phận điều khiển, động cơ và dầu để hoạt động.

Việc tìm hiểu pattern rất khó. Nhưng bạn phải đối mặt. Hãy nghĩ đến cảm giác khi bạn thực sự hiểu được nó. Ví dụ, mọi người cố leo lên đỉnh Everest mặc dù tính mạng có thể bị đe dọa. Mọi người rời sân vận động khi tỉ số của trận bóng đá là 5-0. Có quá nhiều pattern và bạn đã biết cách giải quyết nó - google, tìm hiểu, áp dụng, lặp lại.

4.Ý kiến về mã nguồn mở

Không sử dụng các dự án mã nguồn mở, trừ khi bạn biết làm cách nào để sao chép các tính năng của nó vào dự án của riêng bạn.

iOS developer phụ thuộc dự án mã nguồn mở cho các phần: networking, animation, and UI. Tuy nhiên, những-người-mới-bắt-đầu chỉ cần tải về và thực hiện. Nó làm cho mọi thứ trở nên quá đơn giản vì thế họ không học được bất cứ điều gì.

Đây là một vấn đề. Tưởng tượng bạn cần thực hiện một công việc đơn giản. Bạn phải import một thư việc rất lớn. Nó giống như mở một lon soda bằng một con dao sắc bén của quân đội. Bạn không cần nó. Nếu bạn đem nó vào dự án, nó trở nên cồng kềnh.

Nếu bạn không biết làm thế nào để có được những hiệu ứng và tính năng đó, hãy học nó. Nó được gọi là “mã nguồn mở”. Đơn giản chỉ cần tải code của họ và chắc lọc, sao chép nếu cần thiết.

Để làm điều đó thành công, bạn phải hiểu Access Control và hiểu biết vững chắc về Object Oriented Programming.

Đừng nói tôi sai. Tôi sử dụng thư viện mọi lúc. Nhưng tôi sử dụng chúng vì tôi biết làm cách nào để sử dụng chúng nếu không có nó. Quan trọng nhất, nó giúp tiết kiệm thời gian cho tôi.

5. Tư duy theo Protocol Oriented Programming

Giả sử bạn đã quen thuộc với OOP, tôi muốn bạn suy nghĩ làm cách nào để có thể thiết kế các tính năng với protocol-oriented programming. Tôi đã viết một vài hướng dẫn cho bạn biết tại sao nó là một ý tưởng tuyệt vời để sử dụng protocol-oriented programming. Bạn có thể bắt đầu với phần 1phần 2.

6.Tìm hiểu vòng đời của ứng dụng

Bạn có biết sự khác nhau giữa ViewDidLoad, ViewWillAppear, ViewDidDisappear. Bạn có hiểu tại sao chúng ta sử dụng networking logic với ViewWillAppear thay vì ViewDidLoad.

Tìm hiểu vai trò của UIApplication và tại sao lại có AppDelegate. Tôi đã upload một video nói về vấn đề này lên youtube.

Vòng đời của ứng dụng (YouTube)

7. Đừng lo lắng về server.

Nếu bạn vẫn đang phải vật lộn với SwiftiOS, quên việc tạo ra serverdatabase. Chỉ cần sử dụng Firebase, là một dịch vụ hỗ trợ backend, cho phép bạn lưu trữ dữ liệu với ít hơn 10 dòng code.

Giả sử, ứng dụng của bạn trở nên phổ biến với hơn 100 triệu người dùng, bạn có thể thuê một backend developer. Người xưa từng nói, nếu bạn cố gắng bắt hai con thỏ, bạn sẽ mất tất cả. Tất nhiên, nếu bạn cảm thấy tự tin với hệ sinh thái iOS, bạn có thể tìm hiểu lĩnh vực khác.

8. Document. Document. Document

Tôi thường mô tả việc học API giống như ghi nhớ từ vựng. Tôi đã học một vài ngàn từ để chuẩn bị cho các kỳ thi chuẩn hóa cho việc vào đại học. Tất nhiên, tôi đã quên ngay cả khi tôi cảm thấy tự tin vào lúc đó. Chúng ta đã từng như vậy.

Một vài bạn không biết lưu tài liệu ở đâu. Bạn không cần một trang web. Nhìn xung quanh trước. Chia sẻ trên Medium. Upload trên Github. Làm các video trên YouTube, hoặc nếu bạn là cá nhân, thực hiện một loạt các file playground trên máy tính của bạn.

Nó không chỉ là nơi để bạn có thể lưu trữ thông tin, mà còn là nơi bạn có thể giúp đỡ người khác. Tôi tin tưởng vào thiện nghiệp. Chưa kể, nó làm tăng thương hiệu và tiếp thị cá nhân cho bạn.

Nếu bạn muốn biết làm thế nào để bắt đầu viết blog dựa trên cuộc hành trình của tôi, tôi đã viết một bài viết trên

Tôi đã học được những gì từ việc viết blog trong 10 tuần.(LinkedIn)

9.Làm cách nào để yêu cầu sự giúp đỡ ?

Là biên tập viên của một trang Facebook gọi là iOS Developers với gần 30.000 followers, tôi thấy rằng có thể có sự cải thiện rất nhiều trong kỹ năng mềm cho những người yêu cầu sự giúp đỡ.

Là một người nhận được nhiều câu hỏi để được giúp đỡ vì nhiều lý do, tôi muốn chia sẻ làm thế nào để hỏi, và những gì hữu ích cho tôi.

Thay vì tôi nêu câu hỏi ngay lập tức, tôi muốn viết một hoặc hai câu về tôi là ai, và làm cách nào tôi đã tìm thấy người đó. Sau đó, tôi nêu rõ những gì tôi đã làm để tìm câu trả lời / giải pháp. Không đề cập đến, tôi không hỏi kiểu câu hỏi thời tiết.

Đối với lời khuyên bổ sung, nếu tôi thực sự muốn câu hỏi của tôi được trả lời rõ, tôi đưa ra một số khuyến khích cho người khác. Tôi nói rằng tôi rất hạnh phúc khi chia sẻ công việc của mình với những người khác.

Trước khi bạn hỏi, hãy tìm kiếm ít nhất 10 trang đầu tiên của Google. Bạn sẽ ngạc nhiên khi bạn học rất nhiều bên cạnh vấn đề mà bạn đang tìm.

10. Đừng phụ thuộc vào Tutorials

Thông thường, chúng ta tìm kiếm người thầy để được hướng dẫn và giúp đỡ. Tuy nhiên, việc đó cũng ok giống như cố gắng để làm vỡ một tảng đá với một quả trứng. Bạn sẽ tìm hiểu và khám phá ra rằng nó không phải là cách tốt nhất.

Việc học là do bạn. Nếu bạn cứ tiếp tục phụ thuộc các Tutorial, bạn sẽ mất khả năng để bắt cá. Ý tôi là, thật tốt khi bạn tiếp tục trở lại với công việc của tôi. Nếu bạn muốn trở thành một iOS developer bền vững, bạn nên đọc tài liệu. Cố gắng đọc những hướng dẫn sử dụng API được cung cấp bởi Apple. Thách thức chính mình. Đôi khi bạn có thể phải học gạo và đọc nhiều lần.

Trong thực tế, tôi đã đọc tài liệu chính thức của Swift từ trên xuống dưới hơn 3 lần, và ghi nhớ tất cả các ví dụ của họ. Đọc hướng dẫn sử dụng là một kỹ năng cần học.

Tutorial được gói gọn theo một cách mà sinh viên dễ dàng hiểu được, nhưng chắc chắn nó không bao gồm toàn bộ các chức năng. Ví dụ, không có cách nào để tôi đi qua các thư viện Foundation trong Swift và làm tutorial ra khỏi nó.

Việc đọc tutorial cũng được. Tôi đọc nó suốt. Tuy nhiên, hãy sẵn sàng nhíu mày nhiều lần nếu bạn nghĩ rằng phải có một cách tốt hơn. Là một blogger và người tự học, tôi thừa nhận rằng cách của tôi có thể không hiệu quả. Tôi hiểu vì tôi là một con người còn thiếu sót.