当前位置: 首页 > 编程日记 > 正文

致谢 开源开发者的贡献_对开源做出的贡献如何使我成为更好的开发人员,以及如何做到这一点...

致谢 开源开发者的贡献

by Luciano Strika

通过卢西亚诺·斯特里卡(Luciano Strika)

对开源做出的贡献如何使我成为更好的开发人员,以及如何做到这一点 (How contributing to open source made me a better developer — and how you can do it, too)

So you’ve been learning how to code. You are studying Algorithms and Data Structures. You are getting up to date on the latest Frameworks and their quirks. You can already smell some code smells, or even design solutions to real problems.

因此,您一直在学习如何编码。 您正在研究算法和数据结构。 您正在了解最新的框架及其怪异之处。 您已经可以闻到一些代码的味道,甚至可以设计出针对实际问题的解决方案。

But you haven’t worked in the Software industry yet. Or you’re in your first job and see how everyone’s awesome and full of experience. Yet you feel like you’re the noobest of noobs. Impostor’s syndrome is a thing, and we’ve all been there.

但是您还没有在软件行业工作过。 或者,您在第一份工作中,看到每个人都很棒并且经验丰富。 但是,您感觉自己是菜鸟中的白痴。 冒名顶替综合症是一回事,我们都去过那里。

There’s a way to get experience working in real codebases, nailing down the skills a book won’t teach you.

有一种方法可以获取在实际代码库中工作的经验,确定一本书无法教给您的技能。

These are some of the things we can experience through Open Source:

这些是我们可以通过开源体验的一些东西:

  • Reading other people’s code

    阅读别人的密码
  • Understanding complex systems, one piece at a time

    一次了解一件复杂的系统
  • Using versioning software (like git) in a proper way, with clear commit messages, atomic commits, and all those good, juicy practices.

    以正确的方式使用版本控制软件(如git),并提供清晰的提交消息,原子提交以及所有这些好的多汁做法。

If you’ve read this post’s title, you know where this is going. As a Medium reader, you’ve read many times that contributing to Open Source is awesome. It will teach you a lot, and may even get you noticed by some Big-N recruiter or something. I won’t say all those things are guaranteed, but I can definitely vouch for the first two.

如果您已经阅读了该帖子的标题,那么您将知道前进的方向。 作为中型读者,您已经读过很多遍了,对开源做出的贡献真是棒极了。 它会教给您很多知识,甚至可能会让某些Big-N招聘人员注意到您。 我不会说所有这些东西都是可以保证的,但是我绝对可以保证前两个条件。

我的故事 (My story)

Let me tell you a story. When I started my first job, the repositories overwhelmed me. They had thousands of lines of code, they had conventions or lack of them, and the clashing styles. I had only worked on small college assignments. These assignments had 10000 lines tops, written by people I knew, over the span of a month.

让我告诉你一个故事。 当我开始第一份工作时,存储库使我不知所措。 他们有成千上万行代码,有或没有约定,以及样式冲突。 我只从事小型大学任务。 这些作业在一个月的时间里有10000行顶部,由我认识的人写。

I had never seen what a repository could fester into (or thrive into, if well maintained, but this is the industry we’re talking about here) after a couple of years of chaos and git reset - -hard‘s.

在经历了几年混乱和git reset - -hard的混乱之后,我从未见过存储库会恶化(或兴旺发展,如果维护得当的话,但这是我们在这里谈论的行业)。

Learning to navigate that codebase was a skill in and of itself, which I gained after months of practice. But then when I started browsing GitHub, looking for a place to crash (or push), I started seeing how other repositories where organized.

学习导航该代码库本身就是一项技能,这是我在几个月的练习后获得的。 但是,当我开始浏览GitHub,寻找崩溃(或推送)的地方时,我开始看到其他存储库的组织方式。

Now, I am by no means an expert. My experience on GitHub so far has mostly been that of what, in some circles, would be called a lurker. I read the code, see what code does, read the issues, and think ‘geez, I wish I had any idea where to start’.

现在,我绝不是专家。 到目前为止,我在GitHub上的经验主要是在某些圈子中被称为潜伏者。 我阅读了代码,看看代码做了什么,阅读了这些问题,然后想到“老兄,我希望我有从哪里开始的任何想法”。

But then something awesome happened: some guy on Reddit posted a small project he had been working on. Not that many lines of code, mostly in Python (my favorite language), and maintained mostly by himself, with the help of a couple more people. I saw my chance and caught it. Studied the code, saw that some of the Python scripts worked perfectly, but they were a bit ugly: bad practices, repetition, really basic stuff the kind of person that actually gets things done may not stop to think about while coding the first draft, but comes to bite you in the leg afterward. So I set out to refactor.

