Teaching Scala: ''How Do We Help People Answer a Question if They Don’t Know it Exists?''
如果您教Scala,您可能会遇到许多与该语言新手有关的指导工程师问题。 我们由经验丰富的Scala教育工作者和老师组成的全明星小组,从学术界到工业界,从面对面的教育到大规模的在线课程,我们邀请您参加6月20日在Scala Days举行的教学Scala:圆桌讨论会。 纽约,并为初学者教授Scala提供了新的视角。 我们将一起讨论过去的错误,经验教训以及如何最有效地教授Scala。
在小组讨论之前,我们与小组参与者Ryan Tanner(Twitter),Mark Lewis(Trinity University),Li Neville(Spotify)和Maciej Gorywoda(Wire)交流了他们的Scala经验。
请向我们介绍一下您的背景以及如何引导您学习Scala?
Ryan Tanner:我从2011年开始就在Scala工作。目前,我是Twitter的技术负责人,在我的内部教育计划Twitter University的Scala收藏库中教授两门课程 。
Mark Lewis :我获得了博士学位。 我在天体物理学和行星科学领域从事模拟土星环的工作,而我在兼职CS硕士时就迷上了编程语言。 我教授本科课程,并与本科生进行研究。 我大部分的教学都是涉及编程和软件开发的课程,这就是为什么我尝试尽可能多地包括Scala的原因。
Neville Li:我从2013年开始就在Scala工作,现在正在研究数据工程和机器学习基础架构。 我在Spotify领导了从Python迁移到Scala进行数据工程的工作,并帮助许多数据工程师入职。
Maciej Gorywoda :早在2013年,我就从事Java方面的很多工作,所以我觉得自己陷入困境。 Scala的简洁性和新颖的思维方式是我克服这一点的一种方式。 我开始在我之前的公司中推广Scala,几年后,我将时间花在Java和Scala之间。 一年前,我移居柏林,现在是Scala的全职开发人员,致力于端到端加密Messenger的Android应用程序开发。
您为什么选择Scala,它为您解决了哪些问题?
Ryan Tanner:我的Scala Days小组成员Mark Lewis向我介绍了Scala。 最初,我被OOP和FP的结合吸引住了建模问题的优雅。 当时我从事自然语言处理工作,并认为Scala是该领域的理想之选。 今天,我对Scala周围发展的大数据生态系统最感兴趣。 在Twitter上,我花了很多时间与Flink和Kafka一起工作,而Scala实际上是通用语言。 我们既可以使用语言工具来表达性地对我们的业务领域建模,又可以使用生态系统来按需扩展规模。
Mark Lewis:在2008年左右,我与学生一起使用Fortress和X11(由DARPA资助的用于并行处理的语言)进行数值模拟。 这些语言的很多语法都基于Scala。 我决定购买Odersky等人的原始《 Scala编程》,以熟悉语言和语法。 我从来没有回到堡垒或X11。 对我来说,Scala具有SML的强大功能和美丽,并结合了Java库,因此我实际上可以完成工作。 从那时起,它一直是我的首选语言。
Neville Li:我们之所以选择Scala,是因为它是Twitter开源库Scalding,用于以FP样式构建数据管道。 这是一个很好的选择,因为Hadoop生态系统运行在JVM上,其中Scala在性能和Java方面都优于Python。 FP范例还鼓励可组合的代码,这些代码更易于推理,尤其是在正确性方面。 Scala对于我们的库设计人员也是一个很好的工具,因为有许多巧妙的技巧可以减少样板并增加API的可用性。 这很棒,因为我们的许多开发人员都来自数据科学背景,对打字或FP语言的经验较少。
Scala开发人员今天面临的最重要挑战是什么?
Ryan Tanner:刚接触Scala的人立即面临挑战,而不必知道:他们将编写哪种Scala? 他们是否想编写更好的Java? 潜入Typelevel吗? 他们甚至意识到Scala的各种"风味"吗? 我并不孤单地说,当我们学习Scala时,我们中的许多人偶然发现了这个问题。 如果人们不知道某个问题,我们将如何帮助他们回答问题-
Mark Lewis:鉴于我不是任何规模的从业Scala开发人员,在这里我将回答一个稍微不同的问题。 我的版本是:" Scala开发社区今天面临的最重要挑战是什么?" 我认为这是人才的可用答案。 我们的小组在某种程度上解决了这个问题,因为我们正在谈论如何向人们讲授Scala。 但是,要真正建立社区,我们需要更多的开发人员进入准备成为Scala开发人员的劳动力,我认为这需要将更多Scala和一般的函数式编程带入大学。
Neville Li:与我合作的很多开发人员都是没有传统CS背景的数据科学家。 他们大多使用被设计为DSL的库,例如 烫伤,Spark,Scio。 挑战在于确定在我们的教育中向他们展示多少"魔术",以及当"魔术"失败时如何帮助他们破译错误。 库建设者付出了很多努力来解决技术挑战,例如类型擦除,序列化,类型类和代码生成。 这些可能是大多数人不需要知道的技术细节,但是将极大地帮助建立更好的数据管道。
Maciej Gorywoda :一方面,我们对Scala感兴趣并正在推动更多FP的人们。 另一方面,我们看到Go和Kotlin等更简单的语言越来越流行。 如果我们希望Scala成长,我们需要解决以下两个问题:为人们提供学习和使用FP以及其他高级概念的简便方法,同时对寻求简单,快速解决方案的人们保持吸引力。
可以解决这一挑战的一件事是什么?
马克·刘易斯:再次回答了我稍作修改的问题。 使更多的功能进入大学是一场教育教育者和使更多的教师意识到解决问题的实用方法的好处的斗争。 大多数教育者都接受了纯粹的命令式方法的培训,他们对基本的函数式编程如何帮助他们没有太多的了解,即使lambda等函数式编程的许多组成部分在其他语言中得到了广泛传播 。 需要向教育者表明,行业赞赏功能语言的好处,以便更多的功能元素进入生产开发人员的主要渠道。
Neville Li:我们尝试的一件事是在小规模的技术讲座和博客文章中介绍这些高级模式。 多年来,我们在公司内部建立了一个高级用户社区,可以互相支持和支持新手。
Maciej Gorywoda :Scala是一种混合语言,据我认为,与仅关注OOP或仅关注FP的语言相比,Scala具有相当大的优势。 我们拥有吸引初学者和经验丰富的开发人员所需的一切,但我们需要努力进行更好的销售。 最后,教授编程语言与普及它紧密相关。
谁应该参加您在Scala Days上的教学Scala小组讨论?
Ryan Tanner:我很高兴讨论教授Scala的最佳方法。 我还将谈论我们正在Twitter上尝试的一项新的教育计划。 任何对更好地帮助新员工和初级工程师感兴趣的人都应该参加。
Neville Li:有兴趣教Scala的任何人都应该参加讨论。 任何构建高级API的人,尤其是那些不仅针对Scala开发人员而且面向受众的API,因为这会极大影响新手对Scala的看法。
您想与谁联系?
Ryan Tanner:我很想听听其他人在总体上讲授Scala和软件工程的经验。 整个行业在提升同业水平方面有很大的进步。 我们必须坦率地说,我们当中那些想做得更好的人需要互相学习。
Neville Li:任何人都应该教Scala和建立高级库,尤其是在数据工程和机器学习领域,因为这是Scala潜力巨大但又充满挑战的领域。
Maciej Gorywoda :我想和参与帮助人们学习Scala的任何人交谈。 如果您有任何想法,或者只是想保持联系,请告诉我。
不要错过6月20日在纽约Scala Days举办的Scala教学:圆桌会议。 立即预订机票!