65.9K
CodeProject 正在变化。 阅读更多。
Home

与 Hans Dietrich 的程序员访谈

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (32投票s)

2011年10月5日

CPOL

7分钟阅读

viewsIcon

39719

欢迎来到我们的 CodeProject 开发者访谈系列,在访谈中,我们与开发者们交流他们的背景、项目、兴趣以及让他们头疼的事情。在这一期中,我们找到了 CodeProject 的会员 Hans Dietrich。

欢迎来到我们的 CodeProject 开发者访谈系列,在访谈中,我们与开发者们交流他们的背景、项目、兴趣以及让他们头疼的事情。在这一期中,我们找到了 CodeProject 的会员 Hans Dietrich

Hans 已经是 CodeProject 的会员 10 年了,他是 CodeProject 的 MFC 专家。多年来,他极大地帮助了 CodeProject 社区,他撰写了近 100 篇文章,并创办了 Code Project Mentors – 一个由 CodeProject 会员组成的团队,帮助新作者在 CodeProject 上站稳脚跟。

你是谁?

我是 Hans Dietrich,目前居住并在 洛杉矶 从事软件承包商/顾问的工作。

由于我的许多客户要求签署 NDA(保密协议),我无法提及具体的公司名称。我的客户中有很大一部分来自金融行业。即使在这些困难时期,我也毫不费力地找到新客户,其中大多数是通过其他客户的口碑介绍。这些新客户通常已经通过查看我在 CodeProject 上的文章来了解我,因此他们知道我是 MFC 和用户界面的专家。

在过去的几年里,我发现自己接到的客户咨询越来越多。显然,这是因为微软一直在大力推广 .NET,导致越来越少的程序员学习 MFC,使得 MFC 程序员成为稀缺商品,也让我能够相应地提高收费!:) 再次印证了我生意伙伴常说的一句话:微软是咨询师的上帝恩赐

令我感到有趣的是,一些客户带着一个令人惊讶的要求来找我:他们最初有一个 MFC 应用程序,然后微软的市场营销宣传说服他们将其转换为 C#/.NET。令他们惊讶的是,转换后的应用程序运行缓慢、响应迟钝,并且缺乏原始应用程序中客户喜欢的一些特性。当我的(新)客户去咨询微软时,他们被告知:给它时间。您的客户会习惯的。很快所有应用程序都会是这样的。 这个回答,加上客户的大量抱怨,让这位客户打电话给我并恳求道:请把我们的应用程序还给 MFC。这花了一点时间——.NET 版本中加入了许多新功能——但这位客户现在又高兴地回到了 MFC 的怀抱。

在较小的程度上,我还为希望支持多平台的客户做了一些 WTLQt 的工作。这对我来说也算是一种循环,因为在我开始做 Windows 编程之前(是的,我仍然保留着我的 Petzold!),我一直在 Unix 系统上工作。我曾统计过,我的软件运行在 78 个不同的 Unix 平台上。

您做什么?

正如我所说,我与许多客户签订了 NDA,所以我不能透露我目前任何咨询工作的名称。我想许多 CodeProject 的读者都见过我的签名,它指向我的 Hans Dietrich Software 网站(http://www.hdsoft.org)。只要有机会,我就会继续扩展它。

我的最新产品是 XCaptionButton),实际上我早在 2004 年就开始了。这个组件允许你在任何应用程序的标题栏中放置图形和文本按钮。我对实现方式不满意,所以把它搁置了。最近,在处理完全不同的东西时,我意识到如何能让实现方式好得多——更简单、更容易管理、性能极高,并且能在包括 Aero 在内的所有 Windows 平台上运行。当我尝试这种新实现时,它效果非常好,现在我正在思考为什么我以前没想到它。

我之前已经提到了我的生意伙伴。他有一个网站,我正在为他完成一款新产品。这款产品是你见过的最易于使用的文件重命名器。我的一些客户有成千上万个文件需要重命名用于测试目的。我终于受够了编写自定义批处理脚本,于是决定构建一个重命名工具,它就像任何文本编辑器一样工作——查找/替换、宏,应有尽有。它还支持 MP3 和 JPG 重命名。最重要的是,通过 Windows Explorer shell 扩展,它只需点击一下即可使用,我可以在家里的 x64 Windows 7 系统或客户的 XP 系统上使用它。

