如何自学成为程序员?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何自学成为程序员?相关的知识,希望对你有一定的参考价值。

参考技术A 问题一:如何自学成为初级程序员 [经验之谈]30岁,我的程序,我的梦!
程序人生 : 30岁,我的程序员梦想
作 者: redbridge (雪燃)
30岁,开始实现我的程序员梦,从一个编程爱好者,从一个业余的程序员,一个水平不高的程序员,一个半道出家的程序员......
我的经历到这里就告一段落了,五年里跳了五次槽,不知道和大家比算不算多J,没有什么太多起伏,但我想很多朋友可能会和我有类似的经历,不知道能不能引起你们的共鸣。我想对我上面所说的话给一个总结:
1. 如果你觉得自己应该追求什么,不管遇到什么困难千万不要放弃,一定要坚持下去。
2. 不要因为自己年轻就找理由挥霍时间,少玩一点SC、CS、魔兽3、传奇、魔力或者…….,多看点书,多练练题。
3. 如果你还是在校的学生,英语很差,专业课也很差。没关系,想怎么学计算机就怎么学计算机吧。其它地只要能混到毕业证就行了。除非你对自己的未来没有信心。(当然,如果你的理想不仅仅是要做一个程序员,那你别丢掉英语。)
4. 如果你不是科班出身,想要转行而不知该怎么开始的话,建议你先看两类书:(1)计算机原理;(2)数据结构和算法。(看数据结构之前先看C语言)。
5. 什么时候努力都不晚,关键是你明白要努力了,大器晚成总比一事无成要好的多。
6. Java、、C++、PB、VB、Delphi、汇编到底应该学哪个?我的经验,哪个最简单就先学哪个、公司用哪个你就学哪个、哪个和你有缘(比如刚好你认识一个愿意帮助你的Delphi高手)你就学哪个,如果你都学,或者三天两头的换,我可以告诉你结果肯定是什么都不会,不要心浮气燥,他们都只是工具,学精一门其它的就相通了,重要的是掌握编程的思想。如果你问我面向对象(好像现在已经是面向需求了)、UML、WebLogic、WebService、软件工程、XML…….应该怎么学呀,对不起,这些我也确实不是都会,但请相信,你先实实在在的写上十万行以上的代码以后,那些东西你自然就慢慢会了。
7. 不要以为程序员的工资都很高,程序员之间的水平差异也大。公司衡量一个人的待遇标准是他能给公司带来多大的效益。如果你体现了自己的价值,公司会主动给你加薪的,当然你也可以自己主动提,但一定要在你表现出了自己的价值之后。
8. 轻易不要跳槽,如果非要跳,也要保持工作经验上的延续,而不是从新开始,不然就会象我一样走很多弯路。
9. 如果你以为程序员都是熬夜熬出来的,那么你错了,因为它的代价就是缩短你的青春!大家不要象我一样,真的,熬夜一点也不好!记住老毛的话:如有恒,何须三更起,半夜眠;最怕莫,三天打鱼两天晒网,竹篮打水一场空!
10. 这一点是我觉得最精华的一点:“君子性非异也,善假于物也。”这句话的本意是一个水平很高的人本身并不一定很高明,关键是他善于利用别人的高明!我在这里做个借鉴,就是要充分利用自己身边的资源,不放过任何一个可以提高自己的机会。大家不要误会,这里的假于物可不是指抄袭别人的源代码,而是指通过学习别人的源代码把他的思想扩展到自己的思想里去。
注:上面的十大“精华”纯属我个人的“谬论”,您自己看着消化,有用的收下,没用的请拖入“回收站”。如果你觉得这些总结不过是一些浮华之词,那请你先问问自己:“是不是在行动上都真正做到了。”
这就是我,一个不算优秀,不算勤奋;玩能玩通宵,学也学能学通宵;对梦想的追求很执着;到了30才开始真正写程序;一个很平凡但又不甘于平凡的人……我的经历相信很多朋友都有过的,我现在也不能算是一个成功人士,但我相信我的经历却是值得大家借鉴的,因为我终究代表了一类人......>>

