与 Daniel Vaughan 的程序员访谈






4.88/5 (31投票s)
欢迎来到我们的Code Project系列访谈,我们将与开发者们交流他们的背景、项目、兴趣和一些小烦恼。本期我们找到了Code Project的成员Daniel Vaughan。
欢迎来到我们的Code Project系列访谈,我们将与开发者们交流他们的背景、项目、兴趣和一些小烦恼。本期我们访谈的是Daniel Vaughan,他是Code Project上多产的作者,其文章屡获殊荣。Daniel也是一位旅行家,而且,事实证明,他在Code Project上建立了一个改变人生的联系。请继续阅读,了解更多。
你是谁?
我叫Daniel Vaughan,是一名居住在瑞士日内瓦的澳大利亚人,日内瓦属于该国的法语区。我为瑞士、美国和其他地方的客户提供咨询服务。
我是即将出版的《Windows Phone 7.5 Unleashed》一书的作者,该书将于2011年圣诞节前后上市。
您做什么?
最近我一直在为金融领域中的多维数据库开发一个工具。该工具允许用户准备多维查询;使用拖放设计器检索和存储子立方体,并使用自定义的WF流程设计器协调活动。
我还与另一位客户合作,为机场、警察局、消防队、救护中心和工业企业创建了一个指挥控制系统。特别是该软件的平板电脑和Windows Phone实现。
我大量参与了一个名为Calcium的开源项目。过去一年,我一直在大力扩展该框架,使其支持Windows Phone平台,我计划在书发布的同时发布它。
我还在LinkedIn上管理着一个名为Windows Phone Experts的群组(拥有超过一千名成员)。
当然,过去一年多我大部分时间都花在了撰写《Windows Phone 7.5 Unleashed》上。
今年,我和Katka正在创办一家新公司。我希望到第十年能把它卖掉,或者让它大部分实现自给自足,并希望能在海滩上度过更多时间。
您的开发环境是什么?
我的开发环境主要包括Visual Studio 2010、ReSharper和.NET Reflector。这没什么好奇怪的。
我的主要编程语言是C#。我大量使用自己的Calcium框架,该框架利用了Prism。对于Windows Phone开发,我使用即将发布的Calcium SDK的“轻量”版本,它不依赖于Prism。
我主要用笔记本电脑工作,尽管我目前这台相当强大。它是一台Dell M6600,配备16GB内存、固态主硬盘、750GB混合辅助硬盘和2.2 GHz的Intel i7处理器。拥有一台笔记本电脑对我所做的工作至关重要,它还让我可以跳上飞机,在马略卡岛、布拉格或任何地方工作。
您对哪些新工具、语言或框架感兴趣?
对于使用微软技术的开发者来说,这是一个激动人心的时代。Windows 8带来了很多新东西。我目前正在探索WinRT。我期待着将Roslyn(编译器即服务)项目与WinRT结合起来,做一些有趣的事情。
您最讨厌的编码习惯是什么?
滥用C#中的“as”关键字是我的一大烦恼。经常看到代码中用“as”代替显式类型转换,如下所示:
string foo = (bah as Person).Name;
如果bah为null,则会抛出NullReferenceException。然而,如果bah不是Person,也会抛出NullReferenceException
;这很糟糕,因为你无法判断是哪种情况。下面是更好的代码:
string foo = ((Person)bah).Name;
错误的起因不再被隐藏,而是抛出InvalidCastException。
我不喜欢看到这种单行if语句:
if (condition) return;
它使代码难以阅读,因为你的眼睛必须扫描到行尾才能确定代码的逻辑流程。这与设计良好表单的原理相同,其中标题应放在输入控件上方,而不是旁边。我记得读过一项研究,该研究追踪了受访者的眼球运动(这里是对此主题的另一种看法),人们在标题放在左侧响应字段旁边的表单中填写时间更长。就是这样。
我不喜欢将下划线作为前缀,例如“_someField
”。我在2003年曾使用过几个月,但很快就改回来了。我发现它们很分散注意力,并且降低了代码的可读性。我还想挑战你,在我的英式布局的瑞士法语/德语键盘上找到下划线字符。
您是如何开始编程的?
在我大约9岁的时候,我还是个孩子,就被我们教室的Apple IIe迷住了。那是一台方方正正却又 somehow 美丽的机器,我们每天可以花几分钟时间用它来创建和打印线条图。我画了一把武士刀,因为武士很酷。
我还经常在我朋友家玩,他爸爸开了一家销售MicroBee电脑的公司。后来我成功说服我妈妈给我买了一台Commodore 64,为此我朋友一直没原谅我。
我能怎么办呢?它有64 kB内存,是MicroBee的两倍。
和许多人一样,我并不是一开始就成为一名开发者。或许我曾经是,但在我的职业生涯中肯定不是。我最初想开飞机,但在十几岁时的一次事故中摔断了脖子。虽然我当时年轻,恢复得也很快,但由于脖子活动受限,我无法通过航空课程的体检,因此无法参加航空课程。现在我很好,你几乎看不出来我的脑袋是接起来的。
事故发生后,我开始旅行,并在捷克共和国遇到了我未来的妻子,也是CodeProject的作者Katka Vaughan。
后来我回到澳大利亚,在澳大利亚国立大学学习生物学,中途辍学,然后最终回到大学学习计算机科学,这更适合我。
我早期的软件开发生涯始于90年代后期,涉及创建Macromedia Flash/Director用户界面和ASP网站,期间我还在攻读学位。
大约2001年,我在澳大利亚国家图书馆找到了一份兼职Java程序员的工作。我记得做过一些与Struts相关的工作,并创建了一个由XML和ANT驱动的Java应用程序生成器。我满脑子都是XSLT。
完成学业后,我离开了图书馆,开始自由职业,并用.NET开发了我的第一个商业产品。那是非常早期的阶段。最终,我发现自己为各种政府部门做承包商。
2007年,我凭借一篇关于使用Silverlight进行网格计算的文章赢得了CodeProject Visual Studio 2008竞赛。这成为我职业生涯的一个转折点,丰厚的奖金使我和Katka得以前往斐济结婚。那是一场CodeProject式的婚礼。
在那些早期文章之后,我收到了来自世界各地的许多工作机会。最终,我接受了一个,这让我和Katka来到了瑞士。
开发者社区是如何影响您的编码的?
.NET在线社区的高度友爱仍然令我惊叹。我可能错了,但这似乎在开发者社区中更为普遍,而非许多其他行业。我也非常感谢在我的开源项目中给予我的帮助和鼓励。
您会对一个新兴的程序员提供什么建议?
我有两点建议,尽管听起来有些自命不凡,但这确实是我能给出的最好建议:
首先,阅读你感兴趣的、备受推崇的开源项目的代码。如果你不阅读代码,你将不会擅长编写代码。识别并熟悉项目中使用的软件设计模式。
其次,撰写文章。我看到很多开发者都在思考如何提升自己的职业生涯。撰写文章来提升你的职业生涯是世界上保守得最好的秘密!它也有助于在这里CodeProject发表文章。;)