学习永无止境,作为一名在学习道路上不断行走的程序员,想要得到更多的挑战就得向比自己更优秀的人看齐,不断进步......
作者 | Chen Ravid
译者 | 弯月,责编 | Elle
以下为译文:
过去的12个月里,我一直在和开源开发者打交道。在以前的工作中,我们团队也曾使用过开源代码库,但那时我只是一个从 git 上克隆代码的陌生人,这一次真正见到了这些代码库背后的开发者。这次旅程对我有很大的启发。
严格来说,我自己不是开发人员。虽然我也会编写代码,但是相信我你并不想阅读我的代码,更不用说运行了。我更擅长做产品方面的工作。作为产品经理和企业家,多年来我曾与许多软件开发人员一起工作。在这期间,我对开发人员以及他们的工匠精神产生了深深的钦佩之情。然而,开源开发人员,尤其是那些从头建立开发项目以及长期维护项目的开发人员,对我而言他们一直是个谜。这些开发人员日复一日,年复一年心甘情愿贡献出所有的空闲时间,创建出一个又一个错综复杂的软件,他们深深地触动了我。
我想不出还有哪个行业有类似的情况发生,过去的一年真的让我感触良多。我不知道这些项目的背后都有怎样的人在默默无闻地奉献,但我可以告诉你,这一年我没有虚度光阴。
他们不仅仅是聪明
开发人员非常聪明。这一点无需多说。编写代码是一项极其复杂的任务。虽然从用户的角度来看,有些任务非常基本,但也需要付出大量的脑力劳动,对于非程序员来说,很显然如果没有足够的技术力的话,这些工作会让你手足无措。我总说与开发人员一起工作既有收获,也有很多艰辛,因为你需要与这个星球上最聪明(1%)的人打交道。他们的要求很严格,有时只是为了听懂开发人员向你解释的某个复杂的概念,就会让我头昏脑胀。
然而,开源开发人员有过之而无不及。许多软件开发人员花了大量时间来处理一层层交代下来的任务。在许多情况下,开发人员在任务的制定上没有太多发言权。开发人员可以游刃有余地处理好任务,却很少有机会了解这些任务背后的原因。
开源开发人员不仅拥有熟练的编程技术,而且还需要深谋远虑并通过系统性的观点来决定做什么、怎么做,以及最重要的是为什么要这么做。虽然看起来微不足道,但背后的原因才是软件项目最重要的部分。如果建立项目的动机不够强大,那么整个项目都会废掉。通常,参与项目创建的开源开发人员都非常清楚项目背后的原因非常重要,只不过他们无法坐视不理。他们必须行动起来,他们必须写出代码。拥有紧迫的使命感,对项目背后的原因有着深刻的理解,同时又具备高超的技术力和强大的好奇心,这样的人才实在是寥寥无几。
他们充满激情
很多人偶尔也会感受到我上述提到的使命感。很多时候,我们拿定了主意,却很少有人愿意投入时间和精力付诸实际行动。保持开源项目的长期运作需要极大的热情。只有真正对解决问题有热情的人才能忍受漫长而乏味的岁月,长年累月地创建和维护实用、稳定、生产级的项目。
解决问题的热情是许多开源开发人员的动力。无论是创建项目的开发人员,还是维护项目的开发人员,热情都是他们的动力源泉。通常,在日常工作中遇到的某个问题时,他们就会思考“为什么没有解决这个问题的方法?”一般情况下,“有问题”和“我要解决这个问题,并为其他所有人提供解决方案”之间存在很大的鸿沟,只有极少数人能够跨越。在解决了最初遇到的问题后,热情会推动他们继续探索,开发更多功能,并一直努力向前。他们没有老板,没有JIRA任务票,没有截止日期,也没有客户等他们交付产品。他们有的只有激情。
他们坚持不懈
我出生在以色列。许多人称之为“创业的国度”,因为除了硅谷以外,以色列的人均创业公司比例是世界第一。我认为这与以色列人从出生起就被灌输的企业家精神有关。但是,除了Waze、Wix、Fiverr 和 Mobileye 之类的成功案例之外,以色列还有很多“想做企业家”的人。这可能也不是以色列独有的现象,但作为当地人,我可以告诉你我遇到过很多这样的人。有一个好主意,但仅限于纸上谈兵的人很多,真正能够付诸实践,坚持下去的人却很少。制作出色的产品需要很长的时间。大量的时间。仅有一个想法还不够,你还需要坚持不懈地努力。
开源开发人员和维护人员就有这种长期从事某个项目的毅力。任何产品在0.0.0.1版本都不可能做到完美。通过坚持不懈的努力,打造出实用的产品需要付出时间、辛苦的工作和自律。当我和一些开发人员坐在一起,查看最早的版本时,他们都会笑出声来。他们通过坚持不懈的努力,将一些杂乱的功能变成了复杂的项目,并应用到了成百上千的商业中。
他们是编程界的无名英雄
我曾与一名开发人员回顾了他早期的一些尝试,我想了解他的项目如何从100行的代码,经过3年的努力,发展成了如今这个庞大的 Vue 组件库。原来,他开发的许多功能和组件都来自一些早期的用户发来的请求。他告诉我,当听说有人在使用他的代码时,他感到非常高兴,同时他也感到自己有义务帮助他们,并满足他们的请求。
与其他专业比较起来,除了从事慈善工作的志愿者外,我想不出还有哪个专业的人会用自己辛苦积累起来的专业知识和珍贵的业余时间来帮助其他人从事与自己无关的商业项目。没错,上述我提到的这名开发人员正在帮助其他开发,虽然这些开发并没有直接利用他的代码赚钱,但是他们所在的公司在直接利用他的代码赚钱,试想一下有哪位律师愿意为其他律师免费起草合同?
我希望在其他领域也能看到这种无私奉献和分享知识的人类,而不仅仅是编程界。如果我们可以用代码拯救世界,那么我敢肯定,开源开发人员将一马当先引领潮流。
他们没有得到应有的回报
开发人员为开源做贡献并不是为了钱。就目前来看,他们没有任何回报。多亏了上述我提到的理由,他们才愿意这样无私地奉献。我们多么幸运啊!然而,在采访了数十位开源开发人员之后,我发现事情有点不太对头。开源开发人员承担了过量的工作,却没有得到相应的报酬,有时甚至被人忽视,他们也开始慢慢意识到自己受到不公待遇的严酷现实。
如今开源非常普遍,然而却很少有人认真想到开源背后默默付出的开发人员。各个商业软件公司使用了大量开源组件。开源确实无处不在。据我的了解,当今开发的90%的商业软件都依赖于开源组件或系统。这些组件如此普遍,人们甚至不假思索就开始使用。
如果你正在构建某个商业软件,而且使用了开源组件,那么你是否曾经想过那些背后的个人或团队,他们花费了无数的时间和不眠之夜,帮助你成功地构建了软件,并为你节省了数月的工作?没错,我们中的一些人也做出了贡献,但是只有极少数人从头开发了供他人使用的代码。
如果我们希望开源长期发展,那么就需要理解这些开源代码背后的人并没有得到应有的报酬。实际上,他们根本没有获得任何回报。如果开发人员花费大量时间修复bug、开发新功能、支持新框架,却无法得到任何形式的补偿,那么他们可能坚持不了太久。我亲眼目睹很多开源项目被抛弃,因为开发人员没有足够的时间或资源来维持开发工作。他们需要修复的bug太多,需要付出大量努力才能继续开发更多功能,还需要为适应即将出现的新技术而处理安全问题。开源开发人员从来没有金钱上的要求,但是如果他们无法获得维持下去所需的资源,那么我们所有人都将蒙受损失。
总结
开源是一件不可思议的事情。有时,我感觉开源就像日常生活中的用电一样。人人都在使用,但是却没人去想如果有一天它消失了,我们会怎样。如今的开源无处不在、免费、丰富,这完全归功于拥有上述罕见品质的人才,还需要天时地利人和。
在我看来,软件行业需要为开源的长期发展做打算,考虑如何确保开源开发人员有足够的动力维护项目,并确保下一代开发人员还会创建新项目。如果我们不能为开发人员提供良好的发展条件,那么即便是最聪明、最富热情,最执着和最无私的人也无法坚持到底,也许他们会把自己的开源代码变成私有。
作者:Chen Ravid,xscode的合伙创始人。
原文:https://medium.com/swlh
/5-things-i-learned-about-open-source-developers-a38f26ae79ae
本文为 CSDN 翻译,转载请注明来源出处。