问题二:如何成为一名程序员? 首先先选择一门语言 现在比较火的是sun公司的java 和微软的C#
友情提示:java移植性很好,这是网络平台所需要的。C#只能运行在微软的平台,有局限性。
我不排斥其他的计算机语言 不过一般只要学懂一门语言后就相当进入程序的天堂,在学其他的语言时候就能简单的多,因为很多软件语言是相同的,学懂一门就能够看懂其他的。
买书,见意买比较薄的书开始学,太厚的书看不完会打击心灵。
需要有耐心,其实是非常有耐心,因为学软件做软件是一辈子的,没有任何一门技术能做到老,必须一路学下去。每当度过一个阶段尽量总结所学过的。
一定要沉得住寂寞,无论是学软件还是做软件。
只要认真学,一般一年自学都可以有所小成,程度还要看个人的领悟。
做软件是需要注意很多细节,正是这些细节所以让人很头疼,所以需要耐心。
顺便提一句:学软件就尽量学比较火的,因为市场需要,才会火。
我不是鄙视某某某语言,而是实话说,毕竟学出来需要应付工作的,如果工作不需要,就算学的很有本事,没人雇也没用,对吧!
你完全可以去招聘网看看软件这个行业哪些软件需要的人才多。
别听谁谁谁说哪种语言火,火不火招聘的数量就能说明一切。
一定要对软件充满信心,千万别轻易放弃。相信软件是有“钱”途的。
本人现在也是在自学软件,也有三年的学习。
以上是我一些经验,如果有需要,可以按右下角Hi我,相互促进。

问题三:程序员能自学吗? 首要之首:不要急于选择一种语言  新手们有一个常见的错误就是犹豫于判断哪种编程语言是做好的、最该先学的。 我们有很多的选择,但你不能说那种语言“最好”。 我们应该理解:说到底,什么语言并不重要。 重要的是理解数据结构、控制逻辑和设计模式。 任何一种语言―甚至一种简单的脚本语言―都会具有所有编程语言都共有的各种特征,也就是说各种语言是贯通的。 我正在攻读我的计算机学学位,我编程使用Pascal,汇编,和C语言,事实上我从来没有把它当成职业以求获得回报。 我一直在自学编程,工作上用不到它,我使用现有的知识,参考各种文档和书本,学习它们的用法。 因此,不要急于选择何种编程语言。 找出你想要开发的东西,使用一种能够完成这项任务的语言,这就可以了。  根据各种开发平台的不同,有很多不同的软件开发形式可供你选择:从网站应用到桌面软件到智能手机软件到命令行脚本工具。 这篇文章里,我将重点介绍一些很受欢迎的入门教程和资源,它们能帮助你学会如何在各种主流的平台上编程开发。 我先假设你是一个悟性很强的读者,但对于新手,当我谈论程序代码时还是要按照入门级的水平。 因为即使是你自己看一篇编程入门手册,如果发现都能理解时,心情自然会很高兴,这样利于你进一步学习。  桌面脚本  想要动手在Windows里或苹果系统里编程,最简单的方法是从一种脚本语言或宏语言开始,例如AutoHotkey(Windows) 或Automator(苹果系统)。 如今一些硬件程序员冲着他们的屏幕大喊大叫,说AHK和AppleScript并不是“真正”的编程语言。 也许他们说的是对的―技术上,这些种类的语言只能做一些上层的编程。 但是对于那些只是想来脱盲、想在他们的电脑里实现一些能自动运行的程序的新手来说,这些语言会是一个绝妙的入门入口―而且你会吃惊于它们丰富的功能。  例如,大家都喜爱的Texter就是Adam使用AutoHotkey开发的能独立运行的Windows应用程序,所以说这种脚本语言远不是只能开发小规模脚本软件。 如果你想从AutoHotkey入手,可以参考Adam的指导:how to turn any action into a keyboard shortcut using AutoHotkey(然后,你可以下载Texter源代码看看这个功能齐全的使用AHK开发的Windows应用程序的内部结构)。  Web开发  html 和 CSS:开发网站,你第一件要知道的事情就是HTML(网页就是由它组成的)和CSS(一种让外观更好看的样式标记)。 HTML 和 CSS 并不是编程语言―它们只是页面的结构和样式信息。 然而,在开始开发web应用程序之前你必须要学会如何手工的编写简单的HTML和CSS,web页面是任何webapp的前端显示部分。 这个HTML 指导是你入手的好地方。  javascript:当你可以通过HTML和CSS构建一个静态页面后,事情就开始变得有趣了―因为到了该学JavaScript的时候了。 JavaScript是一种web浏览器上的编程语言,它的魔力就是能在页面里制造一些动态效果。 JavaScript可以做bookmarklets,Greasemonkey脚本, 和Ajax, 所以它是web上各种好东西的关于因素。学习JavaScript从这里开。  服务器端脚本:一旦你学会了网页里的知识,你就要开始对它添加一些动态服务器操作―为了实现这些,你需要把目光转移到服务器端脚本语言,例如php, Python, Perl, ......>>

