ChinaonRails关于Rubyist的调查

ChinaonRails模仿Dmitry Belitsky对几位成功的Rubyist进行了9个问题的email访问。我名不见经传,居然也收到Stephen传给我的邀请,所以我也回答一下这些有趣的问题,重在搀和。

1. 请简单介绍一下你自己,留下Blog、Twitter等。

Daniel Lv
中文名吕国宁。半路出家的程序员,擅长Rails以及web应用开发。 Blog: http://lvguoning.com
twitter: @lgn21st

2. 你是怎样找到你的第一个Ruby相关的工作的?

跟找其他工作一样,投递简历,面试,然后我就成了Ruby程序员。其实我原本算找一份Java的工作。而第一个雇佣我的公司是RED,在上海是最早一批用Rails构建web应用的公司。面试的内容主要是Linux,以及一点点VIM技巧。最后问及如果要用Rails作项目,你转行学这个有没有问题?

3. 你是在哪里和怎样搜索工作机会?你能给我一些最好的方法找到Ruby相关工作的建议吗?

基本上,上海这边搜索Ruby相关的工作机会不难,特别是我们有了Shanghaionrails社区之后,那里几乎成了各个公司发布招聘Ruby/Rails程序员的地方,我跟很多招聘猎头聊过,总的来说,找到一个靠谱的Rubyist不容易的,所以我认为找Ruby最好的方法就是先熟悉这门语言,多积累实践经验,并关注社区并融入Ruby/Rails社区。

4. 你能给一个没有完整项目展示的Ruby新手一些建议吗?

我理解这个问题应该是问如果Ruby新手没有Rails经验怎么办对么?现在优秀开源项目这么多,比如Beast,Typo,Mephisto等等,这些都足够作为一个新手研究的起点。不过我仍然建议新手多多关注Ruby基础,把基础抓劳。Rails本身是很容易学的,而我看到最多的则是很多新手没有经验,手握如此强大的Rails却在不停的犯着各种新手常犯的错误。所以学会如何学习,如果从其他人那里总结经验也非常重要。

5. 你可以说说怎样做可以让现在比过去更好的吗?主要是关于使用Ruby工作、客户、如何寻找好的客户方面。很多人梦想着现在比过去好,现在比将来好,所以请写下任何你关于超越过去的想法。

尝试从更多的渠道去理解自己正在作的事情,手上正在开发的功能的价值,面对的困难和需要解决问题等。不要总是对着电脑思考问题的解决方案,尝试离开电脑,放松心情,从其他角度思考问题。其实,每天你面对的最大敌人是你自己,你超越了这个敌人,就超越了过去的想法。

关于使用Ruby工作,寻找更好的客户方面,需要平时积累的,如果你解决了自己的问题,发现很多人都跟你一样面对同样的问题,那么将你的解决方案抽取出来,封装成插件,去帮助更多的人,这样我相信会有更多的客户来找你,雇佣你。

6. 你可以推荐一些你认为将帮助一个程序员生活得更好的书籍、网站、秘诀吗?

书:《Unix编程艺术》,《重构》,《SICP》,《算法导论》,我重头推荐《敏捷软件开发,原则,模式与实践》

网站:当然是rails的官方网站了,其他就是通过Google Reader订阅国内外Rubyist专家大牛的Blog,通过Blog学习是一个很棒的途径。不过不要订阅我的Blog,我早放弃不写技术文章了。

7. 你一周工作多长时间?你怎样保持工作效率和精力集中呢?

我大概每周工作50个小时,有的时候更多一些。

保持工作并提升工作效率一直是我追求的目标,经常锻炼并保持身体健康是个好方法。关于如何集中精力,能专注于某件事情上面较长的时间,这个很有技巧。最近我看了一本禅修的书,上面介绍了一种入门的禅修方法,特别适合我,能够很快的让浮躁的心绪平静下来,并专注于我的目标上。

其他就是悉心呵护并保护好心中的激情,从初始对Ruby的热情,旺盛的求知欲。到项目中对自己所做的事情的价值认可,通过辛苦工作获得成就感等等。

8. 你怎样管理你的工作空间?你在工作时使用哪些工具?

我认可GTD的那一套原则,但是不拘泥于GTD的教条。我尽量在条件允许的条件下为自己购置最好的设备,如Mac笔记本,外加大号显示器,好用的鼠标,键盘等等。天,我在外围设备上花钱太多!

我用Thing管理我的日常事物。我使用Eddy Timer计时,计算并规约我持续投入在某件事上的时间。用Yep管理我所有的PDF文档 ,用Evernode来作笔记。我同时用TextMate和VIM写代码。其他还有1Password,Colloquy,DropBox,MindNode Pro,Sequel Pro,Skitch等等。

9. 怎样成为一个成功和有用的程序员?

我不相信有没有用的程序员,除非你并不作程序员应该作的事情。所有的程序员都是有用的。但是如何作一个成功的程序员,恩... 我承认这个问题难倒我了,我认为,一个成功的程序员首先自己必须是一个优秀的程序员,除了能够胜任自己的本职工作之外,还能够清楚的表达出自己对软件开发方面的观点看法,并分享给其他人。当你影响到其他人,让别人的工作更好更出色,那么你就是一个成功的程序员。

10. 什么是一个程序员应该知道的?

不要忘记生活,考虑一下你为什么要努力工作,以及你个人职业上的成功如何能提升你的生活质量。