原Borland Delphi研发部程序员Joe C. Hecht讲述自己离开Borland公司作为个体户程序员独立单干接活谋生的故事

成为开发人员 Joe C Hect 是什么感觉?

 你好。这篇文章是我们与专业软件开发人员交谈的系列文章的一部分,询问他们以编写代码为生是什么感觉,并可能在此过程中获得对软件开发行业的一些见解。

今天我们要和 Joe C. Hecht 交谈,他也被称为“TJoe”。乔现在正在佛罗里达潮湿的高地编写代码,尽管在采访过程中我发现他是德克萨斯人,在离我现在住的地方不超过 5 英里的地方出生和长大。开发人员的世界比你想象的要紧密得多!

嗨,乔,很高兴和你交谈,谢谢你抽出时间

采访Delphi程序员这是个好主意!正如我所说,我很高兴参加这个采访。

您在 Delphi 社区中是一个非常有名的名字。对于少数不认识您的人,您对自己是谁和做什么的简要总结是什么?

雇佣枪手程序员 - 精通 Delphi - 会调试。

您 a) 最常 b) 经常使用哪种 Embarcadero 产品?

RAD 工作室!我同时使用 Delphi 和 C++ Builder。我已经发布、安装并准备好使用的每个版本。

我有相当多的客户考虑从旧版本Delphi 7升级,希望对现有应用程序进行现代化改造,并跨平台支持 macOS 和移动平台。

毫无疑问,我推荐 RAD Studio 作为地球上完成工作的最佳跨平台开发工具。Embarcadero 真的“全力以赴”支持跨平台开发,无论是编译器还是可视化组件。在没有其他工具可以与之比肩的开发工具市场中,他们做得非常棒。

成为开发人员 Joe C. Hecht 是什么感觉?

乔,看起来像在热带国家度假

您是如何和/或为什么成为开发人员的?

我最初从事商业印刷业务。当 Apple Laserwriter 首次面市时,我们需要定制的 PC 打印软件。我从 BASIC 开始,然后很快转向 C。我已经对 Borland 的 Sidekick 和 Superkey 产品印象深刻,所以当 Borland 寄给我关于 Turbo Pascal 的邮件时,我立即投入进去,我们的生产力飞涨。剩下的就是历史了。我们的桌面出版实用程序 TypeStudio 赢得了 PC 杂志奖,软件开发迅速变得比我们的印刷业务更成功。

什么对您成为开发人员的帮助最大?

我的开发起步来自我的第一个调制解调器。我找到了由著名的 TeamB 成员组成的 Borland Compuserve 程序员论坛。我通过阅读帖子很快学到了很多东西,然后开始在论坛中帮助其他人。

我坚信,花点时间浏览论坛帖子的回复(即使是您不感兴趣的回复)通常会在此过程中发现许多隐藏的编码宝藏。技术讨论论坛可能是找到优秀答案的最佳方式,因为糟糕的答案通常伴随着指出任何缺陷的回复。

您认为您将永远不再是一名开发人员吗?如果是这样,接下来会是什么?

如果不是 RAD Studio,我会考虑换一个职业。我在多个平台上使用了许多不同的开发工具和编译器。对于长期开发,您的 IDE 将成为您的忠实伙伴,而 RAD Studio 是我发现的唯一一款能够让整体开发体验变得极其愉悦的工具。它拥有您需要的一切,反应灵敏,经过深思熟虑,并且高度可定制。

是什么让您开始使用 Delphi/C++ Builder?

我非常喜欢使用 Borland Pascal for Windows 从头开始​​编写 Windows 程序。我在 Borland 工作时收到了我的第一份 Delphi拷贝。见证第一个严肃的可视化开发环境是一次了不起的经历。它非常快,完全改变了 Windows 编程范式到 RAD(快速应用程序开发)。有什么理由还要使用其他开发工具呢?

