与 Elijah Manor 的程序员访谈






4.73/5 (9投票s)
欢迎来到我们持续进行的 CodeProject 开发者访谈系列,在这一系列中,我们与开发者们聊聊他们的背景、项目、兴趣和令人头疼的问题。在本期中,我们采访了 Elijah Manor,他是 appendTo 的高级架构师、演讲者、博主,也是一位前 Web 开发新闻追踪者,专注于 ASP.NET M
欢迎来到我们持续进行的 CodeProject 开发者访谈系列,在这一系列中,我们与开发者们聊聊他们的背景、项目、兴趣和令人头疼的问题。在本期中,我们采访了 Elijah Manor,他是 appendTo 的高级架构师、演讲者、博主,也是一位前 Web 开发新闻追踪者,专注于 ASP.NET MVC 和 jQuery 开发。
你是谁?
我叫 Elijah Manor,我是一名基督徒,也是一个顾家的男人。我在 appendTo 担任高级架构师和培训总监。appendTo 的整个公司都是远程办公,所以我可以继续住在我的家人目前定居的田纳西州纳什维尔。
您做什么?
自从我加入 appendTo 以来,我参与了各种各样的活动,包括前端架构评审、进行线上和线下 jQuery 培训,以及为各种关注前端咨询的客户提供服务。
在过去几年里,我的工作重点主要集中在前端 Web 开发。我的项目全部使用基本的浏览器技术,如 HTML、CSS 和 JavaScript。
appendTo 大部分将界限划定在 Web 服务层,我们的开发者专注于前端部分。这让我们的客户可以自由地选择任何他们认为合适的技术来构建后端,例如 ASP.NET MVC、Ruby、Python、PHP 等。
自加入 appendTo 以来,我参与了多个项目,但我在此重点介绍其中几个。
我参与时间最长的项目之一是一个用于构建 HTML 电子邮件的程序重写。在新版本中,你可以通过拖放各种所需的组件来构建文档,你可以像在实际应用中一样进行内联编辑,还有许多其他不错的改进。对于高级用户,我们也支持使用类似代码的编辑器来编辑这些组件。这个项目由于其复杂性,既有趣又充满挑战。
我最近参与的另一个项目是一个 jQuery Mobile 应用程序,用于帮助员工在远程地点接收客户签名。他们需要一个简单但同时提供离线支持的解决方案。最初,我们使用 HTML5 Application Cache 来处理静态文件,并使用 Web SQL 来跟踪自上次与服务器同步以来添加的记录。为了更方便地处理 Web SQL,我们最终使用了 PersistenceJS 作为数据库表之上的 ORM。结果是,客户需要与实际硬件进行更紧密的集成,所以我们改用 PhoneGap 作为 jQuery Mobile 应用程序的包装器,这意味着我们不再需要 HTML5 AppCache 了。
您的开发环境是什么?
我的开发机是一台 MacBook Pro,配备 2.66 GHz Intel Core i7 处理器、8 GB 内存和 500 GB 硬盘。目前运行的是 Mac OS X Lion 10.7.3。我主要使用的开发工具包括 Google Chrome、iTerm 2、Sublime Text 2、CodeKit 和 Virtual Box。
我经常使用的 JavaScript 库包括 jQuery、jQuery UI、AmplifyJS、Modernizr、Underscore.js、jQuery Mobile,以及 Ben Alman 的一些 jQuery 插件(如 doTimeout、getObject 和 Outside Events)。
我最近一直在大量使用 jQuery Mobile。在开发过程中,我经常使用 jQuery UI Widget Factory 来构建丰富、有状态且可重用的插件。
您对哪些新工具、语言或框架感兴趣?
在一个最近的项目中,我引入了 CoffeeScript 和 SASS/Compass。我花了一些时间才适应开发过程中额外的编译步骤,但很快就觉得这个过程很愉快。CoffeeScript 有很多优点,但我已经得出结论,在我的下一个项目中,我将坚持使用纯 JavaScript。
我开始关注以下框架:Backbone.js、RequireJS 和 KnockoutJS。不幸的是,到目前为止,我对这些的了解大多是理论性的,源于阅读文章、观看演示和审阅相关文档。我希望尽快开始尝试使用这些库,并将其中一些集成到我的日常开发实践中。
您最讨厌的编码习惯是什么?
代码一致性是我非常在意的一个令人头疼的问题。我采纳了 jQuery 核心编码规范,从那时起,我对 JavaScript 应该是什么样子的感觉就非常明确。我觉得有责任修改那些不符合该标准的代码。幸运的是,appendTo 的开发者通常会遵守这些标准,所以我们提交的代码在外观和感觉上都非常相似,这很好。
鉴于我目前大部分的开发工作都使用 JavaScript,我偏好的大括号风格是 K&R。由于 JavaScript 中存在一种叫做 自动分号插入 的机制,使用 Allman 风格的大括号可能会有风险。为了解可能遇到的麻烦,可以查看 Dave Ward 的帖子 In JavaScript, curly brace placement matters: An example。
您是如何开始编程的?
很长一段时间以来,我一直认为自己会成为一名化学家。我曾经觉得在酒精灯上混合各种化学品很有吸引力。在高中的时候,我正在寻找一门选修课,我注意到有编程课,所以决定选一门 QBasic 课。我发现我很喜欢这门课,并在另一个学期选修了 Pascal。
进入大学并学习有机化学后,我很快意识到自己并不擅长实验。尽管我努力做到细致和精确,但我的产率却一直很差,这让我非常沮丧。
在有机化学课上,我们背诵了大量的化学反应。随着课程的进展,我们经常会规划一个多步过程,将一个简单的化合物通过各种化学反应转化为一个新的复杂化合物。我那时意识到,我喜欢的其实是化学的逻辑,这也是我如此喜欢高中编程课的原因。
由于我无法想象自己成为一名化学老师,也无法成为一名化学研究员,所以我改学了计算机科学。这最终成为了一个绝佳的决定,因为我得以专注于我喜爱的逻辑部分,而不用忍受混乱的实验室。
开发者社区是如何影响您的编码的?
开发者社区极大地影响了我的编码方式。我最初关注我所尊敬的开发者的博客,比如 Scott Guthrie、Scott Hanselman 等等。
我当时已经在网上搜寻好的技术资源,并决定在 Twitter 上与他人分享这些信息。我开始每天分享技术新闻给感兴趣的人。这件事最终演变成我长期坚持的习惯。
几年前,我开始在本地活动中发表演讲,然后逐渐走向区域性和全国性会议。最近,我将注意力略微从收集技术推文转向在我的博客上撰写更多内容。对我来说,演讲和写作的过程迫使我比平时更深入地思考。社区在提供反馈和保持真实性方面做得很好。
您会对一个新兴的程序员提供什么建议?
我鼓励任何新开发者找到自己喜欢的技术,找到同样喜欢这些技术的人,然后开始提问并参与到该社区中。
我也鼓励所有开发者写博客。许多开发者认为自己没有什么可分享的,但事实并非如此。即使没有其他内容,你本身就是一个读者。我的记忆力不是很好,所以如果我能写下我几天来遇到的一个问题的解决方案,我以后就可以回顾我的帖子来寻求帮助。希望其他人也能从我的帖子中找到价值,但即使没有,它也能帮助记录你的进步,并提供你开发者之旅的历史记录。
如果你需要更多鼓励,你应该看看 Scott Hanselman 的一个名为 Social Networking for Developers - Part 1 - Every Developer Needs a Blog 的视频。