与 Phil Haack 的程序员访谈






4.92/5 (30投票s)
欢迎来到我们持续进行的 Code Project 开发者访谈系列。在这个系列中,我们与开发者们交流他们的背景、项目、兴趣和令他们头疼的事情。在本期中,我们找到了 Phil Haack。
欢迎来到我们持续进行的 Code Project 开发者访谈系列。在这个系列中,我们与开发者们交流他们的背景、项目、兴趣和令他们头疼的事情。在本期中,我们采访了 Phil Haack。他自称为“一个患有妄想症的、有宏图大志的软件开发者”。继续阅读,了解这些妄想症以及它们对当今开发者意味着什么。
你是谁?
我叫 Phil Haack。我的姓发音像“hack”(破解),这正是我喜欢做的事情:劈柴。还有写代码。
我住在伟大的城市华盛顿州贝尔维尤,离微软仅 2 英里。白天,我在微软担任高级项目经理,隶属于ASP.NET团队。晚上,在我哄孩子们睡觉后,我继续担任 ASP.NET 团队的项目经理。
我对各种技术充满热情,以及人们如何通过技术与技术以及彼此互动。我也热衷于开源软件,因为它是一种让开发者在全球范围内协作和分享想法的方式。我不怎么热衷于恰巴塔面包。我觉得它们就那样吧。
您做什么?
直到最近,我在微软的主要职责包括ASP.NET MVC和NuGet包管理器。
ASP.NET MVC 是一个用于开发 Web 应用程序的框架,它强调关注点分离,以及编写可测试、可维护的代码。它是一种不同于Web Forms的 Web 应用程序开发方法。ASP.NET MVC 的源代码可以在MS-PL 许可证下获得,这是一个 OSI 认证的开源许可证。
NuGet 是一个包管理器,它既能与 Visual Studio 集成,也可以在 VS 外部使用。它是一个相对较新的项目(不到一年),但我们已经达到了 250 万次包下载和 3,400 个独立包。它使开发者能够轻松地共享库,也方便微软分发自己的库。NuGet 的绝妙之处在于它是开源的,并接受外部贡献。
我还参与了ASP.NET 路由、ASP.NET 4 中基于标准的更新的菜单控件、数据注解,以及 ASP.NET Web Pages 的简单成员资格,可能还有一些我记不起来或者不想承认的其他东西。
我的主要职责是确保我们按时发布我负责的产品。我与开发人员和测试人员合作,为产品定义设计和时间表。我与律师合作处理那些不可避免地需要阅读大量法律条文的法律事务,但最终结果是产品可以在简短的 EULA 下发布,源代码在开源许可证下发布。
我还去参加会议,向大家介绍我们团队构建的技术。这对我来说很有趣,因为它提供了与客户交流的机会。互相交流(rub elbows)确实是一种奇怪的习俗。富有成效的部分来自于讨论,而互相交流似乎与此背道而驰。但我还是努力融入其中。
最终,我只是确保没有任何东西被遗漏。当不可避免地发生事情时,我 tries to cover it up and point a finger at the next guy(试图掩盖并把责任推给下一个人)。
我最近加入了GitHub的团队,我的头衔是——信不信由你——“Windows Badass”(Windows 技术大神)。我非常欣赏 GitHub 让所有类型的程序员都能轻松接触开源编程的方式,我的计划是帮助 GitHub 吸引更多为 Windows 和 .NET 平台编写代码的开发者。这一切如何运作是我目前冒险的一部分,你可以在我关于这份工作的博客文章中了解更多。
您的开发环境是什么?
作为一个项目经理,我的主要职责不是写代码。开发人员开玩笑说我的 IDE 是 Outlook,但我也在 PowerPoint 和我们 wiki 上的浏览器中写代码。所以,看吧!
实际上,我为 NuGet Gallery 网站写了很多代码。这很有趣,因为该库运行在 ASP.NET MVC 上。使用自己的产品来构建生产网站非常有启发性。我认为这次经历将有助于我们深入了解需要做什么才能让 ASP.NET MVC 4 和 5 变得更棒!
当我写代码时,我使用 Visual Studio 2010 和我的 Dell Latitude E6410 笔记本。在办公室时,我切换到我的台式机,但我现在记不清它具体是什么了。我想它是一台由两到四只仓鼠驱动的机器之类的。
我最常使用的语言是C#和JavaScript。我非常喜欢它们。
对于单元测试,我使用xUnit,并使用TestDriven.net来运行我的测试。
您对哪些新工具、语言或框架感兴趣?
最近,我在Knockout.js和SignalR上取得了非常不错的结果。使用它们很有趣。如果我有无限的空闲时间,我想更深入地探索Node、Ruby和Clojure。
您最讨厌的编码习惯是什么?
未测试的代码。提交你没有真正尝试过的代码真的让我很恼火。此外,对于那些无关紧要的小事过于僵化。Allman 风格?没问题。K&R 风格?对我来说都行。最终真的不重要,只要在一个代码库中保持一致性就行。如果你够灵活,你会学会适应任何一种。不过,我对使用制表符而不是空格是零容忍的。请使用空格进行缩进。在这点上我不会妥协。;)
您是如何开始编程的?
我的第一台电脑是TRS–80 Color Computer。那时我还很小,大概五六岁,记不清了。我父亲和我轮流从我们买的书上输入一行行 BASIC 代码。然后我们会花几个小时仔细检查我们所有的打字错误,因为每个程序最后都有几页二进制数据需要手工输入,而且不容易调试。
最后,我们得到了一个非常棒的驾驶游戏。它太棒了!
从那时起,我时不时地涉足编程,但更感兴趣的是玩电脑游戏。我写了一些有趣的程序,但直到大学我才通过学习 C 语言真正投入进去。然后,当我以数学学位毕业并背负巨额助学贷款时,我变得非常认真。
当时像我这样的人的通常路径是直接读研究生,研究没人关心的晦涩的数学领域。我决定花一年时间工作赚钱,然后再申请研究生院。14 年过去了,我还在工作。:)
我职业生涯中使用的第一种语言是VBScript,在经典ASP刚出现不久的时候。我敢肯定,在那段时间里,我制作了大量的意大利面条式代码。
开发者社区是如何影响您的编码的?
我的编码很大程度上受到了开发者社区的积极影响。我最初就是在这里了解了SOLID原则、依赖注入、单元测试等等。从社区听到这些东西促使我深入研究并自己练习这些技术。这是一个持续学习的过程,我仍在其中。
什么!?你在开玩笑吗?我喜欢开发者社区的一切。我认为唯一不喜欢的是可能适用于任何社区的东西。僵化。当我发现有人完全无法想象他们的方式可能不是最好的方式时,我会有点烦恼。好像他们的方式适用于所有情况。
我很活跃于Twitter、StackOverflow 和Github,以及我的博客。这些是与更广泛的开发社区互动并展示我愚蠢之处的好方法。
您会对一个新兴的程序员提供什么建议?
保持开放的心态。不要将你的身份与你的技术栈绑定。我们都是开发者,广泛地分享想法比争论毫无意义的技术栈宗教战争要好。另外,学会有效地沟通和写作。这将让你走得很远。