但是随后发生了一件令人敬畏的事情:Reddit上的某个人发布了他一直在从事的一个小项目。 并没有太多的代码行,主要是Python(我最喜欢的语言),并且在更多人的帮助下,大部分都是由他自己维护的。 我看到了机会并抓住了它。 研究了代码,发现某些Python脚本可以很好地工作,但是它们有点丑陋:不良做法,重复,非常基础的东西可能真正完成工作的人在编写初稿时可能不会停止思考,但之后会咬你的腿。 所以我着手重构。

(By the way, that project was cheat.sh, an interactive, web cheat-sheet for developers. Here’s the GitHub project. It’s been an awesome project to contribute to, and I’d recommend you to check it out.)

(顺便说一句,该项目是cheat.sh ,这是一个面向开发人员的交互式Web备忘单。这是G itHub项目。这是一个很棒的项目,值得推荐,我建议您检查一下。)

教程 (A tutorial)

Along with this article, I made a tutorial so you can brush up on your git. I will assume we’re using a GitHub repo, as that’s what most of you may end up doing in your jobs. For this tutorial, I’ve set up a small example repository so you can follow along. Instructions are also present in the README.md file.

与本文一起,我编写了一个教程,以便您可以复习git。 我会假设我们正在使用GitHub存储库,因为这可能是大多数人最终在工作中所做的事情。 在本教程中,我建立了一个小的示例存储库,以便您可以继续。 README.md文件中也包含说明。

Here’s what you’ll have to do on this small assignment:

这是您在这项小任务上要做的:

  • Visit the repository’s link, and hit the fork button. This will create a copy of the project’s history up until this point under your own profile.

    访问存储库的链接,然后单击fork按钮。 这将在您自己的个人资料下创建该项目历史的副本,直到此刻为止。

  • Make a local directory in your computer

    在您的计算机中建立本地目录
  • Add both my project, and the one you created, as remote repositories. In order to do this, open your terminal in the directory you’ve created and use the following command:

    将我的项目和您创建的项目都添加为远程存储库。 为此,请在创建的目录中打开终端,然后使用以下命令:
git remote add *name* *link*

It’s customary for the name of my project’s link to be ‘upstream’, and yours to be ‘origin’.

通常,我的项目链接的名称为“ 上游 ”,而您的链接的名称为“ 起源 ”。

  • Pull my project:

    我的项目:

git pull origin master
  • Add your name to the contributors list in the README.md using your favourite text editor (I like Vim, for instance). Don’t forget to save your changes!

    使用您喜欢的文本编辑器(例如,我喜欢Vim)将您的名字添加到README.md的贡献者列表中。 不要忘记保存您的更改!
  • commit the changes:

    提交更改:

git add . && git commit -m ‘Your awesome message to me here’
  • Go to your Github account, visit your copy of the project and hit ‘pull request’, choosing to merge your master branch with mine.

    转到您的Github帐户,访问该项目的副本并点击“ pull request ”,选择将您的主分支与我的合并。

I promise I will accept requests as soon as I can, probably on the same day… And that’s it! No different to how it would have worked if you were making a big contribution!

我保证我会尽快(可能在同一天)接受请求。就是这样! 如果您做出了巨大的贡献,它的工作原理没有什么不同!

呼吁采取行动 (Call to action)

Now you have no excuse, go find a project you actually like or care about and add some lines to it! It doesn’t matter if your changes are small, as long as you’re helping and learning through them. My first contribution was correcting a typo in a README.

现在,您没有任何借口,找到您真正喜欢或关心的项目,并在其中添加一些行! 只要您正在帮助并从中学习,更改的大小就无关紧要。 我的第一个贡献是纠正自述文件中的错字。

I am trying new things this year, and writing on Medium has been on my bucket list for a while now.

我今年正在尝试新事物,而在Medium上写东西已经有一段时间了。

This was my first ever article, and I will be glad if you give me any feedback or opinions on anything you’ve read.

这是我的第一篇文章,如果您对所读内容有任何反馈或意见,我将感到高兴。

Also as I am new to Open Source software, please tell me if there’s anything important you feel I’ve missed. Finally, if you’ve already made Open Source contributions, I’d like to hear some stories and opinions. What are the best projects to contribute to, and the ones you’ve liked the most/least? It would be nice if we could compile a list for beginners.

另外,由于我是开源软件的新手,请告诉我您是否错过了重要的事情。 最后,如果您已经做出了开源贡献,那么我想听听一些故事和观点。 什么是最好的项目,哪些是您最喜欢/最不喜欢的项目? 如果我们可以为初学者编写一个列表,那将是很好的。

Thanks for reading this far, I’ll see you soon!