问题四:如何成为一个程序员 1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一个程序员对自己的未来很迷茫,于是去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”
于是他去问Lippman。
Lippman说“程序员的未来就是驾驭程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”
于是他去问Gates。
Gates说“程序员的未来就是榨取程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”
于是他去问侯捷。
侯捷说“程序员的未来就是诱惑程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝摇摇头“唉,我的孩子,你还是别当程序员了”)
6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?)
7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?)
8、你真的要当程序员?是你自己的想法?
9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。
11、编程序就是编写程序。
12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)
(三) 一个程序员应该具备的基础知识和概念
1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
2、机器语言和微指令集的概念。
3、程序的概念。
4、汇编语言是低级语言但不是机器语言。
5、高级语言主要有那些?(C......>>

问题五:如何才能成为一名优秀的程序员 中国的信息技术发展迅速,由它所带来的浪潮已经渗入到了人们生活的每一个角落,而程序员们成为了这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。  做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。  熟知数据库  为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mysql, Postgres等。  对操作系统有一定的了解  当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。  懂得网络协议TCP/IP  在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。

问题六:怎样才能快速成为一名程序员 1 学习如何编程
这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只是个玩具。它非常强大,灵活,也适合做大型项目。
但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个普通程序员的水平---你需要学会如何以一个通用的方法思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。
如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。
当然,实际上你最好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。
这里我无法完整地教会你如何编程---这是个复杂的活儿。但我可以告诉你,书本和课程也不能作到。几乎所有最好的黑客都是自学成材的。真正能起作用的就是去亲自读代码和写代码。
学习如何编程就象学习用自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,又读些,又写点....如此往复,直到你达到自己在范文中看到的简洁和力量。
过去找到好的代码去读是困难的,因为很少有大型程序的可用源代码能让新手练手。这种状况已经得到了很大的改善;现在有很多可用的开放源码软件,编程工具和操作系统(全都有黑客写成)。这使我们自然地来到第二个话题...
2 得到一个开放源码的Unix并学会使用、运行它
我假设你已经拥有了一台个人计算机或者有一个可用的( 今天的孩子们真幸福 :-) )。新手们最基本的一步就是得到一份Linux或BSD-Unix,安装在个人计算机上,并运行它。
当然,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发送的---你无法读到它的源码,更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术,就象是在腿上绑了铁块去学跳舞。
除此之外,Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet,但不懂它你就无法成为一名Internet黑客。因为这个原因,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的,一些很早的黑客对此很不高兴,但Unix和Internet之间的共生关系已是如此之强,甚至连微软也无可奈何)
So,装一个Unix---我个人喜欢Linux,不过也有其他选择。(你也可以在同一台机器上同时运行DOS,Windows和Linux)学会它。运行它。用它跟Internet对话。读它的代码。试着去修改他。你会得到比微软操作系统上好的多的编程工具(包括C,Lisp, Python, and Perl),你会得到乐趣,并将学到比你想象的更多知识。
关于学习Unix的更多信息,请看 The Loginataka.
要得到Linux,请看: 哪里能得到 Linux...>>

问题七:如果想成为一个程序员应该学习什么知识 程序员需要学习程序的逻辑,其次是需要学习编程的语言,这才是最根本的,有了语言才能和计算机“沟通”
如果做一个专业的程序员:
1.基础语言知识 :从底层的ASM 到结构化的C,到面向对象的C++ JAVA,如果不能都精通,但是要了解,至少要精通一门
2.基础数学知识: 高等数学(数学分析) 线性代数 离散数学,概率.数理统计等等
3.基础计算机原理:操作系统原理,微机原理,编译原理 数据库原来等等