您的开发环境是什么?

我的家用系统是一台 12GB 双四核 Dell 电脑,运行 Win7 x64,配备双 28 英寸 Hanns-G 显示器。我的主要开发工具当然是 Visual Studio。我个人偏好 VS2008,并且很高兴我的大多数客户也仍然使用 VS2008。当然,在使用 MFC 时,我使用 C++,尽管最近我为一些杂项工作做了更多的 C# 工作。

当我启动 VS 时,我通常还会打开的另一个工具(如果还没有打开的话)是 UltraEdit。我用它来查看从非项目 rc 文件到 html 的所有内容。我已经记不清尝试过多少所谓的 HTML 编辑器了,但我总是会回到 UltraEdit。

您对哪些新工具、语言或框架感兴趣?

我一直在关注新的 C++0x 特性,并努力理解如何最好地使用它们。由于我每个主要客户的项目都正在进行或处于研究阶段,我还在努力提高我对 Qt 的熟练度。

您最讨厌的编码习惯是什么?

这个问题在许多编程网站上经常出现。这在某种程度上很有趣,因为它通常表明缺乏一定的专业性。如果你为自己编码,你可以自由地使用任何你想要的东西。然而,当你走进一个新客户的办公室时,你没有这种自由,那里的程序员会很快告诉你他们对你那些(对他们来说)奇怪的编码习惯的看法。正如我的朋友喜欢提醒我的那样:仅仅因为你坐着工作,并不意味着你不是妓女。 所以你要做客户想要的事情。

是的,我为 MFC 程序使用 匈牙利命名法,因为 MFC 代码就是这样的。至于其他方面,我十年前编写了一个 C++ 代码美化器,它可以轻松地转换整个目录结构的代码,包括缩进、花括号位置等。其中一个(当时我认为微不足道)的功能是将 ANSI 编码转换为 UNICODE 编码约定(TCHAR_TCRT TCHAR 函数名)。当一位客户向我报价将他的代码库转换为 UNICODE 兼容时,我才非常欣赏这一点。他原以为需要几周时间,并希望不到一个月就能完成。当我告诉他只需要几个小时时,他惊呆了。

您是如何开始编程的?

在我父亲的帮助下,我在高中时在当地大学的计算机中心找到了一份工作,担任操作员。作为我高中的毕业论文,我使用了一个计算机程序来演示一个著名物理问题的解决方案。这段经历伴随我进入大学,我在那里继续担任计算机操作员,这帮助我支付了大学学费。

开发者社区是如何影响您的编码的?

我认为这个问题需要仔细界定。例如,近年来,CodeProject 已经从一个硬核程序员网站急剧转向一个迎合程序员的社交网站。你问有什么区别?我猜测——而且我可能会因此被拍砖——CodeProject 的 800 万会员中,很少有人真正做任何编程,或者即使做,也并非为了谋生。你经常可以在 LoungeBugs & Suggestions 论坛上看到这种情况:人们抱怨受到不尊重,人们抱怨一些虚幻的“声望点”,并且有数百个后续帖子。显而易见,对某些人来说,问答论坛已经变成了一个“易如反掌”的游戏。

要记住的关键是,网络上没有其他网站能拥有 CodeProject 那样的技术广度、扎实的核心文章以及资深专家的持久影响力。如果社交网络的浮华模糊了这种形象,我感到遗憾。

您会对一个新兴的程序员提供什么建议?

当我开始编程时,还没有 MSDN。我必须通过阅读代码来学习。我总是很惊讶,现在有那么多新程序员在寻找捷径,而不是学习基础知识。这里还有一件事可以帮助你学习:为 CodeProject 写一篇文章。你通过写一篇文章,认真对待收到的评论,所学到的东西将超过一整门计算机科学课程。

© . All rights reserved.