与 Chris Sells 的程序员访谈






4.95/5 (14投票s)
欢迎来到我们的 CodeProject 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和遇到的令人头疼的问题。在本期中,我们采访了开发者、作者、博主和讲师 Chris Sells,他曾在 2000 年接受过我们的采访。
欢迎来到我们的 CodeProject 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和遇到的令人头疼的问题。在本期中,我们采访了开发者、作者、博主和讲师 Chris Sells,他曾在 2000 年接受过我们的采访。
你是谁?
我叫 Chris Sells,是开发者工具和控件公司 Telerik 的开发者工具部门副总裁。我正式工作的美国子公司位于 波士顿,而我领导的部门则设在公司总部 保加利亚索非亚。不过,我自己则居住和工作在 俄勒冈州波特兰,每月会花大约一周时间前往总部拜访团队。
您做什么?
我参与过无数项目,自 1995 年以来的详细信息可以在我的博客 sellsbrothers.com 上找到。
最近,我花了一年时间在 Visual Studio 团队上从事 Windows 8 Metro 风格应用程序的工具开发。我在那个团队做了很多事情,其中最引人注目的是我担任了您现在在 Visual Studio 11 开发者预览版 中看到的 Metro/JS 模板的团队负责人。
从 1994 年加入 DevelopMentor 开始,我的典型一天在本质上没有太大变化。我一直有一个待办事项列表,列出我可以为改善开发者生活而做的各种事情:一篇博客文章、一本书、一次会议演讲、一个产品、一个功能、一个库、一个问题的答案等等。基于这个列表,我每天都会投入其中,要么自己动手完成工作,要么与需要帮助的团队合作以实现目标。
个人工作和团队协作的结合对我来说仍然很重要。由于时区差异,当我不在东欧拜访团队进行直接合作时,我会在团队还在工作的前三个小时进行协作工作,包括开会或回复邮件,然后转向个人工作。这是一种很好的结合方式,因为我仍然需要编码和撰写技术文章来感觉我真正与目标客户建立了联系。
然而,我的 28 年职业生涯中有 2/3 都专注于一个问题:我能做些什么来改善开发者的生活?这是一个非常令人满意的选择。
您的开发环境是什么?
我编写过很多语言,包括 BASIC、Lisp(Common 和 Scheme)、Fortran(我讨厌需要注意空白符的语言!)、DOS 批处理文件、Korn shell、Pascal、Ada、C 和 C++、HTML 和 CSS、XML、XSLT(讨厌!)、dBase、SQL、SML、Java、C#(太棒了!)、JavaScript 以及一些我甚至记不起名字的专有 4GL。
其中,我花了 10 年时间深入研究 C++,又花了 10 年深入研究 C#。两者各有利弊,尤其是在移动计算的世界里,但对于我自己的个人项目,我更倾向于 C#。它具有恰到好处的拼写检查单元测试(又名编译器)、工具(我爱可靠的 IntelliSense!)和性能,能够满足我个人的需求。
我的开发机是一台 15 英寸的 MacBook Pro,配有 8GB 内存、512GB SSD 和 8 核 I7 处理器。它运行的是 Mac OS X(Lion?Pussy Willow?谁知道呢?),我之所以选择它,只是为了能运行 Boot Camp 并安装 Windows 7,这目前是我日常使用的操作系统。我计划很快切换到 Windows 8,目前我正在 Windows 7 中的虚拟机里使用 VMWare Workstation 8 运行它。
您对哪些新工具、语言或框架感兴趣?
2011 年对我来说是极其忙碌的 JavaScript/HTML/CSS 之年,我只做了这些。对于几乎所有的 UI 前端需求,我都必须推荐 HTML、JavaScript 和 CSS。它们在计算机和设备上的可用性几乎是普遍的,而且通过 PhoneGap,它们甚至可以在 Win8、iOS 和 Android 上作为原生选项使用。我预计未来将在此领域投入更多精力。
您最讨厌的编码习惯是什么?
我最大的编程上的怪癖是在同一个源代码文件中存在不一致的代码风格。在我很久以前领导的一个团队中,我们有一个代码风格指南文档,其中包含两条规则:
- 保持每份编辑文件的代码风格一致。
- 使用空格而不是制表符。
第一条规则允许开发者在他们花费最多时间的文件上使用自己的代码风格,同时也让团队其他成员了解不同于他们自身代码风格的优点。第二条规则只是常识。
另一个最近让我觉得头疼的问题,源于我最近在 C# 代码中经常看到的用法,即到处都使用 "var"。当创建显式类型的实例时,我非常喜欢使用 "var" 作为快捷方式。
var x = 42; // an int var s = "foo"; // a string var p = new Person(); // a Person var wtf = GetSomeData(); // ???
最后一行代码的问题是,不将鼠标悬停在 "GetSomeData" 上,我根本无法通过阅读代码行来判断它的类型。我讨厌使用鼠标。我是一个键盘控,尤其是在编码的时候。
在我的 Win16 时代,我曾使用 匈牙利命名法——因为所有酷炫的 Win32 程序员都这么做。同样,当适当的时候,我也会根据通用的语言约定使用 PascalCase 和 camelCase。老实说,正如我的代码风格规则 #1 所表明的,我只是想融入进去。:-)
至于代码格式化,我完全支持 K&R 风格。它读起来更好,在不影响可读性的情况下能将更多信息塞进更小的空间,也更适合收录到书籍和幻灯片中,等等。一切都很好。我希望它能成为 Visual Studio 的默认设置。这是我每次安装新副本时都必须更改的一个选项。
您是如何开始编程的?
我高中时在父母家的地下室用我的 Apple II+ 编程 Applesoft Basic。我仍然记得我母亲带我去买它那天的事情。我可以在 Apple II+ 和 Apple IIe 之间选择。IIe 更贵,我认为 80 列和大小写字符只是暂时的潮流,所以我选择了更便宜的 II+。从那时起,我总是购买我能负担得起的最贵的电脑。
即便如此,我还是很喜欢那台电脑。每天放学回家,我会打开电视看 《危险鼠》,然后玩电脑游戏并编写软件。我为我和我的朋友们写了一个 D&D 角色卡数据库。我为我的高中编写了田径比赛成绩跟踪软件。我使用了我祖母送给我的语音合成卡,编写了一个程序,可以把我输入的 6502 汇编代码列表读给我听,这样我就可以找出从杂志上抄来的程序中的错误。
Apple 上的 BASIC 程序就像今天的浏览器应用程序中的“查看源代码”一样,可以被列出。这意味着我可以通过阅读我欣赏的其他程序员编写的程序来学习编程;Beagle Bros. 是其中的佼佼者。为了保护他们的知识产权,他们会在第 0 行添加一行代码,当列表显示时,这行代码会执行,从而清除内存,不再显示代码行,所以你学会了从第 1 行开始列表。然后他们把内存清除代码移到了第 1 行,于是就变成了一场永无止境的猫鼠游戏。我太喜欢他们了。
开发者社区是如何影响您的编码的?
正如我所提到的,我非常喜欢通过阅读别人的代码来学习编程。每当我在线查找东西时,我都会跳过前几段,以便直接看到第一个代码示例。事实上,有一次我这样做,找到了我需要代码,但继续阅读,因为我发现我喜欢它的写作风格。最后,我才意识到那篇文章是我和一位朋友合写的。真是应了“只见树木,不见森林”。
编程社区对我编程生涯产生了巨大的影响。在我第一份真正的工作——在英特尔公司——我加入了阅读小组,利用午餐时间与同事们讨论 Steve Maguire 的《Writing Solid Code》的下一章,我就是在那里学会了真正像一个程序员一样思考的。
在 DevelopMentor 的教学经历让我接触到了一个全新的社区,包括演讲者、会议参与者以及像 Matt Pietrek、Charlie Kindel 和 Don Box 这样的英雄人物。
这些开发者激励我去做演讲、写作,并开始建立一个网站,我早在 1995 年就这么做了。这个网站开始被分享,我添加了更多内容,这些内容又被分享,突然之间,我成了一个真正的社区成员,与社区中的其他人互动,试图用最新、最酷的东西来互相超越(我当时到底在想什么,竟然会写“MeowMoniker”?)。
如今,我仍然尽可能地积极参与社区。我很荣幸能在 Windows 8 的开发者发布会上发表主题演讲。我写了很多本书(目前正在写一本关于 Windows 8 Metro/JavaScript 的书)。我仍然尽可能多地写博客,但不如以前那么多了,因为我非常喜欢将想法浓缩到 140 个字符的推文中,我在 Twitter 上的用户名是 @csells。此外,似乎每当我有一个技术问题时,我总能在 StackOverflow 上找到答案。
您会对一个新兴的程序员提供什么建议?
我会给程序员一个建议:不断学习。IT 行业变化非常快,要想做最酷、最有趣的事情,你就必须愿意在晚上和周末跟随自己的兴趣,学习新东西。构建应用程序。写博客。做副业。问愚蠢的问题。尝试那些会导致你的电脑冒烟的事情。无论是什么,都要不断学习新东西。
如果你这样做,你就能像我一样回顾你的职业生涯,并说:“真的吗?你们付钱让我做这个?我本来可以免费做的!”