2016 新年快乐!
前几天在琢磨想说发一个 AMA [1] 的帖子,一晃儿已经是 2016 年了,于是就发了。:)
问题没有什么局限,但对不了解我的朋友们,我简短的介绍一下自己——
我生活在澳大利亚墨尔本前前后后 15 年了(对海外生活感兴趣的欢迎提问)。从事 Ruby 编程也有相当一阵子了,最早发现 ruby 的时候,rails 还是 0.10.x 版本。近几年来基本上游走在带领团队这一部分。最近一年多所在的公司在西安有和 Thoughtworks 合作,所以也了解了一些国内与澳洲的不同的工作方式以及远程团队协作。
一些链接:
我在 2012 年回上海参加了那年的 RubyConf China:http://railscasts-china.com/episodes/rubyconf-2012-fred-wu 2013 年的 Teahour.fm podcast 的采访:http://teahour.fm/2013/04/22/interview-with-fred-wu-about-opensource.html Rails 贡献者排行前 200:http://contributors.rubyonrails.org/contributors/fred-wu/commits 我的 Blog:http://fredwu.me/ 我的 Github:https://github.com/fredwu/ 最近的一个开源项目:https://github.com/fredwu/amaze_hands 我的 Flickr(我爱好摄影):https://www.flickr.com/photos/ifredwu/albums
不管是对编程 / ruby / rails 的学习也好,海外工作生活也好,带领团队也好,参与开源项目也好,或是其他任何方面,欢迎发问,在我能力知力范围内的我会尽量作答,抛砖引玉。:)
[1] AMA(Ask Me Anything)起源于 Reddit,通常是发帖人发帖让大家随便提问然后发帖人来做解答。
#1 楼 @blacktulip 心得说不上,因为我也有拖延症。但我一般:工作上的东西我都有用 todo 来管理(我用 Todoist),每天应该完成的事情通常都当天完成。对于自己本身想要达到的目标,我前阵子开始尝试用 Trello 来管理。
#2 楼 @springwq 订阅 Ruby Weekly,多看开源项目。等对 ruby 的认知到了可以自己写程序的时候,多写一些自己可以用得到的小工具。等用熟练后,慢慢可以开始参与开源项目的开发。
#3 楼 @fighterleslie 现在是 job seeker 的市场,供不应求——前提是优秀的程序员供不应求。基本上稍微有点工作经验的 ruby 程序员全部都有工作了,很多公司(包括我们公司在内)从一两年前开始就迫不得已的开始寻求有经验的 Java / .NET / 其他语言的程序员,开始培养他们写 ruby。
#4 楼 @knwang Brisbane 我不太了解,墨尔本和悉尼都有规模相对较大的公司,所以对初级程序员的友好度还算高。比方说我们公司,虽然其他部门仍然在招高级程序员,但我所在的部门在最近的半年里已经招了三位初级的程序员了。
#7 楼 @winnie 刚来的时候的确是,不过那也是十多年前了,环境不同。现在的话还好,习惯了这边的生活节奏。而且现在不少商店也营业到挺晚的——当然,和国内的大城市还是不能比的。
觉得 ruby 和 rails 都很棒!已经有 ruby、rails 开发一年两个月经验。还在往成为一名合格的中级水平程序员的道路上努力,想好好的把数据结构、算法等知识再巩固。觉得 go 也不错,想以后也好好学 go。很早就有关注楼主,如何突破自己成为达到中级水平的程序员呢?希望 听听楼主的建议
#11 楼 @tianzhen 我反而觉得国内相对都会落后几年。就好比 ruby,在澳洲 ruby 挺早就“盛行”起来了,ruby 社区早年许多个开源的项目都是澳洲的程序员开发的,比如 Formtastic, Machinist 和 Thinking Sphinx 等。Java 和 .NET 在哪儿都是占大头所以这个和其他地方一样。对前端的需求相比而言比对后端的需求要少,因为很多小公司直接都是招 full stack 的,但前端的职业也有不少,工资可能相对没有后端的多就是了。
#12 楼 @pathbox 其实没有什么捷径——多花时间多花心思。别人出去约会玩耍的时候,如果你把这些时间用来开发程序,日积月累,就慢慢可以超过其他人了。当然了,适合的学习的方式也很重要,但每个人都不同。就我本身而言,看大量的开源项目,以及自己参与开发大量的开源项目,从中获益匪浅。
#13 楼 @jimrokliu 从流量角度而言的确是。所以澳洲大部分公司相对不需要太多处理高负载高性能方面的人才。
这些事可能有比较紧急的,而插入这些事之后会 delay 之前的计划。
有些时候,明明某人有能力做某事,但是在工作中会说:等 XX 负责的来了搞定。
技术更新快,但是并不是所有的都会成为一个主流和方向。尤其是在初始的时候某技术是不明朗的。btw. 个人偏向后端,前端太烂。。。。
谢谢。Happy New Year !
偏个题 想问下你们公司有没有 Product Manager? 主要负责的是怎样的工作?(因为不同公司的 PM 职责差别还蛮大的)他们是怎样成为 PM 的?(比如开发转?)
在工作中遇到中间插入的事情,你是如何处理的?
我目前在带领的团队之一就是有这种情况,我们统称这些需求为 BAU (Business As Usual)。我们对这些需求的处理方式是这样的:
综合这三点:我们部门的所有团队(一个四个产品团队,一个部署工程团队)上的开发人员,除非是担任 squid 或相似的角色,其他程序员都不会被杂事打扰到。
如何看待事情的职责分明。
这个我觉得是企业文化吧,或者是团队文化。要看公司和团队的 leadership 怎样去鼓舞大家了。在我们公司,我们一直在大力的提倡所有人都要 proactive —— 也就是说,在自己能力范围内可以解决的事情,尽量想办法解决,而不是坐着等别人来。通常我都会和我的团队成员,还有我的直系下属谈心,拉近距离,然后用比较“软”的方式去鼓励他们。
当有人“屡教不改”时,就是一对一谈心给 feedback 的时候了。如果在招聘的时候招的都是比较优秀的人才的话,绝大部分人都是会警惕自己提高自己的。
如何提高自己的技能树
这个不管是程序员也好,或者是像我目前的职位——几乎没有什么时间编程,都是可以挤出时间来提高自己的。就比方说,我们部门有一个三人的部署工程团队来替四个产品开发团队提供部署和自动化方面的技术支持,公司也有一整个团队给公司所有团队提供部署的工具。但在日常的产品开发中,时常还是会需要一些小工具让自己的工作变得更有效,这时候,就可以自己找时间来“把玩”了。我最近期的 Amaze Hands 就是通过一半工作的时间,一半自己的时间,拼凑出来的。若干年前,我在带领一个主要是 PHP 的团队的时候,也是凑时间出来自己用 ruby 写小工具。
时间和事业线一样,挤挤总是会有的。-__,-
Ruby 的话,我推荐 http://lotusrb.org/ 还有 http://rom-rb.org/ 。虽然这两个项目都有一定的规模,但是每个 component 都封装的很好,可以一个一个拆开来观摩。
JavaScript 的话,我近期接触的不多所以不太了解……
- rails contract 形式的工作对初中级人员是否友好?
“contract"?你是指作为一个 contractor,做不同的项目?我觉得不错啊,可以在相对短时间内接触到不同的项目,开拓视野。
- remote 对初中级人员是否友好?
这个么,我个人是觉得,如果你的首要目标是积累经验,学习的更有效的话,我还是建议身边有同事可以互相切磋和学习比较好。
有。而且理想情况下是每一个团队都配有一位 PM。
我们部门的团队的组成通常是这样的——
Product Manager x 1 Delivery Lead x 1(这是我目前的职位) Tech Lead x 1 Business Analyst x 1 Developers x 6
当然了,每个人的背景不同,长处不同,所以很多时候大家都用互补的形式来满足团队的需求。就好比我带领的团队之一缺少 Tech Lead,因为我有技术的背景所以我就尽量去填这个空。
从开发转产品,我团队上就有一位。他从开发转 Business Analyst,然后最近转 PM 了。我觉得这个转型轨道很不错,BA 这个职位可以锻炼一个人分析产品的能力。
@fredwu 生活方面,请问在澳大利亚生活和在中国生活各有什么好处和坏处?
技术方面,请问您对“Rails Way”怎么看?我指的是传统 Rails 中组织代码的方式,比如 fat model,controller 的 before/after_action, strong_parameters。它们是否在 简单的场景 下仍然是很好的选择?甚至是更优的选择?
问这个问题的起因是,对于一些复杂的需求,我往往会根据抽出更多的对象让代码更好维护,但也导致会写一些“胶水代码”去组合使用它们;同时项目中有些部分的需求非常简单,直接在 controller 中操作 model 是最容易的选择。我想这种“因地制宜”也许是个好方案,但最后一个 Rails 项目中混合了各种不同的实现方式,某种程度上会让其他人不那么容易理解。我也曾经想过更 OO 的方式并没有问题,“胶水代码”的出现也可能是框架没有给出一个好的高层次抽象。不知道您对此怎么看?
@fredwu 看过你推荐的 Leading Snowflakes 这本书,很不错。你之前提到 BAU 的管理方式也很有意思,不知道能否推荐些项目管理方面的书籍?
能否介绍下你从开发转型团队管理的经验,以及分享下对开发转型团队管理的建议?
生活方面,请问在澳大利亚生活和在中国生活各有什么好处和坏处?
澳洲的优势:
澳洲的劣势:
技术方面,请问您对“Rails Way”怎么看?我指的是传统 Rails 中组织代码的方式,比如 fat model,controller 的 before/after_action, strong_parameters。它们是否在 简单的场景 下仍然是很好的选择?甚至是更优的选择?
在 RubyChina 论坛上时不时会有一些开源的 rails 项目——很可惜目前为止我还没见过封装的比较好的。我认为,如果非常宏观的来看,可以把 rails 的项目代码质量归为三类:
大部分的开源 rails 项目都是 1 或是 2。
不管是 rails 也好,其他框架也好,在看待代码的复杂性时,可以问自己两个问题:
在简单的场景下,光靠所谓的 MVC 的确是可行。但即便是一个简单的 blog 系统,或是如同 RubyChina 这样的论坛系统,光靠 MVC 是很难去维护的。这时候就需要 service 层,比如 presenters / decorators 之类的,去一层一层的剖析和封装业务和系统逻辑。
推荐些项目管理方面的书籍?
这类书籍说实话我看的不多。我通常都是通过看别人的 blog 或是通过观察同事来自我提升的。我入职现在这家公司的时候我 boss 的 boss 送了我这本书,挺不错的:Turn the Ship Around。
能否介绍下你从开发转型团队管理的经验,以及分享下对开发转型团队管理的建议?
最首要的一点,这也是经过了这几年后,我观察新上任的 tech leads 他们正在犯的错误——学会放下。通常,能够晋升到管理职位的,技术上肯定是有两把刷子的,有两把刷子的人,通常都在不同程度上非常的自傲。这让我想起我大学毕业后第一份全职工作,当时我在面试时对面试官说:“I believe work experience is overrated.”可见当时我也是非常自傲的。年数越久后傲气就会慢慢的淡下去——一来是自己本身的成长,二来是懂得了如何去信任和尊重其他同事的知力与劳力。
第二点是许多管理者做不太到的——保护团队。所谓的保护团队,是说作为团队的 leader,要做的并不是去“管理”团队,而是让团队能够最高效的去完成团队的使命。这包括:
另外,怎样得到团队的信赖与尊重?通常,人都是从小细节中观察别人的,所以可以通过时不时的自己递交代码也好,分析某个 feature 也好,完成团队成员的要求也好,从小事中不断的去提升自己在团队中的信赖度。
做好以上这几点,都是有助于提升团队的士气的。当然,还有些“小技巧”也可以用来提升士气,比如多举办 team building 的活动,多与团队成员在工作以外多相处(一起出去吃午餐,一起出去喝两杯,之类的)……
如果我想找澳洲的 Rails 工作(senior --)要有什么途径才能申请到
看技术程度和英语交流的程度吧。但一般如果你人已经在澳洲了(学生签证或是旅游签证之类的),能够当面面试的话,成功的几率比较高。可以上 seek.com.au 和 LinkedIn 看看。
国内驾照到澳洲怎么换成当地的
每个州不一样。我在的维省的制度在这里:https://www.vicroads.vic.gov.au/licences/renew-replace-or-update/new-to-victoria/overseas-drivers
TW 最大的澳洲客户应该就是我们公司了。我觉得多多少少有帮助的吧——可以帮你在职场上训练英文用语,某些团队时不时的都有机会来澳洲出差。如果你是被招来写 ruby 的话,应该就会被分派到我们公司(REA)的账户上了。
看 Java 和 .NET 之类的,我觉得前景很明朗啊,而且 ruby 这个语言平台本身一直在不断地进度和更新,我觉得在未来的 5-10 年里,ruby 的地位挺牢固的。
要说 rails 嘛... 见仁见智了,不好说。:trollface:
#46 楼 hey @fredwu 我占个楼 :)
@binshuo20 如果你在西安,这里有加拿大同事,你入职后可以跟他聊聊。
在 thoughtworks 入职之后,试用期会有 Buddy 带你,转正后会有 Sponsor 带你。前两个月我的 Sponsor 刚移民到了澳洲,从他那了解到的信息:
Hi @fredwu 借这个帖子我也问个问题,我来澳洲也有快三年了,我发现我周围 30 多岁通过技术移民过来的朋友,来到澳洲后工作方面产生了很大的落差。在国内这些朋友都有点小成就(比如:做过架构师,带过大的团队等),来澳洲后由于英语不行及文化的差异,又要从基本的工作做起,而且很难得到提升,天花板明显,不知如何突破,不知你是否有好的建议? 另外,澳洲的技术氛围还是不错的,也不急躁,你觉得在这里做面向国内的技术产品(比如 SAAS)创业如何?或者你觉得在澳洲创业有哪些机会?
我还以为 TW 澳洲的大客户是一家互联网房地产公司。
没有错啊。:trollface:
澳洲的物价房价都高于加国吧,另外 IT 就业方面,是澳洲好还是加拿大好呢?
我没去过加拿大,不了解,帮不了你啦……
在国内这些朋友都有点小成就(比如:做过架构师,带过大的团队等),来澳洲后由于英语不行及文化的差异,又要从基本的工作做起,而且很难得到提升,天花板明显,不知如何突破,不知你是否有好的建议?
努力提高英语水准是最靠谱的方案了。从基本的工作干起也没什么不好,当交流是问题的时候,技术水准再高也是浪费啊…… 多听多看多说,上网的时候少看中文网站,多看英文网站,多看美剧,多听英文的 podcasts——休闲和提高英语两不误。日积月累慢慢就有了。
另外,澳洲的技术氛围还是不错的,也不急躁,你觉得在这里做面向国内的技术产品(比如 SAAS)创业如何?或者你觉得在澳洲创业有哪些机会?
这边做面向国内的技术产品?我不太清楚但听上去没有什么优势——如果是面向国内的,那不是应该在国内创业才是最贴近用户群的吗?澳洲的创业机会和其他地方都一样我觉得——靠观察哪些行业哪些领域还没有被自动化“侵略”。比方说若干年前我所在的那家创业公司专攻的是企业 travel 平台。前阵子和一位创业家聊天,他专攻的是 farming / agriculture。
新手,下载了 aptana 的 radrails 最新版本后,不知道怎么配置,找到了以前版本的配置方法但不适用(是我看错了?),请问最新版的怎么配置?不配置的话会提示错误:”replace project index file“还 incounted a problem。Resource '/r/public' does not exist.
复杂的业务逻辑需要通过 service 层去包装。用 service objects 去帮助实现 model 与 model 之间的业务逻辑。
前端代码是指 javascript 吗?如果是的话,通过 bower 或 component 之类的对 JS library 管理,view 层面可以看下 react 之类的,前端业务/数据层面的可以看下 redux 之类的 library。
冗余代码有质量较高的测试吗?如果没有的话,可以从慢慢添加测试开始。有了测试后,才能逐步的去做重构。最重要的是平衡重构所需的时间精力,和商业需求。
:)
#67 楼 @yan32768 慢慢积累。:) 这周末我花了好多时间看 React,因为新工作的需要——平常可能用 jquery 半小时能完成的简单的操作,在 React 里我花了一整天,但学习和研究让我对 React 和 Redux 有了比较基础的认知。:)
#68 楼 @zhenjunluo 不能说用的多,但是不少人,特别是 ruby 社区的,都对 Elixir 非常感兴趣。
楼主您好,想多问几个问题:
#73 楼 @imwildcat 大部分公司不会真的去证实你的工作经历,但比方说我在面试的时候,会时不时的问一些简历上相关的问题。我一般都会问一些项目上的问题,偶尔也会让应聘者在白板上讲解一个以前的项目,考验对方的理解能力和解说能力。有自己的项目当然是个大大的 plus。:)
@fredwu 你好,最早在 php 社区认识你,codeigniter, kohana,yii 都有你的身影,今天在目前中国最大的 ruby 社区看到你,很开心, 我一直在做 php 开发,想知道澳洲 php 近况如何?谢谢!
@fredwu 您好,不知道这个帖子还有没有效,我想问您一下澳洲墨尔本有没有 ruby 相关的工作机会呢?Ruby on Rails 开发有将近两年的经验,因为一些原因想去澳洲工作一段时间,正好十一打算去澳洲旅游去看看,请问应该做一些什么准备呢?
有很多哦,至少在墨尔本和悉尼,有很多 ruby 的需求。具体公司和职位的话,你可以经常在 seek.com.au 上看看,或是在 LinkedIn 上找找。
除了技术本身,最重要的就是语言了。:)