Điều gì sẽ xảy ra nếu bạn muốn trở thành nhà phát triển iOS

Điều gì sẽ xảy ra nếu bạn muốn trở thành nhà phát triển iOS

Nhìn từ bên ngoài iOS, quá trình phát triển có thể giống như một câu lạc bộ khép kín. Để làm việc, bạn chắc chắn cần có máy tính Apple, hệ sinh thái được kiểm soát chặt chẽ bởi một công ty. Từ bên trong, đôi khi bạn cũng có thể nghe thấy những mâu thuẫn - một số người cho rằng ngôn ngữ Objective-C đã cũ và vụng về, còn một số khác lại cho rằng ngôn ngữ Swift mới quá thô thiển.

Tuy nhiên, các nhà phát triển đi sâu vào lĩnh vực này và khi đến đó, họ hài lòng.

Lần này, Marat Nurgaliev và Boris Pavlov kể cho chúng tôi nghe về kinh nghiệm của họ - họ học nghề như thế nào, họ đã vượt qua những cuộc phỏng vấn đầu tiên như thế nào, tại sao họ lại bị từ chối. Và Andrey Antropov, trưởng khoa, đóng vai trò là chuyên gia Khoa phát triển iOS tại GeekBrains.

Năm 2016, Marat Nurgaliev đến từ vùng Astrakhan đến xin việc làm nhà phát triển di động tại một công ty truyền hình địa phương. Đây là cuộc phỏng vấn đầu tiên của anh ấy. Anh ta vừa mới xuất ngũ, chưa có kinh nghiệm thực tế, thậm chí quên cả lý thuyết, vốn đã gặp khó khăn. Kinh nghiệm duy nhất của Marat trong phát triển thiết bị di động là luận án của ông về phân tích các luồng rò rỉ thông tin thông qua các ứng dụng Android. Tại cuộc phỏng vấn, anh được hỏi về nghiên cứu của mình, OOP và lý thuyết khác, nhưng Marat không thể che giấu những lỗ hổng kiến ​​​​thức của mình.

Tuy nhiên, anh không bị từ chối mà được giao một nhiệm vụ thực tế - triển khai hiển thị danh sách tin tức bằng API trong hai tuần. Cả cho iOS và Android. “Nếu tôi có kinh nghiệm về Android thì thậm chí còn không có công cụ để tạo phiên bản iOS. Môi trường phát triển ứng dụng iOS chỉ khả dụng trên Mac. Nhưng hai tuần sau, tôi quay lại và cho thấy những gì tôi có thể làm trên Android. Với iOS, tôi phải tìm ra nó một cách nhanh chóng. Cuối cùng họ đã đưa tôi đi. Sau đó tôi sống ở Astrakhan. Bất kỳ công việc CNTT nào có mức lương trên hai mươi đều phù hợp với tôi.”

Nhà phát triển iOS là ai?

Các nhà phát triển di động tạo ra các ứng dụng cho mọi thiết bị di động. Điện thoại thông minh, máy tính bảng, đồng hồ thông minh và tất cả các nền tảng khác hỗ trợ Android hoặc iOS. Các nguyên tắc cơ bản của phát triển di động không khác gì phát triển thông thường, nhưng do các công cụ cụ thể nên nó đã được tách thành một hướng riêng. Nó sử dụng các công cụ, ngôn ngữ lập trình và framework riêng.

“Để làm việc với iOS, bạn cần có MacBook, vì chỉ có nó mới có môi trường phát triển Xcode cần thiết. Nó miễn phí và được phân phối thông qua AppStore. Để cài đặt, bạn cần có ID Apple của mình và không có gì khác. Trong Xcode, bạn có thể phát triển ứng dụng cho mọi thứ - điện thoại, máy tính bảng, đồng hồ. Andrey Antropov, trưởng bộ phận phát triển iOS tại GeekBrains, cho biết có một trình mô phỏng và trình chỉnh sửa tích hợp sẵn cho mọi thứ.

“Nhưng môi trường phát triển có thể được cài đặt trên Windows nếu bạn sử dụng Hackintosh. Đây là một tùy chọn hoạt động nhưng vòng vo - không có nhà phát triển nghiêm túc nào làm điều này. Người mới bắt đầu mua một chiếc MacBook cũ. Và những người có kinh nghiệm thường có thể mua được mẫu mới nhất.”

Ngôn ngữ - Swift hoặc Objective-C