问题八:20岁如何通过自学成为一名程序员 努力追求,坚定自己的信心,一直坚持。
不要挥霍时间,少玩一点电脑大型网络游戏,多看点这方面的书,多练练这方面的题。
建议看两类书:(1)计算机原理;(2)数据结构和算法。(看数据结构之前先看C语言)。
java、、C++、pb、vb、Delphi、汇编里自己认为哪个最简单就先学哪个,不要都学,也不要过一段时间换一个学,不要心浮气燥,他们都只是工具,学精一门其它的就相通了,重要的是掌握编程的思想。
调整作息时间,不要总是熬夜,有一个好的身体是做任何事的前提。
懂得充分利用自己身边的资源,不放过任何一个可以提高自己的机会。

问题九:怎样自学成为程序员并进入微软 微软的官方网站上写着我们期待具有独创性、开拓性的智者加入队伍,我们的面试程序也是为网罗这样的人才专门设计。程序员只是具备了编程序的能力,微软看中独创性和开拓性。所以职业潜力更重要,独创性需要一些人文要求,开拓性需要一些创业能力,而不完全是就业的能力。

问题十:怎么才能成为一个优秀的程序员 优秀的程序员要具备很强的分析,和思维能力,我是一个Java JSP 的程序员,以我自己的感觉,程序员的理解能力要很强,因为我们做一个业务系统需要了解这个业务的逻辑,才可以去开发,至于学什么语言,我觉得只要你可以精通一种语言,其他的你就都可以自学的。但是C除外。
至今我都不是很懂那个,我刚开始学的时候就是学的VB,但是我觉得可以直接学JAVA。搐可以选择JAVA .NET C# 这都是现在很流行的。
如果你可以的话C是最好的。我们单位C的 开的工资是我们的几倍。你要学一种语言,就必须先了解他的思想,所以你还是先看看理论上的东西吧。呵呵,其实程序员挺枯燥的,你要有思想准备哦。最大的困难就是你需要让自己有恒心。

如何自学成为一个WEB前端

WEB前端是做什么的?

  那些什么高大上的介绍作者就略过了,简单来说就是做网页的,我们上网浏览的网站界面就是WEB前端工程师做的。

  在互联网迅速发展的近几年,你上网冲浪的时候是不是感觉WEB网站越来越漂亮酷炫,功能越来越多,越来越复杂?各种类似桌面软件的Web应用大量出现,没错,WEB前端在其中有着很大的功劳。

发展方向

WEB前端的发展迅速导致其细分出了很多细分职业,我先来说一下我了解的WEB前端的分支,欢迎各位前辈补充:

  1、网页设计方向(移动和PC):主要偏向htmlcssjs主要是做一些特效,最好有一定美术功底,很多公司还会要求会photoshopCss功底一定要好,推荐看书《CSS权威指南》,系统的学习css

  2、B/S应用方向:这个方向就是用htmlcssjs来做一个web应用程序,和QQ、微信没什么两样,只不过是用网页来打开的,举个栗子:12306火车票订票管理页面、淘宝订单管理页面,或许你在工作中还会用网页登录XX管理系统。该方向主要偏向js,需要会一种以上的MVC框架,如angularreactvue等,这些框架会在接下来介绍。

  3、hybridAPP:没错,htmlcssjs也是可以开发手机app的,携程、淘宝、支付宝就是其中的代表产品。

  4、网页游戏:这方向需要有一定的算法基础,面向对象编程功底,设计模式架构经验,不建议新手从这方面入行,当然如果公司愿意让你往这方面发展又另说。

  Web前端的细分职业还有很多,甚至有的公司在用WebGL来开发网页版3D游戏,不得不说web前端这几年发展速度真快,所以说web前端是一个非常有前途的职业。

  看了上面这些信息,是不是感觉太多东西要学,精力不够用了呢?其实刚入行最好是在网页设计和B/S应用两者中选一个,这两个方向也是应用最多的。

 

关于自学与培训机构

如果在学习之前没有编程的经验的话,自学其实是一条很困难的路,因为不仅要从0到前端入门,还要从0到编程入门。

培训机构可以让人迅速入门,但也不是没有缺点,下面的我总结的自学和参加培训机构的优缺点。

 

——培训机构

优点:

  1、入门时间快;

  2、知识点比较系统,针对目前流行的各种技术栈;

  3、有一群小伙伴一起学习,一起鼓励;

  4、会针对面试技巧进行培训;

