以下是与 Dan Silivestru(bitHound.io 的 CEO 和联合创始人,这是一款自动化的开源代码质量分析软件)电话采访的部分文字记录。
您最初来自哪里?
我出生在罗马尼亚,在那里住了六年,什么都不记得了。然后我的父母去了以色列七年,然后搬到了加拿大魁北克省的蒙特利尔,又在那里住了七年。然后我搬到了安大略省,现在还在这里。
您是什么时候开始做 bitHound 的?
我们于 2013 年 11 月开始,我于 2014 年 1 月全职投入。
bitHound 现在有多少人?
我们有九个人。一位 CTO、一位 COO、一个由四人组成的开发团队,以及处理运营和人力资源的员工。
bitHound 是什么,你们做什么的?
我们的核心理念是,编写代码很容易,但构建弹性、卓越的软件却很困难。在您前进的过程中,有很多东西可以被告知。我们从概念到今天分析项目,指出需要关注的热点,并就如何修复它们提出建议。我们跟踪您前进过程中的代码,以便我们可以说情况是变得更好还是更糟。
我引以为豪的一项功能是展示您的项目从 npm 和 Bower 等处获得的依赖项。它可以帮助您了解您引入到项目中的代码,然后从质量的角度对其进行排名。仪表板会显示您最新或过时的状态,并为您分配一个 bitHound 分数,该分数来自代码质量、可维护性和稳定性。然后,您可以根据质量水平选择更好的依赖项。您可以使用 bitHound 真正深入研究。
除了 JavaScript 之外,bitHound 是否支持其他编程语言?
目前仅支持 JavaScript,但将来可能会支持更多语言。我们认为,为了提供价值,我们必须深入研究一种语言,而不仅仅是最低限度的支持。我们运行近十几个不同的“评论家”或分析引擎,以获得“可操作的见解”。
(Remy:完全可以理解。源代码分析不是我所说的“微不足道”的问题......)
这不是一个容易解决的问题,它需要大量的时间和精力。我们已经为此努力了大约一年,并且仍处于封闭测试阶段。
bitHound 用户的体验如何?
我们努力使用户与产品的交互非常简单。我们认为,如果您的软件需要手册,那么您可能在某些方面做错了。
体验很简单:使用 OAuth 进行 GitHub 登录。您可以在每个存储库的基础上启用 bitHound。我们运行我们的分析,需要 2-20 秒,然后我们填写追溯的时间线。
最初的想法是,在第一个仪表板上,您将获得一个“鹰眼”视图:前五个优先级文件,您可以进一步展开列表。我们有很多用户是质量问题概念的新手,例如 linter、重复功能等。因此,我们没有呈现大量的信息,而是呈现前五个最令人担忧的文件,并用问题注释代码,以便您可以过滤和解决它们。您可以在仪表板上看到哪些依赖项已过时,并且我们还在开发一些即将推出的安全分析功能。
(Remy:这听起来对研究人员很有用。我在 RIT 的 HFOSS 课程中的学生必须将存储库分析作为我们每个学期 “Commarch” 作业的一部分。)
我们有一些学生使用我们的产品,并正在与教授建立联系。似乎直到最近,源代码控制才开始在大学 स्तर教授。在处理 JavaScript 时,它实际上并不能从编译中受益,linter 是救命稻草。学生们真的很感激。我们认为这些都是非常简单的事情。
bitHound 背后我们想要做的很大一部分是回答:“我们如何让人们构建高质量的代码?” 您必须将您的工作视为一种工艺。它是工艺,以及围绕软件制作的适当工具。
软件工艺是什么时候成为您的热情的?
这是您会被烧伤的事情之一。您在生产中被烧伤一次、两次,然后又一次。然后您会说:“我是怎么到这里来的?”
我是从软件开发过程中自学的。我学到的大部分东西都是“边做边学”的。经历过一些机构,有些让我变得更好,有些更糟。我职业生涯的前五年专注于按时交付功能。然后我接触到了这个概念:“如果您要偷工减料,您需要记录下来。” 当我们开始进行测试时,虽然前期工作量更大,但六个月后,我们看到了巨大的好处。即使系统变得更加复杂,您也有安全保障措施到位。您可以回去修复它。我们能够将错误数量保持在较低水平。
我们推出的是功能,而不是解决故障。
按功能成本计算,我们低得多。从长远来看,它可以让您的组织以更稳定、更快的速度前进。再说一次,在我加入的其他地方,他们正在进行第二次或第三次完全重写。这不是一夜之间发生的。我不是早上醒来就说:“测试,测试,测试。” 这是在被烧伤之后才发生的...
您是如何进入软件开发的?
在 滑铁卢大学,荣誉科学,然后是 荣誉物理学。然后我休学赚钱。当我在一家公司工作时,我有一个朋友在 IT 部门工作,而我在做电话方面的工作。我问他:“IT?你是做什么的?” 他给我看了 AS/400 系统和绿屏。我问:“我该怎么做?” 然后我才知道,我正坐在副总裁面前,要求做这件事。
我得到了一本 AS/400 手册,以及做这件事的机会和重大突破。我利用自己的时间做了几个星期,在那里工作了几个月后,我说:“这就是我想要的职业”,从此再也没有回头。一路上我遇到了一些非常棒的导师。我在那里工作了几年,然后进入“电子商务”领域做咨询。
是什么造就了一位好导师?您在哪里以及如何找到他们?
我遇到的导师最重要的特质,直到今天,都是无私。他们这样做是为了纯粹的帮助他人发展他们的工艺的乐趣。他们不是关于:“我教书是为了免费从你那里得到一些东西。” 显然,他们必须知识渊博,但您可以通过他们如何为人处世更多地了解他们作为导师的情况。
如果说我职业生涯的前五年是关于:“我如何编码?” 之后就是定义相互交互的组件。后来,在我的第一份咨询职位之后,我有了新的导师,提出了新的问题。
Dan:“我们应该编写测试......为什么?”
导师:“您如何知道组件之间的接口真正是什么样的?”
导师必须擅长他们的工艺,但您可以通过他们提出的问题了解很多。倾听他们如何进行开发以及他们提问的方式。
您的日常工作是什么样的?
我们在创业初期编写了很多代码,但我相信其中大部分已经被重写了。自从我们在 11 月下旬宣布获得融资以来,对我来说更多的是投资者跟进。我在代码环境和公司运营环境中都变得成熟了。我主要是在掌舵。日常工作包括大量的电子邮件、像这样的采访、与团队合作设定优先级/策略,是的,我仍然编写一些代码。但我不再处于关键路径上了 :P
您对自由和开源软件/FOSS 有什么看法?
我是一家公司 tinyHippos 的联合创始人,该公司成立于 2009 年,于 2011 年被 Blackberry 收购。愿景之一是开源 Ripple 模拟器。这件事发生了,而且非常棒。在“如何在 FOSS 中运行项目”方面,只有我们三个人参与进来。
我为他们接受了这个项目并将其捐赠给 Apache 基金会而感到自豪。它与 PhoneGap 并肩而立。在“如何培养社区”和“您如何成为 BDFL?”(终身仁慈独裁者)方面,我们获得了丰富的经验。有人推动社区中的项目向前发展。
在我们的整个职业生涯中,我们都热爱 FOSS,并在 bitHound 中不断使用它。我们的分析依赖于许多流行的框架。JSHint 用于 linting,esprima,async 用于回调结构,ZeroMQ 用于分布式并行计算平台。您可以查看我们去年在 JSConf 上的演讲,了解分布式复杂计算。
还有其他的吗?
是的!我们在整个解决方案中使用了 80 多个开源项目,但想到的几个是生产中的 d3、jquery 和 Polymer。
bitHound 在哪些方面做出贡献?
在创办这家公司之前,Gord Tanner 是 Apache Cordova 项目的核心贡献者;他创建了 Ripple 模拟器,他将其捐赠给了 Apache 基金会,并今天被微软、英特尔、Adobe 和超过 25 万名开发人员使用。他以连贯的方式统一了平台,并且仍然在那里做出贡献。对于 bitHound,他是联合创始人兼 CTO,领导服务的技术开发。
bitHound 有简单的哲学,虽然我们正处于大量产品构建中,但它是关于产品的,但我们在我们的堆栈中遇到了有问题的项目。我们总是将任何修复或添加贡献回该项目。那是我们的标准操作程序。如果我们为了使用而需要进行特定更改,但对整个社区没有好处,我们就不会推送它,但如果我们修复错误或功能,我们总是将其贡献回上游。这是对外界任何公司的建议。如果您要从某人的辛勤工作中免费获得一些东西,那么如果您增强了它,您应该将其贡献回去,以便所有人都能受益。否则,如果每个人都只消费而不贡献,社区就会消亡。
在内部,我们有一些我们认为有益的组件。我们的网站上将有指向 我们的 GitHub 的突出链接。
一个组件是我们称之为“农场”的东西,我们在其中分配工作人员并行执行工作。实际上是一个简单的事件总线,带有聚合结果返回。我们经常处理 JavaScript 语言的单线程性质,您会看到我们尝试开源它。
在“农场”内部发生的一件事是,我们已经将其抽象为一个单独的项目,即将发布。这是我在我的职业生涯中意识到的事情之一——我们所有人都有——仅仅将某些东西放在 GitHub 上并称之为“开源”对于它的起飞是不够的。它必须为社区做好准备。这意味着正确的 README、正确文档、查看项目和贡献的正确说明,而不仅仅是下载和安装。任何人都可以 npm install
,但使其贡献者可以理解如何增强它则是另一回事。我们将花时间将我们的代码发布出去,因为我们想把它做好。
有什么最后的寄语或临别赠言吗?
不要只是编写代码,要将您正在做的事情视为一种工艺。这需要时间和实践,并且需要时间来构建一些有弹性和美丽的东西。开源是完善这项工艺的好方法。我们将依赖项工具构建到我们的产品中的原因之一是让更多人深入研究他们可以贡献的代码。看到其他人的架构,您将接触到更好的方法。
这在某种程度上是 bitHound 的诞生原因。
软件开发是一门工艺,您应该为此感到自豪。花时间,学习这门工艺,努力打造杰作——那些在社区中引起广泛关注的杰作。我们做这件事不仅仅是为了赚钱,bitHound 将永远对开源免费,没有任何功能限制。我们是这场运动的坚定信徒。我们参与其中,我们想提供帮助。
这项作品由 Remy DeCausemaker 创作,并根据 知识共享署名-相同方式共享 4.0 国际许可协议获得许可。特别感谢 @itssamlowe 的贡献和编辑。
评论已关闭。