程序员如何成长?

来源:2-1 选择排序法 - Selection Sort

慕粉1335052326

2018-02-23

老师是这样的,我之前学的PHP,现在还没找到工作,我是培训班学的,不是科班出身,想走程序员这条路,现在学您的算法课程,您能不能给个建议就是程序员应该具备哪些素质或者说应改怎么学,能不能给个学习路线,谢谢老师了!

写回答

1回答

liuyubobobo

2018-02-23

这个问题太大了。“程序员”本身就是一个太宽泛的概念,做不同技术栈的程序员,发展的技能树可以说完全不一样;通过不同途径进入程序员行业的人员,如何发展的方式也完全不同;基础不同,接触编程时间的长短不同,要做的事情也是不同的。


以下内容主要是从“非科班”的角度泛泛谈一下我的看法:(但其实中专非科班;本科非科班;研究生非科班;不同专业的非科班,也完全不一样。)


从就业的角度,鉴于你是培训班出身,基础肯定拼不过科班的。所以仅从“尽快就业”这一目标出发,不建议花过多时间在“算法”,“计算机组成原理”,“操作系统”等等这一类计算机专业的基础课上。不是说这些课程没用,但是我估计你没有四年的时间踏踏实实的按照计算机科班的路数学习一遍计算机基础再去就业,所以我的建议是:首先必须想明白自己到底要做什么技术方向,而不能用“程序员”这样一个一概而论的方向。之后,关键还是先把这个技术方向上的内容搞熟。


比如你的目标就是PHP后端工程师,那么把PHP后端这一套搞熟:从语言应用到常用框架的使用,最好(或者说一定)要有相关项目经历。相关项目经历不一定是去企业实习,自己真正用学习的技术架设一个小型个人网站;把一本业内公认经典的书的内容吃透,相关阅读笔记发表成博客;或者把经典书籍的练习题整理成一个github上的代码仓,等等等等,都是项目经历。当然,在我看来,对于PHP学习来说,能够真正用学习的技术架设一个相对功能全面的网站,是最能说明你的技术水平的。


当然,上面只是我以PHP后端为例。如果你要学习Android开发,就要最好能有相对复杂拿得出手的app作品;iOS开发,前端,等等都是同理。这是证明你的技术实力的最有效的方法。对于非科班同学,不建议一上来就去挑战诸如“算法工程师”,“后端开发工程师”这种岗位。因为这类岗位很难用一个作品去展现自己技术实力,所以企业在选人时更多的是考察所谓的综合素质,在这点上,非科班是会非常吃亏的。


对于一般同学,形势不要太差,运气不要太差,技术上达到有拿得出手的作品,应该是可以就业了。之后可以再谈如何深入发展了。其实说实话,我国的大部分高校的计算机专业的学习计划,问题都不大(真正的问题在每个科目的具体教学上)。完全可以找来对着一般大学的课表,看其中的课程,哪些内容自己不熟悉,去尽量找相关内容去一点一点熟悉。在我看来,合格的计算机专业的从业者,需要了解的内容包括:


  • 熟练使用1-2门语言

  • 对一般计算机语言的基本范式有理解(如面向过程,面向对象,甚至函数式编程;如引用或者指针等概念)

  • 设计模式

  • 软件工程

  • 数据库

  • 计算机网络

  • 数据结构与算法

  • 操作系统

  • 计算机组成原理

  • 特定领域的涉猎(人工智能,图形学,图像学,安全,等等等等)

  • 数学(离散,概率,线数,高数,等等等等)


但是,要注意:以上内容很有可能对于非科班的同学就业帮助不大(上面的顺序是按照我认为对于非科班的同学就业帮助由大到小进行排列的)。要尽快解决就业问题的话,还是建议先在一个技术上深入。其实,在对一个技术深入的过程中,或多或少都会涉及上面的这些内容的:)


以上内容是我针对我见过的非科班同学,走上程序员的职业道路的过程进行的总结(主要在ios领域)。但是由于我本身是科班出身,所以对于非科班的发展之路肯定体会是不够深刻的;同时因为我的学历是研究生,所以也接触到很多其他专业研究生转计算机,其实路径完全不同。我的见识不能涵盖方方面的情况。所以只是一家之言,还是建议你能够找到和你的背景情况最相似的前辈“取经”,可能帮助是最大的:)


希望对你有帮助。加油!

1
3
慕粉1335052326
回复
liuyubobobo
谢谢老师
2018-02-24
共3条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程