Hầu như tất cả quá trình phát triển iOS đều được thực hiện bằng ngôn ngữ lập trình Swift. Nó xuất hiện cách đây 30 năm và hiện đang dần thay thế ngôn ngữ Objective-C cũ mà Apple đã sử dụng trong tất cả các ứng dụng của mình trong hơn XNUMX năm qua.

“Một cơ sở mã khổng lồ đã được tích lũy trong Objective-C, vì vậy vẫn cần có các nhà phát triển ở cả hai ngôn ngữ, tùy thuộc vào công ty, nhiệm vụ và ứng dụng của nó. Các ứng dụng được viết cách đây nhiều năm đều dựa trên Objective-C. Và tất cả các dự án mới đều được phát triển trong Swift theo mặc định. Hiện Apple đang làm rất nhiều việc để giúp việc phát triển đồng thời điện thoại, máy tính bảng, đồng hồ và MacBook trở nên thuận tiện nhất có thể. Mã tương tự có thể được biên dịch và chạy ở mọi nơi. Điều này đã không xảy ra trước đây. Đối với iOS, chúng tôi đã phát triển bằng Swift, đối với MacOS, chúng tôi sử dụng Objective-C.”

Theo Andrey, Swift là một ngôn ngữ rất đơn giản, thân thiện với người mới bắt đầu. Nó được gõ nghiêm ngặt, cho phép bạn phát hiện nhiều lỗi ở giai đoạn biên dịch dự án và mã không chính xác sẽ không hoạt động.

“Objective-C là một ngôn ngữ khá lâu đời - cùng tuổi với ngôn ngữ C++. Vào thời điểm nó được phát triển, yêu cầu về ngôn ngữ hoàn toàn khác. Khi Swift ra mắt, nó có nhiều lỗi, chức năng còn hạn chế và cú pháp còn thô sơ. Và mọi người đã bận rộn với Objective-C. Nó đã được cải tiến trong nhiều năm, tất cả các lỗi ở đó đã được sửa chữa. Nhưng bây giờ tôi nghĩ Swift cũng tốt như Objective-C. Mặc dù ngay cả Apple vẫn sử dụng cả hai trong các dự án của mình. Các ngôn ngữ phần lớn có thể thay thế cho nhau và bổ sung lẫn nhau. Cấu trúc và đối tượng của một ngôn ngữ có thể được chuyển đổi thành đối tượng và cấu trúc của ngôn ngữ khác. Thật tốt khi biết cả hai lựa chọn, nhưng đối với người mới bắt đầu, Objective-C thường có vẻ đáng sợ và khó hiểu."

đào tạo

Marat cho biết: “Ở công việc đầu tiên, sếp đã đào tạo tôi, giúp tôi triển khai và thiết lập dự án. Nhưng làm việc trên Android và iOS cùng lúc rất khó. Phải mất thời gian để xây dựng lại, chuyển từ dự án này sang dự án khác, từ ngôn ngữ này sang ngôn ngữ khác. Cuối cùng, tôi quyết định rằng mình cần chọn một hướng và nghiên cứu nó. Tôi đã được bán trên giao diện của Xcode và cú pháp đơn giản của Swift."

Marat vào bộ phận phát triển iOS tại GeekBrains. Lúc đầu mọi việc rất dễ dàng vì anh ấy biết được nhiều điều từ kinh nghiệm làm việc. Khóa học hàng năm được chia thành bốn quý. Theo Andrey, cuốn đầu tiên chỉ đưa ra những điều cơ bản nhất: “Nền tảng của ngôn ngữ Swift, kiến ​​thức về các framework cơ bản, mạng, lưu trữ dữ liệu, vòng đời ứng dụng, bộ điều khiển, kiến ​​trúc cơ bản, thư viện chính mà mọi người sử dụng, đa luồng và song song trong các ứng dụng."

Quý thứ hai bổ sung Objective-C. Một khóa học được thực hiện về kiến ​​trúc và các mẫu lập trình cơ bản. Trong quý thứ ba, họ dạy cách viết mã đúng. Nó giải thích nhà máy là gì, cách viết bài kiểm tra chính xác, tạo dự án, Git-Flow là gì, Tích hợp liên tục thông qua Fast Lane. Quý XNUMX và quý cuối cùng dành riêng cho làm việc nhóm, bài tập thực tế và thực tập.

Marat nói: “Quý đầu tiên thật dễ dàng, nhưng sau đó tôi bắt đầu học lập trình trong Objective-C, nghiên cứu các mẫu thiết kế, nguyên tắc của Solid, Git-Flow, kiến ​​trúc dự án, thử nghiệm Đơn vị và giao diện người dùng của ứng dụng, thiết lập hoạt ảnh tùy chỉnh - và sau đó tôi học trở nên thú vị."

