公开开源项目而不会感到尴尬[关闭]


51

我一直在一个相当大的开源项目上工作了一段时间,现在已经接近要发布它的地步了。但是,我是自学成才的,我真的不认识任何可以充分审查我的项目的人。

几年前,我发布了一些代码,这些代码在我发布它的论坛上几乎被撕碎(在某种意义上)。尽管该代码有效,但批评是准确而残酷的。它促使我开始寻找所有事物的最佳实践,最终我觉得这使我成为了一个更好的开发人员。我已经遍历了项目中的所有内容,试图使它变得完美,以至于我数不清。

我相信我的项目,并认为它有潜力帮助很多人,而且我觉得我已经用有趣的方式做了一些很酷的事情。不过,由于我是自学成才,所以我不禁要问自己的自我教育存在哪些差距。我上次撕开我的代码的方式并不是我想重复的。我认为释放我的项目花了无数小时,这让我最大的两个恐惧是绝对尴尬的,因为我由于自我教育而错过了一些明显显而易见的事情,或者更糟糕的是,将其释放到of的声音中。

有没有遇到过类似情况的人?我不害怕建设性的批评,只要它具有建设性,而不仅仅是我如何搞砸的话。我知道StackExchange上有一个代码审查站点,但它并不是真正为大型项目设置的,而且我不觉得那里的社区足够大,如果我要零散发布项目的一部分,我也不会得到很好的反馈(我尝试了一个文件)。我该怎么做才能使我的项目至少取得一定程度的成功,而又不会在此过程中感到尴尬或沮丧?


17
在论坛上发布代码与在项目发布时使用关心的人可用的源代码之间有区别。即使对于有许多用户和潜在开发人员查看代码的大型开源项目,“我认为您的代码有X和Y缺陷”的类型反应似乎也很少。

17
根据描述,几年前您受到的批评使您成为更好的程序员。那么,为什么这次这么害怕批评呢?您是否觉得您不再需要成为更好的程序员了?如果你想变得更好,就必须把自我放在一边,敲几下。
Paul Tomblin

3
开源的好处在于,如果人们抱怨,您总是可以要求他们为您解决问题。
blueberryfields

4
如果您有特定疑问,请在codereview.stackexchange.com上提出
pdr

12
顺便说一句,如果尴尬是一个问题,我们永远不会有像Wordpress或Joomla这样的项目...一半以上的博客都涉及WP,似乎没人在乎代码库的质量...
yannis

Answers:


35

除非该项目面向开发人员(例如:开发框架,在这种情况下您希望他们批评它,如果它使您学到更多的话),否则您不必担心。但是即使那样,仍然有很多针对开发人员的开源项目,但是人们还是喜欢它们,因为它们很切合实际(想想Codeigniter,它的架构很差,但是它是最受欢迎的php框架)

如果它是普通人类的应用程序,那么他们可能只会在意结果。


3
+1并且重要的开发人员实际上可能会向您发送补丁!向世界开放您的知识和努力总是受人尊敬的:)
yati sagade 2011年

4
确实,任何批评都是宝贵的反馈。即使很苛刻(您也可以将其视为反馈),但这不是增加价值的理由。:-)为您的努力感到自豪!如果这是您能做的最好的事情,那么您的学历还是对这的理解真是太好了!随后的任何反馈都只会帮助您成为更好的开发人员。老实说,只要您不断改进和发展,昨天的代码总是很烂。
罗伯特·法兰西

+1-谢谢。该项目是为开发人员准备的,但是您对结果很满意。
充满希望的

1
每个人的代码都很糟糕,将任何批评视为宝贵的学习经验。如果有人以非建设性的方式将您拆散,请忽略他们,他们肯定是白痴
David Hayes

25

您的代码有问题。我的也是。有人回答这个问题吗?他们的代码也有问题。

除非它不超过10行,否则它是有缺陷的。也许是可悲的。

成为开发人员就是要不断地将自己融入能力和理解的极限。对于所有开发人员而言,情况可能并非如此,但对于我和我所认识的开发人员而言,我们几乎一直都在我们的能力边缘工作。您会一遍又一遍地面对这个问题,然后度过一个愉快的周末,然后回到星期一,一次又一次地重复。

