与 Mark Rendle 的程序员访谈






4.94/5 (18投票s)
欢迎来到我们持续进行的CodeProject访谈系列,在这个系列中,我们与开发者们谈论他们的背景、项目、兴趣和厌恶。在本期中,我们采访了马克·伦德尔。
欢迎来到我们持续进行的CodeProject访谈系列,在这个系列中,我们与开发者们谈论他们的背景、项目、兴趣和厌恶。在本期中,我们采访了马克·伦德尔。
你是谁?
我是马克·伦德尔,我住在英格兰东南部的汉普郡。目前我是一名自由顾问、开发者和培训师。
您做什么?
哈,我什么没做过?现在,我正在为一家英国媒体公司开发一款Windows 8发布应用,为一家希望将大型企业系统更新的公司提供咨询,并且频繁地为许多希望将网站或内部系统迁移到云端的公司举办Windows Azure研讨会。
我还致力于我的创业项目StorageDeck,这是一个基于Web的Windows Azure存储服务管理应用程序;目前它处于早期、仅限邀请的Beta阶段,但希望很快就能正式发布。
此外,我还在为Wrox撰写一本书,名为Building Windows 8 Apps - Problem, Design, Solution(《构建Windows 8应用——问题、设计、解决方案》)。
哦,我还做了.NET的Simple.Data(一个数据访问库)和Simple.Web(一个轻量级Web框架)。
在过去的20多年里,我做过很多事情,包括(按时间顺序):为Informix 4GL编写代码生成器;为Gupta SQL Windows编写商业类库;为非营利组织开发CRM系统;GameShaper社交游戏框架;为British Gas开发能源使用仪表板;以及The Body Shop的忠诚度卡门户。
还有一段不寻常的时间(1999-2001年),我曾是一名专业的脱口秀演员,并在BBC担任喜剧编剧。
您的开发环境是什么?
我主要是一名C#开发者,所以我大部分工作都在Visual Studio 2012上使用Windows 8进行,但因为开源项目,我也会在Mac上使用MonoDevelop。
对于动态开发(Ruby和Node.js),我使用Sublime Text 2,并且我还使用WebStorm进行Node项目开发。
然而,无论我在使用什么工具,我总会启用vi模式:Visual Studio中的VsVim;Sublime Text中的Vintage模式;WebStorm中的IdeaVim。我的职业生涯前四年我都是在wyse终端上使用vi工作的,所以形成了肌肉记忆。如果你真的知道自己在做什么,你会惊讶于能够多么快速地处理文本。
您对哪些新工具、语言或框架感兴趣?
全都有!我患有“恋新癖”注意力缺陷多动障碍。我真的很难抗拒一次性尝试学习所有东西的冲动,但我会尽量控制在一两个事情上。
现在我专注于JavaScript,它并不新,但绝对正在经历一次复兴。当然,有Node.js,并且在浏览器应用开发方面,像Knockout和Angular这样的框架正在发生一些非常令人兴奋的事情。我还倾向于使用HTML和JavaScript来编写Windows 8应用的用户界面代码,尽管其他部分(业务逻辑、数据访问等)我仍然使用C#。
我现在感兴趣但还不允许自己深入研究的语言包括Rust、Clojure、Go、Dart、Nemerle和C++11(它引入了太多新特性,几乎相当于一门新语言)。
您最讨厌的编码习惯是什么?
模板代码。我*非常*讨厌那些为了表达你的应用程序或服务的基本思想而不得不编写(或生成)的额外代码,或者那些因为缺乏抽象或语法糖来表达某种思想而不得不一遍又一遍重复的代码片段。
我现在最关心的就是.NET中实现INotifyPropertyChanged
接口,但所有语言中都有好的例子:JavaScript中的回调和function关键字;Ruby中的Rails-cruft;C++中的头文件;SQL中的GROUP BY子句;任何语言或框架中的ORM;XML及其所有“杂种后代”。
您是如何开始编程的?
这会暴露我的年龄。我10岁生日时收到了一台Sinclair ZX81。它附带了一些可以从磁带加载的游戏,你也可以在商店里买到一些,但它主要设计用于编程。按键上甚至有BASIC关键字,所以当你在行首按下“P”时,它会自动为你输入“PRINT”。现在想想,有点像 IntelliSense。总之,手册中会引导你完成一些基本示例,所以我写的第一段程序是
10 PRINT "WHAT IS YOUR NAME?" 20 INPUT A$ 30 PRINT "HELLO ";A$
从那时起,我所做的一切基本上都是基于那个的迭代。
开发者社区是如何影响您的编码的?
有很多方式。在过去10年里,我几乎学到的一切有用的东西都来自于博客、用户组或会议。我买很多书来学习具体细节,但你通过社区发现想法,然后去买书来深入学习这个主题。
我大约在两年前从潜水转向积极参与社区,现在我可以在会议和用户组发表演讲,人们还会阅读我的博客等等,这是我获得最大满足感的事情。那种感觉,成为一个充满热情、积极向上、专注的人群的一部分,真的非常棒,它能促使你保持最佳状态,不断学习、分享,并尽力做好一切。
另外,将开源代码放在Github上供大家阅读,确实能鼓励你写出更好的代码。:)
您会对一个新兴的程序员提供什么建议?
构建一些东西,端到端,整个过程,从用户界面到数据存储。你使用的语言,它运行在什么平台上,这些都不重要。如果你能想到一些可以“解决痛点”或者你遇到的问题,那就更好了,但如果不能,那就尝试复制一个你经常使用的简单应用程序。
无论你选择哪种语言,找到离你最近的用户组并尽可能频繁地参加,阅读博客,在Twitter上关注人们,并寻找开源代码下载和阅读。
阅读一本关于你选择的语言的大部头、详尽的书,外加:《The Pragmatic Programmer》(《程序员修炼之道》);《Clean Code》(《代码大全》);《Code Complete》(《代码完整性》);《Design Patterns》(《设计模式》);以及《Zen and the Art of Motorcycle Maintenance》(《禅与摩托车维修艺术》)。
最后,这是给所有程序员的建议:不要对任何事情过于执着,因为在编程(就像在生活中)中,事物会不断变化,你必须顺应变化,并将它们视为学习新事物的激动人心的机会。