Boris Pavlov nói: “Mọi chuyện bắt đầu không mấy suôn sẻ đối với tôi tại GeekBrains và con đường phát triển iOS của anh ấy nói chung không phải là con đường trực tiếp nhất. Cậu bé được bà ngoại nuôi dưỡng. Cô là một kiến ​​​​trúc sư, nhà toán học và nhà thiết kế và đã truyền cho Boris niềm yêu thích thiết kế, dạy anh vẽ bằng tay và vẽ. Chú của ông là quản trị viên hệ thống và cháu trai ông rất quan tâm đến máy tính.

Boris là một học sinh xuất sắc, nhưng mất hứng thú học tập và bỏ học sau lớp chín. Sau khi tốt nghiệp đại học, anh ấy bắt đầu đạp xe và máy tính dần trở nên phổ biến. Nhưng một ngày nọ, Boris bị chấn thương cột sống, khiến anh không thể tiếp tục sự nghiệp thể thao.

Anh bắt đầu học C++ với một giáo viên tại Viện Vật lý Mặt trời-Mặt đất Irkutsk. Sau đó, tôi bắt đầu quan tâm đến việc phát triển trò chơi và cố gắng chuyển sang C#. Và cuối cùng, giống như Marat, anh bị ngôn ngữ Swift quyến rũ.

“Tôi quyết định tham gia khóa học giới thiệu miễn phí tại GeekBrains. Thành thật mà nói, anh ấy rất nhàm chán, chậm chạp và khó hiểu,” Boris nhớ lại, “giáo viên nói về đặc điểm của ngôn ngữ, nhưng lại lao từ chủ đề này sang chủ đề khác mà không bộc lộ được bản chất. Kết thúc khóa học tôi vẫn không hiểu gì cả.”

Vì vậy, sau khóa học giới thiệu, Boris không đăng ký tham gia khóa đào tạo kéo dài một năm mà tham gia một khóa học ngắn hạn kéo dài ba tháng, nơi họ dạy những kiến ​​​​thức cơ bản nhất về nghề. “Tôi tìm thấy những giáo viên rất giỏi ở đó và họ giải thích mọi thứ khá rõ ràng.”

“Chúng tôi thường xuyên bị chỉ trích, cho rằng tài liệu đào tạo của chúng tôi không được cập nhật đầy đủ, có những điểm không chính xác. Nhưng các khóa học được cập nhật liên tục và giáo viên luôn nói về những đổi mới. Trong số các nhóm tôi lãnh đạo, nhiều nhóm tìm được việc làm sau quý đầu tiên. Tất nhiên, thông thường đây là những người có kinh nghiệm lập trình,” Andrey nói, “Mặt khác, không thể truyền tải hết kiến ​​thức trong một khóa học. Mạng lưới tương tác với khách hàng trong cuộc sống không thể gói gọn trong mười bài giảng dài hai giờ. Và nếu bạn chỉ đi học mà không làm gì khác thì bạn sẽ không có đủ kiến ​​thức. Nếu bạn học mỗi ngày trong cả năm, thì với tốc độ này chỉ có kẻ lười biếng mới không kiếm được việc làm. Vì yêu cầu trong nghề rất cao.”

Điều gì sẽ xảy ra nếu bạn muốn trở thành nhà phát triển iOS

Bạn có thể thấy nhiều nhất vị trí tuyển dụng mới nhất dành cho nhà phát triển iOS và đăng ký những người mới.

Làm việc

Nhưng cả Marat và Boris đều không tìm được việc làm dễ dàng như vậy.

“Một số công ty lớn từ lâu đã phát triển ứng dụng iOS trong Objective-C và tiếp tục duy trì cơ sở mã cũ. Thật không may, tôi không có lý lẽ thuyết phục nào để buộc họ chỉ sử dụng Swift. Đặc biệt là những người sử dụng quy tắc “không chạm vào những gì hiệu quả”, Marat nói, “Người ta ít chú ý đến hướng Objective-C tại Geekbrains. Nó mang tính chất thông tin nhiều hơn. Nhưng mọi công ty tôi phỏng vấn đều hỏi về Objective-C. Và vì việc học của tôi tập trung vào Swift, giống như công việc trước đây của tôi, nên tôi đã nhận được những lời từ chối trong các cuộc phỏng vấn.”

