狐仙故事汇百态人生心灵小栈

小白如何晋级入门级iOS开发者

2016-04-08  本文已影响355人  你以为的只是你以为

小白如何晋级入门级iOS开发者(转载)

原文:How to become a Entry Level iOS Developer

作者:Weston Hanners

译者:CocoaChina--wamaker的iOS开发之旅


最近一段时间,我帮一些朋友开始学习iOS开发,他们要求我列出一些入门iOS开发所需要了解的内容清单。这对于一篇博文来说似乎是一个很好的主题。没有费很多精力,我整理了一个清单,介绍了在成为一个iOS入门级开发者的路上你需要知道的东西(以下顺序不分先后)。

计算机科学基础知识

我不认为获得一个计算机科学博士学位是上手移动应用开发的必要条件,它应该被归在"绝对有帮助"的一类,但理解最基础的数据结构和算法就能让新手开发者防止被自己的代码绕进去。因此,对于初学者而言,我会推荐 在YouTube上观看哈佛CS50课程 的方法来开始学习,你很容易更上课程的进度而且这些课程看起来也着实有趣。

Swift还是Objective-C?

同样,我没有说你必须对这两门语言的认识要到能够写一些博客,或者教课的程度,但你至少应该能够在不经常查阅语法的前提下用其中至少一种语言来写代码。API是一个难题,尤其是在iOS中,框架每年更新,方法经常被废弃。对我来说在Safari标签中放入Apple Documentation以便工作中查阅是稀松平常的事情。API的东西多到难以记住全部。你只需要能够在没有任何外界帮助下写一些类、结构体、循环、函数(类方法和实例方法),以及定义变量和表达式就足够了。

如今我们处在一个很奇特的时代,雇佣只懂Objective-C的人也是能够被接受。Swift还很年轻,除非你被一家拥有很多项目更新流转的公司聘用,否则你仍旧会在大部分时间使用Objective-C做开发。尽管如此,有很多公司愿意冒险使用Swift(包括我正供职的这家),而且我不认为在你只会Swift的前提下找到一个工作会比较困难。关键是你要精于你所选择的语言,并对另一门语言的了解至少是能够到看得懂代码。

框架和API

正如我之前说的那样,我认为没有必要记住iOS所有的API,但你应该有一个好的切入点。

UIKit (UITableView、UIButton、UINavigationController以及GestureRecognizers)

Interface Builder (Storyboards、Segues和奇怪的.xib)

基本数据类型 (NSArray、NSDictionary以及NSString),与之对应的Swift中的类型 (Array、Dictionary 和 String),HTTP API (NSURLSession, 基本的 REST API 概念, 用NSJSONSerialization解析处理JSON)

Grand Central Dispatch (GCD、NSOperationQueue)

持久化 (NSCoding、NSUserDefaults和CoreData)

内存管理 (什么是 循环引用 以及 ARC 基础)

开发模式

模式很重要,它能让开发更轻松,让你的代码更整洁。确保你了解最基本的模式,它们被广泛使用在iOS框架中,不了解这些你很难在开发中施展拳脚(还有很多其他的模式,但这些可以作为你刚开始学习的起点)。

代理 (这是很多iOS的API会涉及到的,你必须清楚地理解它)

Model View Controller (我不认为Apple在鼓励使用最好的MVC分离上做的足够出色,但如果你花时间正确实践它,它会是一个能帮助你提升代码质量的重要模式。同样,基本上都会出现在任何面试问题的列表里。)

Subclassing (几乎所有用户接口都是某个类的子类)

单例 (这个模式绝对被滥用了...请有节制地使用)

熟悉开发环境

这看起来像是显而易见的,但如果你没有Mac电脑,去买一台!如果你没有iOS设备,去买一台!如果你没有使用过或者不熟悉一个设备却在为它做开发,这会变得相当困难。同样,没有Mac电脑来做开发也会很困难。我的第一台Mac设备是2009款的13寸MacBook Pro配上第一代iPod Touch。从低端设备入手是非常合适的。我在这两个设备上投入了将近1500刀,但从长期看来确实值这个价。

UX/UI

通常来说,UX和UI是设计师负责的内容,但是你应该理解Apple人机界面指南。你需要知道原型和线框图之间的区别,并在开发过程中使用这两者。

工具

你应该熟练掌握一些常用的开发工具。

Xcode (必须的)

Git Source Control (一些公司可能使用的是Subversion或者Mercurial,但git对于你入门来说足够了。)

JIRA 或 Bugzilla (以JIRA为例,你不需要成为使用它的专家,但你至少要熟练到不像第一次接触它时那么恐惧。)

CocoaPods (这是一个用来管理依赖和第三方代码的工具,我从未听说有不使用这个的公司。)

主见

对iOS、Swift、甚至一个特定的API持有自己的观点是一个很好的给面试官了解你对某一块知识理解深度的方式(对iOS、Swift、甚至一个特定的API持有自己的观点可以让面试官很好地了解你对某个开发主题的深入情况。)。这也能让我们看到你的学习热情。如果你在一场面试中被问到:"从你的角度如何看待Swift?"答:"还不错",这并不是正确的回答,你应该告诉他们你对optional的态度,你是如何使用一个新语言特性的。这里并没有列举出很多错误的回答,最重要的是要言而有物。

学习档案

行胜于言。如果你真的很注重一场面试,把你的一些简单的app整理在一起(如果能在App Store中启动它们就更好了)。展示独立完成一个项目让你的话语更有分量。这是我极力推荐的方式。GitHub也是一个很好的平台,但如果你展示你的GitHub,尽量让你的代码对于那些想测试一下的面试官来说能够轻松编译。

我写了一篇文章关于如何建立一个app portfolio,你可以点击这里查看。

总结

如果你想要更多的资料来帮助你迈出第一步,可以查看我的 iOS开发者资源 博文,我在里面链接了在我学iOS开发的时候感觉很有用的一些博客和文章。

最后加上的一点就是 JUST DO IT!当下iOS开发者需求量很高,如果你能让你的技能达到一个不错的层次,你不会长期处于失业状态。这是一份让你磨练工程技能和创造力的工作。

我漏掉了什么?通过Twitter (@WestonHanners)让我知晓。我想用我的资源帮助更多的入门开发者踏上他们的事业

上一篇下一篇

猜你喜欢

热点阅读