这位被苹果点赞的学生开发者,接触编程还不到一年 | WWDC23 学生挑战赛获奖者专访
世界上有好学的编程语言吗?
杨昊伦自觉不是一个很有编程天赋的人,他就读于帕萨迪纳艺术中心设计学院,从小受到苹果的影响,渴望打造创作⽣产⼒应⽤,释放⼈们与⽣俱来的创造⼒。
然而,编程是一道难以忽视的门槛。他曾经尝试入门 Python、Javascript 和 C++,打下所有初学者都知道的那句 Hello World,但对于开发这件事,总是不得其门而入。
▲ 杨昊伦.
在接触 Swift和 SwiftUI 以后,杨昊伦察觉到了机会的降临:创造⼀个完整的 app 离自己前所未有地近。
Swift 编程语言,是苹果在 2014 年发布的开源编程语言,直观的语法对新手十分友好。杨昊伦甚至称它是「这个星球上最易学的编程语言」。
杨昊伦通过官方渠道和第三方平台学习 Swift 和 SwiftUI,平时做些简单的 app 向家⼈朋友分享 Beta 版,并在今年第⼀次参与了 Swift 学生挑战赛,成为了近四百分之一。
Swift 学生挑战赛,是苹果为长期支持学生开发者而推出的赛事,往往在 WWDC 前揭晓结果。今年全球共有 375 名获奖者,爱范儿采访到了其中的 5 位中国学生。
他们身上有着闪光的共性。Swift 终究是一门讲究程序思维的编程语言,需要毅力、热爱和创意灌注,才能成为开发者的工具,让想法生长出美好的果实。
为什么不能成为一名程序员
将兴趣变成实践,往往需要一个按下开关的契机。
鲁晟远的 iOS 开发旅程,正式开始于高二时。在此之前,他⾃学 Photoshop,上手设计app用户界面,但那些始终只是不能用的「原型」。让它们「活」过来的目标,暂且被封存下来。
这一年,苹果举办了 WWDC 2018。熬夜观看的鲁晟远,被⼤会上播放的视频「Source Code」感动到了。里面的苹果开发者眼神发光,家人谈起他们的语气充满骄傲,让人下意识地相信,他们真的想用手中的代码改变世界。
后来被科学老师邀请参加高中生科学工程竞赛时,鲁晟远突然就意识到,机会来了:自己为什么不能成为一名程序员呢?
▲ 鲁晟远.
他从最基础的 Swift 语法学起,将之前一款边玩边学化学的 app 原型真正做了出来,并且带着它入围了美国州级别竞赛。
身为开发者的兴奋感,转折了人生的十字路口。本来打算学艺术的鲁晟远,申请大学时改成了计算机,现在就读于加州⼤学尔湾分校的计算机科学与商业管理。
其他几位获奖者编程之路的开头,也存在着遥远的相似性。
北京邮电大学⽹络空间安全专业的何正浩,小学三四年级就跟着视频教程学习了中文编程语言,尚显稚嫩的作品被微机课老师展示给全班同学。屏幕共享的瞬间,他被极大地鼓舞到了,不知不觉中在这条道路上越走越远。
▲ 何正浩.
高中时,为了参加信息学奥林匹克竞赛,何正浩学习了 C++;高考之后,他又开始学习 iOS 开发,希望做出能在 App Store 上架的、人人触手可及的软件,甚至成为一名自由的独立开发者,让小时候那种与创造有关的成就感重现。
中央财经大学国际经济与贸易专业的戴藏龙,高中时对开发产生了兴趣,并关注到了 Swift 语⾔,阅读了它的开发者文档,但碍于学业压力,大二才选修了 Python,大三又开始自学 Swift,让心中的热情不再束之高阁。
▲ 戴藏龙.
上海商学院日语专业的张祎宁,则是一个相对的非典型案例,从初学者到获奖者的过程里,她遭遇了各种偶然的小插曲。似乎缺少了任何一个,都无法打出这个完美结局。
▲ 张祎宁.
去年 9 月,张祎宁在去食堂买饭的路上,碰到了 iOS Club 社团的招新,这是她第一次接触 Swift。计算机系的男友也鼓励她学习编程,在她的 Mac 下载了 Swift Playgrounds,打赌她一定可以入门。
Swift Playgrounds 是适用于 iPad 和 Mac 的一款 app,帮助初学者以互动有趣的方式来学习 Swift 编程语言。张祎宁很喜欢其中轻松有趣的关卡设置。
▲ Swift Playgrounds.
谁都能通过 Swift Playgrounds 对编程感兴趣!它更像是一个闯关的游戏。不同的是,你在闯关的过程当中,就可以掌握一些编程的基础知识。
张祎宁之前从没想过自己会学习编程,但在接触 Swift 之后,她觉得学习编程和学习⽇语、英语等世界上的所有语言⼀样,学了日语才能和日本人交流,学了编程才能和计算机交流。
她这次的获奖作品,灵感同样来得有些玄学。今年二三月份的一个晚上,还没有任何想法、焦虑难以描摹的张祎宁,突然梦到了一个场景:在林中湖泊边上垂钓时,钓上来的各种鱼类,自动生成了漂亮的图鉴。
张祎宁是云南人,从小就很向往海边,但大学考到上海之后才第一次参观水族馆。她从梦境延伸出去,最终做出了「Who am I?」这个画风独特的作品。玩家需要代⼊未知海洋生物的身份,在和 NPC 的对谈中,认识海洋⽣物多样性,并解开身份之谜。
▲ Who am I.
游戏里还埋藏着不少巧思。她设计了左右移动,模仿小鱼摆动尾鳍向前游动的样子;她也按照梦境里的模样,让玩家遇到的海洋生物都会自动生成漂亮的图鉴,还为它们写好了与种群特点相符的性格与台词。
▲ Who am I.
作品完成本身,已经克服了张祎宁的「分母心态」——不是专业相关,又是编程小白,灵感也姗姗来迟,有很大的概率成为陪跑。后来,这一切都不重要了。离截止时间大概20分钟,她成功提交了作品。回首来路,张祎宁只想为自己喝彩。
以上 5 位获奖者里,有 3 位是非科班出身,其中 1 位接触编程还不到 1 年。
在每个人的时间线上,契机来得或早或晚,但线与线产生了交缠,让他们在同一场 Swift 学生挑战赛顶峰相见。
想法本身并不能够解决任何问题
想法从来不会凭空出现,哪怕张祎宁调侃自己的 app 是梦到的,那也是日有所思夜有所梦,抓住灵感后努力发散,凭借技术让它落地生根。
其他几位获奖者为 Swift 学生挑战赛提交的 app,基本也都是从自身需求出发的。
鲁晟远的「大学申请宝」,功能就体现在名字上,解决让许多美国留学生叫苦不迭的问题。他曾在 B 站发布过一期视频,记录的就是自己与 22 所学校相爱相杀的大学申请季。
▲大学申请宝.
基于机器学习的大学申请宝,可以智能地选出适合申请的大学名单,并将它们分类成冲刺、匹配和保底校,救留学生们于水火,不再依赖于中介。
何正浩的参赛作品「Scheduled」,则是一个教育类 app。他在大学的操作系统课里学到了调度算法,但文字的呈现方式太过抽象,他决定亲自动手,将它做得直观。
▲ Scheduled.
Schedule 的本意是调度,Scheduled 便是一个模拟操作系统调度的互动类工具,通过生动的视觉呈现,以及深入浅出的名词解释,让非专业用户也能了解一些专业知识,比如操作系统如何在处理器有限的情况下,给各个程序分配计算资源。
类似地,戴藏龙也从专业知识入手,做出了记账应用「DebitCredit」,它的直译为「借贷」,指的不是借款与贷款,而是复式记账法里的借方和贷方。这是⼀种强大、灵活的记账方法,也是当今世界记账方法的事实标准,但使用起来需要一定的会计学知识。
▲ DebitCredit.
戴藏龙希望通过「DebitCredit」,简化复式记账法,让每个人都能够在没有会计知识的情况下,用它管理自己的财务,看懂公司的财务报表,在投资与工作里受益。
杨昊伦的「Redesigner」,巧妙地结合了交互设计与编程语言,是⼀个帮助开发者学习 UI 设计基础的交互式指南,以「SixD」的名字,上架了 iPad 的 App Store。
▲ Redesigner.
想法来自杨昊伦的观察:许多开发者的 app 功能强大,但它们的 UI 设计有待提升。「SixD」能够帮助这些开发者,创作出兼具好设计的 app。
除了热爱与坚持之外,他们观察生活的敏锐和别出心裁的想法,同样令人印象深刻。
编程语言,其实就是实践想法的工具,Swift 学生挑战赛,评比的也是如何把想法用 Swift 变成现实的过程。它考验的不只是编程能力,还有创意、设计和解决问题的能力。
所以,除了提交 app 之外,参赛者还会被问到一些问题,包括在生活中有没有通过 Swift 帮别人解决问题、以前有没有 app 上架 App Store 等等。
其实在参加 Swift 学生挑战赛之前,不少获奖者确实已经有了成型的 app,同样是从真实存在的需求获取灵感,或者说日常生活里,本就埋藏着形形色色等待被解决的需求。
今年 5 月 2 日,赶着劳动节出游的热潮,何正浩的 app「Numpkin」上架了 App Store,它的功能是管理团体活动账单。
▲ Numpkin.
灵感缘起于高考后第二天的一场同学聚会。当时,何正浩代付了各项支出,他来回切换备忘录和计算器,计算向每位同学收取多少钱,但因为大家参与的项目不同,复杂的计算过程让他很是头疼,驱使着他开发出一个管理多人支出的 app。
爱好游戏的戴藏龙,则在 2022 年开发出名为「披萨小助手」的 app。这是一款专为《原神》设计的工具,帮助玩家追踪体力等游戏数据,同年 6 月在 App Store 上架。目前,它下载超过了 30 万次,日活用户超过 3 万人。
▲ 披萨小助手.
不过,程序员圈经常流行一句话:「不要重复造轮子。」说的是自己觉得没有被解决的需求,可能前人已经解决过了,明知道自己不可能比前辈做得更好,却仍然坚持要做。
这些学生开发者,都不害怕造轮子的情况。在他们看来,当不断追问自己要做什么,其实很难和他人发生完全的碰撞,在产品逻辑、受众群体、细分需求等方面,总会有所差异。
所以,他们既不天真地觉得有完全的原创,充分做好市场调研,又能从自身的需求出发,保持创作的独立性。他们相信,其实并没有那么多轮子,就算有也能造出更好的轮子。
只有一个点子,并不能够解决任何问题,也并不意味着任何事情。
杨昊伦所说的这句话,也是其他同学的共识。更重要的事情是,亲自动手将点子实现。
理解代码的最好方式是动手去做
Swift 是相对简单的编程语言,但要把它学到真正上手,并非不费吹灰之力。没有绝对好学的编程语言,也不存在和自然语言很接近的编程语言,哪怕是 Swift。
几位获奖者都十分擅长自学,以及利用身边的一切资源,视频、文档、书籍、博客、官方教程、开发者社区、社团俱乐部……哪里能够解决问题,就往哪里而去。
纸上得来终觉浅,绝知此事要躬行。什么是学习编程的最好方式?他们有着一个共同的答案:实践。
在杨昊伦看来,Swift 是「这个星球上最易学的编程语言」,因为它的语法十分易懂,同时有非常丰富的学习素材,能够给到足够的正反馈。
▲ Swift 的基础知识.
正是因为这样,才更应该去做。哪怕你只学会了循环、函数等基础概念,也能够直接进入 SwiftUI,开始写一个真正的 app,甚至看到它在 iPad 上真正运行起来。
很多时候,我们并不需要精通 Swift 才能完成⼀个 app 的开发,先去试着开发⼀个简单的 app,不仅能带来更多成就感,很多概念也在开发和查漏补缺中不知不觉地熟悉了。
戴藏龙最开始没有 Mac,就用 iPad 完成了斯坦福 SwiftUI 慕课课程的学习,因为 iPad 也能运行 Swift Playgrounds。
当时,他配了一块键盘,左边摆着 windows 笔记本,右边放着 iPad 撸代码。
iPad 完全可以胜任学习编程,你并不需要拥有⼀台 Mac 才能开始。
iPad 也是鲁晟远的重要工具,他刚开始在 Swift Playgrounds 学习时,每天放学回家就打开它完成⼀个章程。
等到掌握了一定基础,他迫不及待地想写「真的」app,于是查找 YouTube 上的教程照葫芦画瓢。
鲁晟远的第⼀个 app 只有⼀个按钮,按一下屏幕变黑,再按⼀下变白。虽然它十分简单,但看着 app 被装在手机上,鲁晟远依然清晰地感觉到,一种难以言表的兴奋涌上心头。
我做梦都想成为开发者,现在我突然就成了。
编程没有那么遥远,但也没有那么容易,不必被想象吓到,也不要沉迷案头知识而放弃前进。
苹果在开发者教育上有着这样的理念:Everyone can code。一旦真的开始实践,我们会慢慢感觉到编程的美妙。所以动手去做吧,就像鲁晟远对新手的建议那样:
踏出第⼀步是令⼈恐惧的,但⿎励自己试⼀试是非常重要的。也许找⼀个悠闲的下午,打开苹果的教程,试着写几行。我相信任何⼈都可以理解⼀些简单的代码。