我开始在 Borland 使用 C++ Builder,因为它是Delphi开发的。它比那个时代提前了几十年(现在仍然如此)。我还使用了 Linux 编码人员仍在谈论的 Kylix(Linux 版本 C++ Builder)。

成为开发人员 Joe C. Hecht 是什么感觉? 神奇的热带咖啡杯

Joe 说这对于某天“ TCoffee And Code In Paradise”网络研讨会来说会很棒! 

如果您可以给正在考虑从事软件开发人员职业的学生一些建议,那会是什么?

尽量不要在特定的领域“过度专业化”。如今,专业化是精神的东西,而不是职业。软件开发已经成为一个发展非常迅速的行业,它迅速分支到使用当今最新的技术。招聘信息通常会列出要求技能组合的要求,其中包括数十项技能。

让自己在在线论坛上广为人知,并阅读帖子。通过阅读开发社区中发布的交流,您将学到很多东西。

制表符……还是空格?

空格!这是一个关于代码格式化实践的问题(通过 RAD Studio 优秀的代码完成功能让开发变得更容易)?

我尝试遵循的一些成功的关键规则:

“从来没有没有开始”。代码阻塞对于调试过程中的跟踪至关重要,并且为“深夜代码清晰”提供了一个很好的层。

“没有免费就永远不会创造”。继续在分配资源时编写释放代码。你可以稍后阻止它,移动它,评论它,(或其他),只要确保你写了它。如果您将解除分配代码移得很远,那么在分配代码中记录它的放置位置(以及原因)并不是一个坏主意。

按流程中的每个“想法”分割冗长的代码。它可以像添加一个空行一样简单,或者最好是添加一个注释。

作为开发人员,您度过的最美好的一天是什么?

我醒来时脑袋发热,因为我做了一个梦,在梦中我解决了一个困扰我们多年的复杂问题。我把它编成代码了,然后发现我梦中的解决方案是正确的。

作为开发人员最糟糕的事情是什么?

在那个“其他开发工具”IDE 中工作(当然)!

构建一个大型解决方案,然后对其进行编码,最终发现它不起作用,并且需要一种完全不同的方法。

你知道的最酷的开发技巧是什么?

如果你真的很小心,你可以写出几乎完全可以在 Pascal 和其他基于 C 的语言之间移植的代码(减去一些可以自动化的语法重新排列)。我在 C 和 Pascal 之间移植了很多双向代码。我发现Delphi的“编译和运行”是如此之快,通常在Delphi中开发代码,然后将Pascal代码移植到C进行最终交付会更快。

成为开发人员 Joe C. Hecht 是什么感觉? 在游轮上编码

乔,在自己的游轮上编码!(或许不是在写代码!)

在家工作、在办公室工作、在开放式计划/共享空间工作?你更喜欢什么,为什么?你可以选择吗?

我更喜欢在游轮上编码!

除了在 Borland 的 Scott's Valley Campus 度过的最美好的时光之外,自 1985 年以来,我一直成功地进行远程工作。

我使用具有大屏幕和至少双显示器功能的高端笔记本电脑。我有一个包含两个 Mac Mini 的小公文包,我用来为 VM 提供开发环境,还有一个小型有线网络,以及用于“移动开发”的各种 ARM 板、平板电脑和手机(没有双关语)。

使用良好的电源逆变器,我在访问美国国家公园系统时为整个夏天编码,并且两次与家人一起住在我的船上,我远程编码超过两年。

告诉我们一些我们不知道的有趣事情。

Borland 园区充满了热情的友情和丰富多彩的人物。

我收到了 Bill “One Eye” Fisher 给我的绰号“Tjoe”。

值得注意的提及:

安德斯“如果你听我说的话” Hejlsberg

“在逃劳埃德”

“史蒂夫·T”

“X”

“廉价进口安德士”(区分两个安德士)

Lino “Hey Boss” Tadros(最后统计,现在拥有旧的 Borland 园区)。

