与 Howard Dierking 的程序员访谈






4.88/5 (18投票s)
欢迎继续收看 Code Project 开发者访谈系列,在这一系列访谈中,我们将与开发者们探讨他们的背景、项目、兴趣和“痛点”。在本期中,我们采访的是 Howard Dierking。Howard 曾多年担任 MSDN 杂志的策划者和主编,现在为 AS
欢迎继续收看 Code Project 开发者访谈系列,在这一系列访谈中,我们将与开发者们探讨他们的背景、项目、兴趣和“痛点”。在本期中,我们采访的是 Howard Dierking。Howard 曾多年担任 MSDN 杂志的策划者和主编,现在在微软担任 ASP.NET 团队的开发工作。
你是谁?
我是 Howard Dierking,在 Web 工具组担任项目经理,该组负责的产品包括 ASP.NET MVC 和 Web API。具体来说,我专注于 Web API,同时也负责一些跨产品方面的事务,例如安全和云体验。我还喜欢就分布式架构主题发表演讲和撰写博客,例如 REST 和 复杂事件处理 (CEP)。我在 微软总部园区,位于 华盛顿州雷德蒙德市,就住在园区以东。
您做什么?
我大约在 5 年前加入微软,当时在 Microsoft Learning 部门,负责开发者认证的规划。面试过程很有趣,因为当时我一个认证都没有。面试官(我未来的老板)问我:“你认为你想要负责一个你自己从未参与过的项目,这会不会有点奇怪?”
我的回答很简单:“在我自己的经验中,我从来没有找到认证的巨大价值。我很乐意告诉你原因,并帮助你改进这个项目,让其他人不会得出同样的结论。”
显然,我的回答触动了他,我得到了这份工作,并在接下来的几年里负责策划和创建考试和认证。我并不是天真地认为我们完美了整个项目,但我认为我们确实有所改进。
在完成开发者认证项目后,我加入了 MSDN 杂志,并在那里担任了 2 年主编。到目前为止,这可能是我在微软最喜欢的一份工作。我能够参与杂志的方方面面,从内容获取和作者关系管理,到编辑职责,再到撰写月度编辑寄语,以及定期与读者和广告商沟通杂志相关事宜。最重要的是,这是我职业生涯中第一次,我的工作成果是我能展示给妈妈看,并且她能理解的。
离开杂志后,我仍然留在 MSDN,并转向平台开发领域,在那里我负责了许多与 MSDN 和 TechNet 网站相关的功能,并推动了新的 CMS 项目的早期构思、规划和原型开发。在此期间,我还创建了 MSDN 杂志 Pivot 查看器,将我对商业智能和数据可视化的热爱与我对 MSDN 杂志内容的了解结合起来。
之后,我转到了 Web API 团队,与我在 Microsoft Learning 时期的老朋友 Glenn Block 一起工作。
项目经理这个职位,我听过最好的描述是“填补空白”。换句话说,开发者的工作是编写代码,测试人员的工作是测试代码,而项目经理的工作则是填补所有其他地方。因此,与许多其他职位相比,我每天的工作内容并不十分一致。不过,我会尽量将一天划分为项目管理、与客户互动(通过 博客、Codeplex 等)和原型开发等主要部分。当然,总会有很多事情试图扰乱这个结构,但总体来说这就是我的工作方式。
我们目前正朝着 2012 年春季的首次发布努力,但我们已经发布了几个预览版本到 Codeplex 和 Nuget — 更多信息请参阅 Codeplex 上的 WCF 网站。
您的开发环境是什么?
在工作中,我几乎所有事情都在笔记本电脑上完成,而台式机则主要用于托管非发布环境的虚拟机。我的笔记本电脑是联想 510w,配备 8GB 内存和 SSD,性能强劲,我非常喜欢它。
我大部分开发工作都使用 C# 语言,因此大部分时间都花在 Visual Studio 2010 中。不过,如果没有 ReSharper,我感觉我在 Visual Studio 中的工作将难以维系。
我在几乎所有项目都会使用的其他框架包括:MSpec 上下文规范框架,用于 IoC 的 Castle Windsor(不过最近我开始使用 Ninject),以及用于 ORM 的 NHibernate。
除了 .NET 开发之外,我最近对 Erlang 产生了兴趣,特别是在研究复杂事件处理方面。为此,我只是使用了开箱即用的 Erlang 控制台。
您对哪些新工具、语言或框架感兴趣?
正如我之前提到的,我一直在学习 Erlang 以进一步我的 CEP 研究兴趣。我还列了一份我想探索的清单(有些是技术,有些是模式,有些是其他),包括 neo4j、CQRS、Node.js 和 CoffeeScript。我对音频制作也很感兴趣,因此我花了很多时间磨练我在 ProTools 中的技能(实际上,我刚买的 ProTools 9,很快就会升级到 10)。
您最讨厌的编码习惯是什么?
我容易被那些让代码更冗长的编码风格所惹恼。我不认为自己是那种认为整个程序都应该写在一行的 C 语言程序员,但我也觉得当每个大括号都需要单独一行,并且每个本地成员引用都需要加上“this” 时,就有点荒谬了。也许这能帮助一些人更好地阅读代码——对我来说,这读起来就像不必要的语言仪式。
我还倾向于认为过度使用继承的设计是一种“坏味道”,因为通常(虽然不总是)这样的设计最终会违反我关心的原则(例如单一职责原则)。更不用说,它们最终几乎不可能进行单元测试。
您是如何开始编程的?
我开始接触编程是在五年级时,在学校参加了一个暑期计算机夏令营。我们用 BASIC 编程,并学习了 DOS 的使用(尽管我不记得是哪个版本了)。我的第一个“程序”是一个密码应用程序,我把它安装在所有高年级计算机实验室的电脑的 autoexec.bat 文件中。不用说,没有人对我的劳动成果感到高兴——但也没有人想到责怪一个五年级的孩子。感觉……太棒了。
开发者社区是如何影响您的编码的?
在我的早期阶段,公共论坛大概是我接触到的最具影响力的在线社区。如今,尽管我积极使用 Twitter,但论坛曾经扮演的角色在很大程度上已被我多年来在不同领域建立起来的联系人的电子邮件所取代。
不过,我认为像 StackOverflow 这样的网站将旧论坛的最佳特点与许多新的酷功能结合在一起,我不会惊讶于随着时间的推移,我会花越来越多时间在这样的社区中。
您会对一个新兴的程序员提供什么建议?
外面有很多教条——很容易陷入为了某个原因而以一种或另一种方式做事,仅仅因为你尊敬的某个人也是这样做的。不要落入那个陷阱。我并不是说你尊敬的人没有提倡好的实践或工具——只是说如果你盲目地追随他们,你并没有真正理解他们试图解决的问题,以及他们为了获得收益而愿意接受的权衡。
在一个有些相关的方面,不要为了你无法测试的能力(可伸缩性、可靠性、性能等)而追求架构选择——在设计你的实现方案之前,先学会如何进行衡量。
当我结婚时,我的叔叔给了我一句明智的话,我认为在这里也很适用:“请记住,你得到的 99% 的建议都是好建议,但只有 50% 的建议是相关的。”