与 Sacha Barber 的程序员访谈






4.95/5 (66投票s)
欢迎来到我们持续进行的 CodeProject 开发者访谈系列,在这里我们与开发者们交流他们的背景、项目、兴趣和最令他们头疼的事情。在本期中,我们找到了 CodeProject 会员 Sacha Barber。
![]() |
欢迎来到我们持续进行的 CodeProject 开发者访谈系列,在这里我们与开发者们交流他们的背景、项目、兴趣和最令他们头疼的事情。在本期中,我们找到了 CodeProject 会员 Sacha Barber。 Sacha 自 2003 年以来一直是 CodeProject 的会员,并且在此期间已成为社区的基石。他撰写了超过 120 篇文章,因其贡献获得了许多奖项,并且正如你将看到的,他热衷于分享他对编程的知识和热情。
|
你是谁?
我叫 Sacha Barber,我住在英国的海滨小镇 布莱顿,这里以其码头、岩石和海滩而闻名,也是伦敦爱好享乐者的老派聚集地。在我目前工作的地方,我没有官方头衔,因为我是一名受雇的顾问(没错,是承包商)。我工作的公司是一家 外汇(也称为 Forex 或外汇市场)公司,尽管我们也必须支持前端和后端功能。
您做什么?
我有些方面比较特别,因为我并非一直对软件感兴趣。我最初学习的是电子学,并在这方面工作了一段时间,然后才进入工业自动化领域,在那里我们编写软件来控制从造纸厂到化工厂(他们生产染发剂、牙膏等各种很棒的东西)和石油钻井平台上的各种设备。
在工业自动化领域工作教会了我软件。那时我使用一些非常奇怪的专有语言,它们比 C# 等任何高级语言更接近汇编语言,尽管我们也写了大量的 Visual Basic 代码。
在我离开工业自动化领域的时候,我看到它也开始使用高级语言,比如 .NET Framework,我是在 v1 刚刚发布的时候开始接触它的。我几乎是在第一次接触 .NET 后就爱上了它。
因此,我参与过许多这类项目,但我最终决定,正式的编程才是适合我的道路。我重返大学,获得了学士和硕士学位,然后再次进入广阔的世界寻找工作。在大学期间,我业余时间使用 .NET,也为人们提供 WinForms 和 SQL Server 的小项目。我也开始接触当时被称为 Sparkle 的东西,它后来成为了我们现在所知的 Expression Blend,基本上就是 WPF。
自从离开大学以来,我很幸运地在几家很棒的公司工作过,并完成了各种项目,包括 Web 和桌面项目。最值得一提的是,我为一个政府支持的认证/评估系统开发了一个 ASP.NET 网站,该系统需要连接到评估员将要远程使用的手持 PDA。
我也曾在电信领域短暂工作过,之后我转到了金融领域,在那里我主要参与了公司所有工具的完全重写。我们选择使用 .NET 3.5(现在是 4.0)进行重写,并使用 WCF/REST 服务和 SQL Server 2008,同时处理 MSMQ 和 WPF 前端。我们需要提供完整的业务功能,这意味着前端功能,如外汇交易,以及后端支付处理和分配功能,以及文档生成。这实际上是一个相当庞大的项目,并且使用了以下技术:
- WCF
- RESTful WCF
- LINQ
- LINQ 动态查询
- 实体框架
- 服务定位
- IoC 和依赖注入
- 使用 Java 与第三方 API 通信
- 套接字 (Sockets)
- 文档生成
- MSMQ
- 集成 Dynamics CRM
- NUnit
- Moq
- CruiseControl.NET, Nant 和 MSBuild
您的开发环境是什么?
我们是一个 12 人的团队,团队关系非常紧密。我们倾向于以敏捷的方式工作,尝试遵循 XP、单元测试、持续集成、两周冲刺等最佳实践。团队中的每个成员都拥有一台性能强劲的 Dell 电脑,配有 2 台显示器、Visual Studio 2010 SP1、ReSharper、SQL Server 2008 和用于源代码控制的 Perforce。
在框架方面,我们目前不使用太多。我们尽量减少第三方框架的使用,但确实有一些依赖项:
- LINQ 动态查询,我们用它来编写一些更奇特的 LINQ 查询
- Castle Windsor 用于服务定位和依赖注入
- NUnit 用于测试
- Moq 用于测试中的模拟
- Nant 允许我们构建 Cruise Control .NET 将运行的脚本
- CruiseControl.NET 用于检出我们的代码、运行测试并构建部署包
您对哪些新工具、语言或框架感兴趣?
我非常喜欢 IOC 容器、MEF 和 WCF。因此,我最近一直在研究以下框架:
- MEF 2 Preview 3,我目前正在一个副项目中对其进行使用
- WCF Web API,我认为它非常酷,并且真正让 WCF 实现了 RESTful
- AutoFac 看起来是一个相当不错的 IoC 容器
在其他我希望有时间研究的事情方面,有一个长长的列表。我目前希望更多地了解 F#、Windows PowerShell、Windows Azure 和 jQuery。所以,当我有时间时,我将研究这些领域。
您最讨厌的编码习惯是什么?
我最头疼的是在字段名前面使用下划线 – 你懂的:_someField。这真的很让我恼火。
至于命名约定,我认为使变量名尽可能明确是最好的方法,例如,将某个东西命名为“isDuplicationAllowed”而不是“dups”。在大小写/缩进方面,这取决于不同的工作和一些强制执行的工具,比如 StyleCop。
说实话,我对此持顺其自然态度,没有什么特别想说的。
您是如何开始编程的?
我大约在 16 岁左右开始编程,但直到我进入工业自动化领域才真正投入进去,当时我真正开始接触它,并学会了真值表、逻辑以及 if、else、switch 等控制流语句的乐趣。我确信你也会同意,这真是太棒了。
我的第一台电脑是 Commodore 64,配有用于游戏的外部磁带加载器,你得等很久才能从磁带加载《GhostBusters》,结果在加载的最后 2 秒钟时崩溃了。真是太棒了。
开发者社区是如何影响您的编码的?
我喜欢阅读别人的博客,并从中获得很多好东西。至于 Twitter、LinkedIn 和类似的东西?叫我老派吧,但我一点也不使用它们。我的时间已经够少了,没空发推特记录我的每一个动态。至于 LinkedIn,从我看到的情况来看,它基本上是一个求职机构工具,招聘人员/招募代理使用 LinkedIn 的数量令人震惊。不适合我。
您会对一个新兴的程序员提供什么建议?
趁年轻开始。学习不同的语言,这能让你对它们有更深入的理解。并且,如果可能的话,与比你更聪明或至少志同道合的人为伍。这真的能让你变得更好。多阅读,这也有帮助。另外,尽量保持工作与生活的平衡,你需要它。