若水,真名高宪凤,住百家Ruby开发工程师。她以Girl身份参加RailsGirls后,便喜欢上了Ruby on Rails。她曾三次参加RailsGirls活动,第一次去的时候是学员,第三次则是教练。为了学习Ruby,她曾两次辞职,自费参加Ruby on Rails培训。现在的她,已经如愿成为了一名Ruby开发工程师。

问:你是从什么时候开始编程的?

我最开始的时候是做测试的,后来因为有工作需要,想要做自动化测试,才开始接触Ruby。

问:你之前学的是什么专业?

我在大学学的是教育学。

问:你为什么找了软件测试这样的工作?

和现在好多大学生一样,我毕业的时候也没啥目标,毕业了之后找的工作跟自己的专业也不怎么搭边。好在软件测试行业有一个特点,入门的门槛低。最开始的手动测试,其实就是点来点去,试试一个产品或功能合不合适。但是越往深了做越难。

后来因为我们公司测试的人少,我测试1对12,所以这样点来点去很麻烦,我就想做自动化测试,用机器来做我就省事了。从2011年开始我真正开始做自动化测试,这时候我才开始接触Ruby。

问:为什么选择Ruby?

做自己化测试时,参加了一次自动化测试培训的课程,那次课程的讲师推荐编程新手使用Ruby,自己又在网上查了一些资料,大家对Ruby这个语言评价大多是入门简单,而且它的语法挺像在写英文句子,所以我就开始自学了。

问:你第一次参加RailsGirls的活动是什么时候?

第一期是2012年12月份。那时候我稍微知道一点Ruby,大概语法了解了一些。学Ruby的过程中上网查资料就发现Ruby总是和Rails关联,然后我就上网去查Rails,后来才发现Ruby是语言,而Rails是它的框架,两个结合在一起用。但是Rails入门的门槛有点高,我自己弄得挺晕的,那时候刚巧看到文洋(RailsGirls组织者)发的消息,他说参加这个活动一天就能学做一个网站。这个太神奇了,我自己捣腾了那么长时间还是不懂,不如我也去听听吧。

当时其实我的基础很差,因为教练认真会再也想多教一点,所以一下子讲了很多内容,但是我压根消化不了。教练在讲,我就使劲地记。虽然那天要做的网站没做出来,但是收获挺大的,教练给了我们《Ruby on Rails圣经》和《Ruby on Rails教程》这两份资料,另外他建议我们去关注RubyChina论坛。

问:参加第一次活动对你学习Ruby的作用是什么?

RailsGirls带我入门。现在网络是发达了,但是有一个不好的地方,就是资料太散太乱了。我甄别能力不够,不知道哪些是好,哪些是坏,可能容易走弯路。有这样的一个活动,有教练的指导,还是很不错的。

问:你第二次又去参加RailsGirls的活动了?第二次是在什么情况下参与的?

第一次回来之后,我把我的自动化测试给写完了。在系统上跑了之后,我们领导觉得还不错。我于是又跟着《Ruby on Rails教程》去学,从第一章开始按照那本书一点点地做。当时我几乎把整本书都做完了,看着书的时候觉得都懂了,但是把书一合上,我就又不知道东西南北了。这时我正好看到文洋发出的第二次活动,我打算再去一次,再向教练请教请教。

第二次特别巧,我的教练就是文洋,他带着我和另外一个女孩。开始的时候我简单地做了下自我介绍,文洋建议说:“既然你已经把教程那本书差不多都做一遍了,应该有一定基础了,要不这样,你把你学的东西,在这上面做一次实践。这次你来当教练,你来教这个女孩。”我当时真的没底,真的不敢。但是文洋说:“没事,咱们试嘛,一起商量着来,讨论着来。”那个女孩也说,反正你都学了嘛,要不咱俩一起研究。

当时我带着电脑和书,我把自己知道和理解的尽量讲给她,实在不确定的我再翻书。就这样,我俩一边翻着书,一边按照提纲制作网站,我还会再讲一下为什么是这样的,遇到问题就把文洋叫回来。文洋看着我俩还行,他就跑了。这一次我们最终把网站做出来了。

问:第二次活动有什么收获?

就像人家说的,学习最好的办法还是把你学的教给别人。给人讲了一遍,确实感觉不一样了。以前老觉得模棱两可,但是给人讲的时候就得确认,再确认一遍,我觉得这样掌握的知识比自己看书的时候扎实得多。

问:你第三次怎么又去参加RailsGirls了?

第三次是想回报社区,做点贡献。那会我已经转过来做Ruby开发了。看到文洋发消息,我就跟他说我想去做教练。于是我第三次又去了。

问:除了自学,你在学习Ruby的过程中是否参与过其他培训?