缺点:

  1、需要三个月到五个月不等的完全脱产时间;

  2、收费很贵,投入成本高,成本=脱产的时间成本+学费,准备好3W左右的学费+生活费吧(有的学校提供分期付款,但跟分期买房一样,有利息的),如果找不到工作,压力会非常大;

  3、短时间学会这么多知识,带来的必然是填鸭式的教学。学员的自学能力没有得到锻炼,而前端是一个需要不断学习的行业。

  4、很多公司对培训机构出来的学员有抵触情绪,所以简历一般要包装过才能找到工作;

——自学

优点:

  10成本投入;

  2、学习的时间可以自行控制,甚至可以边工作边学习;

  3、学习重心可以自行控制,针对前端某个细分方向,针对性的找工作;

  4、很多东西是自行摸索,但也养成了自学的习惯,这对今后工作发展非常重要;

  5、当自学成功入门后,会积累强大的自信;

缺点:

  1、自学的周期比较长;

  2、需要有一定的自制力;

  3、有时候会很孤独、很痛苦;

 

两种方式各有各的优缺点,如何选择就看看哪种方式适合自身的情况。

当初我决定自学主要是因为内心的一点小傲娇:如果我自学入不了门,那我为什么要做WEB前端?就算去培训完找到了一份工作,那么我需要的仅仅是一份工作么?

 

下面是我在网上搜集的一些碎片化观点,以及一些关于这个问题比较好的文章链接:

   *如果同学你具备一定的编程基础,逻辑,而且对开发语言非常有兴趣,能够坚持的每天在改正错误和克服难点,那么你可以尝试购买书,或者看看视频自学。如果同学你是完全0基础,非计算机专业,不容易坚持做一件事,那我建议同学你找一个培训机构,这样不仅有一个完整的0基础入门教程,也可以有培训的老师对你做出监督。

  *如果非要用什么比喻的话,培训出来的就好比是练的辟邪剑谱葵花宝典之类的,虽然在短时间内会有一个比较显著的提升,但是终归是根基不稳。但是还是比不上那些从小研习易筋经的和尚。

  *自学还是培训这个东西因人而异,有的人有一定的计算机基础,而且有一定的自制力,那么他自学起来真的很快。同样,我身边也有很多培训出来的人,他们给我的感觉就是没有计算机相关的基础,跨行业学习前端,所以自己自学上手很慢,且没有方向。其次,有些人自制力可能有些差,自学进度及其慢,反而给培训班砸上近两万块的培训学费让他们感到肉痛,而不得不认真的去学习前端。

*web前端开发,培训靠谱还是自学靠谱

初步接触

  刚开始自学时看教学视频是最有效的方法,没有之一,当然你有使用其它编程语言的基础那当我啥都没说。因为刚开始接触,最难的不是知识点,而是各种概念,教学视频里不仅会有知识点的渐进讲解,更会用通俗的语言来让你理解各种概念,而这些概念通过书籍或者别人写的技术文章是很难让你理解清楚的。

  我有个朋友是计算机专业的,在学校的时候准备学一下web前端知识,然后就抱着一本《JavaScript权威指南》开始看。结局自然是可以预见的,被书中各种难点:原型、继承、闭包打击的拔凉拔凉,然后就没有然后了。

  视频的教程在网上可以搜集到很多,自己找一个比较专业的,我也就不推荐了,毕竟搜集信息也是程序员必备技能之一。建议直接去淘宝搜,里面有很多卖视频的,花几块钱就可以买到一整套视频。

  特别注意:每看完一节课程的视频后,一定要把视频里的讲的代码敲一遍。可能你买视频的时候还会赠送视频里面讲解的源码,但是我不建议直接打开这些源码看,甚至可以直接把源码删掉。好记性不如烂笔头,学习编程的过程中自己动手敲代码永远是必不可少的。

  其实我觉得看教学视频和培训班上课就内容上而言没有太大区别。只是学习氛围不一样,上课会强制你规律性的学习,学习的气氛更浓郁一些,会有布置作业让你动手。自己看视频的话就得看你心情了,心情好就宠幸一下教学视频,照着敲敲代码,心情不好就玩去了。

  不管你是打算自学还是准备参加培训班,我都建议你先看看视频。有些人一学起来就特别感兴趣,根本停不下来,或许你就是其中一个呢?反正试错成本很低,为什么不呢?

  如果是业余时间来学习的话,建议每天看12节课时,如果是全职学习的话,每天也别超过4节课时,学太多不容易消化。剩余时间可以去跑跑步、打打球,我们是准备长期作战的,前期消耗太多热情并不是什么好事,每天来点运动可以让你第二天保持清晰的头脑。

  可以发个朋友圈告诉你的朋友你在自学WEB前端,相信有了朋友的关注,你学习的动力会更足一些,毕竟牛吹出去了,却没有达成目标是很丢脸的。

  在这一阶段中,可能会花掉1个月到2个月的时间。这段时间后你应该学会了基础的html,css,js知识,会做一些简单的页面和特效。达到哪个标准算是完成这一阶段呢?你看去w3school”和“菜鸟教程”(不要问我这是什么东西,百度一下,你就知道)上的htmlcssjs教程,如果里面的案例代码你90%都能看懂,那恭喜你,第一阶段任务完成了。