Boris nói: “Sau khi học, tôi chỉ biết những điều cơ bản nhất, với sự trợ giúp của chúng, tôi có thể tạo ra ứng dụng đơn giản nhất. Đối với công việc, tất nhiên là chưa đủ, nhưng tôi rất vui vì điều này. Rất khó tìm được việc làm ở Irkutsk. Nói chính xác hơn - không hề. Tôi quyết định tìm đến các thành phố khác. Xét về số lượng vị trí tuyển dụng, Krasnodar, Moscow và St. Petersburg hóa ra là phù hợp nhất. Tôi quyết định đến St. Petersburg - gần châu Âu hơn.

Nhưng mọi thứ hóa ra không hề màu hồng như vậy. Ngay cả một đứa trẻ cũng sẽ được tha thứ vì những gì nó không thể biết. Tôi vẫn chưa tìm được việc làm. Tôi đang làm việc để “cảm ơn”, tích lũy kinh nghiệm. Tôi hiểu rằng đây không phải là điều tôi muốn, nhưng tôi quan tâm và điều này thúc đẩy tôi. Tôi muốn trau dồi kiến ​​thức."

Andrey tin rằng những người mới đến nên tìm kiếm cơ hội thực tập hơn là việc làm. Nếu bạn có rất ít kiến ​​thức thì việc thực tập không được trả lương là điều bình thường. Andrey khuyên bạn nên ứng tuyển vào các vị trí cấp dưới tại các công ty lớn đã thiết lập quy trình làm việc.

“Khi bạn hiểu cách thức hoạt động của quy trình phát triển phần mềm, việc điều hướng và tìm việc làm thêm sẽ trở nên dễ dàng hơn nhiều, tùy thuộc vào mong muốn của bạn. Một số người bắt đầu phát triển độc lập, tự tạo trò chơi, tải chúng lên cửa hàng và tự kiếm tiền từ chúng. Một số làm việc cho một công ty lớn với những quy định nghiêm ngặt. Một số người kiếm tiền trong các studio nhỏ sản xuất phần mềm tùy chỉnh và ở đó họ có thể xem toàn bộ quá trình - từ việc tạo dự án từ đầu đến giao dự án đến cửa hàng.”

Lương

Mức lương của một nhà phát triển iOS, giống như bất kỳ ai khác, phụ thuộc vào câu hỏi “Moscow hay Nga”. Nhưng do đặc thù của ngành - nhiều công việc từ xa, cơ hội di chuyển và làm việc không ở thị trường khu vực - các con số ngày càng tiệm cận nhau.

Điều gì sẽ xảy ra nếu bạn muốn trở thành nhà phát triển iOS

Theo công cụ tính lương My Circle, mức lương trung bình của một nhà phát triển iOS thấp hơn một chút Xúp xẻ 140 000.

“Một học sinh cấp dưới thường làm việc miễn phí hoặc kiếm tiền tượng trưng - 20-30 nghìn rúp. Nếu một đàn em được cố tình đưa vào vị trí của mình thì sẽ nhận được từ 50 đến 80 nghìn. Cấp trung nhận được từ 100 đến 150, thậm chí đôi khi lên tới 200. Cấp cao hơn không nhận được dưới 200. Tôi nghĩ mức lương của họ là khoảng 200-300. Và đối với các trưởng nhóm, con số đó là hơn 300.”

Điều gì sẽ xảy ra nếu bạn muốn trở thành nhà phát triển iOS

Phỏng vấn

“Cuộc phỏng vấn đầu tiên diễn ra trên Skype. Thật ngạc nhiên, đó là Google,” Boris nhớ lại, “khi đó tôi mới chuyển đến St. Petersburg và bắt đầu tìm việc làm. Tôi đã nhận được đơn đăng ký cho vị trí nhà phát triển iOS. Không phải cấp dưới, cấp trung, cấp cao - chỉ là một nhà phát triển. Tôi rất vui mừng và bắt đầu trao đổi thư từ với người quản lý. Tôi được yêu cầu hoàn thành một nhiệm vụ kỹ thuật: Tôi phải viết đơn xin kể chuyện cười về Chuck Norris. Tôi đã viết nó. Họ nói với tôi rằng mọi thứ đều tuyệt vời và lên lịch phỏng vấn trực tuyến.