多谢您阅读本文,我很快就会再见!

Follow me for more articles about programming and Data Science, and check out my latest (probably better) articles.

关注我以获取更多有关编程和数据科学的文章,并查看我的最新文章(可能更好)。

翻译自: https://www.freecodecamp.org/news/how-contributing-to-open-source-made-me-a-better-developer-and-how-you-can-do-the-same-89929cd9f497/

致谢 开源开发者的贡献

相关文章:

欲精一行,必先通十行

将前端开发和服务器端开发做一个比较,前端开发没有服务器端开发“深”,服务器端开发没有前端开发“广”。经常听到做前端的同行抱怨需要学的东西太 多,东学一点西学一点,什么都会,但也什么都不精。很直接的结果就是沦为…

LeetCode 228: Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"]. 代码要求对数组中的元素进行分段。 首先给出字符串格式化函数,假设be…

JQ+ajax 提交表单不跳转页面

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 代码 <div class"apply_box"><h1>合作申请</h1><div class"apply_l"><input type"text" maxlength"20" id"name" name&q…

node.js是开源的吗_为开源做贡献并不难:我为Node.js项目做贡献的旅程

node.js是开源的吗As a developer, you should consider contributing to open source software. Many of your potential employers will look favorably on these contributions.作为开发人员&#xff0c;您应该考虑为开源软件做贡献。 您的许多潜在雇主将对这些供款看好。 …

超级简单的jquery轮播图demo

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>轮播图demo</title><script type"text/javascript" src"js/jquery-3.2.1.slim.js" ></script><link rel"stylesheet" …

Mysql 操作技巧

复制表结构 表数据Mysql> create tables t2 like t1;Mysql> insert into t2 select * from t1; mysql 索引a、Alert Table 用来创建普通索引、Unique 唯一索引 (当前列数值不可重复) 或 Primary Key 主键索引Mysql> alter table table_name add index index_name(col…

JS实现复制到剪切板效果

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta cha…

如何管理多个Python版本和虚拟环境

Addition January 2019: If you are coming back to this blog after upgrading to macOS Mojave please see this github issue for a solution to the common pyenv ‘zlib not available’ problem.此外&#xff0c;2019年1月&#xff1a;如果在升级到macOS Mojave之后又回到…

linux 下byte,char,unsigned char的区别

在linux中&#xff0c;对byte的定义为无符号char&#xff0c;而char默认为有符号char。 #ifndef BYTE #define BYTE unsigned char #endif以下ZZ百度知道&#xff1a; 在C中&#xff0c;默认的基础数据类型均为signed&#xff0c;现在我们以char为例&#xff0c;说明(signed) c…

词法作用域和动态作用域

JavaScript采用的是词法作用域 1.词法作用域 即函数定义时&#xff0c;即确定的作用域。js中的作用域链&#xff0c;在函数声明时候&#xff0c;就已经确定了&#xff0c;无论函数在何处调用&#xff0c;其作用域变量的查找都是按照定义是包含关系去查找。 2.动态作用域 变量的…

10-18 JS基础复习笔记

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 1.JS类型 Numbel String Boolean Symbol Null Undefined Object(Funtion,Array,Data,Regexp); 2.字符串转数字类型 "122" //122 var a 1 2; console.log(a) //3 3.null 和 u…

vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作

vue.js crud介绍 (Introduction) In this article we are going to create a web application using ASP.NET Core MVC with the help of Visual Studio Code and ADO.NET. We will be creating a sample Employee Record Management System and performing CRUD operations on…

redis事物命令示例

命令示例&#xff1a; 1. 事务被正常执行&#xff1a;#在Shell命令行下执行Redis的客户端工具。/> redis-cli#在当前连接上启动一个新的事务。redis 127.0.0.1:6379>multiOK#执行事务中的第一条命令&#xff0c;从该命令的返回结果可以看出&#xff0c;该命令并没有立即执…

JS 函数 函数递归

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 重要&#xff1a;函数也是对象&#xff0c;你可以给它们添加属性或者更改它们的属性。 函数内部对象&#xff1a;arguments 解析&#xff1a;函数实际上是访问了函数体中一个名为 arguments 的内部对象…

swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

swift设置启动图不现实by Ranadhir Dey由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmented reality in Swift by decorating your home) If you’ve read my previous post, you already have a beautiful AR floor in your din…

可用于nodejs的SuperAgent(ajax API)

简单示例&#xff1a; import request from superagent;//引用声明 request.post(api).withCredentials()//跨域.end((err, res) > {if (res.ok) {const json JSON.parse(res.text);} else {console.log(获取失败);}}); 1、get 方式 当使用get请求传递查询字符串的时候&…

