Ruby 工程师 入职邀请函
WechatIMG32.jpeg本次分享的目的
我是全栈营线上班二期学员——赵龙,最近找到第一份 “Ruby 工程师” 的工作。本人求职期间踩过不少的坑,希望全方面的分享我的经验,能帮助到全栈营希望从事 “ Ruby 程序员” 而不得要领的同学。
在北京求职期间,我不止跟一位全栈营的同学面对面交流,线上交流更多了。大家普遍反应第一份 “ Ruby 程序员” 工作很难找到,有人都打算放弃 Ruby 去学习 Python 了。甚至有人放弃转行 “ Ruby 程序员” 的想法了。
第一份 “ Ruby 程序员” 的工作没那么难,全栈营的学员普遍找不到工作的原因其实简单的不得了——思维死角,简单来说大家的思维进入了死胡同而不知,一直在原地打转。也许你以为自己很努力,那只是错觉。
解决问题的钥匙在其他地方
北京求职第一个月
全栈营线上班第二期于2017年6月基本结束,原计划是7月份来北京求职,中途出现一些意外,推迟到10月20日左右才到北京求职。事后反思,我到北京求职时间太晚了,越早来北京求职越好。
我到北京的第一天,就去全栈营线上班一期学长的初创公司面试,体验了第一次的 Ruby 面试。这次面试主要是让我下定决心尽快到北京,没有拿到 Ruby 面试通知,来北京也没有底气。当天上午,从河北到北京的高铁,我到了北京西站,直奔学长在中关村的创业公司办公地点面试,与学长进行了简短的面试。完成面试后,我直奔提前预定的短租房(北京东六环边的土桥地铁站旁边小区)。我无意中赶上了晚高峰。
第一次真正体验到了北京地铁的威力——太挤了!!!
三天后,我去北五环附近进行第二次 Ruby 面试。这次的面试官是近二十年工作经验的资深程序员,c、c++、java、golong、ruby、python等编程语言都接触过。面试的第一步就是 5 道笔试题,面试官尽力还挑选了最简单的题目给我,将最难的最后一题去掉了。但是,我一道题目都不会,尝试写出的3道题的答案还是错误。当面试官知道我是全栈营的学员后,露出的表情让我难忘。他说我的基础太差,这边没办法让我上班。既然收到这样的回复,我也只能默默收拾东西打道回府。
回到临时住所,我仔细的反思了这次面试暴露出来的问题——编程基础极差。为了解决这个问题,在一周内,我将 《Ruby基础教程》 这本书完整的看了一遍,在大脑中形成一个基本的 Ruby 知识地图。有两次魔改大赛的积累,书中 60% 的内容能理解,剩下不懂的用 google 或百度解决。期间,我继续在 BOSS直聘、拉钩、Ruby China 招聘板块等投递简历。
第二次面试,我尝试用魔改大赛的项目为自己加分。但是,在面试官的几个 Rails 项目基础问题的发问下,我发现自己对rails项目理解极其薄弱,很多基础的编程逻辑问题答不上来。为此,我用4天多时间,将魔改大赛的作品尝试解构。希望通过解构魔改大赛的项目,真正得到技术面试官的基本认可。在后面的面试中,证明我失败了。
从10月底到11月,我总共面试了7家公司。一开始,我以为通过总结面试过程中发现的问题,进行针对性的学习与补救能找到第一份工作。但是,我越求职越学习,我的积极性越受打击。每一次面试,总能发现不足之处,面试官的问题总是回答不好,而且都是 Ruby on Rails 的基础知识。例如:
如何理解网站运行的基本概念——RMVC;
Symbol是什么?
get与post的区别?
你在项目中使用的搜索gem——ransack,如何使用,怎么理解?
......
我发现自己进入了死胡同,原地打转。
珍贵的 Ruby 实习机会
解决问题的钥匙在别处。
从10月底到11月,一个多月的时间里。我不仅仅是 Ruby 求职,更是实地调查了北京的程序员市场,明确得到几个关键信息:
- 北京非常缺 Ruby 工程师。
- Ruby工程师是相当高工资——2万月薪是第一个薪水天花板(纯粹的提高Ruby 编程熟练度即可)
- 一位合格 Ruby 工程师的开发效率至少是5个合格 Java 工程师,编程语言与框架共同决定的。
- Java 工程师已经市场饱和,月薪1万5就到第一个薪水天花板。
- 合格的 Ruby 工程师都是小全栈,数据库、后台、前端都会。
- 初级 Ruby 工程师技术能力相当于中级 Java 工程师。
这几个结论是解决全栈营学员顺利找到第一份 “Ruby 程序员” 工作的关键。
从这几个结论看全栈营的教学,我发现全栈营的教学是严重不完整,或者说缺失了关键的部分——大量编程基础知识的教程,尤其是各个编程语言中通用基础知识。目前,全栈营教程的版本很适合让小白快速入门编程,获得编程成就感激发兴趣,却无法让全栈营的学员再进一步。北京市场上对 “初级 Ruby 程序员” 的要求就接近 Java 中级程序员的标准,全栈营的学员离这个标准就差临门一脚就能实现。
从这个角度看,全栈营的学员最要紧的是找到 “Ruby 实习机会” 重新打磨编程技能,让自己尽快蜕变。一旦完成蜕变,一切问题就自然解决。
当我意识到这一点,立即联系所有认识的 Ruby前辈(Ruby面试时,留下认为靠谱的 Ruby 前辈联系方式),甚至在 BOSS 直聘、拉钩上也进行联系,求助一份 Ruby实习工作机会,没有工资也没关系,如果有哪位 Ruby 前辈愿意带我,交学费也 ok。我的一番努力得到了回报,瓦力工厂的 “Ruby 前辈.裴智慧” 答应给我这个机会。为此,我付出 2000 元一个月的工位费(每一个公司的工位都是有成本),计划实习 2 个月,实际实习 1 个月,因为,租房地点与实习公司距离太远(单程近2小时,往返近4小时),所以,我在实习公司附近短租一个月(额外增加近4000元开销),总实习开销 6000 元左右。
本人决定必须转行。
脱胎换骨的 Ruby 实习
实习开始前,“ Ruby 前辈.智慧兄” 就反复提醒我:从头开始学习Ruby,只跟着教程敲代码无意义,明白背后的含义才有用,不要心急,每一天学一点并坚持下来,一个月就能看到成果。前几天,我能在一周内顺利找到第一份 “Ruby 工程师” 工作,智慧兄至少一半以上的功劳。
Ruby 实习最大的难点:找到一位有耐心教你的 Ruby 前辈,很多的 Ruby前辈根本不想带新人,因为需要教大量的编程基础知识,这样教学非常的累,投入与产出严重不平衡。如果遇到一位愿意教你的 Ruby 前辈,一定要珍惜! 我很幸运的遇到了这样一位的 “Ruby 前辈”——智慧兄。
第一天实习
学习资料、自制教程与技术记录:
Rails Guides 通知发布系统 CRUD 教程(基础版)
“ Ruby 前辈.智慧兄”,让我根据 Rails Guides 文档(Rails 官方指南,最好的 Rails 教程,没有之一),在 rails c 练习 CRUD 。在一周内,能彻底理解了 CRUD ,并且不看任何教程敲出 CRUD 代码,就算是完成了 “Rails 基本功” 。这一点非常重要,实际工作中就是如此。
在这个过程中,我也慢慢的补上当初在全栈营的基础知识。这一点需要感谢:“ Ruby 前辈.智慧兄”耐心的反复教导各种基础知识。
Ruby 实习的心得
编程初学者.有效学习方法论
初学者学习 Ruby on Rails,一定不要使用各种脚手架自动生成文件与代码简化操作,这些是编程熟手的好工具,新手的万丈深坑!!!
全栈营各位学员难以迁移魔改大赛的项目能力,跟这个直接相关!!!
Ruby on Rails 初学者频繁使用脚手架,严重阻碍理解 Ruby on Rails 内部运行机制,Ruby 技术面试官许多的面试问题直接与这些相关。如果无法理解基本的 Ruby on Rails 内部运行机制,根本无法通过 Ruby 技术面试官考核。
当初,我自学 Ruby 越多,面试官回答不上了的问题更多的根本原因就在这里。
Ruby on Rails 中的脚手架:
rails g model group title:string description:text
rails g controller groups
手动生成文件,更方便初学者理解 Ruby on Rails 内部运行机制。同时,避免生成大量不必要的文件,降低项目复杂度。极力推荐新手初期学习 Ruby on Rails 的半年内都手动生成文件,加速理解底层原理,提高编程技术的成长速度。当你了解 Ruby on Rails 的内部运行机制,再适当使用脚手架也不迟——磨刀不误砍柴工。
手动生成 Rails 项目文件:
rails g migration create_group
touch app/controller/groups_controller.rb
面试经验总结
我面试过小公司——全栈营的线上班一期学长的创业公司;也面试过发展中公司——云拓锐联.线上教育平台项目;也面试过大公司——京东的云服务工程师。
京东的技术面试官,不仅要良好的编程思路,各种具体详细编程细节也重要(具体到某一功能的终端指令,配置文件细节等等)。北京的中小型公司技术面试官,主要考核应聘者的编程基础与解决具体问题的编程思想(Symbol 是什么?用户权限如何设计?站内信群发的数据库设计等等)。相对而言,大公司比小公司多一个 “编程细节” 考察面。
Rails 地图(非常重要!非常重要!非常重要!)
Rails 项目的运行逻辑结构 R-M-C-V。
先确定路由 Routes,这样才能确定剩下三部分的文件命名;再确定模型 Model ,相关的数据表一并建立好,明确表间关系,网站与数据库相关操作在这里(如果不涉及数据库操作,可以省略,即 R-C-V );再确定对应的控制台 Controller,网站运行代码的控制中枢,主要处理views与model的具体操作与交流;最后是用户交互页面 Views,这部分直接涉及用户体验。
Routes > Model > Controller > Views (从底层到表面;从核心到交互界面)
现在,本人实作 Rails 项目的基本顺序就是 R-M-C-V (个人推荐这款 Rails 地图)。脑中拥有完整清晰的 Rails 地图后,做 Rails 项目就心中有数,出现报错能快速确定范围。Rails 地图的顺序,可根据个体习惯修改,重要的是拥有这样的 Rails 地图。另一种 Rails 地图 R > C > V > M (Model 建立的顺序不同)
所有的 Rails 项目都是相同的运行逻辑结构。
gem 是 Rails 中非常好用的功能模块包(负责功能的代码打包成 gem 工具)。但是,大家只是根据网上找到的教程模仿使用没有太大一样,重要的是理解其中的编程思维写成一篇博客记录下来,每天一篇博客,一年下来就提升非常多了
通用项目结构(关键基础知识)
任何程序项目从核心底层到用户操作界面,可分为3层:
数据库——后台——用户操作界面
在 Rails 项目中是以下结构:
数据库——后台(model与controler)——用户操作界面(views)
数据库是任何项目当中重中之重,好的数据库设计项目就成功了一半!
项目正式运行,其他部分的代码可以根据需求进行删减与彻底更换(如果项目发展过快,项目框架性能不足,可以保留数据库更换项目框架提升性能),唯独数据库不可以轻易变动。
Model 与 Controler 协作组成了项目后台。
Rails 项目的业务处理逻辑放在这里,Controller 是 Rails 项目的控制中心负责调用各种功能;Model 是 Rails 项目处理与数据库相关的操作,拥有大量的自定义方法提供给 Controller 调用;两者协作共同组成了项目后台。程序员常说的更换项目后台,指的就是 Model 与 Controler 。
Rails 惯例——重 Model 轻 Controller,通俗解释:Controller 内的代码保持简洁体现后台逻辑,调用在 Model 中大量自定义的方法。
View 是用户操作页面。这直接与用户体验相关。前后端分离的项目中,前端工程师专门做 View 层的代码,后端工程师处理数据库与项目后台,提供 API 给前段工程师调用。
网站、安卓程序、ios 程序本质没有区别,只是 View 层不同。
所谓的跨平台项目,就是同一个数据库与项目后台作为一个整体提供 API 给不同平台的 View 调用。通俗解释:多个前端框架 ( View ) 共用同一个项目后台( Model 与 Controller )与数据库( Mysql )。
Ruby 工程师优势
Ruby 工程师——开发效率极高,多约定少配置。
一位合格的 Ruby 工程师的开发效率至少相当于 5 个 Java 工程师。Ruby on Rails 框架已将常用功能内置为默认 API ,直接使用方法名即可调用。项目中反复使用的功能代码,Ruby 工程师可以做成模块在项目各处调用。Ruby 工程师通过这样的方式,极大的简化项目代码。类似 Java 工程师将大量的时间用在的了重复出现的配置文件上,一个都不能错。
Ruby on Rails 工程师都是小全栈。
所有合格的 Ruby on Rails 工程师都是小全栈,工作2~3年后,精通uby on Rails 框架、Mysql数据库、JS、Python(跟 Ruby 极其相似)是非常正常的。而且由于一开始的全栈定位,会在工作中自然形成良好的编程全局观——优秀 CTO 的关键。积累足够的工作经验后,Ruby 工程师得到合适的机会,就能胜任项目经理甚至 CTO 职位。
在北京,优秀的 Ruby 工程师往往精通多门编程语言与技术,再加上工作中形成的编程大局观,是人才市场上绝对的香饽饽,根本不用担心工作问题。
Ruby 工程师有钱途、有前途,只要能沉下心专研学习。
第一份 Ruby 工作
我在瓦力工厂实习一个月,开始面试第五天就拿到 offer(总共 3 次面试),这其中的关键:“ Ruby 前辈.智慧兄” 专门抽出一周时间,对 Ruby 面试正对性培训——面试有技巧的,对自己的项目全方位理解,就是最靠谱的 Ruby 面试技巧,再加一点运气。
我要再次感谢 “ Ruby 前辈.智慧兄” 对我的帮助,让我顺利在春节前拿到第一份 Ruby 工作,安心回家过年。其实,要不是临近春节,我会继续实习 2 个月。那时,我完全有信心拿到 10k+ 的 offer,而不是现在的 6k 。因为,我的时间成本太高了,比其他一切成本都高。详细原因在下面的文章有详细介绍:
想学习编程与转换想小伙伴看过来
为一位靠谱的 Ruby 前辈作个小广告,本人就是在这位前辈的指导下实习培训,成功转行找到第一份编程工作。想学习编程的小伙伴可以关注一下,不敢兴趣的伙伴可以忽略——保证100%就业的编程培训班,最高保证8k~10k 的工资
培训内容:html,js,jquery,sql语句,Ruby 基础,Ruby高级,Ruby on Rails实战编程,就业指导等,
培训目标:让小白快速入门,让初学者快速提高编程能力。
培训地点:北京
培训周期:3个月
教学方式:
全职班(学费15800),周一至周五学习,承诺8k~15k的工作。
保证百分百就业。
备注:
如果想知道一线城市程序员的就业前景,也可以咨询下面的Ruby前辈,他是极其稀少对新人友善且耐心 Ruby前辈(对了,他是java转ruby,同时也会python)。
联系方式:添加微信,请备注(赵龙推荐)。
WechatIMG61.png最后,祝大家早日找到称心的工作。
(赵龙,2018年2月2日晚)
网友评论