Chúng tôi đã gọi điện cho nhau. Một cô gái xinh đẹp đã nói chuyện với tôi. Nhưng họ không hỏi bất kỳ câu hỏi nào về trình độ ngôn ngữ - chỉ hỏi những vấn đề logic khác nhau, ví dụ: “Bây giờ là 15:15, kim giờ và kim phút cách nhau bao nhiêu độ?” hay “Một cột dài 10 mét, một ban ngày ốc sên bò lên cao 3m, ban đêm tụt xuống 1m”. Trong bao nhiêu ngày cô ấy sẽ bò lên đỉnh?”, và một vài cái tương tự nữa.

Sau đó là những câu hỏi rất lạ - tại sao tôi yêu Apple và tôi cảm thấy thế nào về Tim Cook. Tôi nói rằng nhìn chung công ty có quan điểm tích cực, nhưng khá tiêu cực đối với anh ấy, bởi vì tiền quan trọng đối với anh ấy chứ không phải sản phẩm.

Khi bắt đầu đặt câu hỏi về Swift, kiến ​​thức của tôi chỉ đủ về các mẫu lập trình và kiến ​​thức cơ bản về OOP. Chúng tôi chia tay nhau, một tuần sau họ gọi lại và nói rằng tôi không phù hợp. Thực ra, tôi đã thu được rất nhiều kinh nghiệm từ việc này: bạn cần kiến ​​thức, bạn cần rất nhiều kiến ​​thức - cả lý thuyết lẫn thực hành.”

Andrey nói rằng “điều đầu tiên mọi người được hỏi trong một cuộc phỏng vấn là vòng đời của bộ điều khiển. Họ thực sự muốn yêu cầu một số mẫu lập trình đơn giản. Họ chắc chắn sẽ hỏi về trải nghiệm của bạn khi sử dụng các thư viện phổ biến. Chắc chắn sẽ có câu hỏi về sự khác biệt giữa Loại giá trị Swift và Loại tham chiếu, về Đếm tham chiếu tự động và quản lý bộ nhớ. Họ có thể hỏi cách họ triển khai việc lưu trữ dữ liệu trong các ứng dụng và liệu họ có triển khai các yêu cầu mạng hay không. Họ sẽ hỏi về những điều cơ bản về REST và JSON. Đàn em sẽ không được yêu cầu những điều cụ thể và tinh tế. Ít nhất thì tôi không hỏi."

Boris lại có trải nghiệm khác: “Ngay cả khi tôi xin thực tập, hoàn thành nhiệm vụ kỹ thuật và nói rằng lương không quan trọng với tôi, miễn đủ tiền thuê một căn hộ thì tôi vẫn bị từ chối. Tôi đọc các bài báo, cố gắng hiểu nhà tuyển dụng cần gì ở người mới. Nhưng họ hầu hết đều thất bại về mặt lý thuyết. Vì lý do nào đó, họ đã đặt những câu hỏi từ các giải đấu lớn mà không liên quan đến những người mới đến.”

Marat may mắn hơn. Hiện anh đang làm việc trong một công ty vận tải và một mình phụ trách bộ phận iOS, đồng thời tiếp tục học tại khoa. “Vì tôi là người duy nhất chịu trách nhiệm về iOS nên công việc của tôi chỉ được đánh giá bằng khả năng thực hiện các nhiệm vụ được giao chứ không phải bằng kiến ​​thức lý thuyết.”

Cộng đồng

Andrey sống ở Nizhny Novgorod và nói rằng thậm chí ở đó một cộng đồng lớn đã được hình thành. Ngày xửa ngày xưa, anh là một nhà phát triển phụ trợ bằng Python, nhưng bạn bè đã lôi anh vào phát triển thiết bị di động - và bây giờ chính anh cũng khuyến khích mọi người làm điều đó.

“Cộng đồng toàn cầu thường giao tiếp qua Twitter. Mọi người viết blog riêng, quay video trên Youtube, mời nhau xem podcast. Một ngày nọ, tôi có thắc mắc về bài thuyết trình mà trưởng nhóm HQTrivia đã phát biểu. Đây là một trò chơi đố vui của Mỹ được hàng triệu người chơi cùng lúc. Tôi đã viết thư cho anh ấy trên Twitter, anh ấy đã trả lời tôi, chúng tôi đã nói chuyện và tôi cảm ơn anh ấy. Cộng đồng cực kỳ thân thiện, điều đó thật tuyệt vời.”

Danh sách tài liệu được đề xuấtCấp độ cho người bắt đầu:

Mức độ trung bình:

Trình độ cao:

Nguồn: www.habr.com

Thêm một lời nhận xét