之前看 InfoQ 有篇文章说程序员都非常真诚友善,乐于助人,我们 Ruby 社区更是这么多程序语言中最友善的社区,所以就想到把苦扰了很久的问题,自己整理一下思路,发出来也听一下业内人士的意见(身边没有亲戚朋友是这行的)。主要是想听听大家的意见,欢迎吐槽!
先抛出问题:想转型 ROR,目前也正在自学,主要担心两个问题
高中有一次期末考试数学不及格,很受打击,从此对数学有心理阴影。大学虽然微积分线性代数啥的成绩不错,但是我只是态度认真而已,不敢说自己有多擅长。这其实是我最大的担心。编程需要严密的逻辑思考,我可以胜任吗?从先天条件看,我适合干这行吗?我相信勤能补拙,但那是另一方面。请看下文冰山模型的分析。
ROR 就业前景如何,供需关系如何?听说需求蛮大的,是真的吗?ROR 现在热门吗?未来发展趋势怎么看?
下文以冰山模型为基础,分析是否适合从事编程行业。
冰山之下是天赋,包括价值观、性格特质、动机等这些底层的东西,它决定了一个人是否能做成某事的 60% 左右。这部分对成人而言,可变空间不大。而冰山之上明显的知识技能,可以依靠后台努力学习和刻意练习提高,也就是勤能补拙弥补的一部分。
自我剖析如下:
动机:小时候初中接触过计算机,但只限于“扫雷”,真的是超级简单,光点鼠标就行了。爱写日记,担心被其他人看到,梦想设计一种密码,由数字和英文字母组成,心里暗爽了很久很久,感觉自己怎么这么聪明。那时候还不知道世界上有密码这回事。小时候觉得黑客好酷哇,黑暗冷酷霸道,曾写过作文幻想自己就是黑客。成年后,看电影的黑客,一个人坐在电脑前,就可以要什么有什么,掌控一切,操作一切,哇塞,超级牛逼啊。当然现实并非如此,黑客也许很酷,但是工作也同样也会有无聊枯燥的时候。我只是想尝试一下自己适不适合,有没有潜力做好。如果一次都不尝试,到老了,我会不甘心,不想老了无限后悔中。。。。 这是感性的一面。人经常因为感情的喜好而做出坏的决策。。。。这就是我想多听听其他人意见的原因。
愿景/价值观:研究逻辑思维,探索幸福/财富的终极秘诀,然后传于子孙后代。哈哈这是我不为人知的梦想。
性格特质:外温内热,喜欢跟任务打交道胜过跟人打交道(跟人打交道的内心 OS:沟通成本好大啊。。。好心累。。。)
通用能力:跟同龄人相比,
善于计划与执行,执行力强,追求完美,目标导向型人格; 思维条理清晰,崇尚逻辑思考,但是严密性有待提高;目前也在不断地探索中。。。
潜力:公开演讲/主持,有经验不怯场,喜欢愿意投入更多时间(跟同龄人相比);潜意识喜欢操控,可惜现在能力不到家;人际灵敏度高,擅长察觉他人情绪,但不喜跟人打交道,所以协调沟通能力平均值。
知识:本科经济学,学得蛮好的。喜爱用经济学思考和解决问题,比如帕累托改进;有限资源条件下,效用最大化。其实本文也是这个思路。综合个人所有特质,最大化职业转型成功率。
第一份工作财务/人力方面的,流程化事务性工作内容,感觉没什么积累。
技能方面(水平从高到低依次递减):英语好,写作还可以,编程入门水平
业余爱好(频率从低到高依次递增):不追剧不看小说不打游戏;偶尔看看电影捣鼓化妆臭美;经常运动健身跳舞;每天看书。
整理下来,发现自我认知方面还可以,主要是对 ROR 这行业不太了解,
作为女生(各行各业对女性的偏见客观存在)已经毕业四五年了,你觉得我适合转型做 ROR 吗?
想转就转,决定了的事情就去做,实际上你不学一段时间,不用 ROR 做一个例子出来,你很难知道自己是不是真的喜欢编程。而且你可以拿自己的业余时间来学编程,你也就损失点个人时间而已。
不是大牛,强答一波。
你担心的问题没关系,不过我觉得你要考虑转不转的关键不在于这两个问题。
第一个问题,无需担心。
写 Rails 很少会遇到算法的问题,最常用到算法的排序和查找在 Rails 里有数据库和 ruby 的 api 来解决,无需我们自己操心。
所以这还存在语言歧视,我曾经在 quora 在看到过一个问题,说是她是个女的,她的男朋友说她写 Rails 根本不能算编程,她要不要和她男朋友分手。
第二个问题,也没关系。
因为你初学 ror,实际上是要学习大量关于 web 开发的知识。等你学好了,做个几个项目。你换其他框架或者语言的时候,你有百分之八十以上的知识是通用的。所以 ror 的前景不好也没有关系,只要整个 web 开发领域前景够好就行,而现在 web 有一统客户端的趋势,估计至少还能火个几年吧。
但是我觉得你转不转还存在一些其他的问题。就是你的人生理想和你近期的阶段性目标,是否和编程有关。如果没有关系,那么你在编程的时候就会长时间感受不到自己做这件事的意义,很容易焦虑。另外一个就是你是否真正喜欢编程这件事,至少不讨厌,甚至在编程时能够偶尔收获一些快乐。
如果你只是想试一下自己是否合适,那么马上行动,大不了放弃。如果你想长期从事编程的工作,那么你就要考虑一下上面两个问题。毕竟人生很长,一辈子做一个不合适的工作会很煎熬。
真的好暖心,果然是最有爱的社区。关于 web 的见解,很受益。其实我也在深入地问自己,关键在哪里。觉得你看问题很准。编程与我而言,自己独立消除了 bug,很有成就感。满满的成就感,会让人忘记吃的,窃以为这可能是脑高潮哦。至少可以确定不讨厌编程。选择编程排除偶然运气,儿时心结等原因外,可能是之前工作受挫。其实本职工作做得很好,同事领导也认可,但是我分析因为不是核心岗位,不受公司重视,所以。。。
那你的核心问题可能是觉得自己不受重视。
女性不会像男性那样莫名其妙就会毫无道理地觉得自己很牛,在感情上需要那种自己被需要被重视的感觉,这很正常。
转编程不是解决你核心问题的办法,也可以想想看别的办法。
记得以前看过一本《非暴力沟通》的书,里面说你不论做什么重要的决定,先想想你自己的根本情感需求的什么。
对自己诚实,这样才不至于用错方法。
很多女生确实存在情感需求不被满足的情况,的确是的,比如你说的被重视的感觉,安全感之类的。但是我反思了一下,根据马斯洛的需求层次理论,我现在需要“被尊重”,甚至是个人价值实现。希望证明自己,甚至炫耀自己。比如如果我从事编程的话,将来我的孩子可以对他的同学说“我妈妈是程序员,太酷了!”,这个画面想想就让人激动。呵呵,我的潜意识的确是这样的。希望我的家人我的孩子以我为荣,以我为傲。这是最深层次的需求。
深层次的需求就是:我想让我的家人为我感到骄傲。而我选择编程的逻辑是,编程行业工资高,编程行业都是精英,我也想加入,成为其中一分子。精神和物质的需求都满足。令人担心的是,我的能力够吗?数学不自信的带来的硬伤。答案是没问题,干 ROR 不需要高深的数学。那我加入,需要几年的成长期,行业发展怎样,不会到时黄花菜都凉了?。答案是没问题,这行业还在稳定发展期。
不过我觉得既然深层次需求是证明自己,炫耀自己,编程只是选项之一。当然咯,编程可以满足你这个需求;但是呢,编程并不是唯一的选项。既然想证明自己,应该拿出自己最擅长的。
好吧。
第一我想说,编程行业精英确实很多。但说编程行业都是精英,这可能是社会营造出来的一种假象。实际上编程行业鱼龙混杂,什么人都有。成为程序员并不能让自己被尊重,社会从来不尊重人,只注重人背后的财富和地位。单纯做码农,想提升自己的阶级,是一件比较困难的事情。想提升自己的收入,生活得更好一点,倒是可以,不过也是建立在牺牲自己大量精力和其他爱好的前提下。我们不应该成为那种只为回应家人期待,希望家人为我们骄傲的人。为自己而活,赚更多的钱,买更多的包和衣服。
其实 ROR 有没前景并不用关心,跟兴趣走就对了。而且 web 开发光从 Ruby 语言来看,也不一定全用 Rails。特别是现在。只要有兴趣转什么都可以。没有任何障碍,唯一的障碍就是自己给自己设障碍。
下面这张脑图是最近在总结自己的 Web 开发学习经验时画的,还不太完善,不过脉络已经有了,希望能给楼主学习 Rails 提供一些启发。 即使最后不学 Rails,只要你打算做 Web 开发,这些东西几乎都是会接触到的。
就像健身除了进健身房外,平时生活中也有一些简单的动作可以练习。编程也一样,就是在学编程之外,把电脑用熟,包含但不限于:熟练掌握操作系统、常用软件的使用方式、了解各种功能和设置、疑难问题处理、正确的使用习惯(比如对百度、360 全家桶的看法)装机、了解电脑每一个硬件的用途,接触 Win、macOS、Linux,翻墙、正确的搜索姿势(Bing、Google)
熟练这些在学习编程的时候会有极大的优势
学编程我觉得最大的门槛就是学会如何解决问题,至于用什么语言,只是工具不同而已。
学习 Rails
能在一定程度上让我们对 Web
开发有比较全面的了解,这时候再去学习其他语言,也只是语法问题而已~
仔细想起来,对多数程序员来说,编程并不需要太过复杂的逻辑思维能力和太高的数学水平,可能更需要的是细心、耐心以及英文水平。
另外,初高中的数学成绩不理想并不能说明问题,可能只是缺乏技巧和训练,看问题的角度太窄。很多问题成年之后带着目的再回去解,也不见得难到哪里去。人一辈子是场长跑,起步快并借此碾碎那些起步慢但本可以在将来实现超越的人的自信心的,只是运气好罢了。
同在转行中 T^T,本科会计专业,大学期间没有学会你说的帕累托等等,当然也没听说过 RoR,LoL 倒是还行,一个学渣中的战斗学渣。所以毕业只好没出息的去了宙行做桂圆狗。建议先 JS 入手,类 C 语言的语法清晰,再 NodeJS,Express(Express 提供 V 层和 C 层,后端渲染最简单的是 ejs,其他层路由,中间件,和数据库 I\O都需要自己写,但好处就是上手简单,数据流清晰,然后就可以 MEAN - Mongoose,Express,Angular,Node 写 SPA 了,我刚学会 1.xTTTTT)。RoR 一上来就是 MVC,而且整个 Rails 就像个黑箱,官方 guide 一直刷也不抬明白为什么,搞不明白数据流向。
我觉得 Rails 是最适合做程序员入门的,因为 step by step 就可以直接地看到自己做的网站。其他语言学个半年除了打印 hello world 或者熟悉几个算法之外,都不知道自己能干嘛。
大学里面一般用 C 入门,想一想哪些语法就够头疼的了,一个 hello world 编译了一天都没通过。
现在学乖了,跨行一般用 python 入门,可是一直停留在命令行阶段,学来学去都感觉不到激情,所以大部分人都是《Python:从入门到放弃》。
所以 rails 目前是第一选择。