项目初涉

完成了第一阶段后,你可以开始做一些小项目了,这个链接有一些适合新手的小项目:

https://zhuanlan.zhihu.com/p/22766255

  最好自己去网上根据自己的情况找适合新手的小项目来做,一开始一定不要做太难的项目,不然很容易有挫败感,得循序渐进,不断建立信心。

  这个过程是比较艰难的,你必须自己去分析这个项目如何去做,然后去查资料,搜索类似项目,有可能遇到一个坎就困你几天。

  做项目是为了强制你去查资料,去动脑筋,网上有些项目很详细的写了设计思路,设计步骤,能找到这种资料挺好的,但一开始尽量别去看这些东西。

  尽量找有源码的项目,实在完成不了,能看懂也有很大的收获。

  别忘了总结学习方法。

  这阶段的时间,业余自学尽量控制在一个月以内,全职自学尽量控制在半个月以内。

框架选择

  前端框架分为CSS框架和js框架两种,PC端的CSS框架毫无疑问选择bootstrap学习,这也是每个前端必学的框架。移动端的css框架是百花齐放,ionicjquery mobleamazeui等等,作者了解不是很多,这方面就不多介绍了。

  如果选择了做网页设计,那么你就得多在htmlCSSjquery上下功夫了,jquery毫无疑问是用的最多的js库(作者认为它不是一个框架,是一个js工具库),社区有很多资源,各种插件,UI库多的数不胜数,或许你在第一阶段已经开始接触jquery了。

  如果你选择了B/S应用方向,你得选一种mvc框架学习,并且不建议这时候去学习jquery,因为jquery的思维方式有的时候是和mvc思想是相左的,下面是作者对几种主流MVC框架的主观认识,仅供参考,主要还得你自己调研并判断学习哪一种:

  1、angular:非常优秀的MVC框架,社区非常完善,各种UI组件应有尽有,PC端移动端都很完善,对于大多数需求来说,你只需要去社区找现成的东西就可以用,不需要你再去造轮子。作者使用的就是这个框架,但目前比较尴尬,因为angular2已经发布了,angular1迟早要被淘汰,但angular2又没有被国内太多公司使用,招聘这方面的人才的公司不多,并且angular2的学习曲线比angular1更陡峭,新手学习起来非常困难,虽然作者很看好angular2的前景,但确实不建议新手去学习。

  2、react:跟angular不同,react是轻量级的框架,速度很快,但功能肯定没有angular那么完善,一般是和其它框架配合使用,一些业务是需要你自己造轮子的,不过现在web前端需求越来越复杂,社区提供的组件已经很难完全满足某些需求,一个高性能的轻量级框架就受到了大家的钟爱,华为就是用react,在2016年,react的使用量已经超过了angular,并且在移动端也有很快速的成长。

  3、vuevue是后来居上的一个框架,成长速度非常快,和react的适用范围非常相似,比react更小、更快、更易上手,前景也是非常光明的。但目前社区不如react成熟,移动端也不如react完善。

其它MVC框架作者就不一一介绍了,作者个人建议大家从reactvue当中选一个进行学习。

项目进阶