工作了15年后,我决定解决的一个事实是:您不是您的代码。您写代码。对代码的判断不是您的判断。您的代码有问题,有些您知道,有些则没有。引起您的注意会有所帮助,除非您对此无能为力。感觉不好并不能改善您的代码,只会让您感到不好。

您编写了代码,并且知道了如何编写。也许明天您会比今天了解更多,但是今天您已经做到了。我的建议是:今天编写今天的代码,明天编写明天的代码。然后度过一个愉快的周末,并在星期一返回编写星期一的代码。


24

根据一般经验,开源程序由三组人共同查看源代码。

  1. 正在考虑修改代码以使该程序对他们来说稍有不同的人们,将其移植到其他平台上或作为自己程序的起点的人们。如果他们不喜欢该代码,则通常只会使用该代码,并且您将永远不会听到他们的消息。
  2. 学生,试图学习如何使用您所使用的语言进行编码。这些几乎永远不会与您联系,但是您有时可能会收到一封电子邮件,询问为什么您以一种方式与另一种方式进行了某件事。(为公平起见,多年来我实际上没有收到任何一封电子邮件。我认为像StackExchange这样的网站可能已经取代了这种交互方式)
  3. 安全研究人员,例如OpenBSD的人员,试图确定您的工具是否足够安全以使其包含在发行版中。如果不是,但他们仍然希望包含您的程序,那么他们会与您联系以找出保护程序的方法。(而且,如果您的程序流行起来,我想它也会吸引黑帽研究人员,无论他们发现什么,他们都不会与您联系。)

在现实世界中,人们实际上不会因为这些原因而不会阅读您的源代码,因为他们根本不需要。您之前仅得到了如此大量的反馈,因为您将代码发布到了论坛上,这意味着您希望收到有关代码的反馈。

我认为您真的不必担心滥用的泛滥。唯一可能与您联系的人是那些想要添加功能或修复错误的人,他们已经浏览了代码库,并且没有大喊大叫。;)


5

我真的没有这个问题的心理...一个更好的问题要问自己:“发布此软件我要失去什么”

即使您的项目充满了代码的味道,您是否也必须丢失任何内容?

即使代码很糟糕,并且有人花时间向您发送一封直接的邮件,请猜猜是什么,他可能已经足够使用您的软件来对其进行一些更改并使其变得更好。

您应该为此感到高兴!接受批评并改善您的代码,请生气的家伙花时间给您写信。他在乎!

过了一会儿,火焰邮件将停止,人们将继续使用您的软件,您将从错误中汲取教训,并且您不再知道教育中存在的差距将不再存在。

与不愿意做任何事情的人相比,我更愿意与愿意做某事,承认自己的错误,纠正错误并继续前进的人一起工作。

如果您真的不满意以您的名字发布该软件,请以一个昵称发布它。如果成功,则将其声明为您自己的名字,如果没有,请更改您的昵称:)


+1是最后一句话,音乐界的人们一直在用他们的“实验”专辑来做到这一点:)
MattDavey

4

我坚信不仅是开源,而且是开放开发,人们可以在其中看到代码的完整演变。从脑力激荡的原型到有效的代码,您都永远不会为难。您正将自己放在那里-这需要勇气。拥有它并为此感到自豪。没有人是完美的。


3

我在游戏中待的时间越长,就越能意识到,代码质量的唯一衡量标准就是客户体验。如果要编写函数,则它是该函数的调用方。图书馆?为该库编写的开发人员。一个框架?它的采用者。一个独立的?启动程序的人或守护程序。

好的代码有其优点,请不要误解我的意思,但是说完之后,唯一的办法就是“行得通吗?” 我见过很多干净的代码,这是一个有问题的烂摊子,还有很多经过讽刺的混乱代码,这些代码是完全可靠的(再加上很好的干净和丑陋的:))

因此,如果批评家说您的代码丑陋,谁会在乎。如果他们说这行不通,那就是您寻求改进程序的有用批评(测试数据!)。呆在那里,避开互联网上的巨魔,让您的项目充满乐趣!


