链接:http://www.zhihu.com/question/22426146
来源:知乎
vczh,专业造轮子,资深汕头人
尽管我读的是软件工程,但是其实很多重要的学习过程我已经在中学就完成了,大一搞定了clrs和龙书,我也勉强算非科班出身吧。
如果你要成为一个专业的程序员,千万不要过早设定自己的方向,因为专业的程序员都是能够把很多个方向做的很牛逼,其中有一两个方向超级牛逼。像你这么年轻的人,应该去巩固一下基础知识的同时,你可以学习ios等级能用来养家糊口。学习ios是为了赚钱,同时为了让你争取时间学习更多的知识,从而成为一个专业的程序员。这并不矛盾。创造windows的dave cutler今年都70岁了,20年前4、50岁了才刚刚开始写winnt,人家在30岁之前都还不太懂怎么写代码,所以不要着急。
因此我认为你在学习ios找工作的同时你应该同时学习(不需要成为专家,学习就好了)
- 计算机图形学
- 编译原理
- 操作系统的基础知识
- 分布式系统的架构
- 对你的代码进行靠谱的自动化测试
- 学会写framework和library,不要一味地写application
这些对于你成为互联网行业的未来的标准制定者和奠定技术基础的人是有帮助的。
sun wilson
英语专业,当年,在做了大半年编辑后,转程序员。
1)这是个奇妙的世界,现在做技术14年了,这个初衷没有变过
2)起步阶段,数据结构与算法一类的基础,至关重要。因为越往后可能你越没有时间看这些基础的东西。
3)然后你可能会沉溺于某种编程语言,还会跟别人争辩,就像孩子捍卫自己心爱的玩具
4)然后,你会接触更多编程语言后,你就会逐渐不再固守任何编程语言了,会饶有兴趣地去探索一些新的语言、工具、开发环境
5)再然后就是各种系统部署、troubleshooting等,逐步培养你的系统论
6)解决问题的能力,比编程重要。很多问题的解决,不是靠代码,往往是靠沟通。你的首要目标是帮助别人解决问题。
前4-5年大概会是以上这样的。
在互联网行业长久混的话,技术是很好的入口,因为技术人员能造出产品,所以是生产力的一部分。把自己称为“码农”的,叫做自轻自贱。有一天你会像看白痴一样看着你对面那些不明白最基本技术原理而只是把这一切看作饭碗和生意的人。
不管干哪行,人和人的区别,不是由当初的专业决定的,而是由你业余时间在干嘛决定的。
胡朋,IT工程师
大学学的地理,现在在一家地图导航公司做后台开发(曾经想成为一个前端开发者),我想说的是,是否科班出生并没那么重要。如果只是想糊口,学一两们语言就足够了,但是想成为一名出色的开发者,有太多需要学的东西了,对非科班出生的来说,其中最大的不足就是知识结构的不完整,需要一点一点去积累。
我不太会码字,写点我自己的心得。大学从没想过自己会做开发,到毕业那会(2012年)找了好多单位都没人要,恰逢那段时间HTML5被炒的很热,就想学点这个先找到一个容身之处。把自己关在宿舍两个月,一天看十几个小时的书,那本讲javascript的犀牛书被我看了个遍,12年3月终于得到了一个offer,每天工作就是做做公司的网页,事不多,在没有事情的时候都是拼命的看书,因为我知道自己有几两重,不愿意浪费哪怕一刻的时间。
知识真的需要不断的积累,你看的东西多了,慢慢的就会觉得有些东西不一样了。自己最大的一个感受就是github上的代码,以前不懂的现在慢慢看的懂了,整个2012年我都是在学习中度过,转眼到了2013年,过完年陆续有很多同事离职,我们组也走了很多,我进公司带我的那个前辈也走了,这个时候老大找我谈话,希望我能够去接手整个导航项目的后台,我感觉自己的机会来了,信誓旦旦的答应了,但是心里还是有很大的不自信。从此基本就是无休止的加班了,好在开发的任务不多,我有大把的时间看这个项目的代码。13年年中的时候新来了几个同事,开始让他们来接手一些模块的维护和开发。13年又上马了几个项目,也基本由我来带他们来做。
现在我很享受coding的过程,享受这份职业,我给自己14年的任务仍旧是不断的学习。找准一个学习的主线,学习就很有目标性,比如web开发,从服务器到客户端这条线上,学习后台语言(python,PHP等),数据库,服务器。客户端如android,ios,浏览器等,或许还需要了解下HTTP协议。在开发过程中不可避免要用到版本控制,学习下git,或SVN。如果做后台需要和linux系统打交道,也需要学习下。
不要把学习访问局限于工作内容,广泛的学习,对某个方面做深入了解,进步就很容易发生。把自己当成一个geek,保持对工作的热情,永远充满自信,是不是科班出身真的没那么重要。