在学习框架的同时,你可以自己找一个稍大点的项目来做了,边实践边学习是最快的成长方式。

  如果选择做网页设计,你可以仿制一些大型网站,比如淘宝、百度的一些界面,里面的数据你可以自己模拟,由于作者不是这方向的,能给的建议不多。

  如果做B/S应用,可以仿制“Worktile”,“钉钉”这样的大型B/S应用,同样,里面的数据你可以自己模拟,里面肯定有很多的技术点你没办法完成,没关系,别气馁,只要大致框架像就行了,人家专业的前端团队花了那么多时间做的,你短时间想做到那种程度肯定不现实的。

  当你的项目到一定地步的时候,你是不是感觉你的htmlcssjs文件越来越多了呢,而且越来越难控制了(虽然你可能不会觉得)。这时候你就需要一个前端自动化工具来对代码进行合并、压缩、部署、模块化管理,目前比较流行的有webpackgruntglupwebpack现在非常火,用的公司也多,作者推荐用wenbapck,当然,你最好都了解一下,对比做出选择。

  如果是在公司工作,你总不能把代码一直放在你自己的电脑上吧,所以你还得需要一个代码管理工具,git好无疑问是新时代青年最好的选择。顺便你可以去申请个bitbucket免费账号,创建一个代码仓库,把你写的代码用git push到仓库,自己也可以多玩玩git一些常用功能。

找工作

你经过一系列闯关,终于要面对最后一关的大BOSS了,想想是不是有点小激动呢。

  在找工作前,你得临时突击一下,去网上下载一些前端面试题来做吧!相信我,如果面试的公司有笔试环节,他们的题基本上都是在网上找的,很少有公司有那个闲功夫自己出题的(BAT这样的大公司除外),做题的过程也可以不断完善你的知识。

  在项目进阶这个阶段时,其实你已经可以着手去找工作了,工作中技术积累是非常快的,别担心技术不够,一些公司还是愿意招一些初学者,毕竟便宜啊,多投简历总能有机会的,不行那就继续学习。

  找工作期间多跑步吧,可以让你保持好的精神状态,并且也有助于缓解压力。

  注意别被一些XX教育投资公司、XX人才培训公司招实习生误导了,这些公司就是用招聘来说服你去培训的,特点就是强调“无经验”“包吃住”“编程有浓厚的兴趣”。

后续

  如果你自学找到了一份WEB前端的工作,恭喜你,这段经历一定会是你人生中宝贵的财富,从此你自信心爆棚,并且你一定积累了丰富的学习技巧,似乎只要你愿意去学,就没有什么可以难倒你。

  作者为你感到骄傲!

  等工作趋于稳定了,别忘了夯实基础,系统的梳理一下知识结构,看书是最有效的方式,推荐《css权威指南》《JavaScript高级程序设计》《JavaScript权威指南》《JavaScript设计模式》。

  《JavaScript高级程序设计》偏向dom

  《JavaScript权威指南》偏向js语言本身;

  《JavaScript设计模式》有一年工作经验后再去看比较好,设计模式是可以受益整个程序员生涯的好东西。

  作者见识有限,本文仅供参考!

作者写在后面的话

  不知不觉自学入前端的坑已经有段时间了,目前遇到了技术瓶颈,处在职业倦怠期,即:日常项目需求已经很难提升技术水平了,新知识的get速度很慢。这个时期对我来说是非常焦虑的,我想方设法在突破这种困境,写技术博客就是其中一种方法。我定的目标是,每个月最少写两篇技术文章,最好每周一篇。每篇文章一定要有大量的调研,尽量保证文章的严谨,在调研的过程中就可以不断扎实基础。

  博客的主要面向人群:WEB前端初学者。就跟做产品一样,文章要有准确的定位。本人技术能力有限,写不出精彩绝艳,有深度的文章。唯一值得一提的是我是自学入行的,走了许多弯路,深知自学的不易,甚至是痛苦,也总结了一些经验,希望我的文章能够对WEB前端初学者带来一些帮助。

  其实我生出写博客这念头的时候是很惶恐的,因为我也是个新人,我哪里有这个资格写文章给别人看?让我安慰的是,一篇技术文章能不能让人受益,不仅取决于作者的技术水平,也取决于作者的表达方式。所以我会努力让自己的文章理解起来更轻松,对初学者更友好,也算是跟前辈大咖们进行差异化竞争。

  文章中如果写的有什么不对的,需要补充的,希望各位前辈不要吝惜自己的键盘,多多斧正,就算是把我批的一无是处我会也很开心。

 

以上是关于如何自学成为程序员?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过自学成为一名优秀的 Android 开发工程师?

如何通过自学成为一名优秀的 Android 开发工程师?

如何通过自学成为一名优秀的 Android 开发工程师?

一个27岁没文凭,想去努力自学编程,有机会成为程序员吗?

广州蓝景分享:想要成为一名合格的前端程序员,应该如何学习呢?

每一个程序员都是自学成才