Du, Chengbin's Blog

Software engineer

04 Sep 2016

Alexander Makarov 于 CLOUDWAYS 的面试

Alexander Makarov 是一个高级工程师并且他是 Yii 框架的核心贡献者之一,同时他还是 Yii 2.0 Cookbook 的作者

Alexander 在 Cloudways 面试中,讲述了他职业路径、对 Yii 框架的贡献以及 Yii 和其它框架的对比,最后他还给学生一些非常好的建议。

Cloudways: 跟读者分享一些你的故事吧,你是如何开始你的开发生涯的,是谁促动了你,还有截止现在你觉得自己做的最好的工作是什么?

Alexander: 读者们好!我是 Alexander Makarov 一名来自俄罗斯的 IT 工程师,大部分工作就是 Yii 框架和参与 PHP-FIG,最近,我全职在 stay.com 上班,只能用我的空闲时间来维护 Yii,你可能在 Github 上见过我 @samdark。

当我还是个孩子的时候,我的父亲配置了一台 z80 的电脑,里面运行着 sinclair basic (BASIC 的编程方言),当然还有游戏。玩游戏玩够了之后,我开始思考它们是怎么工作的,这些游戏是如何运转的。我喜欢自己明白的那种感觉,所以它决定了我需要正确地学习计算机科学。五年在大学获得了硕士学位,让我得到了一份在西门子做 DBA 和 Java/SAP 的工作,在那之后又过了 10 年,自从大学起我就使用 PHP 来做个人项目,因为它比 J2EE 在开发简单的 web 上更合适。

最开始 PHP 还是简单的,后来我使用了 CodeIgniter,很快发现它存在着许多的限制,之后搜索了许多完美的框架,试用了 CakePHP、Zend 和其它的,无意中打开了 Yii 官网(当时还很丑),查看了它的文档。它做地非常地合理,试用完 Yii 后,我发现它运行速度非常地快,并且很好地平衡了复杂难懂和简单的操作,让我的工作流程更舒适。2010 年我加入了 Yii 团队一直到现在,它是我做的最值得关注的开源工作。

Cloudways: 你在 stay.com 主要负责哪些工作?

Alexander: 主要负责开发网站、CMS 和 API,当 Android、服务器、SOLR 需要时,我会去帮忙。

Cloudways: Alexander 你是 Zend 认证的开发者,你为什么会选择 Yii 而不是 Zend 呢?你是如何对比它们的?

Alexander: 我是 ZCE (Zend Certified Developer) 没错,但是你可能把这个证书和 Zend 框架弄混了,ZCE 只是关于PHP 自身的。

尽管这样,Zend 框架我还是很熟悉的,所以可以回答第二部分问题。在选择框架时候,Zend 框架还是第一版,对我来说它太正式了——所有的模式都与 RFCs、设计模式等完全一致。尽管它理论上是最好的编码方式,但是在实际中显得有点过于复杂了。此外 Zend 团队还偏离了 RFCs(我记得有一次关于 Email 的组件)他们拒绝引入 Email 的补丁。

另一方面,Yii 所有东西都源自实践,如果在实践中与 RFCs 存在偏差,框架会根据实际环境对功能进行很好的修补,此外它也比 Zend 快,并且有更漂亮的语法,使你日常编码更舒心。

Cloudways: 你是顶级 PHP 框架 Yii 的核心贡献者之一,你感觉怎么样?

Alexander:通常很不错。当你意识到你正在创造其他开发者正在其日常工作中使用的东西时,这会是一种非常棒的感觉。当有贡献时,你就会感受到社区的精神。我也有喜欢探查编码的怪癖,并且开发一个框架也给了我更多这样的机会。

当然,也有一些不好的部分。维护这样大一个开源项目会疯狂地吸干你的时间。有时,有些无理的人要求你立即修复某些东西。但总体上而言,好的部分会比坏的多。

Cloudways: 你在 Yii 框架中的主要贡献是什么,还有哪个版本你贡献的最多?

Alexander: 当我来 Yii 之前就用过 J2EE、CodeIgniter 和一些其它框架,在 1.1 时我主要贡献了一些非常好的功能,这些功能都是来自我以前的经验。Yii 2.0 是另一个故事,我从最开始就参与了这个项目,和薛强及团队成员一起设计了整个框架。

Cloudways: 根据 2015 年 Sitepoint 的调查,Laravel 排在第一而 Yii 排在第四位,你认为 Yii2 未来会夺得第一吗?

Alexander: 这是个机会,但是我不认为 Yii 明年会在美国列表排第一,和美国本士的商业竞争是非常困难的,Yii 在美国之外更流行一些,特别是在俄罗斯、乌克兰和前苏联国家。

Cloudways: 你是如何对比 Yii、Laravel 和 Symfony 的?

Alexander: 这三个框架都有他们自己的优点和缺点。

Laravel 有非常棒的市场、开放接口、许多很酷的基础设施,在美国有很好的活动。直到最近,它还未真正地适应大的项目,一个接一个的版本,老版本还没过多久又被废弃了,现在好多了,该框架的管理和发展比较脆弱,因为它在很大程度上取决于它的创始人,希望它会随时间而改变。

Symfony 有很长的历史,它非常地成熟,是由一个强大的公司,能买得起全职文档小组,和开发团队提供支持,社区也非常的强壮,它倾向于企业解决方案,适用于非常复杂的应用程序,由于这个原因,该框架的某些部分是非常复杂的。

Yii 所有东西都源自实践 ,因为 Gii 代码生成器和制作精良的、增强的 ActiveRecord 设计模式的实现,它可以非常快速地开发原型。Yii 提供了许多开箱即用的功能,社区也非常的强壮,文档也不错,代码是稳定的,我们关心向后的兼容性,我们削减了许多边缘,只为在相同的硬件及类似应用中,Yii 的性能比 Laravel 或 Symfony 更高。至于缺点,Yii 不会完全按你的方式去做,当你试图去反对最佳实践,干净的代码和领域驱动设计。不过,如果你知道你在做什么,所有的工具都为你服务。

Cloudways: 你认为 Yii 最好的功能有哪些?

Alexander: Error handling and debug toolbar, code generation, forms, query builder and active record, data providers and data widgets, strong i18n layer, REST API framework.——这段相信没有看不懂的。

Cloudways: Alexander,当你不工作时你会做些什么,怎么打发你的时间?

Alexander: 旅游、骑车、看电影、玩游戏和做许多家庭活动

Cloudways: 可以给我们的读者,发一张你的工作台吗?

Alexander: 那就下面这张吧!

Alexander Makarov workstation

Cloudways: 你会给即将成为一名开发者的学生哪些建议呢?

Alexander: 把你的时间花在学习计算机基础上,前五年你可能不会需要它,但之后如果你没有一个良好的基础就无法进步了,它会给你带来很大的区别。

Cloudways: 我们 Cloudways 提供一键安装 PHP 和不同的 PHP 框架,希望你去看一看,然后分享一下你对本平台的看法,我们可以做什么,以进一步提高本平台的前景和表现?

Alexander: 总体来说服务是好的,它会节省许多初始化配置的时间,定价合理尤其是对较低层次。当然也有缺点:

  • 默认的堆栈,以满足许多不同的开发人员的需求,自定义堆栈再增强一下会更好
  • 一些 DigitalOcean 的功能还不可用

至于 Yii,所有的依赖都支持,所以可以很好的运行。

感谢 @亦清 帮忙翻译了许多内容

源文链接:https://www.cloudways.com/blog/alexander-makarov-yii-interview/