返回 登录
0

非开发者如何从零开始学习Swift

原文: Teaching Swift to Non-Developers
作者: Jeff Bergier,在BridgeTroll.org 任职讲师 & 课程设计,同时也是专业的 UX 设计师兼自学的 iOS 开发
译者: 孙薇
审校: 唐小引(@唐门教主),欢迎技术投稿、约稿,给文章纠错,请发送邮件tangxy@csdn.net

运行与构建——教非开发人员学习 iOS & Swift 的注意事项

过去两年来,Jeff 一直致力于设计课程,教授开发经验几乎为零的学生们学习 iOS 开发。这个课程的设计初衷是为了让这些学员在不到5个小时的学习时间里能迅速掌握一定知识,构建出有用的应用。不过 iOS 是一个很大的平台,因此选择教学内容对成功来说非常关键。Jeff 讨论了他在教 iOS 开发的时候所学到的经验,帮助我们教学方面更进一步,可以参考 Hacker News 上的讨论。

下面是视频内容摘录,请点击这里查看 Swift 的文档

制作功能齐全的应用 (4:07)

在教非开发者 iOS 时,首先要学习的就是全功能式应用。按照惯例,大家都习惯从“hello world”这个的简单应用学起,但时代在进步,现在的人都知道 App Store,并且认为 Instagram 是一个“简单的应用”。

在我们的课程中,针对从未编写过代码的人通常会设计两个项目。第一个:是构建一个小费计算器,里面有一些字段可以输入小费数额和百分比,点击按钮就能计算小费。可以使用到 storyboard、outlet 和 action,还有 Swift 中一些基本的算法。第二个应用:则是针对已经有过编程经验,但也许没用过 iOS 的编程者,我们会做一个叫做“烂番茄”(Rotten Tomatoes)的应用。

在制作第二个应用时,需要下载 JSON,解析后获得 storyboard,然后制作 table view。我喜欢这个项目是因为:它就是每个应用的本质内容 —— 从互联网上下载一些东西,然后在 table view 中展示出来。因此对于学生们来说,在构建应用时了解这些适用于所有 iOS 应用的基础知识确实非常有用。

了解学生们现有的技能水平 (6:46)

在评估学生的水平时,有一些基础的问题:

  • 你知道变量是什么吗?
  • 你知道函数或者方法是什么吗?

如果对于这两个问题,他们的回答都是“是”,也许他们已经是你的学生们水平比较好的了,这可不是开玩笑。如果他们听说过面向对象编程 —— 不是了解这个概念,而是仅听说过,很可能就已经是水平高的了。

不要以为所有人都知道该如何使用台式机 (8:15)

别以为大家都知道怎么用台式机,我们生活的世界是移动的世界,我们习惯于 iPad 和 iPhone,因此我经常能看到大家头疼于台式机的基础使用,比如文件夹/目录管理,再比如屏幕上的窗口。

相信学生们学习的能力 (9:37)

记得这一点很重要:学生们遇到困难,并非由于他们能力不足或者做不到某个任务。正如图表(视频中)所示,我们认为自己如何学习 vs 我们实际的学习方式是不同的,学习过程并非一条完美的曲线。相反,有时人们需要花费额外的精力与时间来学习并理解这些信息。

展示常见的 iOS 设计模型 (10:41)

大家都知道,iOS 有四种基本设计模型:

  • Table View
  • Push Navigation
  • Modal
  • Tab Bar Controller

为了演示这些设计,我们可以通过 QuickTime 来录制视频,并在课堂上展示其在实际中的应用方式。

不要违背框架 (12:16)

不要违背框架,我知道苹果喜欢这样说,而这种说法让我们疯狂,但在教学中说这些很有可能就变成了抱怨,不要在教学时抱怨这些。想要解释如何使用视图控制器(view controller)就已经很困难了,因此再强调其他的有多困难无疑是在分散注意力。

不要教 Swift (10:41)

不要教那些错综复杂的 Swift,我们都喜欢 Swift 以及不变性,也都喜欢使用结构替代类,也喜欢函数编程,但对于学习阶段来说,这些都不适用。

