我从小就喜欢计算机。但是当初升学考试的时候,我的分数不够念计算机相关的专业,所以就念了采矿工程。

有一个学期特别糟糕,我挂了好几科,所以我决定在暑假找一份当保安的工作,赚点钱。结果,这份暑期工成了我之后的事业。 在西班牙,当一名保安不需要你特别聪明。你身边的人们逐渐不再对你抱有很高的期待,并且慢慢的,连你自己都对自己没有了期待,你甚至不再尝试让自己有所提升。

然而,冥冥中,一些特别的事情就发生这位特别的保安身上。

当时,我在马德里校园任职保安已经一年多,正在第400次活动上执勤。几个月前,我和妻子迎来了我们的第一个宝宝。

我就那样站在那儿,看着周围踌躇满志的企业家们。他们一个个都在冒险前进,而我呢,做着一份看不到前途的工作,仅仅是努力养家糊口而已。

活动进行中,一位演讲人走上舞台。恰好我站在舞台边,能听清他说的话。其中的一句话永远地改变了我的人生。

“人人都可以学习编程,人人都可以成为开发者。”

因为这个活动和一个价格不菲的编程训练营有关,所以我当时并不相信他的话,只是当作营销之词罢了。

但是,如果他说的是真的呢?如果我也可以学习编程--坐在计算机前工作--而不是像现在这样,当个保安,成天四处站岗呢?

在西班牙,只有那些拥有大学学位的人们才能从事脑力劳动。但是,据这位演讲人说,软件开发者的市场需求很大,因此即使你没有大学学位,雇主们也会破例录用。

他说,如果你想要获得一份高薪的软件开发工作,你唯一需要的就是拥有足够强大的编程能力,助你顺利通过一系列的编程考核和面试。

于是,我对他的这个说法做了些探究。我清楚地记得那个特别的时刻,我在探究之后意外地发现,原来他那样说,并不是为了营销,也不是夸大其词,而是随着经济发展产生的确确实实的需求。我当即决定,我要成为一名开发者,无论代价是什么。

搜索课程

我没有时间可以浪费,所以我立即开始拼凑各种方法,想找到学习编程的最快捷的途径。

我向我在马德里校园里的一些开发者朋友们咨询,比如 Gamify(一款“挑战式” App)的 CEO,Carlos Hernández。他建议我从一些网站(例如 Codecademy)开始学,然后使用他的 App 实践,达成学习目标。

我不断地搜索各种网站资源,每天都尝试学习我搜到的新的课程。

接着,我跟本地 Haskell 沙龙的发起人 Daniel Mery 讨论了一下。他认为我其实可以使用开放的资源免费学习编程。我听取了他的建议,尝试在 freeCodeCamp 学习,并且很快爱上了这个平台。

简单地说,freeCodeCamp 的魔力在于:

- 学习路径很清晰,你只要跟着做就行。

- 编程挑战设置得很棒。它不像是许多别的资源那样手把手教你,而是给你犯错的空间。

- 当你需要帮助的时候,你可以在一个每天 24 小时都有人在线的全球性社区里寻求帮助。

- 你可以挑战一系列真实的项目。

- 你可以为众多有真实需求的公益组织贡献代码。

我踩的坑

必须得说,我当时以为自己做了最明智的决定,选择了一条成为开发者的最佳捷径。然而,事情的真相是,我犯了些错误。最大的错误是:有始无终。

我刚开始学习编程的时候,学得非常快,感觉棒极了,像是登上了人生巅峰。

所以,当我遇到一些不能稍加思索就快速解决掉的问题时,我都懒得花心思去试着写代码。我只是想要保持快节奏地学习,学得越多越好。

结果,我就堆积了许多半吊子问题和项目。

最后,我痛苦地意识到:那些未解决的问题从未走远--它们会在未来的某个转角出现,给我狠狠的一击。

对,一口气吃不成个大胖子!我得循序渐进地学。

事实上,能静下心来,好好完成一个项目,比做一千个半吊子项目强多了。

我踩的另一个坑是我渐渐的不聚焦了。当我为某个问题寻求解决办法时,我可能会偶然发现另一些有意思的话题,一个接一个......当我反应过来时,这一天已经快结束了,而我还没解决最初的那个问题。

往前一步

我的关注点每天都在变化,迷失在层出不穷的线上课程、编程语言和框架里。

我开始感觉我好像永远都不能写出好的代码,永远都不能成为一个程序员。也许“编程”对我来说就是一个坑。

我又想到我的儿子,想到我许诺给他的未来。我希望他会因为有一个永不放弃的爸爸而骄傲。

