前两天在微博上看到关于“非计算机专业如何转行做程序员” 的讨论:
讨论中一片学生的来信,勾起我写一篇博客的冲动:
希望我的经验能影响他,影响徘徊在计算机行业外想进来的人。
先做个自我介绍,让这篇博客比较有参考价值:
大学: 2004 ~ 2008 西安工业大学 包装工程
现在公司: 中科大洋 -上海研发部
职位: Java软件工程
工作年限: 4年
工作内容: B/S 架构的企业软件开发, 技术涉及Java, Javscript, iOS;
已掌握的语言: Java, Javascript, SQL, C, Objective C, Ruby
1. 程序员这个职业并不是为计算机专业学生专设的
我现在所在的公司,上海这边就有3个大学非计算机专业的同事。除了我之外,一个是09年毕业学建筑的,一个是11年毕业学法律的。如果你想,这条路可行。
2. 兴趣是最大的老师。
2002年高一暑假,暴雪推出了war3(魔兽争霸3)。我想学编程的想法就从这个游戏开始。
由于暴雪的关系,当时让我觉得做游戏是一件非常酷的事情。03年的一期大众软件,介绍了如何使用war3中的地图编辑器做RPG游戏,从此便迷上了地图编辑器,开始泡各种地图编辑器的论坛。
在当时我只知道照着论坛的帖子改地形,写触发器,写判断语句,后来才知道地图编辑器中使用的语言Jass(war3中的脚本语言)。
从那时起就立下一个目标,“学编程,做游戏。酷!”。
后来高考我并没有考上计算机专业,志愿被调剂西安工业大学的包装工程。不过依然坚定自己的目标:“上了大学自学编程, C语言->C++-> VC -> 做游戏”。
现在想想当时的想法非常天真,就是这个天真的想法让我一头扎进了计算机的世界。
如果你对编程世界充满好奇,恭喜你,他将会是你最好的老师。在整个过程中请牢记:“一切为了兴趣”。在学习过程中碰到不感兴趣的东西,可以先放放,让兴趣指引你去学你想学的东西,那些让你感觉很头疼的东西(比如编译原理,算法等),以后你会因为兴趣将他们拾起来。
3. 学习是一个循环的过程
发现 -> 感兴趣 -> 学习 -> 实践 -> 成就感 -> 发现 -> ... 请时刻记住这个循环过程。当然你可以总结出自己的一套循环理论。
4. 如何开始?
如果你现在很幸运的只知道一门编程语言,恭喜你,直接上手学吧。现在就开始是最好的开始。程序语言的逻辑都很像,只要学会一个其他的都很容易。我在学编程的时候只知道C语言->C++->VC这条路,进入大学后整天泡在图书馆,在没有电脑的情况下手写代码。这段学习经历让我意识到,即刻开始是最好的开始。
如果你不幸知道了很多编程语言,并且不知道如何选择,这里我可以给你一些建议:
- C语言永远是值得学习的一门语言。在犹豫不决的时候不妨先学C语言。如果你能很轻松写出冒泡排序,写出函数的递归调用。恭喜你,程序逻辑方面你已经很优秀了。
- 如果你对做网站感兴趣,PHP是一个不错的开始。当然还有Ruby, Python。
- 如果你希望按照传统套路来,Java是个不错的选择,之后可以选择企业开发,Android开发等。
- 如果你对移动感兴趣并且资金充足,Objective C 觉得很好的选择。iOS开发难点在Mac, iPhone等设备购买上(贵,你懂得)。
- 最后不要忘了身边的有当程序员的人,他们的意见很值得参考,如果按照他们的路子入门,你将得到一个很好的导师。这将会是一件非常棒的事情。
如何选择书:
- 选书之前现在豆瓣读书看看书评。
- 首选图灵出版社的书。
- 书越薄越好,快速入门是目的。那种跟砖一样厚的书,请忽略掉,除非你有自虐倾向。
一些值得推荐的网站:
- 编程中国: www.bccn.cn 很适合初学者的网站。我刚开是学编程的是时候,在这里得到很多帮助。
- 程序员: www.csdn.net 大而全。
- ITEye: www.iteye.net 前身JavaEye,我常年混迹的网站。建议工作后来这里混。
- 工作后发现的在学习网站,强力推荐: http://www.codecademy.com/
5. 是否上培训?
我们3个都有上过培训。我是先自学了C,C++,MFC,之后感觉不知道再学什么,机缘巧合选择了培训学校这条路。
在培训学校,我遇见不少优秀的老师,也结识了一帮朋友,这段经历是我最终走上程序员这个职业。
能不能不选培训培训?
除非你能找到一个很好的学习环境,比如开源社区,编程论坛。一个好的环境能让你进步很快,在学习过程中结识朋友也会让你很有成就感。
如果你还没有一个环境,或者对自己适应这些社区的能力没有自信,建议选择培训学校。具体能学到什么那就看你的个人主动性。
强烈建议有一定基础后在选择培训
培训能带来的东西:
- 一个适应当前潮流的学习计划,比如我06年上培训,当时Java SSH框架很火。培训的流程就是Java -> Java Web -> SSH 框架,中间伴随项目实战。
- 有人指导,在学习中碰到障碍,很快能得到解决。这样不会使学习过程有很强的挫败感。
- 结识朋友,相互交流,这种学习环境会让人感到很快乐。
- 就业指导,现在培训基本都以工作为目的,就业指导会给你找工作带来不小的帮助。(培训学校目的让你找到工作,好坏看个人想法和能力)
培训中的不足:
- 培训学校本质是盈利,并不像普通学校有一定义务性,这会导致有些做事方法可能会让人不爽。在去之前自己需要做心态上的调整,一个卖服务,一个买服务,各取所需。
- 培训比较急功近利,课程设置方面以实战为主,仅仅按培训学校的课程学出来,基础一般都很薄弱。基础方面需要自己补,例如数据结构,算法,OOP原理等等。
上培训需要注意的事情:
- 课程时间,如果求职压力较大建议选较短时间的,先工作,之后在充电。如果时间充裕建议选择时间较长的,你可以有很长的时间学习。
- 课程设置,注重项目实战。一般每一阶段学习都会有一个实战项目,项目实战越多越好。
- 学习期间做项目,尽量不要选择培训教材中的项目,这样不会因为思维惰性去copy书本上或者老师提供的代码。
- 如果分学习小组,请力争做小组组长。组长做实践项目时会充当Team Leader的角色,这方面的锻炼对成长很有帮助。
6. 如何找工作?
- 用心做一份简历,朴实,不要弄虚作假。弄虚作假是应聘大忌,一旦发现绝对忽略掉。(至少我在看别人简历的时候会这么做。)
- 请忽略招聘中“计算机或者相关专业”条件,那些都是很死板的,模板式的招聘要求,大胆的把简历发过去,是否邀请你面试是他们的事情。
- 保持耐心,由于是非计算机专业的缘故,你需要比计算机专业的学生付出更多的努力。
- 用项目说话,面试时请带上你的项目。我当时找工作的时候就是这么干的,结果就是:我轻松找到了工作。
- 如果实在找不到工作,可以先找实习职位。找实习职位需要多泡论坛,招聘网站上的个人感觉不靠谱。(有很多人都再抢,你懂得。)
7. 工作后该如何继续学习。
- 保持对行业的关注非常重要。推荐几个博客:
- 酷壳: http://coolshell.cn/
- 月光博客: http://www.williamlong.info/
- 阮一峰的博客: http://www.ruanyifeng.com/blog/
- 不要将Google作为IDE的一部分。如果没有Google你不知道如何解决问题,你的水平可能只停留在初级的水平。多思考,多总结,开一个博客很有必要。
- 申请一个Evernote账号。时刻记笔记,知识积累很重要。
- Github, stackoverflow 如果你还不知道这两个地方,赶紧去看。
- 我以前写过一个《构建网络工具箱》的PPT,希望能对你有所启发。
- 优酷上有很多视频教程,如果你只拿它来看电影,那实在太非专业了。
相关推荐
在这个层级上,中国有大量的计算机专业毕业生以及来自通信、自动化、数学等专业的转行人员,因此在数量上具有绝对优势。同时,还有一种观点认为这个层级的人员平均智商较高。 当程序员从“菜鸟”成长为“大虾”时,...
程序人生 : 30岁,我的程序员梦想 本文是作者红桥(雪燃)的程序人生经验总结,讲述了作者从一个业余的程序员到实现程序员梦想的经历,分享了作者的十大“精华”经验,旨在激励和鼓励程序员朋友们继续努力和坚持...
- **中国优势**:人数众多,包括计算机及相关专业的毕业生,以及其他非计算机专业的转行者。 ##### 第二层:大虾 - **技能要求**:熟练掌握编程语言及其标准库、数据结构算法、STL、多线程编程、开发环境及操作...
中国在这个层级上拥有明显的人数优势,不仅计算机专业毕业生众多,还有大量相关专业人才和跨专业转行者加入,人数远超西方。 ### 第2层:大虾 从菜鸟到大虾的升级相对容易,通过2至3年的学习和实践,掌握更深入的...
根据提供的文件信息,本文将围绕《当程序员的那些狗日日子》这一作品展开,深入探讨其涉及的关键知识点,包括但不限于作者的经历、从非计算机专业转向编程领域的过程以及在这个转变过程中遇到的各种挑战和感悟。...
书中的每一章都围绕着程序员职业生涯的关键阶段展开,旨在帮助读者在这一专业领域取得成功。 第一章“大学四年应这样度过”着重讲述了在大学期间如何为成为一名优秀的程序员做准备。它可能涵盖了基础课程的学习,如...
中国在这一层拥有明显的人数优势,不仅计算机专业毕业生众多,还有来自其他领域的专业人士转行加入。这一阶段的程序员通常承担着诸如搭建测试环境、执行测试用例等初级任务。 第二层的“大虾”已经掌握了编程语言的...
这份“计算机软件-编程源码-游戏编程指南.zip”压缩包很可能是为了帮助初学者或有经验的程序员深入理解游戏开发的技术细节。让我们来详细探讨一下这个主题。 首先,源码软件是指提供原始编程代码的软件,允许用户...
对于有志于进入编程行业的非计算机专业人员,尤其是文科背景的学生,文章建议他们要慎重考虑。因为缺乏操作系统、编译原理、数据结构、数据库、离散数学和软件设计等专业课程的学习经历,对于这些领域的理解和实际...
对于非计算机专业的同学,热爱自己的专业是关键,不要轻易因为计算机的热门而转行。每个专业都有其价值,计算机并非通往成功的唯一路径,而是需要扎实的基础知识作为支撑。 认证考试如MCSE、CCNA、CIW等,可以作为...
因此,对于那些对计算机科学和编程有着浓厚兴趣的人来说,IT行业将是一个充满机遇和挑战的领域。 ### 2. 大学教育与职业规划 候捷提到大学时期的经历让他认识到个人的资质差异,这对职业规划有着深远的影响。大学...
- 初始目标:从程序员做起,积累经验,逐步晋升为网络工程师,最终创立自己的IT公司。 - 时间规划:大学期间通过英语四六级和计算机等级考试,不断提升专业能力;毕业后十年内,逐步实现职业目标,最终创业。 5. ...
【大学计算机专业个人职业规划】 计算机专业作为当前热门领域,为许多大学生提供了广阔的就业前景。在制定个人职业规划时,我们需要结合自身兴趣、市场需求以及行业动态来设定目标。以下是对大学计算机专业个人职业...
作为一位有着丰富教学经验的计算机科学家,他在教授入门级编程课程时遇到了一系列问题:学生的失败率过高,即使是成功完成课程的学生,在编程能力上也没有达到预期的高度。作者认为这些问题的根源在于当时可用的教材...
本课程为想转行学IT的朋友量身定制,快速入门,轻松上手,让非计算机专业的同学能快速学会Java编程. 课程会从计算机的基本组成原理讲起,门槛低,实用性强,让大家轻松掌握一项编程技能。后期课程全部更新完毕后还会帮大家...
转行又可能需要放弃现有的专业技能和积累,重新开始。 5. **职业路径的探索**: - **技术专家路线**:通过深入某一领域,如大数据、人工智能等,成为行业内的专家,提供咨询和技术解决方案。 - **管理岗位转型**...
中国在这一层次拥有显著优势,不仅有大量计算机专业的毕业生,还有来自通信、自动化、数学等其他专业的转行者。这一层次的程序员通常从事基础工作,如搭建测试环境、编写测试代码等,但他们积极进取,希望通过不断...
【计算机专业个人职业规划】 计算机专业作为现代科技发展的重要领域,其个人职业规划的重要性不言而喻。在2020年的环境下,计算机专业的学生需要根据行业动态和自身特点进行详细的职业规划,以应对激烈的就业竞争。...