来自:知乎
链接:http://www.zhihu.com/question/34101611
已按知乎知识产权要求注明来源作者和链接
回答者:Blue,童心未泯,理想尚存。
1.如果你没有去做,是不会知道自己能不能成为大牛的。
2.学习是一辈子的事情,哪里来的半路出家?25岁学编程,35岁的时候你就是有10年编程经验的人。
3.在互联网时代,随处可见的秘籍太多,而诚心修炼的人太少,和是不是科班出身没太多关系,有的人3个月就干掉人家2年的课程。
4.半路出家,能不能成为大牛我不清楚,最好在付出前不要在意结果,难道因为吃鱼有1%的几率卡喉,你就一辈子不吃了?成不了大牛,就不学编程了?如果你的对象一开始不能答应你白头偕老,你就不谈恋爱了?
5.好的问题才有好的答案。
6.你会发现很多大牛,不仅程序写得好,文艺方面照样响当当,而且身材还不错,原因是什么?
共性的地方是:任何事情的任何结果都需要时间的积累,及坚定的信念。如果一开始就对自己没信心,那可不行哦!
回答者:luckystar,http://100offer.com (已获授权)
不说鸡汤,谈谈现实:半路转行做软件工程师的人,他们的职场现状是怎样的。
一、为什么会要改做程序员?
因为工作原因,在日常生活中,以及在知乎上,有很多人向我咨询职业生涯的抉择。他们大都对自己的职业现状不满意,打算学习编程成为一名程序员。
我问,为什么想要做工程师?
答案五花八门,其中「工资高」「好找工作」「有职业发展」是很常见的理由。
二、半路转行做程序员,在求职市场上的现状如何?
抛开其他因素,先只讨论薪水:业界标杆 BAT 的薪水如下(图表为我司 100offer 制作)
百度
阿里
腾讯
但对于大多数半路决定做程序员的人来说,上图这样的薪资是很难达到的。
多数半路学编程的人,是通过培训班来速成的。在开发的求职市场上,如果你是通过 IT 培训班学习的,那一定会面临尴尬的境地:不管真实水平如何,都会在求职过程中受到「隐形的歧视」。
为什么企业不愿意给培训班学生 offer,甚至连面试机会也不安排?
我摘录几个招聘者对此的看法——
某创业公司 CTO :「X智、X马的学生没有基础,在实际工作中后劲不足,学新东西慢」
某互联网巨头 HR :「IT 培训班的老师本身水平就层次不齐,代码能力强的人不会去当培训老师」
如果深究根本原因,「优秀人员率」是关键。
企业招开发,好比在篮子里挑鸡蛋(人才)。北邮这样的计算机名校,好比一篮子鸡蛋,只有10个质量次等的;培训班,好比一篮子鸡蛋,只有 10 个质量优等的。
如果你是公司的技术 leader 和 HR,在要保持招聘效率的情况下,会如何选择呢?
实际情况是残酷的:尽管很多培训班在招生收费时,一再承诺「培训完包找到月薪 XXXX 的工作」,但很多培训班的学生进入求职市场时,却迟迟找不到工作。找到的工作的人中,平均薪资也不高。
当然,培训班或者自学的程序员,也有不少非常优秀的人,论薪资完全不输于北邮这种名校的学生。如何成为这样的人?且看下章。
三、如果不是名校科班出身,怎么使自己脱颖而出?
一个有趣的现象:有些去上培训班的学生,其实是正儿八经的四年本科计算机专业毕业生。为何还要去上培训班?因为在四年的大学中,他们并没有掌握应有的能力。
相反,有些自学成才的人,也成了同事眼中的大牛,我举两个例子:
A,中学时对计算机和数学感兴趣,大学学习数学,毕业时放弃了国外数学专业的 offer,进了国内互联网巨头做程序员。在大学期间的 ACM 经历、和同学合伙创业做网站的经历,是他求职互联网公司时 offer 拿到手软的核心竞争力之一。
B,学习任何东西都很快,大学学的工商管理,毕业去某跨国软件巨头做销售,年入几十万。后来突发心血学编程,完全是通过网络资源自学。通过几个有影响力的个人项目,成功应聘开发职位,同样成长很快。
藉由上面两个例子,我想说的是:学编程并不是一件轻松的事。
如果你本来就对此感兴趣,或者学习能力强且有毅力,成为一个高薪的开发并不难。
如果你对编程不感兴趣,学新东西效率低下,只是奔着程序员工资高(其实有很多工资不高的程序员),去报个培训班学编程,那么希望自然是渺茫的。
在能力突出又非科班出身的情况下,可以通过影响力大的个人项目、闪亮的 github 个人页、ACM 等来为自己的能力背书。
也可以在程序员聚集的社交网络活跃,得到其他大牛的认同,他们自然愿意帮你内推。
四、半路学编程的前辈们,他们的成功经验
写了江民杀毒的王江民先生,三岁时因患小儿麻痹后遗症而腿部残疾;他初中毕业后,回到老家从一名街道工厂的学徒工干起,最后成为拥有 20 多项创造发明的机械和光电类专家。
38 岁的时候,江民开始学习计算机。几年后,他就成为中国最早的反病毒专家,创立了影响力巨大的江民杀毒。
王江民先生,就是我前面说的那种学习任何东西都很快、又有毅力的人。这样的人,无论做什么事都能成功。
或许对于王江民的故事,你早已烂熟于心,那我再说一个 22 岁学编程,最终进了 facebook 的程序员的故事。他的天赋和经历,和我们常人的差距不算很大,是很好的学习榜样。
事情的缘由是这样的:有人在 quora 上提问,「如果我想成为一名顶级软件工程师,17 岁开始学编程,还来得及么?」
曾经在 Facebook 做开发的 Don Pinkus 在这个问题下,分享了他从 22 岁开始学习编程的经历。
原文见 When are you too old to become an engineer?,现翻译如下(Don Pinkus 自述视角)
我,Don Pinkus,22 岁才开始学习编程,以下是我学习经历中的里程碑:
22 岁 – 我学会了什么是 if 条件判断语句。
24 岁 – 我进入 Facebook,成为了一名分析师
25 岁 – 我在 Facebook 的职位变成了工程师
26 岁 – 我用业余时间做了个小项目,赚到一大笔钱。我觉得自己继续留在 Facebook 拿死工资,永远也不可能赚这么多钱,于是我便离开了 Fackbook,用这笔钱开了一家创业公司,并从一家顶级风投公司处获得一大笔投资。
我今年 26 岁。
我很幸运,但我并不特别。只要你也像我一样,全身心投入到一件事中,你一定也能成功。接下来,我将叙述我的经历,希望可以激励你去做感兴趣的事。永远不要因为觉得「太晚了」而放一放弃一个新机会,放弃学习新知识。
2007 年(18岁):我进入 Vassar College,成为医学预科班的大一新生。
2008年(19岁):大二这年,我转专业,开始学习经济学。
2009 年( 20 岁 ):大三这年,我感染了 mono 病毒,大部分时间都躺在病床上,不能去学校上课。
2010 年 7 月( 22 岁):这一年,我大学毕业了,进入 Morningstar 公司工作,从事数据分析。
我在 Morningstar, 一家金融公司,做一名数据分析师。那时的我还完全不懂代码。
2010 年 8 月( 22 岁):我为 Morningstar 的新主页出了个 idea,他们很喜欢。
项目:FindData
我提出为公司开发一个新主页,公司的人很喜欢这个 idea,因此给我安排了一个 五人团队来完成此事,虽然这五人都是新招进来的兼职员工。
我常常会冒出新想法,但没有能力自己实现,因此只能求助其他团队成员来帮忙。他们是兼职员工,除了我的项目外,还有自己的本职工作要完成。我希望加快项目的进度,于是便开始学习编程。
2010年12月(22岁):开始学习编程
项目:FindData
我开始学习 HTML、CSS 和 Javascript,这三种语言可以构建网站,不论是博客、普通的网站、还是 Facebook —— 所有这些网站都可以用这三种语言写成。
我打开 www.w3schools.com 开始学习。通过在这个网站的学习,我掌握了 HTML 和 CSS,并帮我父亲的公司开发了公司主页。现在看来,这个主页完成得非常差劲,所以我父亲没用——哈,这真是个明智的选择。
接着我去 http://lynda.com,掌握了 jQuery,本质上它其实是 javascript。现在,我可以帮一个网站做出交互式原型了。
还是在 http://lynda.com上,我又掌握了 PHP 和 MySQL。这样,我就可以把数据存在数据库中,网站就有了后端。到这时为止,我算是成为了一个全栈程序员,可以搭建自己的完整 web 应用了。
从对编程一无所知,到能搭建一个完整的 web 应用,我只花了两个月时间。虽然这个 web 应用看上去还不够好,但至少能用了。
2011年(23岁):Morningstar 没使用我的项目。同时在这一年,我完成了四个网站。
项目:FindData、BarCraft、Morningstar 图形交互、Amuse
我的产品 FindData 完成后,Morningstar 却不喜欢,所以他们最终没有使用。后来我意识到,这其实是个明智的选择。即使是现在的我来选,也不会使用这个不完善的产品。
但当时的我,对这件事耿耿于怀。我申请转去了新团队,新的工作里,我每天都要和 Excel 打交道。
我真不喜欢这样的工作。于是我每周用一天时间完成本职工作,另外四天都拿来学习编程。我几乎每个月都会完成一个新的网站,这样持续了五个月的时间。
2012 年(24岁):我进入 Facebook ,成为一名分析师。
项目:Tickur、Lookgr、Roomidex、Searchnwork
我在 Facebook 最初申请的职位是项目经理,但几轮面试后,我被拒绝了。
幸运的是,Facebook 的数据分析团队对我很感兴趣。也许是因为我着迷于网站,懂数学,同时还有金融行业背景。几轮面试后,他们录用了我。
在 Facebook 的那段时间,工作环境促使我快速成长。周围的同事都比我厉害,因此我不得不尽最大的努力,让自己跟得上团队的脚步。
在 Facebook,我学到了世界上最优秀的科技公司的运作秘诀。Mark Zuckerberg 做决策时,从不盲从「数据驱动 data driven 」、「最小化可行产品 minimum viable product」这些流行术语。
白天,我学着如何运作一款产品、一个项目、甚至是一个公司。
晚上,我继续学习写代码,实现自己的想法。现在想想,我当时的代码非常糟糕,但代码水平在快速进步。我从中获得了很多经验,建网站的速度也越来越快了。
2013 年(25岁):我成了一名Fackbook的工程师
项目:DataFinder,一个 Facebook 的项目
我不是个优秀的工程师。虽然我知道什么是 inheritance,在构造个人项目时,也能用 PHP 完成,但也仅此而已了。
我甚至不知道什么是排序 sort,并且对算法和数据结构一无所知。
我知道的仅仅是:分析团队使用的内部数据工具,还可以做哪些改进,同时我还知道该如何做。因此,我以工程师的身份加入了数据团队。
虽然,我写代码的速度可能只有科班出身的工程师的十分之一,但感谢我分析师的职业经历,同时在交互及设计上的能力,所以团队内部对我的评价很不错。
2013 年 4 月:业余时间,我开始做 http://Blockspring.com
项目:Blockspring
在业余时间,我和高中同学 Paul 合作一个项目 Blockspring。他是个聪明又努力的人,但在编程上比我还业余,只懂一点基础。那时候,他刚辞去了咨询师的工作,开始创业。
我们项目的其他创始人都是兼职的,Paul 是第一个全职加入的。那时候我已经接过很多私活了,但 Paul 是我第一个真正意义上的合伙人。
其他几个创始人常常对网站的设计,还有是否要加入一些小功能而争论,这浪费了大量的时间和精力。
我并非想说我的第一批创始人不好,错误主要在于我:不知道如何处理与他们的关系,也不懂如何为大家设定预期目标。当你管理一家创业公司时,你要做的最重要的事情之一,就是为公司设定好目标及所有权。
最终,我们还是完成了 Blockspring 项目。
2014 年 3 月(26岁):为 Blockspring 找到了客户
我们尝试向许多公司推销 Blockspring,但都以失败告终。
我们在博客上公开了产品简介,一个来自纽约的人认为它挺有潜力,于是我们便飞去纽约向他推销。
我们最终还是没能将产品卖给他,但他承诺出钱让我们留在纽约一周,好继续开发Blockspring。
我向 Facebook 申请了一个星期的假,留在纽约继续开发 Blockspring。
Facebook 允许员工业余兼职。很多工程师都有自己的业余项目或兴趣爱好,如果公司想留住那些有创业精神的员工,就必须允许他们追求自己的梦想。同时你也可以把公司环境建设得更有吸引力,让他们觉得相比兼职,他们更喜欢这份本职工作 —— 这是不是很酷炫的想法?去Fackbook 工作,体验一下吧!
但无论是我推广 Blockspring,还是花时间继续扩展它的功能,都分散了我的精力,让我无法集中精力做好 Facebook 的本职工作。我认为这无论对公司,还是对团队都不公平。
如果我还想继续开发Blockspring——虽然这个网站几乎没有用户——我就不得不离开 Facebook。
于是,我便辞去了 Fackbook 的工作。
感谢 Facebook 给我提供了全世界最好的工作,不仅有高额薪水和非常好的福利,还让我交到了很多好朋友。
2014 年 6 月:Y-Combinator公司
我们加入了Y-Combinator公司,这家公司提供资源帮助初创公司快速发展,是家非常棒的孵化器。
我们忙碌了三个月,每天的工作时间长达 16 个小时。
多数人在一个项目上,连续工作两天就会感到厌倦了。在刚加入 Y-Combinator 的时候,我们在白板上写下了一个数字:85。这意味着从那时算起,到产品演示,我们总共只有 85 天时间来完善产品。
我们夜以继日地工作,最终在约定的时间内完成了产品,也因此获得了投资。
2014 年 8 月:回到正常生活
我们结束了与 Y-combinator 的合作,搬到了旧金山的新办公室。我休息了一个月,周末去做些自己的事情而不是 Blockspring。
现在我又忙碌起来了,完善一些 Blockspring 相关功能,学习图像、动画、博客的技术,在网上浏览别人的交流学习经验。
以上便是我的全部经历,希望对你有启发。
如果这个答案有帮助,推荐阅读我的其他两个答案:
如何成为在硅谷受欢迎的程序员? - luckystar 的回答 获得两千多次赞同和十万次阅读
程序员如何做到年薪 50 万? - luckystar 的回答
回答者:潘哆啦,27岁开始学编程
怎么都开始扯关于培训班的问题了?明明问题跟培训班关系不大啊。
跟是不是半路出家关系不大,要不然计算机出现后的第一批计算机科学家情何以堪?
如果是感兴趣才去学的,以我的切身体验来判断,应该是不会关注能不能成为大牛的,所以推测提问者只是抱着一些功利的目的想学习编程,那我估计至少难度很大。
回答者:谭真,上海,刚入门的iOS开发工程师。
刚写完一个功能半路休息下,然后打开知乎就刷到这个问题,嘿嘿,那就凑个热闹吧。
本人情况简介:上海一所211,机械工程及自动化专业,学过一学期C语言,过了国家计算机二级,此外无其他编程经验(单片机这些不算吧?)。毕业前开始去培训班学习,一个月后退学开始自学,现在差不多刚自学了一个月。正在开发自己的一个小APP。噢,学的iOS开发。
(前面四点是扯淡的,如果你打算开始学习编程,或许能给你一点点有用的信息)
一、我为什么会选择学习编程?
缘分,哈哈。大二时O2O风起,我开始跟一帮人折腾订餐网站,折腾了七个月然后死掉了。正是从那个时候,开始关注互联网,杂七杂八读各种互联网相关文章。
慢慢的就大四了,去年秋拿到了一个当时挺满意的offer,把各种该办的事情办完,就开始安安心心地实习着。非考研党的大四狗周末难免有点无聊,就在某一个无聊的周末,我心里冒出一个想法:做一款这样的APP,让同校或隔壁学校的同学,可以方便地基于共同爱好相约玩耍。于是我找到某自动生成APP的网站,创建了我的APP,我取名为:《校园约伴》,哈哈。然后把它上架到各个安卓应用市场,在学校内外发小卡片,找外面的商家拉赞助在APP里搞活动,忙得不亦乐乎。当然结果是没做起来,哈哈。
紧接着又做起水果贩子,搞了个订阅号,用别人的免费商城系统,在学校隔壁小区谈了家合作水果店,启程我的水果大计。当然后面又没戏了。。
临近毕业的时候,想想要去新公司(建筑行业)上班了,觉得挺不舒爽的,因为我觉得有趣、朝气的公司大都是互联网公司,哈哈。。所以,我要具备一种能混进各个互联网公司的能力!!!所以,我就去学编程了。。
二、培训班的学习情况
在上海的某个培训班学习了一个月,课程安排是前面2周C语言,再三周OC语言,开班前我的心态是希望同桌是个基础好点、相关专业的,可以抱抱大神的大腿。慢慢发现班里没几个水平还行的,虽然有一半多一点的同学有专业基础;也没几个特别努力的,虽然大家都是成年人了。更多的人只是按时上下课,照常享受周日休息。
然后我是个奇葩,在学习之前并没有预料到自己会喜欢敲代码的感觉。只是觉得,既然选择了,就不能浪费时间。于是每天晚上回去之后会学习到12:30,慢慢地到了1:30,然后发现不行了,又只学习到12:30。培训班的网站系统里有个题库,400来道题,学完C的那天,我正好把几乎所有的题刷完了。有一小部分硬是不会做的,便从百度学习了。中途从视频教程里学到了推箱子和迷宫的简易实现,哇靠,感觉好有趣。
学OC的第一天,因为之前读完了一本OC的入门书籍,便开始跟着视频教程学UI了,越学UI越觉得有趣,哈哈。然后发现和讲师的讲课节奏越来越不搭,也没觉得这讲师水平好,也没觉得班里有大神可以带我飞,也不需要学习氛围来维持我的学习动力,所以我就退学了,哈哈。
三、自学的学习情况
刚刚进入自学阶段,肯定是很嗨的,没有人打扰,不需要戴牌子去上课,每天晚上睡觉前躺在床上,回想今天学到的知识。虽然没闹钟,第二天也会在某一个时间左右自动醒来,然后日复一日,每天只说四句话:“喂,外卖吗?”,“好的,马上来”,“5735”,“谢谢”。(5735是手机尾号,我们这拿外卖时的潜规则,哈哈)。
慢慢地,深刻领域了一个绝对的真理,人是有分享需求的。做完了一个自己觉得牛逼的界面,遇到了一个非常奇怪的bug,然而这个世界只有我一个人。。
虽然我退学了,我的哥哥还在培训班继续学习,所以我每周日都会过去给他答答疑,顺便监督他别一不小心周日就跑网吧去了,哈哈。
四、现在的情况
除了XMPP,iPad开发相关的知识没有学习,其他的基础类知识差不多都学完了,按理说可以自己做小项目了。考虑到我还并不会服务器端的开发,然而我又想做一个完整的项目,让项目能上线,所以我选择了一个不需要服务器的,面向大学生的刷题APP,哈哈。比如思修,近代史,毛概,马哲等课程,大学生考试前一般会从打印店购得纸质版题库,然后开始刷题。我把这些题目搬到我的APP上,学生可以下载我的APP来刷题。通过代码,实现自动收集做错的题、用户自己收藏的题,随机出题进行模拟考试等功能。
现在是开发的第3天,由于不像做练习可以直接copy素材,所以开发的过程中有时候会打开PS、AI自己整图标。。。(自学过PS、AI,做过UI设计实习生)
现在这个APP长这样子:(图我放最后吧。。)
五、开始答题
好像我是一个打酱油的,并没有答题,哈哈。
1、其实我也不知道半路学编程能不能成为大牛,我相信的是如果有足够的兴趣,能够并且愿意投入足够的时间和精力去学习与实践,成为一般人眼中的大牛是很有戏的。更多的因素是人的因素。大学开始学编程的,比起高中开始学的,就可以说是半路学编程的。毕业了开始学编程的,比起刚进大学就学编程的,又是属于半路学编程的。这只是入行的时间早晚问题,成为大牛需要的不是更早的学习时间,而是更大的兴趣和更多的投入吧。
2、我最近算了一下,我们专业专业相关的课程总学分是110分左右,一个学分是16学时,也就是12个小时。也就是说,一学分的课程,老师要是连续讲课12个小时,其实也就讲完了。一共110学分,你要是一天学习12个小时,学习110天,你的机械相关知识,不会比我差多少,很有可能比我强。因为我下课之后很少花时间在专业上面。。。而决定我和我们班学霸机械知识差距的,是学霸课后在做项目、做比赛,而我在折腾订餐网站、校园约伴、水果计划等。。。
3、个人感觉,如果你有较好的高中知识基础,学习新东西并不会很吃力。我有一段时间在看会计方面的书籍,顺便还报考了会计从业资格证,连续看书做题了十天左右,考试下来财经法规56分挂了,其他两门76分过了。而有好几个会计专业的同学,来找我给她写毕业论文,她们专业出身,依然不会写毕业论文。。。因为她们对会计不感兴趣。。。
所以我的观点是,学习一样新东西是否是半路开始学的,没有那么重要。你有足够的兴趣,足够的精力,就是最重要的。
回答者:姚冬,程序员
有些答案提到了各种编程培训班,说他们求职时受到歧视。
这是真的,因为基于一项常识,真正未来能成为高手的人是不需要上培训班的,自己看看书写写程序就能学会了。
软件行业是知识更新换代非常快的行业,要不断地学习,总不能每次有新东西要学就去上培训班吧,而且也未必有的上呢。
所有东西都是要自己学的,如果连入门技能都不能自学的人怎么指望他能在以后的工作中持续学习高级技能呢。
本质上看,IT企业雇佣员工看中的不是当前的技能,而是学习能力。
判断自己未来是否可能成为大牛很简单,看两点,一是看学习入门知识的时候是不是觉得很简单,就像当初小学学算术、初中学几何那么简单,二是看是不是对编程特有兴趣,觉得写程序比看小说打游戏还有意思,连续写上十个小时都不觉得累。
来自:知乎
链接:http://www.zhihu.com/question/34101611
来源 微信公众号
作者 imkuqin