Ted Neward 编码器面试 - 开发者的责任






4.90/5 (5投票s)
欢迎来到我们的 CodeProject 开发者访谈系列,我们将与开发者们聊聊他们的背景、项目、兴趣和最头疼的问题。在本期中,我们采访了 Ted Neward,他是 .NET 和 Java 技术领域的知名演讲者、作者、培训师和专家。
开发者在商业领域扮演着越来越重要且影响力日益增长的角色。您认为这种影响力会发展到何种程度?其意义又是什么?
TN: 很多时候,CTO 会有一个个人开发者所没有的愿景。CTO 关注的是全局,而开发者则专注于自己负责的那部分。坦白说,这也是我们付给他们报酬的原因。
因此,在某些方面,这种额外的责任是要付出代价的。我有点担心这种额外责任带来的后果。但无论我们是否认为这是一个好主意,它都在发生。我不希望开发者拥有过多的影响力,或过多的控制权来开启对话,因为我认为他们最终可能会犯下一系列错误,而这些错误最终会伤害到我们所有人。
您可能会争辩说,其中一些错误已经发生了。就在本周,我们听到了报道,一家大型汽车公司因在软件中植入掩盖排放结果的代码而被调查。这是一个巨大的丑闻,他们将面临数十亿美元的罚款。这是通过软件实现的。它与汽车本身的物理构造毫无关系。
开发者社区应该讨论我们的责任程度。软件开发者是否应该说:“这是错的;我们不应该这样做。”?我认识的很多人都说写出那段代码的软件工程师犯了渎职罪。同时,该工程师也有责任按照其客户/雇主的要求去做。这确实是一个令人深思的检验。
随着软件在全球范围内占据越来越核心的地位,我们这些创造者——无论愿意与否——可能正在承担更大的责任。我们必须开始问自己一些令人不安的问题。
随着影响力的提升,随着移动性、千禧一代的兴起以及应用程序的消费化,开发者变得越来越酷。如果你是一名开发者,你就很酷。您对开发者在社会中的地位变化和看法有何看法?
TN: 这既令人兴奋,也令人担忧。这种情况已经持续了一段时间。我记得以前,当“计算机宅男”意味着你在操场上会被欺负,而宅男们绝对不酷。不幸的是,我看到的一个情况是,这种新获得的酷感在很多情况下会在技术社区中产生一种我个人认为我们会后悔的傲慢(我几乎想说是自大)。这种酷感常常带来权力、影响力和尊重。话虽如此,我认为我们已经开始走向另一个极端,认为我们的技术技能可以解决所有问题。我认为我们这样做会带来各种各样的问题。
“能力越大,责任越大”,对吧?“责任”这个词确实需要被好好阐述,并认识到我们所做的事情会产生连锁反应。意外后果法则是一个非常棘手的祸害,它终将到来。
开源技术已经开始塑造未来。开源的价值是什么?随着它的不断发展和演进,您认为它将把我们带向何方?
这很有趣,因为以我的年龄,我足以见证开源的演变。
开发者最终喜欢开源赋予他们的自由。无需等待公司响应,即可修复补丁和错误的自由。控制的自由,免于恐惧的自由,以及言论自由(例如通过代码表达自己)。
但开源还有另一个我不能低估的方面。开源经常被等同于“免费”(指廉价)。这是很多公司很快就利用起来的。不是 IBM 或 Microsoft 这样的公司,而是那些购买 IBM 和 Microsoft 试图销售的产品的人。
因此,Microsoft 目前正在努力弄清楚如何处理 Windows。Apple 已经解决了这个问题。Apple 说我们是一家硬件公司。我们销售硬件;操作系统只是一个入门产品。所以我们会给你免费的操作系统升级。免费的东西很难拒绝。
与此同时,当你开始与开发者交谈时,你会发现他们很快就支持:“开源软件应该是免费的,除了我写的软件。” 这就带来了非常不同的复杂性,而这正是所有主要供应商目前正在努力解决的问题之一,那就是:我们能在多大程度上有效地使其免费?
许多公司采取的策略是:“软件是开源的,但服务是我们销售的”,或者“我的部分代码是免费的,但其他部分则需要付费”——也就是所谓的免费增值模式。
我认为开源讨论的一部分变成了我们是在从法律和知识产权的角度讨论软件,还是从预算的角度讨论软件?我们究竟是如何进行开源对话的?
与电子自由基金会(Electronic Freedom Foundation)的人谈谈,他们非常主张“软件都应该是免费的,并且都应该是开源的。” 任何人都可以查看您的软件如何工作。有很多公司还没有准备好接受开源的这一方面。他们喜欢 Linux 是开源的;他们喜欢 Tomcat 是开源的;他们喜欢 Microsoft 正在开源很多工具和技术。但是要求银行、制药公司等开源他们的软件?这是不可能的。这是绝对不可能的。那时他们甚至不会和你谈。
而这正是围绕知识产权的讨论正在发生的地方。谁拥有你脑子里的东西,或者谁拥有你通过键盘敲击到公司磁性存储设备上的东西?谁拥有它?他们拥有它多久?这种所有权构成什么?开源带来了许多真正、真正有趣的心理、社会和哲学问题。潘多拉的盒子现在已经大开,我们却不知道如何处理它。我们只是在一次处理一个问题,摸索着前进。
我们来谈谈平台即服务(Platform-as-a-Service)。市面上有许多不同的选择,您如何看待平台即服务作为一种产品?您在市场上会如何评估其可行性?什么因素会让平台即服务值得您关注?
总而言之,我实际上要借用一句波兰语——“不是我的马戏团,不是我的猴子”(Not my circus, not my monkeys)。这是一个很棒的短语。这基本上是很多云服务,特别是平台即服务,让开发者能够做到的。可以说:“不是我的马戏团,不是我的猴子。”
历史上,如果我坐下来构建一个应用程序或网站或 Web 服务,作为开发者,我需要考虑很多运营问题。首先,我必须确保我是在 IT 人员可以支持的平台或操作系统上进行开发的。这是 Ruby 在早期面临的问题之一。许多公司都在 Windows 服务器上运行,而在 LAMP 风格的堆栈上运行 Ruby 的想法有点行不通。
因此,当我们谈论平台即服务时,它使我(作为开发者)能够做到的是,基本上可以将所有应用程序层以下的东西都交给别人处理。换句话说,我需要查看我编写的代码之下的所有内容,并说:“不是我的马戏团;不是我的猴子。”这对开发者社区来说是一件非常赋能的事情。
既然有了这个很棒的平台即服务(而且您不必关注应用程序层以外的任何内容),您认为先将您的应用程序推向市场更重要,还是确保其质量最高?
老实说,据我所知,这种情况没有明确的答案。
在你开发产品的同时,你公司的竞争对手也在开发类似的东西。进入市场的第一个通常拥有先发优势。不一定能赢得市场,但你绝对能在媒体报道、营销等方面获得大部分关注。第二个进入者会分享一些好处,但与第一个进入者相比微不足道——优势很小。到了你成为第三个或第四个进入市场的竞争者时,你基本上就成了“跟风者”,所以你的企业对尽快推出产品有非常、非常大的兴趣。
如果能够轻易地说总是选择一个而非另一个,那么每个人都会这样做,而第一个做出不同选择的人可能会脱颖而出。
我举一个完美的例子。当 Apple 发布 iPod 时,行业中已经有其他音乐播放器了,大家都认为 iPod 必将失败。我们认为 iPod 会失败,但显然历史已经表明,在用户体验上花费一定的时间,并在其周围提供一个非常简单的用户界面,确实可以带来差异。尽管如此,也有很多例子表明,一些拥有精美用户体验的产品后来却失败了。所以很明显,无论哪种情况,质量最终都会胜出。不幸的是,这从来都不是一个放之四海而皆准的答案。我希望是。
您最近在探索哪些平台,并发现它们很有用?
嗯,简而言之,就是所有平台。我最近一直在尝试 Bluemix,这是 IBM 的平台即服务。这是一个很有趣的平台。再次强调,从开发者的角度来看,这是“不是我的马戏团,不是我的猴子”的一种感觉。这是我喜欢与像 Bluemix 这样的成熟平台合作的原因之一。IBM 有很多插件。我有一个朋友是 Cloud Foundry 的坚定支持者。他实际上在 Pivotal 工作,我从他那里得到了 Cloud Foundry。试用过之后,它确实是一种非常简单且合理的方式来入门。好消息是,关于 Cloud Foundry 平台的大量现有资料,在 Bluemix 堆栈上和在其他任何地方一样适用。
有句 70 年代的古话:“没有人会因为购买 IBM 而被解雇,对吧?” 这有一定程度的玩笑成分,但也承认这样一个事实:这家公司比许多为其编写代码的人的年龄都大。而这是一种许多公司无法声称的可靠性。这很重要。这是许多开发者在达到需要站在 CEO 面前说:“是的,我愿意拿我的职业生涯打赌,因为这个云提供商会在未来 X 年内一直存在。”之前并不一定重视的事情。