区分引用类型与值类型毫无意义,只教会他们当前项目所需的 Swift 即可。

做好准备 (14:18)

这是最困难的部分之一,因为需要很多准备工作以及准备时间。需要询问自己的问题是:我要教多久?是2个小时,4个小时,8个小时还是一个礼拜?需要像 General Assembly 组织的课程那样,教一整个课堂的学生吗?这一点特别需要注意,因为教一群学生的话进度会更慢。

构建与运行 (15:41)

在 Swift 或框架出现变化的情况下,使用最新的非 beta 版 Xcode 来构建样例应用,这一点非常重要,因为如果在教学时由于变化而导致故障出现,就必须得在课堂上 debug,这会带来混乱。教师需要与学生建立持续的反馈环路,而这只会在所有细节都被照顾到时才能完成。

经常触发崩溃 (16:52)

时常触发崩溃也很重要,这是反馈环路的一部分,崩溃很容易出现,不过如果故意犯些最为常见的错误而导致崩溃,再让学生们找出崩溃的原因,就会是很好的学习过程了。例如,将 IB outlet 相连接,然后将变量与属性重命名;对 IBActions 采用同样的做法;如果构建 table view,使用错误的 cell identifier。在 Swift 中我们可以采用隐式解开可选值之类的有趣操作。

不要训诫式教学 (17:55)

这一条也与反馈环路相关,如果你不想浪费太多时间无所作为,或者倾听学生的观点。

稳妥的选择:Storyboards (19:07)

Storyboards 比手写代码更好,特别对初学者而言,storyboard 是非常优秀的,没有其他的平台能像 storyboard 那样,可以让你画出整个 UI。它也不是那种简单的代码生成器,不会为你自动为你生成代码等稍后人工编辑。

别只写代码 (20:19)

别只写代码,我们不仅教 Swift,大多时候教的是 iOS,因此多写代码少做讲解,在教学时速度的确更快,风险也更高。要告诉他们,感叹号代表如果出现类似样例中那样的故障,则应用会崩溃。因此为了简单起见,在打开可选值的时候使用感叹号。

提供初学者项目 (21:55)

有些时候构建初学者项目很有必要,我试过不这么做,因为从一个全新的项目开始也很好。但有时候,如果我们想要讲授 table view 的使用,或者查看如何下载数据,还是需要初学者项目的。无需教授如何使用 CocoaPods,这个可以在线观看。除了要让 Ruby 在 Mac 上运作,还要构建 pod init 并让 pod 文件运作,这些都太费时间了。

不要教他们自动布局 (23:16)

有太多按钮、太多烦琐的事情以及太多的规则。在实际中学习自动布局时,它是一个较长的类,通常对于初学者来说太过复杂。可以在讲解 storyboard 时覆盖不同的屏幕尺寸,从而让学生们了解这个概念。

节省时间,执行定制 (26:12)

在学习的过程中,学生们只会模仿教师,盲目地输入一些内容,但可能根本没有完全理解所有知识。因此,让学生们使用 storyboard 换换背景颜色和字体,最后定制自己的应用,他们就能学会具体要怎么做。从而了解并学习 Xcode,而这些知识他们也许是无法在为期一天的研讨会中学到的。

问答:

  • Q:什么时候处理设备配置的问题?

  • A:在安装 Xcode的时候,也就是上课之前。

  • Q:你是否使用过 Playgrounds,它是否是教学的好工具?

  • A:我发现 Playgrounds 的问题在于:它更关注 Swift 的教学,而不是构建应用,而人们通常更想要做的事情是构建应用。

可以参考在 Hacker News 上的讨论。

第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。

图片描述

由CSDN重磅打造的2016中国云计算技术大会(CCTC 2016)将于5月13日-15日在北京举办,大会特设“中国Spark技术峰会”、“Container技术峰会”、“OpenStack技术峰会”、“大数据核心技术与应用实战峰会”等四大技术主题峰会,以及“云计算核心技术架构”、“云计算平台构建与实践”等专场技术论坛。80+位一线互联网公司的技术专家将到场分享他们在云计算、大数据领域的技术实践,目前大会剩票不多,欲购从速。详情请点击CCTC 2016大会官网

评论