在第二期的活动上,我遇到了另外一个教练。他在中场休息的时候跟几个教练聊天说想准备一个线下的培训,我坐在那儿不小心就听见了。在空闲的时候我就去问他,他说这还只是一个想法。我说我想学,当时就把QQ和手机号留下来了。回来之后,虽然自己也在深入地学,但是当我想做点内部小工具的时候,还是觉得自己学得浅,拿不下来。

应该是过了一周多不到两周的时间,他给我发消息说大概找了几个人,想开班。教练叫大庆,RubyChina上能找到他,他那时在北京,现在已经回老家了。

那时我住在百子湾附近,大庆住在海淀3W咖啡附近。每周六下午1点到5点讲课,一个小时一百块钱。当时他没有提纲,也没有特定的教材,他的想法是想带着我们做一个类似于RubyChina社区的网站。他来讲,我们几个就在咖啡厅围着小桌坐,看着他的电脑。他一边讲,我们一边记笔记。当时为了参加大庆这个培训,我自己也买了一个Macbook Pro,以前都是用Windows,当时是8000多吧,挺有压力的。当时培训了大概4、5周,那会也赶上公司项目加班,我们差不多两个月没休息。周末为了来他这边,我跟领导说我要去学习,所以周六下午半天我必须要请假。

因为大庆对Ruby的知识很熟,所以讲课的时候他手特别快,我压根跟不上。我在下面记笔记,记得乱七八糟,回来自己再整理。他是讲了5个小时,我回去用一个礼拜的时间才能把他5个小时的东西整理出来。天天晚上加班回去后整理,一边翻笔记一边想,一边再翻教程那本书看。那段时间应该是学得最多、最集中的一段时间。

当时我们有一个项目是和移动合作的。移动那边要求得很细,当时我还在做测试,就按照他们的要求,一条一条来验证并把验证结果整理汇总返回给项目组相关人员。天天这样做,我觉得挺烦的。我们头对我说:“你不是学了Ruby吗?你自己做一个小工具不就行了。”其实在他没说之前我自己就想到了,但是没什么思路。于是我就去找大庆,大庆给我理了一下思路,我就开始一点一点抠着往前做。我周末听大庆讲课,回来上班再琢磨这个工具。做不出来了,我再向大庆请教,他给我讲思路。就这样一点点地做,在那个项目中后期的时候我终于把那个小工具给做出来了,而且在项目中进行了使用。

问:这段时间之后你有没有想过换工作?

每次参加RailsGirls都会加QQ群或者微信群,我看见有人发消息说要招Ruby on Rails程序员,实习生也可以。当时我也想在工作上转型,就把我做的小项目的代码放到了GitHub上,把这个东西给人家看。我说:“这是我自学的,我参加过几次RailsGirls,做了这个小东西。我挺喜欢Ruby,现在想转型做开发。我想以实习生的职位进来,我想学Ruby。”社区里的人都很友善,他邀请我过去聊聊。当时我的代码写得特别烂,现在都不好意思回头看了。那个面试的人说:“代码需要优化的地方挺多的,但是我确实挺佩服你这种精神。你已经工作好几年了,我们实习生工资给得挺低的。”我说我不在乎,我知道肯定会降工资的,我就是想学这个东西,愿意以实习生的身份进来。他们愿意让我去试试,于是我就到这家公司入职了。

问:入职之后顺利吗?

那时我才真的开始在团队里写开发代码,跟着大家一起去做。做的过程中我发现自己的底子还是差,努力还是不够。自学是一回事,没有压力,多学少学都可以,但是在团队里做的话,人家的项目有时间要求,你必须能跟上别人的节奏。即使是大家愿意教你,要是没时间了也还是顾不上你,能力实在太差的话,真的是拖人家的后腿。

问:你是如何突破瓶颈,成为真正的Ruby程序员的?

当时我每天上下班都在听Teahour.fm,他们4个主持人之一的Kevin,组建了一个GoTeaLeaf的培训。大庆那个培训早已经结束了,而且他也已经回老家了。我就想参加GoTeaLeaf的课程,因为我觉得自己能力还是差,虽然我也在网上找资料,项目里平时大家还会教我,但是知识比较零散,不够系统。

于是我就给Kevin发了个邮件,他的课是全英文授课,我问他我听英语还可以,但是跟你之间用中文交流可以吗?他说欢迎。于是我就报了他的培训班。培训班一共分3个阶段,折合人民币是14000多元。我从最基础的阶段开始,一点点跟着他学。Kevin的课难度真的很大,一方面是因为他是全英文授课,每次去看视频其实也是连蒙带猜,一个视频听好几遍。听完之后,我就做课后练习题,做完了再把代码提上去,我把自己做了什么、怎么想的、还有什么疑惑都告诉他,让他帮我解答。