这个时候,我认识了 Ulises Gascón,他是一位程序员。他建议我完成那些我已经开始做的项目,同时他可以随时给我帮助。

所以我做完了一些项目。我回过头去处理那些之前认为特别容易所以忽略掉的问题。而在这个过程中,我开始提出新的问题,发现新的挑战。

在我学习编程的这个阶段,毫无疑问,Carlos Hernández、Ulises Gascón 给予了我关键性的引导,促使我不懈坚持。如果没有他们,我也许早就放弃了。他们是我终身都要感激的人。

所以,可以这么说,是从朋友们那里获得的帮助激发了我往前一步。

加入一个社区

我的学习开始突飞猛进。我完成了更多的项目,打算做一些新的项目。但是我并不知道应该做些什么。有人建议我去参加一些社区活动,找找灵感。但是我参加了一圈,发现我所在的城市里很多活动都是一些牛人的讲座,或者关注尖端科技。

而我只是想要和一些水平相当的人们一起做项目,貌似没有这样的社区。

“没有这样的社区?为啥不自己创建一个呢?” 呐,这个时候,我开始像一个程序员一样考虑问题啦。

我和 Ulises Gascón、Carlos Hernández、Ignacio Villanueva 聊了聊,然后一起创建了 Open Source Weekends 社区。

在经历了“赞助商在最后关头反悔”、“耗费了大把时间和金钱”等各种糟心事儿之后,我们的第一次活动完美拉开序幕。

Pillars.js 团队也参与进来,他们不仅给我很多灵感,还成为了我的好朋友!

7 个月之后,我们社区获得了“最佳开放社区奖”(译者:关于这个奖项的介绍请见http://www.openexpo.es/oe2017/open-awards/)。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
和团队一起领奖(左起第三个就是我啦)

所以,加入一个本地社区真是太重要了。在其中锻炼的社交技能令我受益匪浅,我不再只是一个单纯的学写代码的家伙。

求职

在经过 11 个月反反复复的学习、失败、振作直至创建一个开源社区之后,我在我们 OSW 社区的邮件列表收到了一封邮件。

Kubide 公司正在招聘后端工程师。恰巧我几个月前决定专注后端开发。我确实也非常喜欢前端,不过我发现自己更热衷于花几个小时解决一些后端的问题。

Kubide 给我布置了一个任务:做一个 Twitter clone API。这确实蛮有挑战的,不过还好。

接着他们的 CEO,Ángel Luis Quesada,面试了我。比起我目前的开发能力,他对我学习编程的历程更感兴趣。巧的是,他对我在马德里校园当保安时遇到的那位创业者也很感兴趣。

3 天之后,我接到一个电话,让我去上班。

我无法形容我在听到这个消息时的感受。身边的每个人都为我感到开心。我为学习编程付出的所有努力终于得到了回报!

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


我的第一份工作

故事有了一个完美结局,似乎就应该到此结束了。但是我想和你们多聊聊获得第一份开发工作之后的事情。因为我相信,如果你受到更多鼓舞,那你也会成功的吧。

万事开头难。但是呢,这个全新的开始真是超级棒,感觉就像坐过山车。

一开始,你感觉自己像个“冒牌货”,除了拖拉,你根本不会写什么代码。但是你必须拼尽全力。即使你感觉自己已经使劲浑身解数,也还得继续拼。然后,你可以向优秀的人们寻求帮助,他们会给你指一条明路。

接着,你开始有能力完成一些任务了,也就感觉好受点。

有一天,你发现某人分分钟就解决了曾经困扰你一整天的问题,那种“冒牌货”的感觉又涌上心头。

而又有一天,你帮助队友解决了一个问题,你感觉自己还不错。

最后,你意识到--或者你的上司告诉你--公司并不是因为你现有的能力而雇用你,而是看中了你有提升能力的潜力。

因为,把赌注下在那些知道怎么学、并且有强烈的求知欲的人们身上,总是没错的。

“人生最大的障碍是自己” -- Angel Luis Quesada

明白了这个道理之后,你的心态更好了。你会快速地提升、和同伴一起成长,你会越来越爱自己的工作,也越来越快乐。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
和关爱我的伙伴们在一块儿很开心

请允许我以这几句话结尾:

- 请记得你为何开始学编程。

- 不要分心。

- 做完你的项目。

- 挺住!

谢谢你读完这篇文章,希望它能对你有所帮助。

“Peace, Love, and Open Source” — The Open Source Weekends motto

原文链接:https://www.freecodecamp.org/news/from-self-taught-coder-to-professional-backend-developer-my-long-winding-road-d8f7c428b637/,作者:Jose Manuel Gallego