65.9K
CodeProject 正在变化。 阅读更多。
Home

与 Graham Lee 的程序员访谈

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (11投票s)

2012年8月22日

CPOL

5分钟阅读

viewsIcon

18528

欢迎来到我们持续进行的 Code Project 访谈系列,在该系列中,我们与开发人员讨论他们的背景、项目、兴趣和烦恼。在本期中,我们采访了格雷厄姆·李。

欢迎来到我们持续进行的 Code Project 访谈系列,在该系列中,我们与开发人员讨论他们的背景、项目、兴趣和烦恼。在本期中,我们采访了 格雷厄姆·李

你是谁?

我是格雷厄姆·李,在英格兰 皇家莱明顿温泉镇 的一家移动应用开发公司 Agant 工作。我将时间分配在开发 iOS 应用和为其他移动应用开发者提供安全咨询服务上:我的官方头衔是“安全专家”。

您做什么?

我在 Agant 工作的时间还不长,所以还不能指向我们任何一个产品说“我做的”,但我对目前正在进行的项目感到兴奋。

我从事安全工作始于我在 Sophos 公司担任其 Mac 防病毒应用的主开发人员。

离开那里后,我独立工作了几年,并出版了一些书籍:《专业 Cocoa 应用安全》和《测试驱动 iOS 开发》。现在是时候让我少说多做了。

我的职业生涯经历相当多样化,除了苹果技术之外,我还曾从事过 JavaPerlUNIX C 项目。

您的开发环境是什么?

由于我主要编写 iOS 和 Mac 软件,所以我到处都有 Mac:工作时使用 iMac,其他地方使用 MacBook Air。

我通常会同时打开 AppCodeXcode,因为 AppCode 有一个更好的 Objective-C 编辑器,但无法处理 Xcode 使用的接口和数据建模格式。

我编写 Java 代码时使用 Eclipse,部分原因是我之前曾从事过一个 RCP 应用。不过 AppCode 让我考虑转向 IntelliJ

您对哪些新工具、语言或框架感兴趣?

目前我正密切关注 Windows 8 和 WinRT,并试图抽出时间深入研究。很高兴微软在触摸应用设计方面采取了与 iOS 和 Android 不同的方向,并且他们在 Windows 这个摇钱树上承担了重大的风险。Metro UI 看起来很棒,只是还有待观察开发者们将如何接受它以及我们能用它做什么。

您最讨厌的编码习惯是什么?

我对命名约定相当随和——当与其他开发人员合作时,我们通常能找到一种通用的风格来使用,即使这意味着要改变我放置大括号的位置。

我目前最大的痛点是被称为“术语驱动开发”(Buzzword-Driven Development, BDD)或“简历驱动开发”(Resume-Driven Development, RDD)的技术:放弃当前的工作技术,去追逐新潮。有很多令人兴奋的新语言和框架,但在开发者们转移到下一个事物之前,我们几乎没有时间去发现和解决现有问题。

有时我想,如果将精力用于改进现有 Web 框架,而不是用于制作本周的新 Web 框架,那么世界上就会有更多好的软件。

您是如何开始编程的?

我出生的第二年,我父亲买了一台 Dragon 32(对美国读者来说,这是 Tandy CoCo 的克隆机),所以我从小就从杂志上抄写 BASIC 程序。

然后,在 20 世纪 90 年代,我拥有了一台 Amiga——我还在进行 BASIC 编程,但也开始学习 Pascal 和 C(以及 Amiga E,它现在已经不重要了)。恰好我大学的计算机课程是用 Pascal 教的,所以那些下午过得很轻松!

我的第一份有偿编程工作是大学假期项目,用 Lisp 为 emacs 编写一个语法高亮模式。然而,当我还是学生时,我真正感兴趣的并不是 emacs——而是计算机实验室里的 NeXT 工作站。于是我学习了一些 Objective-C……然后就有了今天的我。

开发者社区是如何影响您的编码的?

如果不是社区,我可能不会比 2006 年的自己进步多少。我现在几乎住在 Twitter 上(我的账号是 @secboffin):除了与同行进行良好的讨论外,我还在那里收到和给出很多推荐。

我很久以前就删除了我的 LinkedIn 账号,因为我从未用过招聘人员,而且他们是唯一与我联系的人。

StackOverflow 在一些特定的技术问题上很有用,我喜欢 programmers.stackexchange.com 上关于实践和原则的更广泛的讨论。

在从社区学习方面,我喜欢了解我直接领域之外的人在做什么,以及思考如何将其应用到我的工作中。这通常意味着当我参加会议时,我会加入我经验很少的议题。我最近在 GOTO Copenhagen 上谈论移动开发,但花了很多时间听 ClojureF# 程序员的演讲。

我对社区运作方式的主要不满之处在于,存在很多“回声室”——人们待在小圈子里重复其陈词滥调。最令人恼火的是,当他们说开发者需要改变工作方式,但从不告诉我们如何改变时。如果我想表现得虚伪,我可以将这种现象的典型症状描述为“陈词滥调驱动开发”或“推特驱动开发”。这意味着会议演讲成为演讲者获取热门短语转发的工具,演讲嘲笑“失败”而不告诉听众如何改进。你在安全专家(“开发者应该做得更好”)和用户体验专业人士(“开发者应该做得更好”)中都能看到这种现象。

告诉我们怎么做,否则你就什么都没告诉我们。

您会对一个新兴的程序员提供什么建议?

除了获得编码经验,关键还要学会抬头看代码之外,从更宏观的角度审视代码。思考你现在正在做的项目:你编写的代码如何与系统的其他部分交互?人们将如何使用它?人们是否会尝试用它来做你没有预料到的事情——或者你是否为了永远不会满足的极端情况编写了过多的代码?最重要的是,你可以和谁交流以获得更多答案?

© . All rights reserved.