2

我非常同意其他张贴者所说的话:即使您的代码很烂而且质量不高-大多数人根本不在乎。曾经一次或一次潜入OpenSource代码的每个人都可能以为自己“ WTF发生在这里”。

但我不知道有任何人与动机去批评一个项目的代码库只是说着想“伙计,你的代码看起来可怕!”。我们都去过那里,而且我们都知道,我们现在正在编写的任何代码对于我们自己来说仅是几脚就显得seem脚了(我的肯定是这样)。

因此,不必担心太多-人们闲暇时要做的事情比仔细研究OpenSource项目的代码要好得多。


2

实际代码总是腐烂,肮脏,打成一片并以近似临时的方式进行维护。清理仅限于记录特殊情况和特殊常量。干净代码与实际环境之间存在阻抗不匹配的情况。

我还注意到,任何称职的工程师都可以撕毁他人的代码。

如果(1)它通过测试并且达到了目的而又没有失败,并且(2)您可以仅进行少量重写就可以进行较小的更改,那是很好的代码。


2

LinkedIn联合创始人里德·霍夫曼(Reid Hoffman)的一些明智之言:

“如果您对第一个产品发布不感到尴尬,那么发布太晚了。”

“与成员互动并了解真正重要的是完全关键的……因此,您将尽快获得最低可行的产品。”

我认为这尤其适用于开源项目,在这些项目中,有一个很好的主意,有希望的开端会鼓励人们做出贡献和参与。如此光滑的东西可能使您戴上太阳镜可能无法唤起这种感觉。但是,提早发布最重要的事情是粉碎您对应该做什么的所有先入之见,并朝着正确的方向前进。


1

你是谁?您是人们所熟知的上帝程序员,并且担心您的声誉会下降吗?您是要申请这份工作的人吗,担心雇主可能会阅读这些批评意见,并认为您是不好的程序员?我要问的是你为什么害怕批评自己搞砸了。您可以决定哪些是真正的评论,哪些是咆哮。将好的作为缺陷,并在下一版本中进行修复。我只是觉得您担心这些批评是不必要的。您正在帮助开源社区,这本身就是一个很好的原因。请保持好的工作状态。


2
什么是上帝程序员?
充满希望的

1
@希望 IIT孟买大学只有一位教授。谣传说这家伙写程序,编译并运行它。没有所谓的重新编译或调试阶段。这是上帝程序员。
Manoj R

好的,我很确定那不是我...我对调试很着迷。但是,当某些东西第一次起作用时,这是一种很酷的感觉。即使那样,我仍然会对其进行测试并为其编写测试。
充满希望的

1

如果您真的很担心,只需在发布软件时使用在线假名即可。这样就不可能对您的真实声誉产生影响。

何时/如果您确实受到公众批评,那将导致代码方面的改进,并将帮助您成长为开发人员。这是一件好事。

我发现,对于我的项目,最具建设性的批评/建议是私下发送的,而不是公开传播的,即使那样,您也不太可能收到大量评论。因此,我建议您自己去做!

祝好运。


1

自学本身并没有错。您不能孤立,对等代码审查可以帮助您。

您还需要专注于正在做的事情。如果您对自己的工作获得负面反馈,为什么还要关心呢?如果是因为您假设您会受到批评,那是因为代码不正确或您在编程方面不擅长,这可能是正确的,也可能不是。

这样做的目的是确保代码能正常工作,并尽可能获得最好的代码,但是根据实际经验,并不是所有的商业代码都是出色的。有时您遇到不好的要求,有时您没有时间做正确的事。有时,开发人员希望通过使其他人看起来很糟糕而成为天才。

我不相信您不会犯一些错误就可以学习,特别是如果这需要真正的纪律和努力。如果这很容易,那么每个人都会这样做。只需尝试使用已建立的最佳实践将错误限制在较小的错误即可。我意识到这并不总是可能的!

如果我担心别人对我作为程序员的看法,那么我一开始就不会涉足这一领域。话虽这么说,我对代码的批评首先是要客观地接受它并从中学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.