与 Shawn McCool 的 8 个问题
发布时间 作者 Eric L. Barnes
本周我很高兴邀请 Shawn McCool 参加 Artisan Files 面试系列。如果您不熟悉 Shawn,他运营着 Laracon EU 会议,是 Laravel 播客 的前主持人,并且是 Laravel 的早期采用者之一。
您能告诉我们关于您自己的情况吗?您是如何开始编程的?
我是一位 33 岁的美国软件开发人员,住在荷兰。四年前,我和我的妻子和两个孩子一起搬到这里,开始了一段冒险之旅。
我从 10 岁开始编程。那时我已经非常喜欢在学校的 Apple IIe 计算机上玩 Oregon Trail 游戏。后来,当我去了我的朋友 Jeremy Cole(现在是一位著名的数据库专家)家时,他向我展示了他们家的 IBM PCjr 和 gwBASIC,这就是一切开始的地方。
最终,他们家买了一台新电脑,然后以 100 美元的价格将 PCjr 卖给了我们家。我将电脑放在自己的房间里,两年后,我已经用 BASIC 语言编写了 200 多个程序。我写过各种各样的程序,从原始游戏到原始管理应用程序。真的,我能想到什么就写什么。这简直是一种痴迷。
在接下来的几年里,我发现了 Turbo Pascal 7,然后是 C 和 C++。后来,我在 14 岁左右开始沉迷于 Linux,也就是 SNES9x 在 Linux 上首次实现声音的时候。我和 Linux 几乎形影不离。
我几乎不记得生活中没有对编程充满热情的时候。
您现在正在做一些有趣的事情吗?
我最喜欢的项目之一是 Laracon EU。它是官方的欧洲 Laravel 大会,我把它当成自己的孩子一样爱护。我和我的合伙人一年到头都在为它工作,倾注了我们的心血和灵魂。对我们来说,这不仅仅是一场技术大会。我们希望它能给我们的与会者带来深刻的体验。毕竟,这是我们与其他社区成员见面的机会,也是我们把更多人带入活跃社区的机会。
我非常专注于教育,我认为会议是教育的绝佳媒介。我正在筹备一些其他的会议,就像 Laravel 一样,这些会议的主题都与我内心深处的东西息息相关。我希望很快能谈谈这些会议。
在开始客户项目时,您的典型项目流程是什么?
开始一个项目真的很困难。在我看来,最难的部分是了解客户的思维方式,他们真正想要/需要什么,以及管理他们的期望。
我总是会交付一个几乎没有功能的版本作为开发的第一个“阶段”。这样,我们一直在交付,并且可以完成所有的设置工作。当客户进来查看我们的进度时,他们的头脑开始思考,他们往往会对自己的真正需求有更多了解,这将有助于开发的后续阶段。
您必不可少的“应用程序”有哪些?
嗯…… 对我来说,必不可少的应用程序是:
- PHPStorm
- IntellijIDEA
- Navicat
- Sublime Text
- Virtualbox
- Vagrant
- Telegram
- Steam
我认为这些已经涵盖了一切。
您如何安排一天?您是否遵循固定的工作时间表?
我的妻子在阿姆斯特丹攻读博士学位。所以,她早上 6 点起床,以避开火车高峰时段。这意味着早上送孩子们去学校的任务就落在了我的肩上。幸运的是,我和他们上学的学校只有 2 分钟的路程。
所以,我早上 7 点起床,准备午餐,给他们喂饭,让他们准备好,然后送我的四岁女儿去学校。之后,我基本就自由了。通常,我会去一家咖啡馆,坐下来,喝一杯卡布奇诺,然后查看邮件。之后,我会尽量完成剩下的最难的任务,这样我就可以在下午放松一下。
我发现,如果下午没有时间放松,孩子们放学回来的时候,我会变得很暴躁。所以,对我来说,这很重要。当我早点完成压力最大的工作时,就能很容易地做到这一点。
您认为成为程序员最好的部分是什么?
我认为成为程序员最吸引人的地方在于你最终的思维方式。正如我之前提到的,我从 10 岁起就痴迷于编程。所以,23 年后,你可能会想知道我的思维方式是由于编程而产生的,还是因为我的思维方式而爱上了编程。
无论如何,编程教会了我如何思考。你学会了事物是如何真正运作的。你学会了,环境在改变,以前看起来好主意的事情,现在可能看起来就不那么好了。能够将大型问题分解成许多小问题,然后将许多小问题的解决方案组合成一个大型解决方案,是一件大事。
无论你是否是一名程序员,这些技能都推动着世界前进。
能够创造自己想要的东西,这是一件非常了不起的事情。例如,我痴迷于定制用户体验。我的笔记本电脑基本无法被其他人使用,因为我使用的是与 QWERTY 不同的键盘布局,而且我不使用堆叠窗口管理器,还有其他一些原因。
我非常喜欢思考如何改进我和机器的互动方式,然后尝试这些方法。
最糟糕的部分呢?
我不知道成为程序员有什么特别不好的地方。但是,我可以说,软件开发行业确实有一些不好的地方。软件开发人员经常受到极其糟糕的对待。他们通常不被重视,也没有得到培养。
我认为,这种情况 partly 是因为我们中很多人都是“从街上走进来”的。对于那些没有学习到成为“资深”水平所需的 5000 个知识点的人来说,这份工作可能非常困难。
但是,有趣的是,现在有更多可供学习的资源。当我刚开始的时候,我们必须连接到 BBS,才能找到其他人的源代码。通常没有关于如何做事的说明书(我们作为孩子能够找到的),我们必须从我们能找到的资源中学习。在我所在的学校,只有我的朋友 Jeremy 和我是真正会编程的人。
现在,教育从互联网的各个角落涌现出来。这真是一个宝库,它改变了人们的生活和学习方式。
如果开发者能够保持热情并对学习内容有良好的品味,那么他们就能拥有非常美好的生活。但是,我们的行业还处于起步阶段,你不能指望事情会长时间保持现状。为了获得回报,保持跟进非常重要。当我提到“保持跟进”时,我指的是跟进范式转变,而不是跟进工具。
你认为未来 5 年或 10 年,Web 开发会发生哪些变化?
我认为 Web 开发将更多地使用函数式编程范式和分布式计算。我认为我们将比现在更频繁地使用外部服务,并将更多地关注事件溯源等技术。
创建简单定制应用程序的 Web 代理机构可能会继续以类似于现在的方式进行工作。但是,我们将拥有更一致的工具。
开发者将使用更少的命令式方法,转而使用更多声明式方法。
如果你想了解更多关于 Shawn 的信息,请查看他的个人博客或关注他的Twitter。另外,如果你喜欢这次访谈,你可以下载所有其他访谈的 pdf 文件,这些访谈都在 Laravel News 上进行。