来自CloudBees的 Garrett Smith从事软件工程已有二十多年。 在评估CouchDB时,他被引入了Erlang编程语言。 与Visual Basic,Visual C ++和Erlang一起,Garrett也了解了Python。
是Python将他介绍给了开源世界,从那里,当他了解了更多有关开源和基于社区的开发动态时,他再也没有回头。
Garrett将在2014年OSCON上就Erlang进行讨论, 并构建一个可大规模扩展的Web服务器 。 您不需要对Erlang有深入的了解就可以谈论他所说的内容,“总体而言,构建软件有些令人惊奇的事情”。
![面试横幅](https://i-blog.csdnimg.cn/blog_migrate/0ee37a1a30291735c55fa10801f678c1.png)
请向我们介绍您的背景和职业。 您是什么时候第一次与开源交叉的?
我从事软件开发工作已有二十多年了,并开始进入Microsoft Windows 3.x编程时代,因此开始使用Visual Basic和Visual C ++,甚至使用Excel和Access访问某些VBA。 现在听起来像是行人,但当时非常令人兴奋。 企业正在花钱来构建许多在廉价PC上运行的软件。 程序员短缺,这是一个学习实用的编程技能,并且有钱买啤酒的广阔舞台。
当Java在1994年首次亮相时,我做了一个转变。 除了与Web的紧密联系外,Java的跨平台支持还提供了一条摆脱Microsoft霸权的道路。 我购买了GoF的“设计模式”,并将我领导的项目中的每个模式至少使用一次作为我的目标。 这就像可卡因弯曲者一样-最初的欣快感,然后是崩溃,使我独自一人,在没有朋友的情况下流下了水槽,并感觉到我在道德上让宇宙失望了。
我在Java方面的经验是练习问题创建,而不是解决问题。
在看到我所做的事情以及Java文化鼓励的事情之后,我尝试了Python。 Python以务实而直接的方式包含了多个平台,并且丢失了静态类型。 空格问题并没有打扰我,而且我很享受不必考虑多层抽象的乐趣。 我还在Python社区中遇到了很棒的人。 这使我认识到“开源”(当时是一个加载术语,如今已不那么流行)和基于社区的软件开发动态。 我从不回头。
那时,我已经写了专有的商业软件大约十年了,感觉到行业正在衰落并最终消亡。 这可能会花费很长时间,但是未来不会出售软件许可证,而是在其他地方。 我所看到的问题是,商业软件供应商被迫提供功能来推动销售。 在很多情况下,他们构建的功能是由产品经理在内部敲响的,他们需要宣布和推销产品。 这些功能通常与真正的用户痛苦无关,最终使软件变得更糟。 这个循环将一直持续下去,直到软件最终变得肿,难以使用且支持成本很高。
当您不收取许可费用时,您可以专注于用户所需的内容。 领养是成功的关键。 您可以定期发布带有经过实际使用审查的小改进,而不必定期发布带有投机功能的季度发布,而这些功能希望您能证明客户的订购计划合理。 这是一个截然不同的程序,因此明显优越,我认为商用软件不会幸免。 您将继续看到少量利基,垂直应用程序,它们仍然成功关闭,但是随着时间的流逝,我认为这些将屈服于打开流程。
为了找到一种可以与开源革命和谐相处的商业模式,我将职业生涯转向企业软件服务,但很快又回到了软件产品开发领域。 我目前正在“云”领域工作,据我估计,这是一种为数据中心托管服务(从根本上出售电力,冷却和骨干网访问)增值的方法。 无论您称其为什么(IaaS,PaaS,SaaS等),构建产品和在“某处”运行的服务都是程序员可以放心使用的长期运行的业务模型。
Erlang可以追溯到1986年和爱立信计算机科学实验室。 您是什么时候第一次知道的? 是什么让您开始使用它的?
在为项目评估CouchDB时,我首先了解了Erlang。 我必须安装称为“ Erlang”的语言,但从未听说过。 很奇怪,这种情况多久发生一次? 因此,我开始试用它,并买了乔·阿姆斯特朗(Joe Armstrong)的“ Programming Erlang”,对此很感兴趣。 我经常和朋友们讨论一下将分布式编程概念束之高阁的语言的不足。 这是一种已经内置了分发功能的语言!
我踢了轮胎,制作了样品,然后搁置了几年。 然后,我遇到了一个问题,我无法使用现有的内部工具(Python和Java)解决。 这是一个细粒度的监视问题,涉及成千上万的独立监视状态。 基于posix线程的模型随着时间的流逝而陷入神秘的死机和进程崩溃。 作为监视程序,它必须可靠地运行,并且必须解决这个困难的并发问题。 我知道我们在使用Python或Java进行正确处理方面花了很长时间,这为使用诸如Erlang之类的新语言提供了可能。
我成功地用Erlang重写了程序。 它花费的时间少于我的预期,并且效果非常好。 这段经历使我深信使用Erlang的优点-两者都是处理并发(带有消息传递的独立进程)的高级模型-以及令人惊讶地用作功能语言。
在使用功能语言时,我发现我的程序更加一致(即更易于理解和思考)并且更加稳定(错误更少)。 它促使我逐渐将Python和Java替换为长期运行的后端程序。 它们更容易编写和维护。
这是一种形成性的经验。 Erlang是我编写长期运行的无人看管程序的首选工具。 我现在还是功能语言的坚定支持者。
您在CloudBees的一天如何?
我们总是首先在CloudBees上研究开源软件。 CloudBees是Jenkins背后的公司,这是一个非常成功的开源项目。 我们意识到软件的质量反映了其背后社区的质量。 注意,我说的是“社区”,而不是“开发团队”。 在开源中,当然有核心贡献者,但是开源项目是不断变化和发展的生物。 像詹金斯(Jenkins)这样的伟大的开源项目吸引了杰出的贡献者。 这些贡献者使软件变得更好。 没有社区,技术将消亡。 我们理解这一点,并寻找吸引和培养才华横溢的人才的工具和技术。
在内部,我们使用开源的开发模式。 鼓励个人为内部项目做出贡献,提交请求请求,并且通常直接通过编写代码来解决问题。 CloudBees喜欢代码,我们对设计和计划持怀疑态度。 设计和计划是很好的入门,但是CloudBees的程序员最重视工作代码。 我们都以开源的构建软件方式出售了很多东西。 毫无疑问,它可以带来更高的质量,更好的装配技术。 它也更快。
您在OSCON上的会议将有一个明确的目标,即教导观众开发可扩展的HTTP服务器并全面了解Erlang。
什么类型的开发人员应该参加?
人们对Erlang感兴趣,该教程是了解如何使用该语言构建工作软件的好方法。 教程的时间段当然太短了,以至于不具备深入的知识,但是在现场环境中查看内容是如何构建的,您可以在其中询问问题并与老师互动,这是非常宝贵的。 如果您对Erlang感到好奇,请参加此课程-专业无关紧要。 重点将放在Erlang上,它的工作原理和重要性。
我绝对喜欢教书。 真的,我想每个人都在做–这是关于分享您热衷的事情,而谁不自然地这样做呢? 我尽力使总体情况处于中心位置。 例如,了解Erlang中的模式匹配是一回事。 但是,知道模式匹配如何改变您的编程方式并提高软件质量就可以了。 如果我可以动动脑筋—与同事们分享一些“嗯,那真是太酷了”的时刻,那么我今天将释放内啡肽。
您想分享最后的想法吗? 潜入您的演讲吗?
任何参加会议讨论或教程的人都应该准备学习有关构建软件的一些非常令人惊奇的知识。 Erlang是一种非常独特的语言,区分它的主题对程序员很重要。 流程隔离,系统定位,故障检测和恢复,分布-这些对于Erlang的识别至关重要。 我所知道的任何其他编程语言都不是这样。 具有讽刺意味的是,每个人都在语言层之外*讨论这些主题,例如操作系统,VM,容器,云等。Erlang在20年前就已经在语言内部使用了。 即使您不选择Erlang,了解它如何实现编程模型也将有助于思考其他语言的程序。
当然,我希望人们也能使用Erlang。
翻译自: https://opensource.com/life/14/7/interview-garret-smith-erland