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

与 Oren Eini 的程序员访谈

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.96/5 (17投票s)

2013年5月1日

CPOL

4分钟阅读

viewsIcon

26423

欢迎来到我们持续进行的 Code Project 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和痛点。在本期节目中,我们采访了 Oren Eini,他可能因其在 RavenDB 上的工作而最为人所知。

欢迎来到我们持续进行的 Code Project 开发者访谈系列。在本系列中,我们将与开发者们交流他们的背景、项目、兴趣和痛点。在本期节目中,我们采访了 Oren Eini,他可能因其在 RavenDB 上的工作而最为人所知。

你是谁?

我叫 Oren Eini,我还有一个昵称 Ayende Rahien,原因不便在此详述。我住在 以色列的哈德拉(特拉维夫以北约一小时车程),大部分时间也在这里工作,尽管我经常出差。

我主要致力于我们的 NoSQL 文档数据库:RavenDB。我的职位名称五花八门,从“巫师”到“哦不!又是他。”

我还经常在 Ayende @ Rahien 上写博客。

您做什么?

我参与过不少开源项目:Rhino MocksNHibernateRhino Service Bus 等等。

在过去的几年里,我一直致力于改善数据管理。具体来说,我们开发了一系列性能分析器,以简化使用 OR/M 的工作。我们有 NHibernate ProfilerEntity Framework ProfilerLinq to SQL ProfilerJava 版 Hibernate Profiler

在真正理解了关系系统开发人员的问题后,我决定忍无可忍,着手开发一款不会让我每时每刻都想跳窗的数据库。这就是 RavenDB 的诞生。它是一款由开发者为实际的 OTLP 应用编写的数据库,它能让你轻松开发应用程序,因为它不会阻碍你的前进。

大多数日子里,我都会先查看我们产品的邮件列表,回答支持问题,然后要么修复 bug :-(,要么开发新功能 :-)。

您的开发环境是什么?

我主要使用 C# 和 VS 2012 进行开发。我们仍在维护 .NET 4,但我们刚刚添加了 async 目标桥 以简化工作。

我目前的机器是一台 3.2 GHz 四核处理器、8GB RAM 和 SSD 硬盘的机器。我对 CPU 要求不高,但 RAM 和 SSD 对良好的性能至关重要。

在工具方面,我无法说 JetBrains 的好话,我们为所有项目都使用了 [ReSharper](http://www.jetbrains.com/resharper/)、YouTrackTeamCity。它们是有效的工具,不会影响我们的工作。

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

我喜欢使用 C# 5 的 async,而且我可能会在那里做一些“邪恶”的事情。

Node.js 引起了很多关注,但当我以前看它时,最主要的亮点是其事件驱动的特性。现在我想从架构的角度来审视它。更具体地说,JavaScript 的限制如何促使单函数每模块的常见架构。

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

痛点?SELECT N+1 绝对是列表中的首位,但通过 catch() {} 进行错误处理会让我勃然大怒。

我基本上遵循 .NET 标准指南,再加上 R# 告诉我的任何内容 :-)。

您是如何开始编程的?

我在十几岁的时候就开始编程了。我记得玩过 Logo 绘图机器人,然后转向 VB4,接着是 VB6,最后是 C++

大约在 2001 年,我开始听说 .NET Framework 这东西,在怀疑 MS 的营销团队有多愚蠢之后,我决定尝试一下。

以下是我的第一个 C# 程序

public class Program

{

   Form form;



   public static void Main()

   {

         new Program().form.Show();

   }

}

这个程序因 null 引用异常而失败,我就是搞不清楚为什么。对于我这个 C++ 程序员来说,form 变量应该已经用默认的构造函数分配好了。

我花了一段时间才明白这实际上是一个指针。一旦我明白了这一点,花费的时间比我愿意承认的要长,我就用 C++ 写了完全相同的程序。

在 C++ 中,我得到了

Invalid pointer access: 0x01230accd

与 C# 错误信息(告诉我 null 引用异常和发生在哪一行)进行比较后,我知道了我想要去哪里。

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

我认为这产生了很大的影响。我最初是自己工作,所以很多东西都是从网上学来的。即使是今天,你几乎可以从我的博客上看出我在做什么。我早期的许多项目都深受其影响。

我们为所有项目都使用 GitHub,我可以肯定地说,这极大地改变了我们处理软件的方式。

我最不喜欢开发者文化的一点是,人们倾向于抓住某个东西——今天可能是 CQRS/事件源,几年前是 DDD,更早之前是 TDD——并宣称它是成为优秀开发者的必要条件。通常不需要任何额外的背景信息。

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

去重读关于基础知识的书籍。从如何实现内存管理器到网络协议,再到项目失败的案例研究。拥有良好的基础是在开发方面最重要的方面,不仅是一两年,而是作为一项职业。

Oren Eini 的 Coder 访谈 - CodeProject - 代码之家
© . All rights reserved.