与 Danny Severns 的程序员访谈





5.00/5 (7投票s)
欢迎阅读我们正在进行的科码集市开发者访谈系列,在此系列中,我们与开发者们交流他们的背景、项目、兴趣和痛点。本期我们采访了丹尼·塞弗恩斯,他是 Dunn Tire 的 IT 总监,并且深耕于 COBOL 业务系统。
欢迎阅读我们正在进行的科码集市开发者访谈系列,在此系列中,我们与开发者们交流他们的背景、项目、兴趣和痛点。本期我们采访了 丹尼·塞弗恩斯,他是 Dunn Tire 的 IT 总监,并且深耕于 COBOL 业务系统。
你是谁?
我叫丹尼·塞弗恩斯。我是 Dunn Tire 的 IT 总监,Dunn Tire 是一家在英格兰新地区拥有 35 家门店的轮胎分销商和零售商。虽然我现在在纽约州 布法罗 的总部工作,但我的 达拉斯口音 暴露了我南方的根源。
我偶然进入了编程领域,但之所以坚持下来,是因为编程提供了我之前职业(会计/财务)所缺乏的创造力。在我编程生涯的初期,我从事的是业务系统工作,主要使用 COBOL 编写应用程序。现在,我正在对遗留应用程序(主要是 COBOL)和系统进行现代化改造。
您做什么?
遗留应用程序的现代化改造过程通常涵盖三个层面:业务逻辑、数据和表示层。我参与的项目包括典型的业务交易,从销售点 (POS) 和订单录入,到仓库配送和库存,再到会计和账单处理等等。
为了理解我正在进行的应用程序现代化改造背后的业务逻辑,我喜欢观察用户如何使用他们现有的应用程序。我坚信要深入到“街头巷尾”的层级去理解业务流程是如何流动的。订单录入就是一个很好的例子。订单是如何进入公司的?是通过电话、传真、电子邮件、互联网?业务流程往往是流动的,而且会频繁且轻松地发生变化,而应用程序随着时间的推移变化却没那么频繁。
除了观察业务流程,我还分析数据方面(例如,数据历史上存储在哪里)以及数据是如何构建的。在现代化改造项目中,我经常需要将数据从平面文件迁移到关系型数据库。因此,我需要就如何处理数据做出决策。例如,任何类型的交易或临时文件(日志、交易文件等)都需要使用为速度而设计的高性能技术进行处理,而历史数据(用于报告目的)通常需要迁移到关系型数据库以便于查询。
在表示层,我通常将基于字符的应用程序转换为图形用户界面 (GUI)。我认为 GUI 的目的不应仅仅是为了看起来漂亮。GUI 应该通过使用户能够多任务处理,而不是像遗留模型那样被强制进行线性单任务处理,从而提高用户的工作效率。
我的总体理念是,我创建的应用程序应该具有灵活性,并且能够在不触碰或更改源代码的情况下进行更改。也就是说,业务逻辑、数据和表示层应该保持分离,以便我自己或未来的其他开发人员能够轻松地更改其中任何一层而不影响其他层。例如,如果明年出现了一个很棒的新浏览器界面,我想更新到它,这不应该影响现有的业务逻辑或数据层。
我非常喜欢编程的一点是它的多样性。一项我预计只需要 10 分钟的任务,实际可能需要四个小时,而我分配了四个小时的任务可能只需要不到 15 分钟。
您的开发环境是什么?
多年来,我学习了五种编程语言,而 C 是我最喜欢的,因为它功能强大。
然而,我主要使用 COBOL。在业务应用程序方面,COBOL 无可匹敌。我可以给出三个主要原因:
从数据角度来看,COBOL 的设计旨在以其他任何语言都无法比拟的方式处理业务数据。
通常,业务应用程序是面向交易的,而 COBOL 在处理大量交易方面表现出色。
COBOL 是面向记录的。
我一直坚持使用 COBOL 的一个主要原因也是它的一项重要特性,那就是它可以在所有平台上以一套代码运行。许多对 COBOL 知之甚少但却错误地认为直到 Java 出现之前才可能实现这一点,但 COBOL 开发者早在 Java 出现之前就已经利用了这一重要特性。
因为我一直支持多操作系统环境,COBOL 的完全可移植性是我坚持使用该语言的重要原因。
因为 COBOL 是一种业务语言,它本身并不适合与操作系统或硬件进行接口,尽管语言中已添加了许多功能来处理这些问题并使开发人员免受这些接口复杂性的影响。但是,当没有编译器功能提供操作系统或硬件接口解决方案时,总可以通过 C/C++ 来处理编码问题,因为 COBOL 与这些语言以及其他语言都能很好地进行接口。
我在 Windows 环境中使用 SlickEdit 工具,但我正在为运行在 UNIX/Linux 上的应用程序进行开发。自 20 世纪 90 年代初以来,我一直使用 Flexus GUI 工具,这些工具在使用他们的软件(瘦客户端技术)时,允许在所有操作系统平台上使用 Windows GUI 界面。Flexus 工具独立于操作系统和编译器,使得表示层与业务层和数据层一样具有可移植性。
在 Dunn Tire,我和我的团队正在将应用程序从 Micro Focus COBOL 迁移到 Veryant isCOBOL。Veryant 编译成 Java 类文件,所以我们实际上是通过利用我们遗留的代码库,在不修改的情况下,从纯 COBOL 迁移到 Java。
尽管我们将使用纯 Java 进行未来的新开发,但由于我们使用操作系统无关的工具,因此不必强制我们转换或重写遗留代码。
为了减少迁移过程中对我们日常业务的潜在干扰,我们使用了 FairCom c-treeACE 数据库,该数据库具有广泛的 API,包括遗留和现代 API,以及灵活的开发环境,使我们的团队能够无缝地在关系型和非关系型系统之间移动,而不会对源代码产生任何影响。作为我当前项目的一部分,我和我的团队已将现有的 Micro Focus COBOL 转换为 c-treeACE 文件,并使用其 ISAM 层。这样做的原因之一是 ISAM 能够提供销售点所需的性能,在销售雪地轮胎的旺季,顾客对工作单或信用卡审批的缓慢处理没有耐心。C-treeACE 还提供了一个 SQL 层,允许我们查询、挖掘数据并构建在使用非关系型系统时很难实现的报告。
您对哪些新工具、语言或框架感兴趣?
我一直在关注 Oracle Swing 作为 Java 框架,因为我的团队将把移动设备集成到我们的仓库中,用于配送、库存跟踪等。
您最讨厌的编码习惯是什么?
我和大约 95% 的程序员一样,不得不说文档是我的编程痛点。文档就像享用完一顿美餐后的厨房里堆积如山的脏碗碟。
我认为“方便”(我不能说我有最喜欢的)的命名约定是匈牙利命名法,因为它通过去除连字符并使用首字母缩写和大小写混合,缩短了 COBOL 的命名约定。
因为我正在对可能长达 30 年的应用程序进行现代化改造,所以我遇到了只有原始程序员才能理解的缩写。因此,我不喜欢那些无法很好地表示其含义的、高度缩写的短名称。我希望未来的程序员在查看我的应用程序时,能够更好地理解他们正在处理的内容!
您是如何开始编程的?
正如我在开始时提到的,我是偶然进入编程行业的。我的职业生涯始于注册会计师 (CPA),随后在三家不同的跨国公司担任过财务主管和首席财务官。
其中第一家公司使用服务局进行数据处理 (DP)。在我任职期间,我们将 DP 引入了公司内部。由于服务局不出售他们的应用程序,我们决定自己复制它们。几年来,DP 经理和我一起合作复制了这些应用程序的功能。
完成该项目后,我去了下一家公司,那里的总账系统是由一位电气工程师编写的,而且不幸的是,它的运行方式就像一位电气工程师的代码!(猜猜这需要财务专业人士才能看出来。)因为我一直不明白为什么 DP 人员声称要花费 20 个人的年数才能将账本左侧的日期改为右侧,所以我决定自己动手,报名参加了编程课程。在这些课程中,我发现我喜欢编程的创造性,从那时起我就一直在编程。
开发者社区是如何影响您的编码的?
开发者社区在互相帮助、分享知识和代码解决方案以解决业务问题方面做得非常出色。我使用了专门的邮件列表或论坛与其他 COBOL 开发者保持联系,寻求和提供帮助,以解决问题并应用当前技术。
我没有使用 Twitter、LinkedIn 或其他社交媒体论坛作为交流技术信息或进行讨论的来源。
多年来,我最活跃的是 Flexus 邮件列表,它一直是一个非常有价值的工具。我能够为多年来积累的知识库做出贡献。
我还是 CodeProject Daily Insider 的活跃读者,它引导我找到了许多有用的资源。多年来,我一直依赖 Code Project 解决 C/C++ 问题。因为 C/C++ 不是我的主要语言,所以我觉得我无法为论坛做出太多贡献。也许将来我能在这方面(关于 Java)做出贡献。
您会对一个新兴的程序员提供什么建议?
保持开放的心态并学习尽可能多的编程语言至关重要,这样您就可以拥有一个完整的编码工具箱来解决业务问题。
如今,大多数人不会在一个工作岗位上待超过五年,即使有这么长。他们永远不知道下一家公司需要什么样的技能。所以,不要认为 C# 是唯一值得学习的语言,而是要建立自己的语言技能集。您永远不知道何时会被要求编写驱动程序或需要过程式编码的任务。如果 C# 是您能使用的唯一语言来完成这类任务,那会让您感到沮丧。