Java第四次实验

一、实验内容&#xff1a; 结对编程。运行TCP代码&#xff0c;结对进行&#xff0c;一人服务器&#xff0c;一人客户端&#xff1b;利用加解密代码包&#xff0c;编译运行代码&#xff0c;一人加密&#xff0c;一人解密&#xff1b; 集成代码&#xff0c;密后通过TCP发送。 二、…

JS 面向对象编程之原型(prototype)

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 function Person(first, last) {this.first first;this.last last; } Person.prototype.fullName function() {return this.first this.last; } Person.prototype.fullNameReversed function() {…

idea自动捕获_Smilefie:如何通过检测微笑来自动捕获自拍

idea自动捕获by Rishav Agarwal通过里沙夫阿加瓦尔 Smilefie&#xff1a;如何通过检测微笑来自动捕获自拍 (Smilefie: how you can auto-capture selfies by detecting a smile) Ten second takeaway: use Python and OpenCV to create an app that automatically captures a …

hiho 1015 KMP算法 CF 625 B. War of the Corporations

#1015 : KMP算法 时间限制:1000ms单点时限:1000ms内存限制:256MB描述 小Hi和小Ho是一对好朋友&#xff0c;出生在信息化社会的他们对编程产生了莫大的兴趣&#xff0c;他们约定好互相帮助&#xff0c;在编程的学习道路上一同前进。 这一天&#xff0c;他们遇到了一只河蟹&#…

React 组件绑定点击事件,并且传参完整Demo

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 1.传数组下标给点击事件Demo&#xff1a; const A 65 // ASCII character codeclass Alphabet extends React.Component {constructor(props) {super(props);this.handleClick this.handleClick.bind…

ScaleYViewPager

https://github.com/eltld/ScaleYViewPager 转载于:https://www.cnblogs.com/eustoma/p/4572925.html

node mongoose_如何使用Express,Mongoose和Socket.io在Node.js中构建实时聊天应用程序

node mongooseby Arun Mathew Kurian通过阿伦马修库里安(Arun Mathew Kurian) 如何使用Express&#xff0c;Mongoose和Socket.io在Node.js中构建实时聊天应用程序 (How to build a real time chat application in Node.js using Express, Mongoose and Socket.io) In this tut…

结对项目开发电梯调度 - 整体设计

一、系统介绍 1&#xff0e; 功能描述 本电梯系统用来控制一台运行于一个具有16层的大楼电梯&#xff0c;它具有上升、下降、开门、关门、载客的基本功能。 大楼的每一层都有&#xff1a; (1) 两个指示灯: 这两个指示灯分别用于指示当前所在的层数和电梯的当前状态&#xff…

3.分支结构与循环结构

1 程序结构 程序结构分为顺序结构、分支结构、循环结构。分支结构有&#xff1a;if结构&#xff0c;if....else结构&#xff0c;if...else if....else &#xff0c;if...else结构&#xff0c;switch结构&#xff1b;循环结构有&#xff1a;while循环&#xff0c;do....while循环…

微信小程序 实现复制到剪贴版功能

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 实现API&#xff1a; wx.setClipboardData(Object object) API说明&#xff1a;设置系统剪贴板的内容 属性类型默认值是否必填说明支持版本datastring 是剪贴板的内容 successfunction 否接口调用成功…

数据结构面试题编程题_您下次编程面试时应该了解的顶级数据结构

数据结构面试题编程题by Fahim ul Haq通过Fahim ul Haq Niklaus Wirth, a Swiss computer scientist, wrote a book in 1976 titled Algorithms Data Structures Programs.瑞士计算机科学家Niklaus Wirth在1976年写了一本书&#xff0c;名为《 算法数据结构程序》。 40 yea…

oracle使用小技巧

批量禁用触发器 SELECT ALTER TRIGGER || trigger_name || DISABLE; FROM all_triggers; 这样就生成了一个禁用语句列表&#xff0c;复制到sql脚本执行界面&#xff0c;批量执行即可&#xff0c;类似的&#xff0c;可以用all_tables来批量删除表。 转载于:https://www.cnblogs…

if for switch语句

顺序语句&#xff1a;一行行执行条件语句:选择分支if语句 1、 if&#xff08;....&#xff09;//括号内是判断条件 { //程序代码&#xff0c;运算等等 } 2、 if&#xff08;....&#xff09;//括号内是判断条件 { //程序代码&#xff0c;运算等等 } else//如果不满足条件则执…

Apache Unable to find the wrapper https - did you forget to enable it when you configured PHP?

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 Apache Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? 问题解决办法&#xff1a; 打开配置文件 php.ini &#xff0c; 如图&#xff1a; …