工匠档案:Bob Bloom
发布于 作者: Eric L. Barnes
本周我很高兴采访 Bob Bloom。Bob 是 LaSalleMart 的开发者,播客,并且最近开始使用 Laravel 作为他的首选框架。
您能告诉我们您的情况吗?
第三代多伦多人,自豪的加拿大人,51 岁,已婚近 20 年,与我令人难以置信的妻子。三个学龄孩子。这算不算推文风格的介绍?
在多伦多大学,我是为数不多的商学院学生之一,除了入门课程外,我还选修了额外的计算机科学课程。我的计算机科学助教告诉我,不要再浪费时间在商业上,转到计算机科学。我拒绝了,并获得了会计和经济学的双重专业学位。因此,回顾过去,我的背景更加全面。
由于我不是计算机科学专业的,而且我从未做过纯粹的开发工作,所以我从未把自己视为“真正的”程序员。我会写脚本、黑客和反向工程。我一直都在努力把自己认定为“真正的”程序员,但去年我终于“跨越了”,把自己视为“真正的”程序员。
在 Y2K 时代,我的 IT 咨询职业发展得如火如荼,作为业务分析师和项目经理。我去过的地方,我都是最懂技术的业务分析师,将用户与技术人员联系起来。2000 年,我开始向项目管理方面发展,似乎即将获得 PMI 认证。
2000 年夏天,我们的第一个孩子出生了。我安排从我的 BA 职位中请假几周。当我回来时,我得到了大幅加薪,并直接负责 PM。嗯,在 Aaron 出生的几个小时内,我接到一个电话,说我不应该回到我的当前合同。我当时并不知道,那是我的咨询生涯的结束。
最终,我最终以独立顾问的身份开始创业,仅仅因为这是我唯一可行的职业选择。我已经有一家公司通过它来进行咨询。我已经建立了会计和税务方面的东西。因此,咨询是一个很小的行政步骤;但,这是迈向独立咨询的一大步。
当时,Joomla 看起来对我来说是未来发展方向。我学习了 Apache、MySQL 和 PHP,同时学习了 Joomla 1.0。我学习 Apache 的想法是学习 php.ini 中的所有指令。MySQL 在那个时候发布了 5.0 版本,所以我研究了新的触发器、视图等。我很幸运,我能进行“自主学习”;否则,就别指望成为一名独立的技术咨询师兼开发者。
我阅读了关于独立咨询的如何做 (电子) 书,但是没有像真实经验一样的教育机构。我通过 Craigslist 找到了第一批客户,他们拒绝付给我钱,这些人是一条丰富的本地 - 然后是远程 - 客户资源。大多数人并不隐晦。有些人很聪明。
在这段时间里,我似乎 gravitate to Joomla 的一个领域:Virtuemart 电子商务扩展。Virtuemart 是 Joomla 的流行 FOSS 电子商务插件,由于拥有技术和商业背景,我能够理解它。这个插件本身就是从独立的电子商务程序中分叉出来的,并适应了 Joomla。我能够解开意大利面条代码并修复了很多问题。由于非常流行,Virtuemart 论坛上充斥着人们发布的问题。我回复了帖子,人们最终联系我帮助他们解决问题。这些人愿意付费,因为他们遇到了麻烦,他们希望我在出现更多问题时回复他们的邮件。其中一些人仍然是我的客户 - 我认为他们是我的客户家庭。
一个有吸引力的 Joomla 电子商务插件发布了 Joomla 1.5。我维护了该插件的分发版,其中包括加拿大 HST/GST/PST 处理。当开发速度变慢时,我分叉了它。两次!对于 Joomla 1.5;而且,我分叉了他们早期(更像是过早的)Joomla 2.5 版本。
我将这些分叉称为 LaSalleMart 1;以及 LaSalleMart 2。在进行第二次分叉之前,我承诺学习开发工具,因为我遇到了瓶颈。我从头开始安装了 Ubuntu,购买了 PHPStorm,并学习了很多新东西,包括 Git 和 Phing。软件免费的程度仍然让我感到惊讶,但学习它是一项重大投资。
事实证明,原始扩展从未发布到 Joomla 2.5。因此,我的分叉,LaSalleMart 2,代表了原始版本在 Joomla 2.5 的生产版本。那是一个相当大的努力。我在这里承认,我很幸运,原始扩展维护了一个半活跃的 GitHub 存储库,因此我能够从存储库中获取代码,这被证明是必不可少的。但除此之外,我只是非常坚持。只有少数几个网站使用 LM2。当它发布时,Joomla 3 出现了。
LaSalleMart 2 中有如此多的 Joomla 1.5 代码,转换为 Joomla 3 可能比从头开始更痛苦。Joomla 的杰出 Akeeba Framework 已经发展得非常成熟,以至于它被包含在 Joomla 3.x 中(那是另一个故事)。所以我决定,在 LM2 赚到第一美元之前,我会放弃那项巨大的开发工作,转而从头开始为 Joomla 3 构建一个新的 LaSalleMart,并使用 FoF。我成功地完成了 LM3,它出色地表达了 Joomla/FoF 电子商务可以做到什么。这是一个非常艰苦的努力,包括一个巨大的幕后构建和更新机制。从提交到网站更新只需 30 分钟。而不是几周或几个月。Joomla 世界中的持续交付!
我的博客和播客详细介绍了促使我离开 Joomla 的原因。基本上:Joomla 3.x 版本策略已经改变,有可能看到新的 Joomla 版本过早地使 LaSalleMart 3 过时。
在投入了如此巨大的开发努力之后,在 LaSalleMart 3 即将开始盈利的时候就放弃它,这是一个不可思议的决定。我非常生气,很难控制我的博客帖子和播客不陷入狂躁的怒火。此外,我放弃了多年来建立的利基市场,这项投资也打了水漂。
但是,我经历了两次 Joomla 版本更改,这两次更改都需要大量的更新投资。开发体验很棒,但我的业务遭受了沉重打击。我得出结论,LM3 无法盈利的风险非常大,以至于明智的选择是放弃 Joomla。得出结论是一回事,采取行动是另一回事。好吧,2014 年 4 月,我放弃了 Joomla。2014 年 5 月,我决定学习 Laravel。
您能告诉我们您从 Joomla 切换到 Laravel 的情况吗?
Joomla 是一个封闭的环境,因此编程 Joomla 插件非常具体,只针对 Joomla - 但不代表更广泛的 PHP 世界。Joomla 有自己的方法来进行用户管理、访问控制、更新等。当我开始学习 Laravel 框架时,我认为它是一个类似定义的环境。哦,不!Laravel 框架只是构建 web 应用程序的更广泛世界中的一个元素。
对我来说,Laravel 击中了所有正确的音符。
Laravel 吸引我的地方在于它看起来像是进入 Web 应用开发领域的一道很棒的开胃菜。现代化,潮流,并且互联网上有海量的资料。2013 年 11 月的 php[architect] 杂志刊登了关于 Laravel 的文章(“Laravel - 一个现代的 PHP 框架”,第 28 页及以后),这再次印证了我对 Laravel 的所有了解。我的印象是 Laravel 4 是经过多年的成长阵痛后诞生的产物,一个找到了稳定立足点的版本。Laracasts 是一种全新且独特的强大加速学习工具。对我而言,Laravel 击中了所有正确音符。
我之前没有使用过其他 PHP 框架,所以我的学习曲线非常陡峭(现在也是)。我一头扎进了 Laravel,也一头扎进了更广阔的 Web 应用开发领域。我发现它非常令人困惑,缺乏理解所有事物的背景信息。在对服务器、构建工具、开发环境、软件技术以及 Laravel 本身进行了调查后,我意识到自己需要退一步。首先,我要精通 Laravel 以及学习/使用 Laravel 的关键工具和技术。然后,我会进一步拓展自己的技能。
学习的唯一方法是构建一个应用程序。我从头开始构建了自己的博客应用程序。我放弃了 Joomla,最终构建了自己的 CMS - 听起来有点可笑。我称我的博客应用程序为 LaSalleCMS。它在 GitHub 上,但任何理智的人都不会使用它。我在一次秋季的 Laravel 多伦多聚会上展示了它(感谢 #LaravelTO 提供这个机会)。在这次演示后,我开始了对它的深度重构,将它打包成一个个大的模块。当这个重构完成时,它可能会对其他人有兴趣。
我在深入 LaSalleMart 4 开发时暂停了这个重构。我最初的 LM4 重点是构建一个内部 API。一旦我掌握了这个内部 API,我就会将这些技术引入 LaSalleCMS。所以 LaSalleCMS 的另一个重构正在进行中。
从 5 月到 10 月,我花了将近半年时间才完成了 LaSalleCMS 的第一个版本。它现在为除我的媒体网站以外的所有网站提供支持,所以它是实打实的。
在 2015 年,我正在构建我的软件三胞胎:LaSalleCMS,它正在进行重构;LaSalleCast,我的电子广播平台(最后构建);以及 LaSalleMart,我正在开发的项目。LM4 将复制 LM3,并有一些调整。
虽然我认为我的软件是三个独立的应用程序,但实际上它们是许多独立软件包的集成。啊,创建 Laravel 软件包!从去年 5 月的那一天起,我盯着屏幕,想知道为什么 Laravel 的“您已到达”消息没有出现(答案:权限不足)。
令人惊讶的是,我没有因为从 Joomla 转向 Laravel 而失眠。现在,我比我人生中任何时候都更强大,而且还没有达到顶峰。我的技能已经突飞猛进,并且仍在不断提升。我的应用程序比我以前所做的一切都更加强大。LaSalleMart 4 将超越我的 LaSalleMart 3 成绩。
从 Joomla 转向 Laravel 有时会让人筋疲力尽。在我使用 Joomla LaSalleMarts 长时间获得的投资回报率很低之后,这是一个巨大的投资。我很高兴我转向了 Laravel。
你通常构建什么?客户工作、产品等…
通常情况下,我是一个技术型电商人员。
我继续支持我现有的 Joomla 客户网站。最近,我帮助了一些 WordPress-WooCommerce 网站。
我从头开始搭建网站。安装扩展/插件。安装模板/主题。设置用户、菜单等。修改源配置文件和视图。调整模板/主题。在 PhpMyAdmin 上花时间。作为全方位服务,我会输入产品数据,设置结账流程,审查设置,导入文章(从 Word 中 - 糟糕!)。
然后,还有软件要构建。
你学习 Laravel 最难的部分是什么?
学习 Laravel 最难的部分是:(i)学习的范围;以及(ii)改变我的开发方式。
由于没有使用过其他框架,我必须学习一般的 Web 应用程序开发,而不仅仅是 Laravel 框架。需要吸收的东西很多。
我自己的开发风格已经改变。SOLID 原则、测试、命令总线和事件等等。
对我而言,Laravel 本身最难的部分是命名空间与 Composer 的结合。尤其是软件包。其他人会遇到 RESTful 路由和控制器、部署、环境方面的麻烦。出于某种原因,Laravel 软件包的 PSR-0/4 命名空间与 Composer 自动加载是我主要的 #PITA(Pain In The A**)。
你对想要转向 Laravel 的其他人有什么建议?
阅读 Symfony 文档,因为 Laravel 是基于 Symfony 的。
遍历源代码。
直接深入了解容器和依赖注入 - 关键概念!
期待在下次 Laravel 多伦多 聚会上见到多伦多地区的读者。