与 Dave Auld 的程序员访谈






4.99/5 (27投票s)
欢迎阅读我们持续进行的 Code Project 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和最头疼的问题。在本期节目中,我们将采访 Dave Auld,一位 CodeProject 上持续闪耀的明星。
欢迎阅读我们持续进行的 Code Project 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和最头疼的问题。在本期节目中,我们将采访 Dave Auld,一位 CodeProject 上持续闪耀的明星。
你是谁?
大家好,我叫 Dave Auld。我喜欢别人叫我 Dave,而不是 David,因为我觉得叫 David 听起来像是我要被我妈妈训话了!我今年 40 岁,已婚,有两个精力充沛的女儿,她们似乎占据了我大部分的家庭时间,但我想,这大概就是成为一个父亲的乐趣之一吧,你慢慢就会习惯!
我住在苏格兰的 阿伯丁,这里当然也有一些劣势,比如天气可能寒冷潮湿,甚至偶尔会有来自北海的冷风带来的浓雾。不过,当阳光出现时,“花岗岩之城”——正如它闻名于世那样——当阳光照射在花岗岩的石英上时,景色绝对壮观。当然,也有它的优势。阿伯丁是“欧洲的石油之都”,这造就了一种独特的、难以在别处找到的生态系统。
您做什么?
我的职业生涯至今(始于 1989 年 8 月)都与石油行业息息相关。目前,我是一名 OIM(海上平台经理),用维基百科的说法是:OIM 是英国大陆架上最资深的海上平台经理。在这个职位上,我最终负责平台上所有人员的健康、安全和福祉。我还负责确保平台实现业务目标,其中最重要的一点是持续不断地将石油从地下抽出并通过 福蒂斯管道系统 输送到岸上。我工作的平台 Forties Charlie 平均每天约有 150 人在岗,相信我,他们中的一些人的表现比我的孩子们还糟糕!不过,海上工作环境也有其最好的好处之一,那就是休息时间。工作两周可以换来三周的休假。这段时间可以让你与家人朋友共度美好时光,也能让你找到项目/爱好/兴趣来打发时间。
我并非一直担任管理职位,我的本职是仪表和控制系统。这个行业才真正让我的 IT 兴趣得以培养,并不仅仅停留在表面。
我还没有参与过任何已经售出或向公众提供的商业产品,但我确实利用我自学的技能编写了一些内部工具。这些工具的范围很广,从简单的 DDE 测试器(动态数据交换,用于测试 Wonderware Intouch 系统和 TCS6000 控制器之间的 DDE 连接),到一个旨在简化常规油井测试报告编写并标准化操作员工作流程的油井测试应用程序。此外,还有一套基于 Excel VBA 的生产力工具,其中一些仍在沿用,还有一个告警/事件工具,用于访问历史告警/事件数据库日志,以便诊断故障并确定根本原因。
我还花了很多时间构建 OSISoft Processbook 显示屏,用于查看我们工厂数据存储库中的历史和实时数据,该存储库将所有数据从各种工厂控制系统汇总到 OSISoft PI 服务器。Processbook 是另一个工具,其显示屏和代码都是围绕 VBA 构建的。
我的雇主赞助我完成了我的计算机科学(荣誉)学士学位(2012 年毕业),并在我的毕业设计中开发了一个集中的基于 Web 的 KPI 管理工具,该工具复制了一个现有的基于电子表格的方法。这当然给了我极大的热情,让我现在渴望替换掉我们现有的许多陈旧且笨拙的业务流程,并让类似的项目投入日常使用。我还将这个项目作为学习 C# 和 ASP.NET MVC 的驱动力,从而摆脱 VB 和 Webforms,因为相比之下,它们显得过于笨拙。
您的开发环境是什么?
在家,我的主要开发机器是一台自己组装的机器。Core i7 IvyBridge 3.5GHz,32GB 内存,GTX690 显卡,256 GB SSD + 2TB HDD,以及一个 30 英寸的戴尔 2560x1600 显示器。是的,它运行起来相当流畅!
外出时,我有一台老旧的 Acer 6935 4GB(快要退休了,正在等待最新的 15 英寸 Zenbook 出货!),还有一台英特尔超极本,是我去年比赛获得的。
家里还有各种各样的笔记本电脑和台式机,有些放在阁楼上,用于处理各种零碎事务。
我的大部分开发工作都在 Visual Studio 2012 Pro(使用 C#)中完成,而 MVC 开发中唯一真正使用的库当然是 jQuery(以及 jQueryUI)。在处理 Web 相关内容时,我觉得 Chrome 浏览器开发者工具是神器(与 IE 的同类工具相比!)。也许这就是我写了一篇关于它们的文章的原因。
去年的超极本竞赛非常有趣(也很辛苦)。我非常享受开发我的 UltraDynamo 作品,并在传感器平台上玩耍的经历。我肯定想在这方面继续深入。那个应用程序还有很大的潜力,只是需要找到时间。
我也想尝试一下 Kinect 框架,不知道为什么,也不知道会用它做什么,但它激发了我的一些想法。我在 Xbox 上有一个 Kinect,所以没有借口,只是时间因素再次成为阻碍。
您对哪些新工具、语言或框架感兴趣?
现在我已经完成了学业,我开始找到更多时间去探索和尝试。我想更深入地掌握 Python(以及 Django),尤其是在树莓派上。在网站方面,我想尝试一下 Twitter Bootstrap,也可能去深入了解一下 MongoDB。
我脑子里有一些“想法”在盘旋,我想把它们发展到某种原型阶段,也许有一天能将其中几个变成商业项目。
你对编码最头疼的是什么?
我最大的痛点是**一致性**。我不太在意别人如何编码,只要他们在 A 类中使用的某种方法,在项目的其余部分也能坚持下去。
另一个是**缺乏注释**。我在这方面也很内疚。我不知道有多少次我回过头去看很久以前某个项目里的东西,结果却不理解我当时在做什么,或者为什么那样做。
对于类和公共方法,我非常倾向于使用**UpperCamelCase**;对于参数和变量,则使用**lowerCamelCase**。代码风格通常是 Horstmann 的一个变体,代码块从新行开始,但不在第一个“{”的同一行写语句。
您是如何开始编程的?
我小时候,我父母给我买了我第一台电脑。一台经典的 Commodore 64。我还记得那些从电脑杂志上抄写一长串代码,结果却只得到一个熟悉的蓝底白字的“Syntax Error”的日子。在那之后,我拥有了一台 Amiga 500 和一台 Commodore CDTV。
直到 1989 年我加入 BP 的学徒计划,我才真正接触到了一个完整的计算环境。我们最初尝试用 BBC Basic 编写简单的程序,然后进入直接编写汇编程序,通过将十六进制代码输入一个简单的 CPU 开发环境(现在记不清是什么了)。
当我(1992 年 11 月)作为四年级学徒登上海上平台后,我对 PC 的兴趣开始萌芽。仪表部门很幸运地拥有了唯一的一台真正的 PC(好吧,那是一台运行 Windows 3.1 的 386 笔记本电脑),我们都在午餐时间轮流玩纸牌和扫雷!当然,这台笔记本电脑还有更重要的用途,那就是维护和编程控制系统控制器,它们是 Eurotherm TCS6000 系列 P&ID 控制器。你可以通过连接预定义块、设置参数等方式在一个图形界面中编程,然后将它们下载到控制器中。随着系统从气动控制进一步发展,PLC 也开始出现,我们的火灾和燃气系统采用了 GeFanuc Series 5 和 Series 6,这最终导致我深入研究了梯形逻辑等。
随着越来越多的系统不断发展并随后被替换,这促使我深度参与了一个主要的控制系统集中化项目。该项目建立在 Emerson DeltaV 之上,它有一个使用 Visual Basic for Applications 的图形前端,以及一个具有拖放 IDE 式环境和某种 ST(结构化文本)语言的流程逻辑系统。
也是在海上工作期间(漫长的寂静夜班),我开始自学 Visual Basic(从 V3 版本开始)。出于某种原因,我彻底迷上了它。
你最喜欢/最讨厌开发者社区的什么?
喜欢:其他人乐于助人的意愿,如果你问对了方式!以及已经公开的、海量可用的知识。
讨厌:那些想要不劳而获的人,也就是说,他们不愿意自己做任何努力,甚至连一个有效的问题都提不出来。
您认为自己在 10 年后会是什么样子?
这取决于接下来会发生什么!
- 选项 A:继续在石油管理层晋升(需要调回陆地)。
- 选项 B:领导一个团队开发和统一/集中我们所有的内部业务流程,消除碎片化,并彻底移除那些不兼容或无法与其他应用程序共享数据的独立闭源应用程序。
- 选项 C:创办一家成功的公司,无论是 IT 服务公司还是面向消费者的产品公司。
- 选项 D:中彩票然后退休,整天就做一些打发时间的爱好……
如果你给一个崭露头角的程序员一条建议?
积极投入并尝试,不要害怕犯错误,也不要害怕礼貌地寻求帮助!
写一些文章,这确实有助于发展你的沟通技巧,同时也能回馈社区。