Kevin的课程的另外一个难点在于他一直在强迫你自己去思考,自己去想,自己去动手。有时候你可能在那儿保持着一上午或者半天的时间都在想课程中出现的问题。不像《Ruby on Rails教程》那本书,它从头到尾都告诉你怎么做,你过不过脑子都行。

GoTeaLeaf课程大概学了有一半的时候,我就发现时间不够。因为我还在职,我们公司项目也紧张,一边上班一边学课程,我总是觉得时间不够。正好项目那一期告一段落,我综合考虑了一下,决定辞职。我想有一个完整的时间从头到尾系统地学一学。以前我早上差不多7点起床,看看书去公司。为了学Kevin这个课程,我差不多5点多就起来了,否则没时间。但是即使这样,时间还是挺碎片的。

就这样,大概是2014年10月底,11月初的时候我就离职了,在家学GoTeaLeaf的课程。差不多到今年春节过后学完了,我就来到现在的公司住百家,在这从事Ruby on Rails开发。

问:看来GoTeaLeaf课程对你的帮助很大,这个培训有什么与众不同之处?

这个课程做的项目并不很复杂,但是他一直在强化你自己动脑,自己动手,自己去想,自己去做。只有这样,知识才能转化成自己的。只是阅读,转化率太低了。另外,这个课程会给你讲很多原理,为什么会是这样。看书照着做肯定没错,但是Rails是约定大于配置的,对于很多东西我根本就不知其所以然。这样的话就会造成一个问题,遇到问题变种的时候就不知道怎么办了。而这个课程会告诉你为什么会是这样的结果,如何才能自己完成变种,然后如果没有现成的东西你怎么能自己通过转化完成变种。如果你知道它的原理,就可以自己构造了。

问:你觉得你一直以来为了学习Ruby付出的努力是否都值得?

我觉得Ruby这个语言特别好玩,Rails这个框架也特别好用。在我慢慢接触的过程中我喜欢上了Ruby on Rails,如果我想用它的话我就得学习。像刚才说的各种吃苦,花那么多的钱去培训,金钱上前前后后加起来应该有两万,这还没有计算时间成本。但是因为我喜欢Ruby,所以付出这些都是值得的。

问:你是否建议别的初级学习者应该在外面寻求一些帮助?不能只是自己看书或者在网上找东西?

为有价值的学习花钱是值得的。自己学其实也没有问题,网上的资料也很多。只不过自学的时候可能弯路会多一点,自己鉴别资料可能会比较困难。如果能够参加社区组织的活动,或者在社区里得到别人的指导会更好。如果能有像RailsGirls这样的活动带领入门再配合GoTeaLeaf这种很系统、很原理化的培训,我觉得花钱是非常值得的。

问:你接下来在学习上,事业上,工作上有什么计划?

即使是我现在参加了这么多的培训,学了这么多,工作了这么长时间,我觉得我的东西还是不够。现在我每天起来都会去看Ruby on Rails Guides,我每次看的时候,都会有新的收获。我不认为会写代码就是一个好的开发者。写好代码只是最基础的,对产品的理解,对需求的理解,对用户的理解,这些也都是必不可少的。

问:你现在业余时间多不多?

我们周六周日是不加班的。平时的话我们就正常上班,如果项目工期紧,可能会晚走一会。

问:你的业余时间有多少是用来学习Ruby和编程的?

我这个人比较宅,可能一个月或者两个月才会出去玩一次,剩下的时间基本上都宅在家里看书。自己喜欢的事,做起来不感觉辛苦。

问:你觉得程序员是吃青春饭的吗?

我不这么认为。从我想学Ruby到最后成为Ruby程序员,已经是过了30岁才开始行动的。

年轻的时候,刚毕业的那两年可能是拼身体、拼加班。因为自己资历不够,经验也很浅,所以通过加班和熬夜来长知识、长资本。随着年纪越来越大,你经历得越多,你的经验也会越多,你能看到的就更远。比如同样是实现一项功能,刚毕业的人可能只是单纯地把这项功能做出来,可能做得会很快。但是当你站得更高时,想的就会更多:我怎样做才能让用户使用得更方便、更人性化,我在实现这个功能的时候,怎样能把代码写得更巧妙,扩展性更好。我觉得对于程序员来说年纪越大经历越多,反而是一件好事。

问:对于其他想要学习编程或者学习Ruby的女生你有什么建议吗?

一定要亲自动手实做,最好是亲身参与真实项目;花钱参加专业的培训。大道至简,每天坚持。


更多精彩,加入图灵访谈微信!