如果你可以挥动“修复科技行业”的魔杖,你会改变什么?

将 Delphi 带入课堂,让更多大学生学习使用Delphi!

我能得到三个愿望吗?

计算机隐私、安全和更新是大问题。选择加入应该是一种选择,而不是规则。要求你的手机号码接收一些产品信息是纯粹的邪恶,追踪我们每一次呼吸的数据库应该被永久清除。

你去过硅谷吗?如果是这样,是怎么回事?如果没有,你有没有想过?

我在 Borland Campus 的 Scott's Valley 度过了我们全家最美好的回忆。Borland 的员工对我们所有人来说都很棒!那里的风景是首屈一指的。这是一次真正珍贵的经历,也是我们生活中的一个亮点。遗憾的是,我们因特殊情况不得不离开,但我们已经返回了几次拜访我们的朋友,并且会立刻回去。

你见过任何著名/知名的科技人物吗?他是谁?进展如何?

我很高兴与一些行业巨头会面、共事,甚至成为朋友。

Steve Teixeira、Lino Tadros、Danny Thorpe、Allen Bauer、David Intersimone,我们不能忘记“Borland TeamB”的全体成员。

Anders Hejlsberg(Delphi、C#、TypeScript之父)当然会浮现在脑海中。我们的关系很随意(我没有直接和他一起工作),但我们偶尔会见面。他非常友善、真诚而且非常乐于助人(即使对于我愚蠢的 Delphi 问题)。可悲的是,当比尔·盖茨开着一辆豪华轿车把安德斯带走时,是我开的门。他输了一小笔赌注,还欠我一面丹麦国旗。我确实计划有一天去找Anders索要那面旗帜。

如果您可以说服某人考虑使用 Delphi 或 C++ Builder,您的方法是什么,您会怎么做?

成为开发人员 Joe C. Hecht 是什么感觉? 乔是个快乐的人

可以?将?我一有机会就积极尝试说服人们使用 Delphi 和 C++Builder。

我为 MSVC 客户端做了很多直接的 API 工作,所以我在工作中包含了 RAD Studio 项目。客户确实会查看项目,询问它,并经常评论测试代码看起来有多棒(相比之下)。他们似乎喜欢 C++Builder 在您单击添加新事件时插入的注释块,而且他们也喜欢事件命名。这一切都非常清晰。

在会议上,我经常让我的笔记本电脑打开并处理 RAD Studio 项目(即使在两个 Linux fests 上),而且我总是会收到有关产品的问题。您可能会惊讶地发现参加这些会议的 Linux 人员也使用 Windows 编写代码。我已经成功拉到了一些人学习Delphi。

说服 C++ 程序员看一看 C++ Builder 是轻而易举的事。只需向他们展示C++ Builder IDE!Visual Studio 用户一直对使用真正 RAD 开发系统的速度和易用性感到惊讶,Linux 编码人员通常很快承认他们有可用的 Windows VM(因此我向他们展示了 FMX Linux(注:Delphi用于Linux的可视化开发组件))。这真的很有用!

Delphi 用户通常会回避 C++,而当他们应该接受升级时。世界上充满了可以通过升级提供给 Delphi 的优秀 C 代码。

同样,有大量为 Delphi 编写的优秀组件也可以在 C++Builder 中使用。

对我来说,这不是 Delphi 或 C++ Builder 的问题,而是如何最好地将它们一起使用的问题。

您希望自己发明/设计哪种技术产品,为什么?

PDF(便携式文档文件)格式。

我非常喜欢开发排版、成像和出版软件。

PDF 过于复杂,主要设计为只读格式,编辑和转换能力非常差。“便携式文档格式”应该易于携带,而不仅仅是查看。PDF 的导入、编辑和转换通常需要非常特殊的工具(例如我们的 UberPDF 产品)。

如果人生可以重来,你还会做程序员吗?为什么?

我为编程而生!

作为 1960 年代的小孩,当大多数人并不真正了解计算机是什么时,有人评价我,并告诉我我会“成为一名出色的计算机程序员”。那个评估成了家庭笑话——直到我成为了伟大的计算机程序员。

你一天喝多少咖啡,够喝吗?

Tjoe 最近改用了“请喝杯茶——不加糖”。

经过几十年的“永远在线,永远新鲜的哥伦比亚咖啡,24×7可用”之后,我完全放弃了咖啡。

您是一个编码到深夜的夜猫子,还是一个早起并进入或遵守某种常规办公时间的早起人?

成为开发人员 Joe C. Hecht 是什么感觉? 夜鹰编码器的德尔福暗模式

夜猫子!我喜欢晚上在黑暗中编码。它很酷,很安静,屏幕对比度非常好!这个时机对我的欧洲客户也很有效。

在您的职业生涯中,您是否曾经“熬夜”来处理绝对必须完成的事情?

天啊!是的!!!多次。我曾经为一位客户在一周内编程 121 小时。

描述一些你作为开发人员做过的最好的项目。

我是 7th Level 的首席工程师,为 7 th Level 和迪士尼互动 Disney Interactive 设计了多个顶级游戏的图形游戏引擎,包括“Ace Ventura”、“Battle Beast”、Howie Mandel 的“Adventures in Tuneland”系列、“Timon & Pumbaa 的丛林游戏”,以及几个 Monte Python 游戏。这是一个非常有趣和要求很高的职位。当在枪口下获得一个标题时,我们会将角色从编码员转换为音频视频编辑器,并开始与人才合作。发现自己与像来自 Pink Floyd 的 David Gilmore 或 Howie Mandel 这样的人一起制作音轨并不罕见。Monte Python 的家伙们在现实生活中是被分割的(他们不需要脚本——他们就这样过着生活)。

你被问到的最愚蠢的问题是什么(这些都不算数!)

当我说我“专攻图形编程”时,我经常被问到“你做 T 恤吗?”。

您为与客户的合作报价吗?如果你这样做,没有透露任何会让你不舒服的东西,你使用什么样的过程?

是的,我通常为客户报价。

竞争一份工作合同所需的代码要么很简单,要么需要额外的研究、评估或可行性研究。

我会向客户提供一个大纲,解释工作已知部分所需的最短和预期时间,建议研究和评估时间的上限,并为涉及未知可行性的案例设置“不要进一步”限制。

对于我能保证什么,我不能保证什么,工作的预期输入和输出,我非常坦率,并且我非常确保没有任何功能蠕变可以以某种方式合理化为现有工作投标的一部分。

您如何阻止客户/项目经理/经理“功能蔓延”?

我鼓励精心设计的功能蠕变!这就是特殊功能的制作方式!

软件开发通常是一个流动的艺术过程,您可以为遇到的问题绘制解决方案。这些解决方案通常会成为极好的拼图,可以为向客户推荐新的和令人兴奋的功能提供低垂的果实。

为您描述一个典型的编程过程。它是如何开始的?你休息吗?你有什么仪式/习惯来陪伴它吗?

首先,消除你的干扰,让自己感到舒服。

我总是从一个小的“热身”会议开始我的编码日,通过创建一个空项目,做一些小实验,尝试一个新组件,或者玩我想学习的 IDE 功能。

接下来,查看即将到来的编码会话(以帮助刷新您在过程中的位置),准备会话所需的任何研究,并尝试将会话分解为合乎逻辑的“完成步骤”(您将在那里休息)。

在编码时,如果您确实遇到了需要思考的难以解决的问题,请考虑休息一下(并随意思考问题和可能的解决方案)。

最后,当你结束你的会议时,总是在评论行中,解释你要离开的地方,注意任何未决的问题,下一步是什么,并始终备份你的工作代码!

你在编程时听音乐吗?如果是这样,你能告诉我们一些曲目/艺术家/表演吗?

不。当我编程时,我对周围的环境一无所知。我可以在下午 5 点在游轮拥挤的丽都甲板上全力编码。我喜欢音乐,弹吉他,喜欢经典摇滚、爵士和蓝调。最喜欢的艺术家包括齐柏林飞艇、披头士乐队、戴安娜·克拉尔,以及几乎所有翻唱蓝调的人。我也喜欢波尔卡!

您是否使用任何方法或技术,例如敏捷、Scrum、看板、TDD?如果是这样,为什么?如果不是,为什么?

您知道 TMS Software 有一个出色的看板组件吗?

看板很好地应用于软件开发,简单易行。

此外,多年来,微软出版社史蒂夫·麦康奈尔 (Steve McConnell) 所著的“代码完成”一书中讨论的推荐技术对我很有帮助。

成为开发人员 Joe C. Hecht 是什么感觉? 用一杯 TJoe

你跟踪错误吗?如果你这样做,你有什么建议?

我肯定会跟踪错误!

我是老派,所以除非客户发送了一个跟踪系统,否则我会保持非常简单,使用(最多)一个三层评论系统。

单元顶部的注释、代码接口和实现部分中的注释以及包含用于跟踪它们的概述的 bugs.txt 文件。

如果事情变得复杂,我可能会使用我拥有的看板模板应用程序。

你收到的最好的编程建议是什么?

来自 Anneke Leigh(Borland):“不要通过试图学习所有东西来过度学习——这不是你已经知道些什么,而是当你需要它时你能如何利用你的资源找到答案”。

来自 Heather Lathum (Borland):每天花几分钟时间试用一个 Delphi 组件。

你在与客户业务洽谈中被问到的最好的问题是什么,你是如何处理的?

谈判技巧问题!我概述了如何解决问题(无需找出确切答案)。如果迫于压力需要一个确切的答案,我会解释说确切的答案是有效的,并询问他们是否准备好开始工作或计费周期。

你有没有经历过非常顺利的技术业务洽谈——如果是这样,你对别人有什么建议?如果你经历了一场灾难性的业务谈判,出了什么问题,你需要一个拥抱吗?

我最喜欢的采访是在 Borland!它在各个层面都很完美。这就像梦想成真。

最大的灾难是在白板上录制描述的大型调试合同。我透露了太多关于我将如何解决公司不同编程问题的信息(他们在没有我的情况下抄袭使用了我的解决方案)。

下一个最大的灾难是我真正想要的合同的大型洽谈会议,他们想要我为他们开发。除了一位(导演)外,我得到了所有人的压倒性认可。也许她今天过得很糟糕,因为我感觉到了她的一些负面情绪和摩擦。我应该采取一些主动来改变潮流,只需与她进行一些额外的互动,但相反,我依靠多数规则来取得成功(和失败)。

建议:不要穿得太多,不要泄露你的名片,并尝试与任何可能阻碍你成功的人产生共鸣。

成为开发人员 Joe C. Hecht 是什么感觉? 乔的网站

优秀的软件开发人员:

编写清晰、简洁、结构良好且易于理解的代码。

使用命名良好的变量、过程和参数。

记录不完全清楚其目的的代码。

始终展望未来利用手头代码设计的机会。

一个糟糕的软件开发人员:

编写难以理解的草率、混乱、结构不良的代码。

使用简短的、神秘命名的变量、过程和参数。

没有为未来的增强留出余地。

成为开发人员 Joe C. Hecht 是什么感觉? 德尔福标志

iPhone、Android、其他——为什么?

我都有。亲自。我更喜欢“其他”,尽管它几乎不可用。

iPhone 是有限的,Android 更像是生活在狂野的西部。

我们生活在这样一个时代,我们的手机应该能够用作安全的移动计算机,您可以插入全尺寸的显示器和键盘,并将其用作桌面。

真正的 Microsoft Windows 桌面操作系统能够在这些微型 ARM 设备上运行,甚至可以在仿真模式下运行 x86 应用程序,并且在大多数情况下可以提供合理的用户体验。我已经用过了。

毫不奇怪,一块 4 核、2 GHz 的主板和几 GB 的 RAM 确实可以提供相当不错的桌面体验。

当然,一个小的 ARM 板在严格的数字运算中并不是火箭,但在今天,我们应该能够轻松地将庞大的计算任务卸载到云端颈椎枕

我派了两个孩子在 ARM 平板电脑上使用 Windows RT 进行拼贴。效果很好,孩子们很喜欢。我仍然拥有这些平板电脑,并且仍然做得很好。

经过调整的 Linux 桌面在 ARM 上几乎是神奇的。

没有在 Ubuntu Touch 系统中投入更多的工作真的很遗憾。世界确实需要一个出色的移动操作系统,而平台不是“拥有”的。

对于开发人员:PC 还是 Mac?为什么?

什么,没有 Linux 桌面选项?

我主要是 Windows 开发人员,我确实喜欢 Widows,但我对操作系统所采取的方向一点也不满意。

Mac 在为所有类型的 VM 提供服务方面做得很好,但是,我根本不是 OSX 的忠实粉丝。

真相?我将 Linux 作为桌面主机运行,在 VM 中运行 Windows,并通过 VNC 访问 OSX。

你希望被人记住的一件事是什么?

帮助程序员,残酷的诚实。

好与坏,我的意思没有伤害,只希望从中得到好处。

由于使用我的红笔进行代码审查,我失去了客户。客户得到了真相,但是,我有一些实际上希望验证不良做法。

成为开发人员 Joe C. Hecht 是什么感觉? Dalia Prasnikar 的 Delphi 事件库和异步编程

最好的开发者/黑客/技术/极客电影是什么?

我喜欢关于历史和科学的纪录片。我确实喜欢星际之门(电影和系列)。我得到了一件真正的 Stargate SG-1 军用夹克,有时我在公共场合穿着它时会受到敬礼。

任何程序员都不能没有:

Delphi、Beyond Compare 和 NotePad++。你还真正需要什么?

哦,C++ Builder!升级到 RAD Studio!

如果拍一部关于你生活的电影,你想让谁扮演你?

格伦坎贝尔或吉米佩奇。

您有想要提及的书籍、产品或服务吗?

Dalija Prasnikar [Embarcadero MVP] 有两本非常有价值的书,每个 Delphi 程序员都应该拥有:“ Delphi 基于事件和异步编程”和“ Delphi Memory Management for Classic and ARC Compilers ”。

Danny Thorpe 的“ Delphi Component Design ”是必须的(即使对于 C++ Builder 用户)。即使您不设计组件,书中也有很多精彩之处。

微软出版社史蒂夫·麦康奈尔 (Steve McConnell)所著的“代码完成”一书在我学习如何巧妙地设计和格式化代码以最大限度地减少错误方面对我很有帮助。

Scooter Software 的“ Beyond Compare ”是一款不可缺少的产品,可用于所有桌面平台,并且与 RAD Studio 编辑器完美集成。获取完整的产品,并学习使用它!

TMS Software [Embarcadero 技术合作伙伴] 为 RAD Studio 提供了几乎无穷无尽的优秀组件列表。这些组件设计精良,得到了很好的支持,并且经常更新。他们还有一个“全部组件许可证”,可以让您获取 TMS 目录中的所有内容。告诉他们 TJoe 告诉你来的!

你有一个人们可以访问的网站吗?

https://code4sale.com

您首选的潜在客户联系方式是什么?

https://code4sale.com/email/JoeHecht/


多么棒的采访啊!乔,谢谢你跟我交谈。


桌面第一用户体验峰会


使用 RAD Studio、Delphi 或 C++Builder 缩短开发时间并更快地进入市场。
设计。编程。编译。部署。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值