在 10 月 20 号的时候,我自己独立开发的首款 iOS app 「胡言乱语」在 App Store 正式上架,随后在 11 月中旬时,经过与 App Store 审核的几轮斗争后,我的第二款 iOS app 「卡片馆」也在 App Store 正式上架了。而在我写这篇文章的期间,我的第三款 iOS app 由于 Apple 圣诞假期,正在等待审核中。
我的这三款 app,从产品、设计到开发都是由我自己独立完成的,初版开发耗时平均在一至两周(每天 2~3 小时)左右,而在 9 月初的时候,我还在朋友的打卡自习群里设定目标「每周 7 小时 iOS 开发学习」。是的,那时候我还在看一个有关 iOS 开发的入门课程视频。
有关“自学”开发的误解
某些时候,这一切看起来似乎有点神奇,但实际上是一个人人都可以做到的轨迹。这里有几个误解是:开发很复杂、自学需要天分、学习需要时间。我先聊聊个人对于这三点的看点。
开发很复杂
开发很复杂,这句话没错,但如果你的目的是开发一款类似于「胡言乱语」、「卡片馆」这样的独立小产品,那么开发很简单。我相信你听说过许多类似于我这样的故事:自学不久便成为独立开发者。那么,既然这么多人都是这样完成的,说明这件事情一点也不难,而并非「他们聪明,而你不才」。
在开始学习一项技能前,我建议你持有这样的信念:他们那样的笨蛋都学会了,我怎么可能学不会。
自学需要天分
自学需要天分,这句话也没错。但注意了,本文标题的自学,是“自学”,打了引号的。而我们现在所谈论的大部分自学,实际上都是这个“自学”。
我们似乎有一种观念是:只要不是实际有老师带着你学习的,都是自学。也就是说,你自己看书、看网页、看视频学习,这些都是自学。但实际上呢?书有作者,网页信息有提供者,视频有制作者,这些明明都是你的老师呀。
在我看来,不打引号的自学,是自学成才,需要天分的。但现今环境里所谓的“自学”,实际上只是自主学习。但你也可别轻视了自主学习的自主,我能不拖拉地完成这段学习,蛮大程度是因为参加了朋友的打卡自习群。当然了,这不是唯一让你自主起来的方式,只要你能找到任何提醒或激励你的方式就行了。
学习需要时间
学习需要时间,同样,这句话仍然没错。但在我们的整个对应职业生涯里,都是学习过程,这是我理解的「学习需要时间」。而大部分人眼里的学习,可能是指入门一项技能。那这个需要时间吗?
你可以去各类视频学习网站看一看,各项技能的入门教程总时长,时间比较长的才在 30 小时左右。30 小时意味着:如果你利用视频加速功能,一周就看这个,至少能看三遍。我自己也在做「如何利用手机拍好照片」的教学工作,而我所写出的教程和技巧,一天就能看完。
当然,我并不是说这些教程看一遍就学会了,但是,这些看一遍只需要 20 来小时的教程,你入门又能花多久呢?
所以,入门一项技能,只需要占用你的一点点微博、朋友圈、抖音、游戏时间。某些意义上来说,几乎不需要时间。
如何“自学”成为独立开发者
说完这些,再聊聊具体的「如何“自学”成为独立开发者」
整体上来说,独立开发者的技能,分为产品、设计和开发,产品我是不懂的,关于设计技能,和上述一样,你可以找到教程花很少时间就学会的。每个人选择的设计工具不同,我不太喜欢耗费精力在工具的选择上,于是一直使用的是 Photoshop。
本文主要还是说开发技能的学习。
学习资源
网上的 iOS 学习资源很多,Apple 官方有提供免费教程,此外各大学习网站(Coursera、Udemy、网易云课堂、慕课网等)也都会有相应免费或收费教程。
你可以根据教程的类型、目的等不同来选择适合自己的,个人建议尽可能选择最新的教程,而往往最新的教程,都在国外网站。
当然,除此之外还有线下课程资源。尽管我不了解线下课程,但从性价比角度考虑,我个人推荐线上课程。这个道理很简单,比如我自己的线上摄影教学服务是 199 元/年,但如果我是线下做同类服务,尽管提供的内容一样,由于成员量大幅度减少,为保证同样的时间成本收入,价格就肯定不是这样了。
也就是说,提供线上收费几十块钱的课程的制作老师,一次收入可能是和线下几万块一期的培训班老师一致。
一时不懂没关系
学习开发的时候,可能每个老师都会跟你说“听不懂没关系,你照着做就好了”。这,是真的。
在入门的时候,你只需要把每句话听进去,尽可能尝试去理解,然后对着教程敲同样代码,这样就可以了。水到渠成,到最后自然明白。即便是最后仍然不太懂的地方,再看一遍就好。
我自己的执行方案是:将视频速度调至 1.5 倍看一遍,随后回放时敲一遍视频里的代码,然后进入下一节。
让项目驱动学习
让项目驱动学习,这样不会使得学习枯燥,同时也有利于建立信心。
我在学习完整个课程后,尽管还有许多不太明白的地方,但我直接开始了「胡言乱语」的开发工作,在这其中边做边学,一开始很难下手,很多问题都需要一步步拆分后靠 Google 来解决。
边做边学里,我认为比较关键的是拆分。比如说,「胡言乱语」是一款记录梦话的 app,我想知道如何制作这样的一款 app,并不是直接 Google 「如何制作一款记录梦话的 iOS app」,而是将问题拆分开来:如何录音、如何播放音乐、如何保存文件、如何检测音量等等。
在这样完成「胡言乱语」后,我感觉很多知识点就此连接在一起了,随后两款 app 的开发进度顺畅了许多。尽管不敢说开发能力上比当时好了多少,但信心上的确好了不少。
结语
尽管此文标题是一个月内成为独立开发者,但看完你会发现,我这里指的成为,是学习完一套入门课程。在这个追求效率的时代,我觉得学习实际上是一个漫长的过程,它一直存在,比如我目前仍然可以被视为是一个什么都不懂的 iOS 开发者,非常初级。
所以,一个月时间成为独立开发者是很容易的,但仅仅是入门级别。如果你看到那些诸如「一周精通 Photoshop」的课程,千万别相信,因为精通是一辈子的事情。