贺老师您好,今天才发现您的博客,纠结很久的一些问题迫不及待地想老师指导一下。
现状:
目前大二,就读于桂林电子科技大学,
专业是电子信息科学与技术,
兴趣爱好是编程,职业定位是程序员。
但是大一没有认真学习
C语言没学好,数据结构和算法也是渣渣,这学期又学了点Java,看了马士兵的视频,也打算在Java方向发展。后面发现,编程的精华在于算法,然后今天又重新拿起了C语言课本和数据结构与算法分析。自从大二逐渐成熟后,对知识的获取非常渴望,同时很喜欢看书,对英语也很感兴趣,晚上看书一般都到1点半,
我的计划是:
1,复习C语言,并且着重算法
2,英语(看的是数据结构与算法分析C语言描述英文版)
3,同时一边花部分时间打好Java基础,等过段时间对算法和计算机有个比较系统的理解之后再选择专一性的发展
4,多看书(喜欢心理学,看的也是英文版)
我的问题
1,什么是程序员持续的竞争力(除自学能力外,是否算法占重要角色)
按理说越老越富有经验和竞争力,什么原因导致很多程序员30岁以后跟不上技术的发展,他们和那些高手差距是什么
2,我的计划需要哪些改进,或者不合理的,算法是否都要用C语言写出来(我的想法是用C语言,这样就能学好算法同时又理解好C语言,但是又纠结,用C是面向过程的算法,这样学出来的算法能否通用于面向对象编程)
3,是否C语言基础牢固才能更好的理解一些经典的计算机书籍
4,不想做一个只会用某种语言单纯敲代码的码农,要成为一个创造者,系统的学习编程应该先后看哪些书,我不知道,算法,计算机结构,操作系统等方面先后顺序。刘未鹏的《怎样花两年时间面试一个人》末尾提到一些前辈推荐的很多经典书籍,如果老师能从里面和自己的经验选出书籍就更好了。
5,现在大二了,好公司一般都是大四第一个学期或者大三就来招人了,很着急,不知道是否来得及,虽然明白编程是终身学习,不断积累的过程。
【答复】
首先,我建议你可以将你的电信专业,与程序员定位结合一下。电子信息科学中有很多事需要编程实现,我是电信的外行,单片机、嵌入式这两个方向中应该是能直接结合的。
你的计划不错。一步一步地往前走,在学习上投入进去,拿出办法,也就获得主动。
你问的问题,很多我在《逆袭大学》中做过详细的阐述。你有这么多的“为什么”,可以买一本看。这些话题在“IT学子指导专栏”中也分散出现过,有时间自己浏览。由于这几天时间紧张,我也不展开说,概要谈谈自己的观点。
1、在未来社会,自主学习能力是第一位的,算法很重要,但不是全部。越老越富有经验和竞争力在程序员身上同样成立,“30岁”不做程序员,一类人是遭到淘汰,一类人是转型做了其他更具价值的工作,技术的或者行业中其他的。两者间的区别很多,专业基础、学习能力、应对变化的能力、专业之外与人相处能力、自己的人生目标调整的能力等等,人生当中的其他可能性,自然也是存在的。
2、用C语言将算法全写出来,可以,但如果时间不允许,倒不必强求。要有足够的训练量,掌握好“度”即可。目前为学算法,发挥好C的作用就行。算法问题不必局限在某种语言上,有一门语言用就行,而掌握面向对象编程,那是另外一个问题。
3、经典的计算机书籍很多,各方面的都有。我提倡博览,实际也没有一个定势,说看某本书必须XX基础牢固才行,可以相互交叉,相互促进。有时候,看过了一本经典,再学些其他之后,回头再看,将有机会再获得新的收获。
4、可以参考计算机专业的培养计划中相对应课程的开出顺序,但也不必拘泥于此,介于你对经典的偏爱,我想提一点是,以自己能看下去作为选书标准。看书中,如果需要实践,同步地实践下去,不必追求一个大厚本,能从头读到尾。选书的过程,依据自己的学习进程和感受,没有定数,自己掌握。另外,我不赞成“系统学习”的宏愿,实践为先,构造自己的系统为要。参考“破除“系统学习”的情结”。
5、你急又怎样?时间能为你而变慢?将前面列出的学习计划扎实地推进下去,到适当的时间,注重将就业中需要表现的应用层面的能力做出一个安排。即使很早就能确定工作单位,但也并不是学习结束的时候,心中有这样一个“系统学习”的大致路线,但也能做到及时调整,不要浪费时间,不好只钻了学习这一门,充实的大学,自然能保证你自己的美好未来。