只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 网站建设多少钱 >  零基础如何自学编程?


零基础如何自学编程?

发布时间:2019-08-13 14:36:47  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
看到这个问题,半夜的我一个激灵爬起来,正好身边也有一些这样的例子,就发表一些不太专业的看法吧。—————————————————————————————————————————————— 我一个高
零基础如何自学编程?看到这个问题,半夜的我一个激灵爬起来,正好身边也有一些这样的例子,就发表一些不太专业的看法吧。——————————————————————————————————————————————
我一个高中同学,高考完当兵去了,现在面临一没技术二没学历三没靠山的尴尬处境,前段时间跟我聊天说正在武汉报培训班学Java,然后跟我描述了各种Java程序员的优越待遇,精品佛上完那几个月的课就能BAT三大家随便挑,月薪轻松20K一样…我虽然明面上鼓励他:加油,努力,我看好你!!!心里却一声叹息——你们啊,naive!网上那些so–called“21天从入门到精通XXX”真的害人不浅啊,以为会了些基本语法,能精品写几个小程序,就“精通”了,你们可以问问 @vzch有没有精通C++,又是用了多长的时间。当一名合格的程序员绝不是靠几个月的学习所能一劳永逸的,科学系统地学习计算机知识,坚持不懈地coding,一颗热爱编程的心,缺一不可。
先说说下面这位仁兄吧,喝最烈的酒,日最野的狗,大学四年也是浪的飞起。考研时也是一开始信誓旦旦豪言壮语,结局跟他学Java差不多。顺便说一句他是学化工专业的,专业课跟编程也并无交集。在我看来他至少代表了大部分跟计算机专业无关,却非要挤破头往互联网行业钻,想要分得一杯羹的应届毕业生。至于为什么大家这么乐此不疲,无视互联网的泡沫和不久前BAT的缩招,已经题外话了,我只是拿我学C++的一点经验,给大家一点借鉴。
在我看来,无论是学什么东西,有两点基本是通用的。一是伟大的马克思说的方法论;另一个就是态度了。态度决定一切,首先无论是为赚钱还是兴趣,你对学习的态度决定了你的付出程度,在我看来,大部分人拼的都是努力程度,因为他们还远没到拼天赋的层面。既然决定要学Java(按照题主的要求,暂且假设是Java开发),那就得制定完备的学习计划,并且持之以恒地坚持下去,建议还是先去找一些相关的教程或公开课看一看,如果确定一条路走到黑,那么就报班去吧,那应该算是速成的捷径了。关于培训班也不多做评价,毕竟也没报过。但是对于程序语言这些东西,我觉得第一步应该是模精品,通俗来说就是抄代码。书上课上的例程,自己亲自一个个敲一遍,和看一下然后copy-paste是云泥之别,然后就是一些必要的小练习,也需要一丝不苟地自己完成,切莫依赖答案和百度。另外,熟悉基本的语法以及体系框架之后,可以去online judge类网站创建个账号刷刷题,这里给一个leetcode的链接https://leetcode.com,另外我认为语言只是载体,算法才是核心,去买本《算法导论》,无论是以后学习装逼都是极好的,暂且写到这里,实在没动力╮(╯▽╰)╭——————————————————————————————————————————————
先贴几张我另一个小伙伴的图片,手机上实在不方便编辑,先写到这里,明天再更新吧,求赞(≧▽≦)/
——————————————————————————————————————————————
这是一开始的豪言壮语



三天后



七天后



end去培训班,三个月学到的比大学三年还多你的优势在于:目标明确,学编程是为了找程序员的工作。
因此要多多关注软件工程师招聘启事,尤其注意入门级别和实习生级别,了解这些职位所需要的技能,有针对性地去学。
再具体一点说:
以我的经验,零基础三个月不太可能学Android到可以找工作的程度。
可能的建议一:放低标准/延长时间。三个月学会java、入门Android,从实习生开始做,用一两年时间积累技术经验。
可能的建议二:考虑别的方向。相比Android,前端技术(HTML/CSS/JS)入门更快,不仅需要编程技巧也需要美术能力,可以考虑。这个问题知乎上已经问过很多次了。 作为曾经的关注者,忠告你一句,随便看个比较靠谱的答案,关掉知乎,行动起来才是正路。谢邀。。。好吧没人邀请我我自己厚脸皮来了
因为以前给很多和题主类似的同学们聊过相同的话题,我话有些罗嗦麻烦慢慢看了
完全零基础的很正常,我身边有个哥们,英语6级都过了,想零基础转程序猿,聊了一晚上,有了自己的结果,是什么先不说,咱们来看看我都聊了些啥
觉得这里必须要自我介绍下,夸张点说自学编程开始到现在有10多年了,其中系统学习了4年(大学)其他的都是自我兴趣爱好所以做了这么久...
现在还在实习期,嗯没错,我还没毕业,但我还是厚脸皮来给你回答问题了
从一开始啥也不会到复制别人的代码过来一点一点删除、运行看效果到现在自己能够独立完成整个项目的设计、实现、运营、维护和推广拥有完整的项目开发经验我完全是实干出来的,也正因为如此我可能和其他答主大人回答的不太一样,答案仅供参考...

不问废话,编程目前确实很火,以下我们根据一些问题确信你是否合适做编程
一,楼主觉得编程是什么?
以程序命令为基础控制计算机做相应的工作...这是标准回答,我想听你怎么看这玩意,因为你的看法将会影响你对整个编程行业的认知。
确立了自己对这个行业所做事情的认后,那么你必须具备一定的计算机操作基础,这是前提

好,第二个问题,楼主对抽象概念认知快么?
什么意思?这么说吧,我给你讲一些天体物理学很复杂的概念的东西,你能有能力硬着头皮记住他们并自己想办法寻求认知他们的工具或方法么
为嘛搞这么复杂?因为要学习编程你首先需要了解清楚一个规则那就是,无论什么语言的编程,必然有一大堆抽象概念等着你,如果你能够认知踏实的了解清楚这些概念,起码你的底子没问题了。
目前大多数面向对象编程语言适合去做应用层开发,题主你问的Android开发也是这层的,那么题主第一个任务来了,什么是面向对象?

三,题主你的毅力如何?
哦哦好吧,你的自述说了的,那么假设你毅力很强,那么你能够坚持下去每天敲代码练习不停下一天么?不是说不休息啦,而是每天都坚持着自己做些小东西出来,哪怕初学的时候就做个打印9*9乘法表在屏幕上也行。

基本问完了,那么还有些东西需要明确。
一、编程是个长期活,题主你需要能忍受得了复杂枯燥无味的编程语言和知识,这是你成长的必经之路。
二、无论什么语言,没有最好的。
三、学习一门语言要坚持下去,最好的话同时去了解下你做的程序运行平台的运行原理,计算机组成原理,不必把这些书精通,但基本的逻辑得懂。
四、明确自己的方向,区分软件开发都有哪些岗位,需要做什么事
五、(中期)无论做哪方面的工作都有自己蛋疼的地方,也都有优越于其他工作的地方,编程里边细分还有很多工作,例如产品经理需要做的原型设计、功能分析,前端需要去实现的界面、后端需要部署服务器、数据库编程等等等等...但始终记住一点,不要吃着碗里的看着锅里是,感觉别人都好轻松自己好累什么的,坚持自己的位置,学习其他位置需要做的事是做软件开发行业成长的阶梯,心态一定要端正
六、(后期)无论什么语言都有自己独到的地方,历史发展这么多年,能活下来的语言必有长人之处,没有最完美的。要学习其他语言最好学完自己当前的语言,并做到精通,这样你会发现很多类似的语言都会融会贯通,学起来效率翻倍

好吧以上都是经验所谈,我们来说些现实点的
哪门语言最HOT?
看题主你想做什么了?计算机(PC)软件?网站?还是手机程序?
好吧你好像说了的侧重Android对吧?
那么我想说什么呢?无论你选哪个,请参考以下表来选择最合适的语言:
PC(Windows):.net开发(http://VB.net 或 C#、C++,三者难度依次增加)其实还有其他的,但目前最常用的这三种
移动平台:iOS:object-c、swift(o-c资源目前较多,sw是最新推荐使用的)
Android:Java (还有C++也能做但不适合初学者)
嗯哼?题主想做Android的话离不开java哦,那么题主需要先去学习JAVA编程,完成后才能学习Android开发,路一定要一步一步踏实的走,别想歪路往前跳哦。

最后,根据题主的选择给点相关建议:
做Android开发,目前可用的两个工具分别是 基于eclipse的ADT和基于IntelliJ IDEA 的Android Studio目前谷歌官方推荐后者,而培训机构大多选择前者(因为那群老师习惯前者)
要做好Android开发,题主必须具备的另一项技能就是紧跟时代步伐,也就是说,两者都要学,同时一旦有新的,一定要能尽快完成转型,因为目前Android时代新东西变更很快,所以一定要能跟得上节奏。
其次,需要题主在学习到Android阶段的时候能多去了解一些框架,框架开发能大大增强你的开发效率,至于前期java阶段,可能会有大量的抽象思想等着你,初学者来说,能否理解这是道门槛。
哦,还有,Android开发的软件是跑在手机上的对吧?这些软件都有界面对吧?那么你还得会做界面,不要认为这是美工的活,更多的情况下不要去指望一群不懂程序的美工......
嗯,要学的很多,对吧?
你需要自行制定计划,一步一步去实现自己的梦想
我能帮你的就到这里了
哦,对了,你还比我大呢,祝你好运哦~

------
如果有什么问题可以问我,如果我有说不对的也欢迎大家指正,咱也刚毕业没多久,吃过的饭不多,还希望如果有大神,手下留情~
题主如果换方向的话咱大概也许似乎也能提供给你一些意见,私信我或者在底下评论都行,也希望能够互相交流下
加油。

------------------------
补充:
忘了说了抱歉,通过什么途径学?
其他好多回答,什么自学啦,网上有资源啦,什么看看书就会啦,还有报补习班的
天啦噜你们这群有基础的疯子哼!安卓虽然很简单(相对的)但也不是初学者做做梦看看书看看视频就玩得转的好么?
题主要真的想零基础学,个人建议报补习班,选择大型培训机构靠谱些,咱不会给你推荐哪家啦,又不是来打广告的......
还有,与之相反的是,千万别选速成班,什么30天教会Android开发的,扯淡!
重要的事情说三遍:
编程不是能速成的事情
编程不是能速成的事情
编程不是能速成的事情

做白日梦呢?还有那群混蛋会告诉你的什么通过俺们30天培训出去的学员,月薪2万....扯淡!
现在有些培训机构真是畸形的不择手段了啊真是
所以说,要报培训班的话一定要认真挑选,认真挑选,认真挑选市场真的很混乱,让这群见钱眼开的搅合的。
慢慢学,急不来,扎实了基础,以后才能飞得更高
同时,在学习编程的时候,可以去看看一些教程、资料、视频,网上真的很多,但他们仅适合当作参考来用,你可以照着视频做些自己的小玩意出来玩,初学直接靠视频?也是扯淡
重点推荐下毕向东老师的JAVA视频,但咱不是推荐他背后的培训机构哈别搞混了,毕老师讲得确实不错,挺适合新手去看
每天多做些练习,不断的积累,这么说吧,很大程度上我现在做开发,很多功能之前做过的,拿出代码复制过来改改直接用了,这样子才有效率嘛,那有这些代码前提就是日常的不断积累。




-----------
马丹的跑回去看了下题主的问题,又忍不住多写点了...
嗯,地方的话,软件开发最好的黄金三点是北上广,哦,外加深圳
来北京的话不要忘了喊我面基...呸呸呸,是见面交流,交流!

差不多该回答的都完了...吧?

本人在这之前自学了大半年的编程,现在还在一直自学,今天就把自学过程中遇到问题和经验分享出来,希望可以帮其他人可以少走点弯路。

做好心里准备

自学编程的弯路多得数不完,坑多得踩不完。如果你决定要自学编程,就意味着踏上了一条面对困难、挫折和失败的无尽之路,要想清楚自己能不能承受这些挫折,自己能不能坚持走到最后。

自学编程过程中总会遇到这样一些问题:
* 编程环境?不会搭建
* 知识点好多,定义概念,格式规则,缺点优点。。。
* 刚学的知识怎么又忘了,怎么这也不会那也不会
* 这个语法是什么逻辑,搞不懂
* 教程这样做可以,我这样做怎么就不行?
* 敲了半天代码,一运行怎么全是错误?
* 错误解决不了,想放弃,狗带
* 学了这么久,感觉还没入门
* 教程内容都是旧的,学起来费力
* 技术更新了,旧知识不管用,又要重新学

如果没有一颗能战胜这些苦恼的勇敢的心,我劝你还是尽早放弃,免得心灰意冷,身负重伤。而如果你喜欢挑战艰难险阻,能直面失败,并能在失败与痛苦中砥砺前行,那么恭喜你可以踏上编程之路,努力的去追寻自己的梦想吧。

选定方向

编程的世界是多元纷繁的,大的方向就分前端开发、后端开发、移动开发、云计算、数据处理、智能硬件、物联网、虚拟现实等等,光编程语言都几十种。如果没有做过功课,贸然进入只会分分钟懵逼。所以最好是根据自己的兴趣爱好再结合市场前景,先选定一个方向,再选择一门语言,然后头也不回的深深扎进去。

我当初开始自学编程的时候,因为工作时学了点Linux,就准备学Linux。Linux没学几天,发现游戏编程的Unity 3D挺好玩的,就转学Unity 3D。Unity 3D学了段时间又觉得大数据很火,感觉接下来是大数据的时代,要跟上时代的脚步,然后又去学习Python。后面才意识到自己在移动应用上面有极大的兴趣并有一些自己的想法,再加上本人很喜欢Google,遂最终决定好好学习Android移动开发。

如果自己对自己兴趣爱好没有深刻的认识,没有明确的学习目标,只是一味茫然的去尝试,最终只会像猴子掰玉米一样,不但浪费了自己宝贵的时间,还会一无所获。

####制定学习目标计划
选定了方向之后,剩下的就是朝着目的努力前进了。自学的过程是枯燥乏味的,也没有人陪伴督促,所以要想自学有一定成果,除了要有清晰明确的目标计划,还要有很强的自我约束能力,还要善于自我及激励。不然很容易自由涣散,三天打鱼两天晒网,看起来花了不少时间,实际上没学到什么。

我开始的时候就是凭兴趣漫无目的的学习,结果发现收效甚微,于是才制定学习计划,开始系统的学习。我先是学习了JAVA基础语法,然后将整个Android开发涉及到的所有知识面简单快速的学习一遍,这样对整个体系框架有一个全面大概的认识,然后在详细具体的学习每一部分,尽量搞明白其中的实现逻辑和原理,以达到掌握知识的目的。最后开发练习的时候再根据自己要实现什么功能,去查相关的资料。

优化学习方式
一、做好笔记,记录经验
我们大多数人并没有过目不忘的神技,很多时候我们学了也不一定马上掌握,需要过后花时间慢慢领悟,而且还有忘掉的风险,所以对于重要的知识点都要做好笔记。

编程的过程中总会遇到各种各样的问题,比如编程环境的配置,常用的快捷键,编程过程中的错误、异常,软件更新问题等等。这些问题往往会不只一次出现,所以我们面对这些问题都是如何解决的,一定要记录下来,一是增加自己解决问题的经验,而是以防下次出现。

我做笔记记录的方式:
* 截图
* 拍照
* 思维导图
* 写Word文档

除了最初用纸质笔记本做过笔记,后面都是用上面的方式。用电子的方式方便快捷易于分享,而且我还能传到手机上,利用其它时间随时随地阅读。

二、认认真真敲代码
二、认认真真敲代码
二、认认真真敲代码
编程没有捷径,只有勤奋努力。


三、多看官方文档,外文资料
互联网是一个更新迭代很快的行业,所有编程语言都会不断的更新新功能和修复旧Bug,网上查的资料很有可能是旧的解决方案,现在已经不适用了。所以最好最快的方法就是查看官方文档。

毕竟互联网技术还是国外发展起来的,所以在很多技术问题方面,人家还是有优势的。有些问题在国内不一定能找到答案就去外网找。

四、进入行业圈子
只有进入行业圈子与其他人交流,你才了解最新的行业动态,才知道自己需要更新哪些技能。最重要的是有了这群人,自己遇到问题解决起来嗖嗖的,那速度才叫“倍爽儿”。
进入行业圈子的方式:
* 混迹各行业网站论坛个人技术博客
一般在搜问题时很容易就搜到这些网站
* 关注各种行业话题和人
比如知乎、微博、微信公众号等
* QQ群、微信群
交流基地,技术后援团
* Github
互联网圣地,行业大圈子就在这。

五、动手做项目
我们学习编程的最终目的就是用所学的做出具有一定功能的项目,而做项目又是最好的学习和巩固知识的方式。如果前期能力不足就先做一些简单的功能模块,一步一步慢慢来,不要一开始就要实现各种酷炫炸天功能,遇到不会的就在网上查, 现在互联网这么发达,获取资源也及其方便。而且开发前也最好在网上查一下有没有已经成型的框架或模板,编程界有一句很流行的话“不要重复造轮子”,什么都自己做一是很耗费时间,二是自己技术能力不足还可能留下不少坑。

收获回报

自学编程说起来到处都是苦,但也并不是完全一无是处。客观地看,自学编程还是有很多好处的。
* 培养自学能力
* 掌握一门技术
* 锻炼毅力和独处能力
* 提高解决问题能力
* 提高面对挫折失败的承受能力
* 改变思维方式
* 享受沉浸专注的快乐
* 享受创造的快乐

资源分享
1. 自学视频网站:
[慕课网](慕课网(IMOOC)-国内最大的IT技能学习平台) 本人主要学习网站,课程分付费和免费两种,不过视频中的技术大多比较新,有课程计划和在线编程。
[极客学院](http://www.jikexueyuan.com) 课程全多,部分课程需要VIP,有的课程比较旧。
[麦子学院](麦子学院 - 专业IT职业在线教育平台) 大多要报线上培训班,不过好像有免费入口,反正我看的Android全部免费。
[51CTO学院](51CTO学院_专业的IT职业在线教育及实战培训平台) 没用过
[网易云课堂](网易云课堂 - 领先的实用技能学习平台) 只用过网易公开课,没用过云课堂。
[咪咕学院](咪咕学堂 - 学海无涯,咪咕一下) 没用过
[MOOC学院](MOOC学院(慕课)) 果壳慕课网,比较杂,没用过。
2. 手机应用
[SegmentFault](SegmentFault) 专业互联网问答,有PC版。
[开发者头条](开发者头条 - 程序员的首选学习分享平台) 程序员学习分享平台。
[掘金](掘金) 高质量技术分享平台
[码云](码云 - 开源中国代码托管平台) OSChina旗下云端开发者服务平台
[涂书笔记](涂书笔记官方网站) 有道云笔记、印象笔记这些大家都知道了,图书笔记的特点是可以上传照片并识别照片中文字。主要针对读书人群。
Mindjet Maps 思维导图,大名鼎鼎MindManager的Android版,免费
极品思维导图 Android版,功能齐全
[奇妙清单](奇妙清单 | 待办事项清单、提醒、事项 、任务、备忘) 待办事项清单
[种子习惯](种子习惯 - 最专业的习惯养成应用) 习惯养成应用
3. 到外面看看(被建议修改了)
自行发挥创造力
4. 浏览器

  • Chrome浏览器 各种开发工具,各种插件,开发者大多都用Chrome浏览器(去广告,翻译轻轻松松)
哈哈!我就是一个零基础自学编程的人!我就讲讲自己的感受吧!

首先要一点是自学编程要有足够的兴趣。曾经不久传闻美国监狱试验让一些犯人们学习编程,结果学了编程的犯人再次犯罪的概率比一般犯人小了不少,而原因却是他们再也不想学编程了 ……当然编程其实也没有那么痛苦,但编程的确是一件相对比较复杂麻烦的事情,终于能把程序运行起来了输出想要结果了当然很兴奋开心爽,但在这之前你可能需要想一堆复杂的逻辑,写一大片编程语言,解决一坨稀奇古怪的错误………如果没有足够的兴趣的话真的很难坚持下来。所以在正式如坑编程之前,最好确认自己真的想编程。当然如果自学到一半觉得很痛苦的话再退出也不迟哈!貌似一开头就说这种丧气话不太好呵,不过我相信真正有兴趣的人应该不会因此就放弃吧!
编程最大的乐趣在于可以自己设计各种逻辑,自己定规则,什么软件应用游戏啦都能自己做。一台电脑(手机)在面前你就可以玩出千百花样(还能装B )。
不过因为很多专业化程度比较高的平台都把图形库做得比较复杂,导致很多初学者在相当一段时间内只能面对一个黑洞洞的命令行(尤其是学C语言的),看着信息一行一行地输入和输出。其实我个人觉得这样很不爽有木有,用命令行连个贪吃蛇之类的小游戏都没法开发(因为不能画图呃……),一点都不好玩了。所以我建议初学者要尽量学习一些图形和UI比较容易调用的语言和平台,请看下一段。
关于自学编程该从什么开始入门,应该有这么一些要注意的。
首先不必太注意入门的语言是否厉害是否有用。我深有体会的一点是:入门前后是两个世界。入门是我最烧脑最难的阶段,要啃一堆不知所云的代码,还要理解,非常痛苦(这就是为什么我说要有足够的兴趣)……而入门后就会发现这些东西都是小case,那些代码啥的随手就写,编程思维也如泉涌,此时如果再去学其他编程语言的话会感觉比入门学第一门语言时要容易得多,因为不同语言的很多东西都是相通的。
所以我建议,入门就应该先选择一门又简单又有趣的语言,能让你的代码方便地看得见(不要整天对着黑框框),还要避免各种麻烦,搭建开发环境要尽量简单。这样才能减少入门时烧脑的程度,不至于那么痛苦 。
这么看的话其实有这么些入门选择:VB, python, actionscript3(我的入门语言), javascript等。
其实说句实话我觉得java不适合初学者入门,因为java的面向对象太复杂,但看你说想做安卓开发,其实学安卓的java倒也可以(我现在就在做安卓开发,有兴趣可以@我 ),不过java和android的框架真的很复(恶)杂(心),做好心理准备 ……

接下来就讲讲学习方法吧。
首先对于零基础的人而言一本书是不可少的,像什么《xx从入门到精通》、《xx自学笔记》啥的都不错。因为这种书的知识一般比较系统,有助于学习。建议买一本(电子书也行)。除了这些书以外还有一本必须读的东西就是API,API就相当于是官方提供的详细说明书,所有东西的使用方法和注意事项在API里几乎都有。不过API是要有一定语言基础才能读懂的,所以最初期应该用不到。
其次就是一定要好好利用搜索引擎(x度你懂的),当你遇到什么不懂的解决不了的问题时搜索一下八成能找到答案。这对学习非常有帮助。x度知道,某贴吧,csdn等社区也不错。
另外这个就是我自己的学习方法啦。在学习新知识的时候(例如学习了一个类的相关知识),要掌握和记住它最好的方法莫过于写一个示例程序。就是写一个程序,在里面运用了这个新学习的东西,并且运行成功了。这样等下次你要用这个功能的时候忘了,就可以打开示例程序,一看这些你自己曾经写的代码,你全知道该怎么写了。该方法屡试不爽,直到现在在我接触新技术的时候也会趋向于先写示例文件熟悉熟悉再作用。

所以大概就是这么多了吧,希望你编程快乐啦!

其实楼主不用说自己荒废,年轻人喜欢做自己想做的事情是再正常不过的,只要自己感到开心充实就可以。楼主说自己受得了苦、不怕孤独、热爱学习,说明楼主自身学习条件还是很不错的。在回答楼主“零基础能否成长为一个程序员”的问题前,还需要楼主自己明确一下自己是否适合学习编程。

根据我的个人经验(不一定准确),适合当程序员的同学一般都具备以下特征,楼主不妨自己对照一下:


1 有线性思维,做事情习惯于分步骤、有条理,每走一步都会给自己保留若干选项,没有过于发散、过于跳跃的思维;


2 学习数学不吃力,即便是在学校不好好学,但一旦想学一学,就能比较轻松地学会,看见数学的方程、函数包括应用题不发愁;


3 学英语时看见英文单词就知道它的意思,即便是你不会朗读它;


4 如果高中有文理分科,选择的是理科。


如果楼主符合上述特征,那么恭喜你,你有成为一名程序员的潜力。即便你现在是零基础,花一些精力学习一下计算机技术也是很好的选择。

针对楼主的问题,我来分别作出回答:

1 完全零基础,任何语言都没有基础

其实任何一位程序员在开始准备学习这个行业的专业知识之前都是零基础,也都没有学过任何语言。但他们都有一个共同点,就是对编程感兴趣。编程的乐趣只有从事这行工作的人才能感受到,学会编程可以再计算机、网络上实现自己的很多想法。永远记住兴趣是最好的老师。

2肯学,自认为学习能力不差

有一定的自学能力,还可以静下心来一步一步的学习一种技能是成功的必备前提。既然楼主想学编程,建议楼主从C语言开始,因为C语言是比较基础的编程语言。C语言是入门课,学完C后,再学Java等编程语言就会比较轻松。然后建议楼主学一些数据库的知识,如果自学可以从Access开始,Access是最简的数据库,不需要服务器,大致熟悉一下SQL语言。Access的程序语言是VB,应用不是很广泛,像大型数据库的开发语言一般都使用Java,比如oracle。然后再了解一下网络方面的知识,比如局域网、广域网、IP、子网掩码、交换机、服务器等等。然后就可以开始学习系统的编程知识了。



3 倾向于安卓开发:

写安卓程序使用的语言主要就是Java。熟练掌握Java的语法逻辑是重点,了解常量与变量、流程和数组;了解Java开发环境,学会面向对象编程的思想,熟练掌握Java基础类库,熟悉各种接口;掌握Socket编程、JavaScript语法;了解UI的一些知识。学会这些东西,基本就算入门了。下载一个安卓开发工具,亲自动手写一写,对自己很有好处。在这期间,你可以在网上下载一些比较完整系统的安卓开发教程,跟上视频讲解的进度,有利于循序渐进地学习。

4 三个月的学习只能了解一些Android开发的基础,并不能把所有内容都了解一遍,所以建议你可以边工作边学。如果你的亲戚朋友有人从事Android应用程序开发的工作,可以跟上他们做一些项目,边做边学,进步会很快。

5 如果是自学编程,没有一定的学历专业背景,可能在求职应聘的时候会遇到困难,毕竟用人单位对自学的认可度是不够高的。在去更高的平台当程序员,最重要的还是工作经验!工作经验足够丰富,做过的项目足够多,用人单位才会淡化你的专业背景。对于自学成才的人来说最重要的就是先找份工作锻炼业务能力的工作经验。

6 北上广和东部一线城市工作机会肯定是很多的,平台也更好。


希望我的回答对你有所帮助!

最近,很多小白问我怎样学编程,对编程有兴趣但无从下手,这是个庞大到让大神们“无言以对”的命题。我特此整理一些经验,希望可以让大家在学编程的路上少走弯路!

1、决定学,要有兴趣并且是真正的下定决心

兴趣和耐心是老生常谈的话题,小编不在此唠叨,只要记住一点,现在程序员工资差异很大,有能力的程序员享受高薪,但只是略懂的伪程序员可能找不到工作,如果想靠敲代码生存生活,就在兴趣的基础上认真学习。

2、学什么,编程语言的选择也是初学者的困扰

语言只是工具而已,假以时日,每个程序员都能熟练掌握一门甚至多门语言,也会随着技术的发展学习最新、最方便的新语言,相比语言解决问题的思路和方法更为重要。

但作为初学者,C和Python是最被认可适合初学者的编程语言,但由于它们自身的特点,这两种语言也有一定程度上的对立性,当然其它语言也有被选择的理由。

C语言入门门槛较高,学习难度相对较大,但许多语言都受到C的影响,基本概念的东西理念通用,学会了C能打下扎实的编程基础,也降低了以后学习其他语言的难度,总之学习C语言是先苦后甜,刚开始要对自己狠心。

选择C的原因:

1、大部分的数据结构、算法都是C语言写的;

2、借助C能够学习更多的计算机知识,了解计算机,了解底层;

3、C语言是永恒的,门槛高但是以后受用无穷;

4、C 的设计是 Unix 哲学的体现,薄封装、透明、紧凑、一致等体现得淋漓尽致。

不选择C的原因:

1. C贴近底层, 所以可能会让你过早地陷入底层的细节, 但是底层的细节并非普适的这与解决问题的思路学习相悖;

2、难度相对大,不容易看到成效,不利于初学者坚持学习。

Python对初学者比较友好,相对容易,功能也比较全面,容易看到效果,减少初学者的厌烦情绪。

选择Python的原因:

1、功能很强大拓展很广,上得web、下得脚本、画得了gui、当得了服务器;

2、语法简单什么平台都支持;

3、省略了很多细枝末节,更容易理解;

4、Python基于清晰的语法和直观的问题解决方案,还有其强大的跨平台GUI工具,能激起许多初学者的兴趣。

不选Python的原因:

容易造成基础差,到后面会有很多基础底层的概念混乱。

3、怎么学

编程是操作性很强的一门知识,看书少不了,但只有学习和实践相结合才能起到很好的效果,一种学习方法是看书->研究书中例子->自己做些东西->网上找资料->看书

研究经典教程是学习许多知识的重要方法,但看书一定要看透,学C语言时一直看到所有C的入门书籍都没有新语法。非科班出生最好先阅读一些计算机原理和基础知识方面的书籍,利于以后各种知识的融会贯通。

编程语言的教程各种平台上都有很多介绍,也有各种推荐,我建议多看一些推荐,每个人都推荐的效果应该不错。

C语言开发入门教程



本书共12章。

第1章主要讲解了计算机语言方面的知识以及C语言在未来行业中的众多用途。

第2~5章主要讲解了C语言的基础知识,包括数据类型、运算符、流程控制、函数、数组,学好这些知识对后续的学习至关重要。

第6~11章分别讲解了指针、字符串、预处理、结构体和共用体、基本数据结构、文件操作,这些知识是C语言中最核心的内容,熟练掌握这些知识,可以使程序开发更加得心应手。

第12章为项目实战,结合前面所学的基础知识,开发一个学生成绩管理系统。

Python快速编程入门



本书以Window平台、系统全面的讲解了Python3的基础知识。

第1章主要是带领大家认识Python;

第2章主要针对Python的基础语法进行讲解;

第3章主要介绍的是Python中的常用语句;

第4~5章主要介绍了字符串、列表、元组、字典等类型;

第6~7章讲解了函数的基础和高级知识。

第8章讲解了Python中的文件操作;

第9章讲解了Python中异常的相关知识;

第10章讲解了Python中的模块;

第11~12章侧重讲解了面向对象编程思想;

第13章围绕着面向对象的编程思想,开发了一个飞机大战的小游戏。


有了入门书籍,也只是打怪时准备好了装备,想要成为一名合格甚至优秀的程序员还有更多的路要走。具体该怎么学习,学习了初级知识后怎么扩展、补充、提高,如何提高作为一名程序员的职业修养,都是编程小白们必将面对的问题,感兴趣的小伙伴可以关注我,我会在后续为大家分享相关经验。

文末为大家奉上两张学习路线图,跟着此图一步一步学习,你也一定可以成为大牛的!

Python学习路线图:

C语言学习路线图:

想了解更多的IT行业资讯可以关注我哦!

针对题主这个问题,我上午看到了 @品雪一年前写的一篇文章,很不错,在此强烈推荐给大家,希望对有同样需求和疑惑的同学有所帮助。

  • 原作者:@品雪
  • 原链接:https://zhuanlan.zhihu.com/p/21475104
  • 原出处:知乎
目标决定方法,如果是想转行做职业程序员,那还是老老实实把基础概念搞清楚,系统的学一门语言一个平台,虽然风口来时只会点皮毛也能唬住一些外行、混到一个不错的收入,不过即使努力边学边干熬过去了,有这样心态的人也很难有长远的发展,风口总是会过去的,一直在程序员底层混着,不会比其它行业愉快的。
不过,也未必要把四大基础课程(计算机原理、数据结构与算法、操作系统原理、编译原理)都深入学完才算有基础概念了,基础不好的程序员刚工作时,挺容易陷进这个坑里。这些东西迟早是要补回来的,不过开始只要有个最粗略的概念也够干活的了。严格说来,系统学习与快速出活的矛盾是一个永远需要面对的问题,需要根据具体情况和个人兴趣找到适当的平衡点。在碰到问题时,作为深入系统的学习的契机是很好的,假以时日就会变得非常专业。总是解决过眼前需求就算,出活比较快,但是对个人的长期发展是很不利的,因为水平总是很浅。
在这里,先插一句,对于没有基础的初学者来说,学习编程最重要的是保持初心。当初怎么想起来学编程的呢?
是想把自己理想里的网站、移动 App 或者工具应用做出来,还是要求解专业方向上的问题,或者完成一个游戏、制作一个交互动画效果,还是别的什么。学习时,编程语言的诸多规定要记,开发平台的许多细节要熟悉,上手时debug的各种没头绪,如果陷到里边又没有搞出什么成果,太容易上演从入门到放弃。时时记得自己是为什么来学习编程的,学会一点,就用一用,明明白白感受到每天进步一点点,坚持下来的概率就大很多了。
把一门编程语言的细节都学透了,会是一个漫长的征程,你并不需要成为人肉编译器或解释器才能运用它,学会流程控制语句和基本的程序结构算是入门了,之后就可以开始给自己的项目添砖加瓦了。这样比较能保持长久的热情。昔年我还在上大学的时候,有很多同学抱着谭浩强版《C语言程序设计》学编程,基本上都从入门到放弃了。固然有书写得不好的因素,缺少目的性也是一个很关键的因素。
那么语言本身怎么入门呢?
对初学者,我喜欢推荐 https://www.codeschool.com 的教程,这些教程贯彻了小步前进、动手练习的原则,同时又省去了配置环境麻烦。别小看最后一点,软件开发的环境配置实在是一个比较烦人的事儿,非常容易掉坑里。所以,零基础的爱好者尽量选择解释型语言学起,用好的集成开发环境( IDE )工作,比如学习 Windows 应用开发用 Visual Studio,学习 PHP 考虑 Zend Studio 或者
PHPStorm,学 Web 开发的 WebStorm/Sublime/Visual Studio Code 等。另一个选择是越来越多的在线编程环境, @路人甲 整理了一个很不错的清单:https://zhuanlan.zhihu.com/p/21808087 。对于 JavaScript 的话,http://codepen.io(国内略慢)、http://jsbin.com/、http://jsfiddle.net(国内略慢) 也比较流行。
语言选择是由学习的目的决定的,比如做 Android 应用开发就得学 Java ,IOS 则是 Objective-C 或者 Swift(PS:IOS和安卓药丸),做网页当然是 JavaScript,大数据考虑 Python 或者 R,做游戏 C/C++,所以并不一定由得自己。对于零基础的爱好者,随大流才是明智的,听说 Rust 好或者 haskell 牛就去学,基本上是找虐。程序语言的流行情况随便在哪个社区论坛逛逛都很容易知道,搞不清楚可以参考 TIOBE 。如果只有泛泛的兴趣,我现在一律推荐学 JavaScript,纯考虑语言的话 Java 其实更好,学习起来简单,能尽快上手写东西才是好语言,不过 JavaScript 拿来做页面效果,比较容易有成就感,环境依赖也比较小。另外,对于泛兴趣的学习者,强烈推荐去https://www.codewars.com 刷题。
小步前进就是每步不要学太多东西,练习编写尽可能简单的程序;除了个别天赋异禀的,上来就写个实用大程序那是给自己挖坑,出了问题都不知道从哪下手解决,老老实实从 hello world 开始逐渐写长一点的程序才是正道。
编程是个手艺活,手熟是一切的基础,所以抱着一本书或者一套视频啃完是非常不可取的,学一点就要写写练手的程序。视频教程特别具有欺骗性,看老师行云流水地演示,对着暂停的屏幕自己抄一遍顺利出了正确结果,就以为自己也会了;关上视频看还记得多少?立即就发现记忆里缺很多细节。所以哪新学的语言元素写练习程序是学会编程的唯一途径。对于心急的初学者,学到能够自己不查书写出在字符串数组里找到输入的字符串,基本就有足够的表达能力去书写所需要的逻辑了。
上面这段话我不是说看视频不好,看视频学习其实比单纯的看书学习跟好更容易入门,我说这些话的意思是你必须配合自己的实操,必须自己动手去练习并且转化成自己的东西,关于Java和软件测试方面的入门学习视频课程也可以前往http://www.woniuxy.com学习,完全免费的。
语言入门之后,就可以试着写点自己感兴趣的东西,语言肯定还不够熟,所以手边准备一本语言参考书随时备查吧。要自己写点东西,难免碰到一大堆平台、系统相关的背景知识,有时间找本入门本书或者课程系统学一下基本概念最好,比如 O’Reilly 的 up and running 系列就挺好,Lynda
有很多编程方面的入门视频非常适合建感性认识。有条件报个短期培训班也是不错的,未必培训班能讲得多好,有人带的话,入门比自己乱撞还是容易点儿。
刚开始实际写程序,必然各种出错,碰到问题不要怕,要学会看出错信息,看不明白拿着完整的出错信息去网上查,问别人的时候尽可能提供详细的信息,尽最大努力不要让别人猜,这样得到帮助的可能性会大很多。顺便说一声,查技术问题还是 Google 比较好使。
直接上网查你想要实现的代码抄过来用可能也不错。最后就是要多交朋友,身边有高手可以请教是最好的,到网上论坛里混个脸熟也是不错的,国内的 csdn、v2ex、segmentfault 都不错,国外的 stackoverflow 找问题很不错但是对初学者提问非常不友好。
总结一下,学编程是为了解决问题,把你的问题分解细化,让它一步一步驱动你的学习过程,学起来就没那么难啦。

这个帖子已经有一年多的时间了,看到很200多点赞,1000多收藏,非常高兴。如果大家收藏的同时能顺手点赞支持,那我会更加高兴啊!

这一年的时间外部环境出现了很多变化,很多公司出现了裁员风波,作为我们来说,唯一能做的就是不断地学习,把自己的翅膀练得更硬一点儿,以不变应万变。

我们学习,要有目标,不能为了学习而学习,应该是有针对性的学习。开发人员学习的目标,简单地说,就是找一个好工作。

那么一个薪资不错的工作,有什么需要呢? 随手翻开一个招聘网站,像15k-20k 这样的工作,还是有一定吸引力的。 像如下截图的这份工作: 高级Java 开发工程师

很多同学,在工作中很少能接触到这些内容,没有相关经验,出现工作年限与能力不匹配的现象,跳槽时很被动,在网上找的帖子要不就是点到为止,要不就是很零碎,不成体系,很难找到突破口。


天猫整站Springboot系列教材 (一)- 基础 - Springboot 项目教程-模精品天猫整站 Springboot 版 - how2j.cn

这个教程融合了这几项最近很火的技术,让你在实践中掌握它们的使用方法。文字和视频同步,你能看懂的地方,那你就快一点,把例子敲一下,过,如果你这段看不懂了,那你应该慢下来,去看视频,看讨论,去看大家的评论,去搜索,去实践。

除了我原帖中极力推荐的网站以外,我还想介绍几个程序员必备的网站。

1.刘意基础班视频

有的同学更喜欢系统的内容,我的建议是视频可以作为how2j网站的补充,网站就像一个简明地图,让你快速地在黑暗中探索出一条道路,帮你克服恐惧,找到感觉,而当你想深入的了解每一个知识点时,刘意老师的讲解会让你明白这一切。

链接:

https://pan.baidu.com/s/138bim6hl1M6otb3AMNri6g

密码:8aih

2.Learn Git Branching

Learn Git Branching

Git是一大利器,但很多自学的朋友意识不到它的重要性,因为你是一个人,没有团队的合作需求,自己对版本的管理也还算清楚,但当你真实地参与到开发工作时,git是你武器库中决不可少的。

但git的概念入门还是有一点难度的,这个网站是一个游戏,当你通关了,git就被你纳入囊中了。

3.牛客网

牛客网- 互联网求职神器和备考学习平台

牛客网是主要面向毕业生的网站,有很多面试真题,基础的练习题,还是算法题,可以说是一站式的解决方案,有事没事泡在上面,可以看到各路牛人,每道题,也会有大家的讲解,当你看到大家都在奋斗的时候,你就不会感到寂寞了。

刷算法题,是求职的必过的一关,很多小伙伴认为,算法都是很成熟了,我们在工作中只要搞定框架,然后调包就可以了,但我认为,刷题是个一举多得的过程,锻炼了你的思维能力,无形之中,提高你写代码的能力。

4.牛客网算法视频

我自己和很多小伙伴一样,在刚开始刷题的时候,非常受打击,拿到题目,根本无从下手,觉得自己一无是处,然后就开始怀疑自己的智商,认为自己根本不适合做程序员,但你要知道这一切都是正常的,你需要的是一个导师,算法导师,而牛客网的左神,就是最完美的导师之一,不过他在牛客网上的教程很贵,小几千的样子,这里有一个我自己分享的链接,大家自取吧。

链接:

https://pan.baidu.com/s/1Fla5yOA1KEU5YEEeN7icpA

密码:azcx


5.Java工程题面试突击第1季

消息对列,分布式搜索引擎,redis,分布式缓存,dubbo,分库分表,高可用架构,这些知识点是2-3年工作经验的程序员很难深入了解的内容,很多同学在跳槽面试一两次后,就发现,这些问题在面试过程中,经常以连环炮的形式出现,经常是一到两个问题就败下阵来,信心全无。其实大家应该相信,大家都差不多,在面试之前,这个视频可以帮到你。

链接:

https://pan.baidu.com/s/1oYkVv7FHbRqYEbVFlPCgfQ

密码:05qf

================================================================================================================================

下面为原答案:

话不多说,推荐一个网站、两本书:

How2J 的 Java教程

现在,我正在这个网站中学习,可以说,这是目前为止,国内最好的Java学习网站。

「Java 核心技术」,「Effective Java中文版」。

本文一共分为三个部分,新手入门Java编程的误区、市面上教材的问题、正确的学习思路是什么样的。

一、新手入门编程四大误区

1.一定要找到最优路线

与上一代程序员相比,我们这一代程序员真是生活在天堂里,随处可得的都是经验,教程。但这也给很多新人造成了不少的困扰,哪一个学习路线是最好的呢?好不容易找到一个视频教程,看了两天,就看不下去了,又回去搜『怎么学习Java』、『有哪些适合Java新手看的书』、『最好的Java教材是什么』。其实,没有所谓最好的一条路,你走的那条,就是最好的。

2.拿到书,从第一页开始看,一个字一个字地看

学生思维中,最需要改变的就是这一点。编程书籍浩如烟海,每一本都是大部头,如果每一本书,都从第一页开始,一个字一个字的看,没有三五个月,你是啃不下一本书呢,可以到了三分之一的时候,你可能就已经到了崩溃的边缘了,放弃,只是早晚的事。

3.眼高手低,不重视练习

认为看懂了就是会了,这是编程新手很容易犯的错误,看懂了不算会,理解了不算会,只有你能写出来了才能算会。很多新人着急赶进度,每个知识点都是囫囵吞枣,看起来会了就过了。xdite老师曾说过,傲慢才是学习路上的天敌。放弃你的傲慢,重视练习,你才能获得最扎实的基本功。

请记住,慢就是快。

4.编程很难,我学不会

不要神化编程,好像只有古怪的程序员才能看的懂,学得会。编程其实就是和计算机交流,孰能生巧罢了。


二、市面上教材的问题

1.罗列知识点

知识点摆出来,就叫做教材。但这样的教材还不如让我直接去看官方的文档呢,没有分析讲解,类比,再多的文字只能让人昏昏欲睡。

2.太重视细节和原理

有些国外的教材,又太过啰嗦,没有重点的讲细节。按照这样的教材去练功,很容易走火入魔,不顾读者成本和基础地讲解细节和原理,是极其不负责任的,这样的教材就像一个高手,功德圆满了,下山来秀花招,中看不中用。

3.缺少练习,练习缺少梯度

我在学习的过程中,就有这样的困惑,感觉学了很多知识点,却找不到用武之地,找不到合适的练习题,大部分书上的练习题都是互相抄抄,就像大学考试的题目一样,不实用,而且最重要的是梯度设置很有问题,要么太简单,一看就会,要么又太难,超过了知识点的范畴。

网上的大部分练习都是针对面试的算法题,太注重于各种复杂奇怪的算法,对于语法,编程基础的练习作用实在有限。

4.没有项目,无法串连知识点

如果说好练习题少,那可用的练习项目,可以说是几乎没有。缺少了实际项目的检验,我们所学的知识点就好像都漂浮在空中,没有落地,没有办法得到整合。零散的知识是不容易被大脑记住的,如果能有一个完整的串连项目,那就像在大脑中建立一个图书馆,各类图书分门别类,整理妥当,工作中真正需要的时候,我们就可以信手拈来了。


三、正确的思路

1.快速突破基础知识

其实学习Java编程和学习任何其实知识都一样。

知识点+练习+总结

看知识点,看实例,做练习。这个过程中是以练带学的过程。不要死记硬背知识点,把知识点用起来,才能记得住、记得准、记得牢。

重点来了,如果你在我推荐的how2j网站学习,做练习的正确思路,一共5步:

java 练习题,共计 194 道

1. 自行完成练习

根据练习目标尽量自己实现代码效果,期间会碰到疑问,难题,和自己不懂的地方,这些都是必要的过程

2. 带着疑问查看答案

完成过程中,碰到无法解决的问题,带着疑问,查看答案,分析答案的解决思路

3. 查看答案讲解视频

依然有不明白的地方,点开视频讲解,带着疑问,听视频讲解有问题的部分

4. 再做一遍

理解后,再从头做一遍,把有疑问的地方都捋清楚

5. 总结

最后再总结一边,总结思路,总结解决办法,以后遇到类似的问题,怎么处理

2.排列组合,搞清框架整合

对于框架学习来讲,搞清楚Hibernate、Struts、Spring、Mybatis的使用方法是第一步。

真正工作的时候基本上都是两个或三个联合使用。因此,把构架的整合思路理清楚,会为后面的项目学习打下很好的基础。

整合Struts和Hibernate教程 | 基于实例代码分步讲解 一站式学习Java | how2j.cnSpring+Hibernate 整合步骤 | 基于实例代码分步讲解 一站式学习Java | how2j.cnStruts+Spring 整合步骤 | 基于实例代码分步讲解 一站式学习Java | how2j.cnSSH 整合Struts+Spring+Hibernate 逐一配置的步骤 | 基于实例代码分步讲解 一站式学习Java | how2j.cnSSM Spring+Sping MVC + Mybatis 三大框架整合详细步骤

3.结合项目,整合所学知识点与框架

其实在学习Java编程的过程中,这一步不一定是最难的,但是市面上的资料很少,无项目可做,是很多初学者找不到成就感,不能形成正反馈,最终选择放弃最重要的元凶。


我现在正在学习的就是这个模精品天猫的完整项目。而这个项目一共分为了三个实现版本,一个J2EE版、一个SSH框架版和一个SSM框架版。这样,一个项目,三种实现,既能完整地复习前面练习的知识点,利用到大部分的知识点,又能前后对比,了解到框架的用法和好处。

JAVA WEB 项目教程-模精品天猫整站 J2EE版JAVA WEB 项目教程-模精品天猫整站 SSH版JAVA WEB 项目教程-模精品天猫整站 SSM版

4.结合两本书,查缺补漏

这个时候,我们才提到最前面提到的两本书,你应该常备案头,以备查阅。真正的好书,要像一个朋友,遇到问题的时候,你去问他,他总能帮你解决。但你学习的时候,又好像不需要他的存在,这就是君子之交。


总结

今天我所说的,都是自己的学习过程中的体会和总结。how2j网站中大部分内容都是免费的,但有一部分需要付费购买。如果说学习是一项投资,那金钱绝对不是最大的成本,它需要你的时间,你的耐心和你的决心。


================================================================

如果大家喜欢的分享,欢迎点赞支持!

我的情况和题主差不多,23岁也就是2016年才下定决心要改变自己,于是开始学习编程..

最开始 选择的语言是 Python ,一边在廖雪峰的官网啃文档,一边跟着慕课网的视频学习。

三个星期后我放弃了Python,原因很简单,我的起点太低,初中学历,读书的时候也是混日子...看到知乎很多人说Python入门容易精通难,然后招聘网上看了一下Python的职位招聘信息后我果断放弃转学前端和PHP了。

上边是我在慕课网学习时的路径图,从开始学习到勉强能用thinkphp3.2框架做些小项目大约花了大半年。但是后面接触的东西多了才发现,这对于文化水平极低的我来说就算是每天除了吃喝拉撒都在学习都远远不够,所以奉劝跟我差不多条件的朋友们,如果要入这行请三思..

要注意的我随便说几点自身体验吧:

1. 英语: 单词要多记多敲,初学阶段最好不要使用自动补全(我有段时间用notepad++写CSS样式,不能自动补全我也懒得去搜,用了一段时间后我发现自己敲样式快的飞起!!),我实在很不理解为什么有人说编程里英语不重要,说这话的人大概是英语本身就很好才这么说的吧....另外有道词典 有道云笔记都很好用(翻译,做笔记)。

2.善于使用搜索引擎: 因为没有人在旁边教你,越往后学你就会越发觉得独立解决问题是很重要的。

3.找到一个'好老师'很重要,Python就廖雪峰,PHP就韩顺平。廖老师的Python教程我觉得比较适合有一定基础的人学习。韩顺平老师是一位非常棒的老师,他讲课的特点就是会站在学习的人角度来教课,风趣幽默通俗易懂。

4.写代码的时候一定要先规划好,画成图也好,写成文字也好。这个就不多说了,只有自己做的时候多踩踩坑才知道提前规划有多重要。

5.菜鸟学习可以去哔哩哔哩搜教程,免费的,还没广告,B站技术宅很多,他们很乐意分享相关的视频资料...我前段时间就在里边学了PS,遇到不懂的我就在知乎里搜,比如直方图是啥玩意?知乎大牛们回答的就很明确...


暂时就想到这么多,谢谢大家看我的流水账,感激!

零基础自学编程是可行的,但首先要明确的是这绝不是一件简单的事情,需要 自学者极强的毅力和明确的目标。以下是一些切实可行的建议。


1. 明确目标

弄清楚你为什么想要学习编程是自学开始的第一步,明确自己的动力和想要达到的目标可以使自学计划更加清晰可行。如果想要成为一名专业的程序员,最好选择参加高校组织的编程课程;如果只是当做业余爱好来学习编程,那么就可以利用你的空余时间来看一些相关内容并尝试实践即可。


2. 选择适合自己的编程语言

严格意义上来说,并没有所谓“最好”的编程语言,只要你从一种入门,其他的也会比较容易上手。所以在选择的时候可以选择一门更加适合入门的编程语言。比如,你想要写一款iOS的APP,可以从学习swift开始。如果想要打下更加坚实的编程基础,建议还是从C语言入手,然后再逐渐接触Python这类的更高级别的语言。


3. 从小处入手,保持耐心

不论你选择那一种语言入门,都应该从最基础的部分耐心学起。打基础的时候切忌心急,如果一开始还尝试的学习方法不合适你,可以尝试另一种。


4. 尝试从一款儿童app写起

这类app相对比较简单,较适合入门,而且可以在编程过程中找到乐趣。


5. 充分利用免费的网络教学资源

一些免费的编程教学资源(比如codecademy)有较大的帮助,找到你需要的学习资源并一点点摸索尝试,可以更快的入门。


6. 阅读相关编程书籍

如果在学习过程中被很具体的问题难住了,可以尝试通过查询一些具体专业的书籍来解决问题。在github等网站上比较容易找到相关书籍。


7. 玩编程游戏

在游戏中学习是一件很愉快的事情,在编程游戏中你可以编写简单或复杂的游戏。可以尝试Code Combat 和CodinGame等游戏网站。


自学编程最难的是坚持,可以找到兴趣相同的人一起学习互相监督、学习。


推荐阅读:如何选择适合自己的编程语言?

假期不想在躺尸中度过?推荐你十个优质编程网站

使用tab, 还是空格, 小小编程习惯却有巨大的差别


欢迎关注我的微信公众号:九章算法(ninechapter),帮助你了解IT技术前沿,通过面试、拿到offer、找到好工作!

我第一个语言学的是vb,当时高二,感觉很好玩,就学了。


第二个。。。

是C++,学之前完全不知道书店里的书《C语言》《C++》《visual C++》的区别。

后来刷知乎,受到一大批程序员的“唆使,蛊惑”,我听了轮子哥的建议,买了一本

《C++ primer》,硬撸了15年一个寒假,加上16年10月,不懂也硬着头皮读,有时一张要读的3、4遍才能大概明白个意思,勉勉强强混完,当时还以为自己会了C++。


第三个。。。

就是Java,在学校报了个二学历——软件工程,上课听Java觉得还可以,挺简单的。但是学校老师当我们二学历的是菜鸡,只教授SE的部分,后面做EE的完全让自学,大学嘛,自学往往就是不学,知道后来做毕业论文,我才知道特么Java还有这么多内容,怪不得经常听别人说Java是写服务器端的程序的了,而且我听说Java找工作好找(未体验过,因为我是学生物的)。更高层次的服务器方的SSH框架(据说这个老了),还有一些最新的我也打算以后有“需求在去学”,老实说学这些东西时常感到力不从心。


第四个。。。。

我记不清了是什么了,反正在2015年下半年,我学了(其实是入门)C语言,汇编,python(这两个完全是玩,闲的无聊看小甲鱼的视频,看王朗的8086书)、计算机网络(看的视频,当时还准备当CCIE,想在想起来还真是愚蠢)。原来我有一本范磊的《零基础入门C语言》(大概就叫这个名字),我下决心在寒假学习,但是看了两页我就放弃了,但是后来那本书四五百页,我全用上课的时间(上那些无聊的课的时候,比如什么职业规划心理健康,读生物的你还天天规划个毛线,给我讲些毒鸡汤)给刷完了,当时看的那个爽啊!就是感觉这本书写得太好了,因为之前有些C++和汇编的基础,这下以前没搞懂的问题现在全弄懂了。再后来嘛,你懂得,当然是去复习自己的专业课去了,这些就cease off了(ps:单片机搞了两节课就停了,hold不住了。。。买了一个开发盒,扔在那里到现在都没动,所有的过错都是自己忘得差不多了,又不想炒现饭)


当时雄心壮志还想学学计算机原理、单片机、编译原理、算法和数据结构、数电、数字逻辑等等,太多了,都放弃了。


今年初,因为要考研,所以关于计算机的我都不碰,下学期被保研了之后,我就开始跟着老师做毕业论文,当然是选择跟着生物信息学老师做啊!感觉也没什么,就是下数据你也写不了爬虫,NCBI的国内速度慢的经常掉线,有的生物信息学网站还可以,生物信息学软件也可以用,我Linux操作也还可以(我之前看书学Linux完全想撕书,砸电脑,最后还是感谢兄弟连的视频),后来又学习HTML+CSS+JS、外加J2EE、Tomcat、JSP、Servlet、MySQL勉强搞了一个原生的系统做毕业设计。另外暑假我也学了一段时间的R语言。


现在是2018年初,我打算搞搞人工智能,python3撸起,但是学一开始的时候学,还是静不下来,python一开始怪简单的,但是对于我们这种强类型搞贯了、底层原理不弄清楚不叫编程的人python学起来并不习惯,个人感觉这门语言灵活性大(这也是为什么它比较简洁),特性也不比其他语言少(一开始总是纠结为毛while、for这种还要else语句,简直有毒!),包多。2 到 3在网上查博客,全靠print的括号。


这是我从大一一天晚自习看到一篇鸡汤文章,上面说作者的一个盆友天天刷知乎,arxiv开始。

我百度了“刷知乎”,我以为“刷知乎”是个APP,后来玩知乎,再后来在知友的洗脑下入门计算机,这之中走过了这么长一段路,如果没有兴趣,我可能连门都入不了,就像一开始看《零基础学C语言一样》,当时我就在想,这么厚的一本书,要学到猴年马月去啊,果断放弃。


我当时学的时候也纠结到底是这个语言好还是那个语言好,后来感觉这问题根本没有什么意思,就是没意思,纠结这个难还是那个难也没有意思,最有意思的是——

我可以为了调一个bug搞上4、5个小时,最后成功;

写一个正则几秒内轻松搞定100多万条gff3基因注释信息的筛选;

编程有的时候很兴奋,可以忘记吃饭、睡觉。


我不敢一上来就看到所有(例如上来就看英文文档参考标准),当你知道那个东西又多么多、多么难的时候,谁都会因为这些而心生畏惧、受到打击,我宁愿待在自己的无知里面,一点点的来,同时受一点点小的打击。


回想之前的学编程,我也不觉得自己是贪多贪广,也不觉得自己学精了哪一门,也不觉得哪一门到底有多难,也不觉得哪一门语言有多好。


我所理解的每一个人都是一个独立的操作系统,环境不一样,理解也不一样,但是还是有主要分布的。现在所缺的就是志同道合的朋友,特别是计算机这方面的,感觉身边一个对计算机感兴趣,玩的深的人都没有,所以搞出什么东西来也没什么意思,不懂的也没有人可以问。估计今年下半年读研究生也没时间搞这玩意儿了,想想我就觉得伤感,但是还是想偷着学学。


哎就是这样吧,这回答也没什么用,纯属看到这个问题对自己的大学这几年计算机之路的回忆。也算是个总结。感谢知乎让我接触了计算机,但是知乎现在已经不像原来那样了。

最后:我的生涯一片无悔,想起那天下午夕阳下的奔跑,那是我逝去的青春。

我的计算机生涯一片无悔,想起那天下午夕阳下的debug,那是我逝去的青春。

昨天群里又有同学在咨询我:签了一份名为“岗前培训”实际上就是IT培训的合同,咋办?

当然不好办啦,但比这个更不好办的是之前一个网友的问题:

合同上写着(培训机构)“负责推荐工作”,这些同学全部理解为“包工作”(当然我相信这是培训机构的销售给他们这样说的)。现在培训都培训完了,一个班二十几个人全都找不到工作,咋整?几乎全是农村孩子(好骗啊),两万多的学费,全是个人消费贷款……

++++++++++++++++

其实我都不知道怎么评价这些事。

骂人家是骗子?确实比较解气,但不解决问题。

打官司你都打不赢,白纸黑字的合同,你签了字的。你说他们说的是“包工作”,但什么叫做“包工作”?1500一个月守大门你去不去……

人家是骗子,但你自己要有脑子啊!

说白了,这个世界哪里不是尔虞我诈,别人又不是你亲爹亲妈,凭什么给你一片真心?

++++++++++++++++

飞哥是过来人了,(见:从包工头到程序猿·一起帮),几个建议:

1、不要急着报培训班。尤其是那种要花一大笔学费的,不讲技术不讲教学就宣传就业的……有时候真是觉得“傻子太多骗子不够用”!

2、先自己试着学一学,看看自己有没有兴趣,是不是那块料?

3、如果自学确实不行,又一定要学会编程,再报培训班。一旦缴了钱,那真是的破釜沉舟,死磕到底了!别特么的相信培训班那些鬼话,什么学完毕业就月薪8K……骗鬼呢!什么叫“学完”?上课假装听听课,下课假装上上机,混几个月,就OK了?

这不是上大学可以混文凭,再说大学混出来的文凭也毛用没有是不是,关键是你得真学会技术,至少培训班教的,一点不能拉下,最好还要有所超越。

肥水不流外人田,安利个课程吧,非常适合想入门的小白:

人人都是程序猿(一)课程介绍·一起帮

全免费的,你听一下呢,最多会浪费你的一点时间,不会浪费你的钱!O(∩_∩)O哈哈~

而且,可以让你对编程有一个大体的认识,不至于人家(比如培训机构)说啥你就信啥……

好吧,自卖自夸结束。


欢迎分享传播,别忘了顺手点个赞。

你的支持,我的动力!

++++++++++++++++++++

最后很煞风景的加个推广,两个QQ群:

  • 飞哥办了一个IT培训班,http://ASP.NET全栈开发,线上全程直播,可以免费收看;线下拎包入住,按周收费。如果你有兴趣了解一下,可以加QQ群:729600626(一起帮·源栈·有意向)
  • 另外一个QQ群:716207562(一起帮·老码农-4),也不说啥交流啦,就吹牛灌水,老码农小菜鸟打发时间聊聊天,O(∩_∩)O~

专栏文章,恰好讲的主题是如何从零学习编程,只是比题主要求的更进一步,我学习编程不是为了找工作,而是为了创业。

自从入了新一代的雷电3接口的MacBook Pro, 我就在我的专栏里分享我买的好玩的东西。

艰难的苹果产品使用之路

从来没有讲如此昂贵的MacBook Pro 以及后来的Mac mini 帮我创造了什么价值,怎么创造的(注意只是“帮“)。今天就来谈一谈这个。

我在2017年7月失去了上一份工作。从此走上了创业之路。我认定未来是程序的世界,而开发应用除了需要投入个人的精力之外,并无其他成本。所以我决定几乎从零开始,自学开发。之前只在大学学过谭浩强版的C语言。

我相信通过学习能够改变自己的命运,并实践之。

学习到今天依然继续着,但在自学半年左右后,我开始正式开发产品,又用了半年时间上线了产品,2018年10月份正式收费。昨天单天的收入超过1100欧元,顶2018年11月份整月的收入。现在这个创业项目给我个人带来的收入,已经远远超过我的上一份工作。

项目只有两人,我负责跟技术相关的所有东西,所有的代码自己写,网站自己打理,没有任何外包。我的搭档负责对外的事情,包括公司运营,财务,市场。

其实,这个项目肩负三重任务。一,争取进入法国最酷的创业中心Station F, 从而获得优质的创业环境。二,为我们拿到法国四年的创新人才签证,为将来获取永久居留铺路。三,赚钱。目前应该算都已达成。

我不是什么行业大拿,甚至只能算菜鸟一只。下面的部分就是一个流水账,也可以算是一个自学参考,对我的项目的成败来说,算必要条件;对别人则未必。

任何人都不要指望看一篇文章就学会如何开发,这篇文章里只是把我所学过的课程列出来,并做简单的评价。这些课程除非特别说明,否则我肯定是至少完整的看过一遍。几乎都是免费的资源,或者淘宝几块钱就能买到,全部自学。学下面这些东西,用了我半年的时间。

  • 从2017年9月份,开始学习写代码,入门第一个教程:Stanford CS193P - Developing iOS Apps with Swift.

当时还是2016秋季版,现已经更新到2017秋季版,油管上有大量该课程的视频资源,iTunes也可以订阅到,且有字幕。该课程每年秋天开,新年之前结束。要学习的话,请找最新版。请留意,4月份2018秋季版就能发布,应该是针对iOS 12 + Swift 4.2 的版本了。

https://www.youtube.com/playlist?list=PL3d_SFOiG7_8ofjyKzX6Nl1wZehbdiZC_Developing iOS 11 Apps with Swift - Free Course by Stanford on iTunes U

在知乎上搜iOS编程入门,很多答案都不推荐这个教程,因为太难容易打击信心。但我们讨论的是如何凭一己之力从毫无编程知识到做成一个基于移动互联网应用的创业项目,而不是如何入门一个编程语言。所以该课程做为一切的开始是最棒的,理由如下:

这是实打实的斯坦福本科生课程,难度是根据斯坦福本科生的水平设计的。再考虑到外语因素的影响,确实很困难。但,后面比这个困难的东西多得是,如果这门课过不了关,建议重新考虑是否要从零开始自学开发,并最终完成你的创业项目。自学并不适合所有人。

学习时间参考:我学这门课非常吃力,十七八节课,一节课两个小时。每节课我大概要投入8个小时左右。在不工作的情况下,相当于一整天学一节课。还有四五个作业,每个作业要搞两天。由于这阶段我还顺便把权力的游戏一到六季又看了一遍,所以我学完整个课程大概用了一个半月。

课程基本就是老师在上面写代码,顺带讲解,我认为这是教编程最好的方式。三四节课完成一个小程序。我每节课要听两遍。第一遍听完之后,重写课上的程序。完全不知道该怎么写下去,就回去看课程视频。下一节课程前,再重写一遍上节课的程序。希望你明白这和默写出师表是不一样的,你要理解你写的每一段代码,哪怕这段代码写的跟老师的一样。

至于作业,如果实在写不出来了,比如写了两天,还是有些部分写得有问题,有些功能还是实现不了,那网上到处都能找到作业解答。当然,你要用Google搜,而且尽量用英语搜。如果你现在还处在有问题问百度的状态,要么抓紧改变,要么少自学,防止学入歧途。

在这期间,我其实还顺便看了另外一个课程 - 哈佛大学计算机科学导论 CS50:

CS50's Introduction to Computer Science

这门课名声很大,有点噱头大于实质。但是,当我在学习前面那门Stanford CS193p的时候,能做的最放松的事情,就是看这门哈佛大学 CS50课程。

课程主要讲的是计算机及网络知识,编程语言,以及互联网的发展趋势。跟我们理工科本科的计算机导论+C语言编程区别不大。当然老师看起来更有意思些。你甚至可以申请课程Visit,去哈佛大学现场去上课,一学期可能有两节课供申请。

当时这门课是用C语言讲的。但是在课程最后,专门有节课讲了最近流行起来的Python. 这部分尽量认真听一下。

学习这门课最好在edX上注册,这样你就可以用他们的在线编程IDE, 可以提交作业,那边会自动批改你的作业。无论课程多么轻松,作业一定要做。交点钱,还能拿一个证书啥的,但显然没卵用。

大概在2017年10月份,完成Stanford CS193p课程之后之后,我其实啥iOS应用也写不出来。

这阶段你要学一些实战的东西了。比如这本:

  • iOS Apprentice - iOS开发自学的最佳入门教材
iOS Apprentice

这一本被很多iOS自学相关的答案推荐为最佳入门教材。每年都会出最新版。所以除非中文的翻译版本紧跟最新版,否则还是去看最新的英文版吧。

这本教材看起来很贵,但实际上淘宝只要几块钱就能买全套。其它的几本其实也很好,尤其是后面要补充语言知识的Swift Apprentice 以及很有用的 iOS Animation. 当然现在这个阶段,只需要把iOS Apprentice这本学好就行。

Swift ApprenticeiOS Animation Tutorial: Getting Started

他们家不仅教材很好,视频也很不错,你早晚有一天会购买一个月的会员,然后用一个在线视频下载软件,比如Downie把他们网站上的视频全都下载下来收藏。

继续谈iOS Apprentice 这本书。这本书总计帮你做4个小应用。每一个应用的完成度都极高。整个过程几乎涵盖了一般iOS开发需要的所有基础知识,完全重实践。从Xcode IDE的使用,到各种UI, 简单的动画,图片和文件的处理,以及多语言支持和如何上架到App Store.

在你对整个iOS开发不太熟练的情况下,这本书甚至可以当作某种意义上的工具书。尤其是多语言的部分,非常详尽。定位功能的部分可能在国内做不了,在谷歌上能找到解决的办法。

我大概需要三到五天完成一个应用的学习。做到完全不看书,直接在三两个小时内把应用从头到尾写出来。

如果你想补充一些基本的Swift语言知识,可以去看官方的文档:

Swift.org
  • 2017年11月份,我完成了我自己的第一个应用。

这个过程简直出奇的顺利,竟然没有啥可说的。

我先在Github上去找了跟我的需求非常接近的应用。在这个应用的基础上,构建了自己的UI, 并与原应用提供的各种接口对接,实现了自己需要的功能。

这过程中,最重要的是要学会使用别人的库,去阅读成熟应用的源代码。这些东西,只能靠自己去钻研,之前的教程是没有任何提及的。

需要的基础知识不多,你只需要知道去Github找代码,学会使用 Carthage 和 CocoaPods

这个期间我同时准备搭建自己的网站了。既然自己一个人干整个项目的开发,那当然是要学全栈开发了。学习全栈开发,必须推荐下面这个频道:

Traversy Media - 在这里,你可以找到关于网站开发的所有教程

https://www.youtube.com/user/TechGuyWeb

这个频道的播主简直是天生的讲授者:口语清晰,语速适中,讲解的逻辑性强,还不忘记提及重要的细节。我最初看他的视频的时候,他还在他家的地下室里用简陋的设备录制视频。但今天,他已经拥有自己的配备了iMac Pro和多台高仿电脑,及专业录制设备的宽敞的工作室了。他为了照顾大多数听众,多数情况下使用的是Windows环境(他有特意提及过,他确实是为了照顾听众才使用Windows的,言外之意么....)

入门的话,先把最基础的HTML CSS 和 Javacript 知识学会,该频道有一个播放列表,全部都是这些知识的入门教程,每个教程大概一个小时左右。建议边看变自己跟着写,毕竟这些课程不是很难。两个小时应该能够跟下来一课。特别适合平时休息的时候看。

https://www.youtube.com/playlist?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8

国外的开发教学基本上就是一个字:“写“ - 从视频开头写到结尾。等你学完一段课程之后,你发现你已经完成了一个不错的小项目了。不像在知乎上看到的关于开发的话题的答案,大多数的风格都是“挥斥方遒,指点江山“ 或者 “俱往矣,数风流人物,还看今朝“。争来争去的都是啥有前途,啥没落了,啥算法重要,学习开发的各种误区,高大上的很。看这些,一行代码都不想写了。

学了前面 HTML CSS之类的,一定要顺便学一个前端框架 比如Bootstrap:

Bootstrap Beginner Crash Course

https://www.youtube.com/watch?v=5GcQtLDGXy8

知乎上最关心的并被最多讨论的话题,该学啥语言,啥玩意没前途,Traversy的这个频道里,只会在每年开始的时候讨论一次,非常全面,比如2019版的。如果你对你自己的项目要做什么很清楚了,建议一定要看这个,来确定学习的总体路线。

Web Development In 2019 - A Practical Guide

https://www.youtube.com/watch?v=UnTQVlqmDQ0
  • 2017年12月到1月份,我的搭档在巴黎咨询创业导师和天使投资人,了解我们的想法是否可行,并物色孵化器。

有自己的应用真的很重要,哪怕这款应用只是个雏形。我的搭档描述,见到的所有人,第一句话几乎都是:“如果你只有一个网站,我们就不要谈了”. 在这期间我们完成了第一版商业计划书,我还顺便根据我们的应用做了一个Demo视频。这也就是Mac系统的好处了,你需要创作什么东西?它已经完全为你准备好了。

需要开发环境,几乎所有的开发语言都有Mac版本,而且下载+拖拽即完成安装,完全不需要各种配置。尤其是对Python的支持非常好。同样的指令,macOS里一行行的快速执行完毕,在Windows下全都是报错。

需要管理远程主机?macOS 自带的终端就可以轻松搞定。在Windows下,你还需要安装额外的工具。同理,需要Git的支持?macOS 原生支持,Windows?你还要专门安装一个终端(Bash).

需要做一个Demo? Motion 和 Final Cut Pro X 不要太容易学。像Motion这样的动画制作工具,几乎五六个小时的学习,就可以开始制作完成度很高的Demo视频了。而剪切这些视频外加配音,使用Final Cut Pro X的话,也只需要学习两个小时。

Mac只是不适合用来玩游戏。

这里,你可以从零开始学习Apple Motion:

AV-Ultra Apple Motion Tutorials

https://www.youtube.com/playlist?list=PLR3Lb-klios_v1XI93py1ljFJeu9mYdYA

这里是Final Cut Pro X的教学视频,非常全面,别嫌版本有点老,讲的真的好:

Final Cut Pro X - FULL TUTORIAL

https://www.youtube.com/watch?v=NPbBDs67aCY

这里必须安利一波Pro Apps. 苹果全套的媒体及音乐制作工具,包括Final Cut Pro X, Motion, Compressor, Logic Pro 和Main Stage. 打包买只要1500人民币左右,可永久使用。比起那些要订阅的,简直不能再划算了。

喜欢用免费的GarageBand 做点音乐,可以看看这个视频:

How To Create Wonder Woman Theme Song in GarageBand for iPad — Tutorial [4K]

https://www.youtube.com/watch?v=oDFopDPLw2s

在Mac的环境下,一切都很方便,一切都很好上手。或许功能没有Adobe全家桶那么强大,但还是可以作出完成度很高的作品来。

  • 2018年2月,正式敲定Station F的一家孵化器。创业正式开始了

2月25日,我从家里出发,到北京搭去巴黎的航班。那天有大事发生。Station F作为全法国最大的创业基地,有一个很重要的好处,就是这里边有很多孵化器是属于French Tech正式合作的孵化器。进入这些孵化器的项目的创始人可以申请法国的创业人才签证,有效期四年。具体合作的孵化器列表如下,现在已经越来越多了。

https://visa.lafrenchtech.com/6/find-the-right-incubator-for-your-startup
  • 2018年3月,学习Python和Django, 网站的开发正式开始了。

我在这之前走了一些弯路,比如最初学了Flask, 但学习了一段时间之后发现在网上能找到的基于Flask的完成度非常高的项目非常少。大多数的项目都是用来做教学的,比如个人的博客啥的。

而我的需求则是账户管理,支付,数据库操作以及提供Web API给应用的综合的网站。最终,我选择了Django,而且在GitHub上找到了和我的需求非常相近的开源项目。学Django, 我使用的教程是这个:

Coding for Entrepreneurs 的 Try Django Tutorial

https://www.youtube.com/playlist?list=PLEsfXFp6DpzTD1BD1aWNxS2Ep06vIkaeW

这个列表里的视频是基于当前的2.0版的。我在学的时候还是1.11版本,那个视频很夸张,长达8小时的一整段视频。我用了一个周末,大概40个小时完成了这个课程。

仅仅学习这门课程是不够的,Django最强的一个部分是其REST功能,这就要学习Django 的 Rest Framework:

Build a Rest API with the Django REST Framework

https://www.youtube.com/watch?v=tG6O8YF91HE

这些课程其实难度都不是很高,除了最开始接触的时候,需要一点额外的时间,否则一般一个小时的课程,学习两到三个小时就可以掌握了。

在前面的这个教程之前,强烈建议系统学习一下 REST API 和 JSON基础:

What Is A RESTful API? Explanation of REST & HTTP

https://www.youtube.com/watch?v=Q-BpqyOT3a8

JSON Crash Course

https://www.youtube.com/watch?v=wI1CWzNtE-M

Django 是基于Python语言的框架,我之前提过CS50有一节课讲了Python,你要是认真看过节课,并做过习题,那你目前不需要额外学习任何Python语言就可以学上面Django的课程。

但是,当你用Django开发自己的网站的时候,还是要回头补充Python知识的。学习一门语言,需要看的课程还是很多的,为了学习Python,我至少学习了下面这些课程:

30 Days of Python

30 Days of Python

这个课程非常棒,也是出自Coding for Entrepreneurs. 不过该课程是收费课程,希望你能在油管上找到盗版的

Udemy上似乎有另外的版本,似乎更新一点,也是他讲的,选一个就好了。

30 Days of Python | Unlock your Python Potential

这个课程说是30天,其实不工作的话,一个周末应该也可以学下来。没有太多艰深的内容,基本上就是了解语法,有之前学习Swift的基础,学起来很快的。

Python Programming Tutorials (Computer Science)

Python Programming Tutorials (Computer Science)

这个也类似普及Python的基础知识,讲的也很好,主要是播主的语速适中,不像前面的,语速有些快。如果觉得前面的有些跟不上,先学习这一个教程也可以。这个教程非常适合休闲的时候看看。即讲解Python2 也讲解Python3

Python OOP Tutorials - Working with Classes

https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc

这个课程感觉比较进阶了,强烈建议完成了30 Days of Python再学习。面向对象这部分非常重要,几乎是必须要掌握的,尽管有些抽象,可以通过反复学习来逐渐掌握。这个播主的频道也值得收藏,讲解的也比较详细,类似于之前提到的 Traversy Media. 他也有一个100多节课(每节课只是几分钟)的Python教学,我并没有看过全部。如果觉的听Coding for Entrepreneurs的课程吃力的话,可以试试这个。

Python Tutorials - Corey Schafer

https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU

当我把这些课程基本都学完的时候,我开始正式搞自己的网站了。基于之前找到的项目,我先把所有 Function Based View 用 Class Based View 重写了。你如果也学到这里,就会知道Django强大的地方就是Class Based View(CBV). 而一般习惯于Python的人,可能更倾向于写大量的Function Based View, 因为写CBV等于要学很多新的知识。但CBV会让你的开发速度大幅提升,后面再用Rest Frameworks 也非常顺畅。后面你学习的大多数教程也都是使用CBV的。

其实Django应用的环境搭建也是有一些复杂的。可以参考这篇文章:

Setting up Django and your web server with uWSGI and nginx

Setting up Django and your web server with uWSGI and nginx
  • 2018年5月 Python和Django的学习先说到这里,我的iOS App还要继续开发。

之前的App只实现基本功能。现在目标则是开发可以上架的应用,UI和网络部分其实是最重要的。先说UI部分。大多数学iOS UI开发,最初都是用一个叫做 Storyboard 的东西。比如前面提到的Stanford CS193p 和 iOS Apprentice. Storyboard 起初给人的感觉是非常直观,就像做个PPT一样。但真正用来开发复杂的UI, 则感觉非常的低效。所以,有些人从来不用Storyboard开发UI,而是直接通过Coding来实现 - 即完全不在Xcode IDE里画来画去的,上来第一件事,就是删除掉Storyboard. 这里就不得不提这个频道了,这个频道对我来说是最重要的:

Let's Build That App

https://www.youtube.com/channel/UCuP2vJ6kRutQBfRmdcI92mA

这个频道下的iOS 课程各个是精品,早期的旧版课程,也绝对值得学习。正好可以用来熟悉一些老版本的Swift 代码,毕竟这样的源代码在Github上还有很多。

这个频道我没法推荐哪个播放列表,凡是Swift的,都值得一看。在这个油管频道外,还有他自己的网站,上面的课程都非常贵啊,建议先把油管上的课程都看完再决定买哪个课程。

Courses

他的所有课程都非常简单粗暴,你用过Facebook对么?尤其是应用里点赞的那个动画特别酷,是么?我们来一起做一个Facebook应用。他重做了包括Twitter, Instagram, Audible等等好多App. 一切都是从这个最基础的视频开始的:

Swift Auto Layout Programmatically

https://www.youtube.com/playlist?list=PL0dzCUj1L5JHdeOlzJtp5zlsdrliJTC7F

至于网络部分,又要推荐 raywenderlich.com 也就是之前提到的iOS Apprentice 的那家的视频了

Networking with URLSession

Networking with URLSession

我看的那个版本还是个老太太讲的,新的版本换了讲师,又加了很多新章节,比如用户验证的部分。iOS的网络部分实在是太繁琐了,在真正的开发过程中你就会发现有多麻烦,要自己去不断尝试理解,PostMan这个软件是一定要用的。当然,你可以尝试一个叫做 Alamofire 的框架。

Alamofire Tutorial: Getting Started

当你的开发到一定规模,你就需要了解一些关于设计模式的东西。

iOS Design Patterns

iOS Design Patterns

这个课程我认为并不是很出色,但还是讲出了一些实现某个Design Pattern的实践。作为最开始理解iOS Design Patterns 的入门教程是可以的。

在前面提到的 Let's Build That App 的频道里的

Lets Build YouTube 的某节课里也专门讲过MVC设计模式

https://www.youtube.com/watch?v=3Xv1mJvwXok&list=PL0dzCUj1L5JGKdVUtA5xds1zcyzsz7HLj

而且,在我介绍的第一个教程,即Stanford CS193p里用了很重要的篇幅讲解 MVC 模式,可是,我认为在当时的情况下,是很难了解这么抽象的概念。包括与之非常相关的 Swift Protocol 和 Delegate, NotificationCenter 和 Observer 这些概念。

这个时候强烈建议看这个系列视频。教程里写了一个简单的小应用,却非常清晰地讲解了上面的概念:

Swift Delegate Protocol Pattern Tutorial - iOS Communication Patterns Part 1

Swift Observer & Notification Pattern Tutorial - iOS Communication Patterns Part 2

这两个视频都是出自下面的播放列表里,但注意播放列表里的顺序弄反了,建议从Part1 开始看。这个播放列表里的其他视频对于想要更深入了解Swift一些高级功能的人来说每个都非常有价值。

https://www.youtube.com/watch?v=8XqzE-7e1qk&list=PL8seg1JPkqgF5wazzCKSq3EEfqt3t8mvA

在这个阶段,我顺便也把macOS版的App开发了,过程也不复杂,油管上macOS开发的教程几乎没有好用的。只能在 www.raywenderlich.com 找到比较不错的视频教程。打开网站,然后搜索 macOS就好了,挨个视频看(下载)吧。

  • 2018年7月 是时候给Windows 也写应用了。

这时候应该有人出来争论,你这样开发好几个平台,那为啥不用一种语言都开发了,比如什么React Native之类的,还有好多选项。嗯,或许我下一个产品,会的。

但我这里只讲述我完全自学编程并创业的过程,陈述事实,而非给出观点。我们今天的语境里,陈述事实的内容占比太低了,满地充斥的都是各种观点。就如知乎的模式,如何看待XXXX,问题描述可能都没有看,下面的答案就一溜烟的排了下去。

回到我的具体情况,我是菜鸟。我必须参考其他成熟的项目的代码,才能作出自己的东西来。既满足需求,又用一个语言把所有平台的应有都写好的项目,是找不到的。而且,多学一两门语言,没什么大不了的。比如C#, 并不难学,而且可参考的资源实在太多了。比如这个入门教程:

C# Fundamentals for Absolute Beginners

https://www.youtube.com/watch?v=r_5P6GVYJpY&list=PLsrZV8shpwjMkG96rkKLdNiX02S5LPIqS

这个讲师的简直太棒。耐心,细致,学起来完全不吃力。一个小时的课程,大概一个半小时的时间就能完全掌握,应该是我学的最快的课程了。

学完这门课程之后,开始真正做自己的应用的时候,还是会遇到一些困难,这个时候就要学习一些高级的内容,来解决这些问题:

C# Design Patterns & Principles

https://www.youtube.com/playlist?list=PLLWMQd6PeGY3ob0Ga6vn1czFZfW6e-FLr

又是Design Patterns, 在开发应用的实践中,你永远无法摆脱设计模式,其实各个语言的设计模式都是大同小异的,你在这里学习的只是不同语言下的实现方法。这里边的重点是 Event Hanlder,很多跟网络相关的功能都要基于这个模式实现。

在这里我要提到一个很重要的网站:

Stack Overflow

Stack Overflow - Where Developers Learn, Share, & Build Careers

我认为我可以写出自己的代码的标志,是我开始能够在Stack Overflow上找到问题的答案,并且参照答案,根据我的实际情况,解决了自己应用中的问题。比如,你想在Swift中使用一种加密方式,使传输的数据,不仅第三方无法看到,而且要客户端的使用者也没法直接看到,必须通过程序内置的算法解密之后才可以看到。没有教程会讨论这种问题,但在Stack Overflow上你就可以找到答案。

你必须在你的编程实践中,不断的练习并学会:

  1. 如何准确的提出问题,从而让搜索引擎把答案呈现在你面前。
  2. 重新加工答案里的代码,让它可以在你的应用里生效。

前面说过的所有的语言,最容易找到问题答案的地方就是 Stack Overlfow, 除了C#. C#的最佳答案,一般都在msdn上。所以当谷歌把msdn的答案送到你面前时,不要直接无视。

  • 当你的项目达到一定规模的时候,你就需要Git了

Git教程- 廖雪峰的官方网站

Git教程

这是我整个学习过程中(不单指Git, 而是我这一年来所有的学习过程中),唯一完整学习过的中文教程。其他的中文教程,哪怕是一些备受推崇的,感觉都很一般。在我整个学习过程中,包括看教程,视频,语言参考,文章,全算上,中文的资源占比估计不到5%, 不是我英文有多好,而是中文资源与英文资源的质量比起来差距实在是太大了。

  • 2018年8月 正式部署网站,搭建生产环境。

这个时候,该学Linux了。对,Mac 其实和Linux有很多共同之处,所以可以一起加深一下理解:

Linux/Mac Tutorials

https://www.youtube.com/watch?v=j6vKLJxAKfw&list=PL-osiE80TeTvGhHkpvfmKWOiIPF8UVy6c

这个列表下的有用的视频太多了。比如里用 Crontab 部署自动执行的任务,自动同步远程文件。还有一个超酷的功能,一条命令,批量将图片自动调整到指定的格式和分辨率。

这个油管频道 Corey Schafer 我在之前说 Python OOP 之前提到过,这个频道做什么内容都很系统,理论知识很扎实。非常适合有精力的时候查缺补漏,或者加深理解。包括 Python Django JavaScript 他都有教程。

另外,你还要为你的网站申请SSL证书,并且保证这个证书能够自动更新。可以用Docker来实现这个功能:

How to Set Up Free SSL Certificates from Let's Encrypt using Docker and Nginx

How to Set Up Free SSL Certificates from Let's Encrypt using Docker and Nginx

这个文章帮助我如何申请免费的SSL证书,并用Docker来自动的更新证书。

里边提到了Nginx, 这是一个非常强大的Web服务,具有反向代理功能。能够实现很多好玩的功能。并没有找到特别好的视频教程,自己看文档吧:

Welcome to NGINX Wiki!

收款肯定是要做的,否则只能白做贡献了。我们在法国建立了公司,有对公账户,就可以使用Stripe了。这个支付平台类似于Paypal, 对开发者特别友好。除了海外大多数常见的支付方式,信用卡支付外,还支持微信和支付宝。找不到特别好的视频教程,只能自己去看文档了:

Stripe API Reference

Stripe在支持微信和支付宝的时候采用了一种叫做 Webhook 的模式,我的理解就是一种用异步的网络通信方式,实现看似只能通过同步才能实现的功能。比如支付这东西,本来一手交钱,一手交货;Webhook却实现付款方先完成了支付,但钱并没有划给你,而是类似于信用卡预授权似的,然后通知你可以收款了。这时你才能收款,然后钱才划给你。这里的关键点是,如果你没有处理好Webhook发给你可以收款通知( Stripe 给的状态叫做chargable ),你就真的收不到款,而对方付的钱也会在一定时间,通常是两天,返回自己的账户。

部署Webhook非常重要,但倒霉催的是这个功能只能在在线的网站上做测试,在本地是没法测试的。所以Webhook的部署是个难点。到正式运行的时候,还需要定期检查Webhook的一些错误日志,以便排除一些潜在的隐患。对方明明都支付了,结果你没收,没有比这个更伤心的了。

  • 2018年9月 我们的业务上线,整整一年已经过去了...

后面的事情其实很简单,你不断的更新你的代码,解决各种bug, 添加新的功能。但所有的工作基本上就是两个状态的循环,前面已经提到了:

  1. 如何准确的提出问题,从而让搜索引擎把答案呈现在你面前。
  2. 重新加工答案里的代码,让它可以在你的应用里生效。

在这个过程中,你会发现你以前的代码都是垃圾。比如我在最开始设计用户Model的时候,作为标志用户身份的邮箱地址,到底是大小写敏感还是不敏感的问题上犯浑。Django内置的mail normalize 是大小写敏感的。我也没有太在意这个问题。但是没有一家邮件服务提供商是区分大小写的。

至于代码质量更是问题多多,比如开始的时候,我的很多方法都就近写在需要的View里面,但后来才发现,其他地方也需要这个方法,我就要再重写一遍。现在只能一点点的改,尽量把跟数据有关的方法,都写在Model的类里面。其实这也是符合MVC设计模式原则的。

而且,我可以断言,几个月之后,回头看我现在的代码,也都是垃圾。但这都不是问题,这证明自己在进步。

在这期间,我们的邮件系统也上线了,之前完全使用Django自带的邮件模块,使用SMTP方式发信。退信率极高,而且基本没有什么系统化的管理。

后来使用了Mailchimp, 这个工具简直太强大了。通过自动化营销,充分利用标签条件, Merge Fields和Workflows, 你可以实现各种以前完全不敢想象的邮件玩法。Django下目前支持MailChimp的框架是 mailchimp3, 直接到Github上看文档吧。

VingtCinq/python-mailchimp

这个文档非常简略,必须要对照着MailChimp自己的API文档参考一起看:

Developer | Mailchimp

在MailChimp之前,我尝试过Sendgrid, 结果被伤到了。之后就坐井观天的认为,老子直接用SMTP通过Django直接发信也挺好啊。直到我们每天注册的用户数达到好几百,那退信的邮件就跟雪片似的,把所有正常的邮件都刷光了。

MailChimp我在MBA的数字营销课程上曾经用过,但看着那个萌萌的猴子,字大行稀的网站风格,从来没觉得他们会把API做得这么出色。当你把它的功能充分发挥出来时,体验是无与伦比的。

  • 2019年3月,大概从这个时间开始,整个服务的质量已经比较稳定了,终于有时间开始学习一些新知识了,其实是二月份,我带父母在欧洲转了将近一个月,终于回归了。我们整个2月法国,意大利,瑞士周游,他们不会外语,我基本上全天都带他们在外边玩,回到酒店,每天平均拿出两个小时就能把所有问题处理完。那个月我们的收入从1月份的2000欧元涨到了6000欧元。创业,真香。

我选择学习React JS. 主要是自己前端的知识太弱了。网站基本上靠静态页面加一点点JavaScript 和 jQuery 来顶,惨不忍睹。下一代产品绝对不能这样了。而且,我工作的地点Station F是一个超大的创业中心,我看到的几乎所有的招聘前端,要求的都是React JS.

如果和Django 配合,有两种方式,一种是 Single Page Application (SPA) 可以参看下面的教程:

Django and React

https://www.youtube.com/playlist?list=PLLRM7ROnmA9FxCtnLoIHAs6hIkJyd1dEx

另一种方式,只是用React JS作为JavaScript的替代,页面的逻辑还是由Django控制。由于我是从Django开始学习网站开发的,所以我比较容易掌握这种模式:

Full Stack React & Django

https://www.youtube.com/playlist?list=PLillGF-RfqbbRA-CIUxlxkUpbq0IFkX60

React & Django TUTORIAL Integration // REACTify Django

https://www.youtube.com/watch?v=AHhQRHE8IR8&t=9255s

纯粹的React JS 基础可以看这个教程:

Learn React for free

Learn React for free | Scrimba.com

如有必要可以复习一下JavaScript 和 ES

Introduction to JavaScript

https://scrimba.com/g/gintrotojavascript

Introduction to ES6+

https://scrimba.com/g/gintrotoes6

还学习了Material CSS, CSS是你能不能把网站做好看的关键,但常常被忽略:

Build A Travel Agency Theme With Materialize CSS 1.0.0

https://www.youtube.com/watch?v=MaP3vO-vEsg

以上都是跟前端有关的内容,由于刚刚开始学,还没机会实践,所以也很难总结学习的体会。但至少这些课程的质量是有保证的。

终于,自学参考部分算是写完了。下面纯粹个人的私货,请用批判性的思维来审视这些观点。这些观点其实都是针对很多热点问题有感而发。

第一 非要用Mac么?

诚然,Windows也可以配置成一套非常优秀的开发设备(除了不能完全替代Mac开发iOS应用), 但前提是你要做一番配置。而且你在做这些配置常常会遇到非常个体性的问题,你要花费大量的精力才能找到解决办法。

而Mac的好处是,你照着别人的教程做,基本上不会出什么差错。就像为什么Python好上手,Python几乎是任何问题,在网上都能找到近乎唯一的答案。

要知道,对于普通人来说,自学这么大量的知识,本身就是非常极限的事情了。你的情绪很可能被一些小事情影响,而最终放弃。

就比如说在Windows下学个视频剪辑,你肯定不会用正版吧。下盗版,下载可能不顺畅;装破解补丁,补丁可能被杀毒软件拦截。想办法解决了杀毒软件的问题,才发现破解补丁对新版软件已经失效了。这么一系列的问题,你可能直接来句不折腾了。Mac呢?最基本的剪辑软件iMovie是免费的。1500元就是全家桶了。

编程环境搭建也一样,我在我的Surface Pro上想尝试用VS Code开发Django网站。结果 VS Code搭建虚拟环境极其困难。这个命令报错,那个权限没有的。就算虚拟环境搭建起来,安装第三方库文件也会出错。Mac呢?装一个Homebrew, 后面基本就跟用Linux差不多了。

所以,如果你已经很了解Windows,甚至早就搭建过各种环境实践过开发,那当然继续使用Windows了。但如果你恰好从零开始,而且又打算买一台新电脑,那Mac肯定是首选。

第二 自学这些东西是不是很难?

这个问题虽然因人而异,但我认为有两个因素不容忽视:

  1. 如何记忆的问题。记忆力是确定可以影响自学能力的。但记忆力是可以训练的,是有技巧的。这个视频给出了非常重要的解答:

Why I Don't Memorize Code when Programming

https://www.youtube.com/watch?v=YWCw3Qibhl8

这里边的道理和编程语言中的两个重要概念很相似,Reference 和 Value. 记下Reference就好像记住内容存放的地点,而不去记内容本身。只要记住了地点,需要内容的时候,就到那里查看好了。而Value就好像直接记忆内容本身,这实际上会耗费大量的记忆的空间。

就像这篇文章前面的所有内容都是Reference, 我告诉你到哪里找需要去学习的东西,而不是把学习的内容都写在这里边。所以,这篇文章可以控制在两万字以内。否则,五十万字都写不完。

2. 阅读速度的问题。阅读速度绝对会影响你自学的效率。我个人的观点是尽量看视频教程。小说或者杂志,读的速度应该是比听快的;但学编程可能就不一样了。看视频听讲解可以全面调动起你的感官接受信息,而且相对于持续阅读,不会那么容易疲劳。

但是阅读也不是不重要,文字的内容往往经过非常精心的锤炼,所以要阅读高质量的内容。可以提升自己思维的深度。比如这篇Swift官方的文档:

Swift: API Design Guidelines

Swift.org

其中一段话,真的一针见血,绝不仅限于指导如何写代码

The only reason to use a technical term rather than a more common word is that it precisely expresses something that would otherwise be ambiguous or unclear. Therefore, an API should use the term strictly in accordance with its accepted meaning. Don’t surprise an expert: anyone already familiar with the term will be surprised and probably angered if we appear to have invented a new meaning for it. Don’t confuse a beginner: anyone trying to learn the term is likely to do a web search and find its traditional meaning.

第三,创业真的很辛苦么?

我觉得和996最大的不同,就是对于创业,努力的结果属于自己,996努力的结果80%给了别人。所以创业辛苦是无所谓的一件事情。认真创业的人,各个都辛苦。

2018年,从春天到夏天,周二到周四,我每天从上午十一点工作到凌晨两三;周末住在创业中心,周五晚上到周一上午10点,边学边写,工作50个小时。每周的工作时间超过95个小时。

别的项目的实习生,夏天避暑,周末也睡创业中心,亲眼见证了我连续写40个小时代码后,说:“法国人一周最多工作40小时,你两天就干出来了。”

对我来说,这种辛苦都不是事儿。当初玩魔兽世界的时候,在长达三四个月时间里,每周只在周二和周六睡两次觉。人生中最爽的日子。

真正的问题是苦闷,以及信心的动摇。产品原计划是在2018年4月份上线产品,结果拖到了9月底,如此拼命,晚了5个多月。任何意外对你的项目都可能造成很大的麻烦,更别提大幅度的开发延误。我搭档3月就辞职过来,结果除了建公司,申签证,没啥事情做,放弃的半年薪水约等于二十万,每月房租8千。

所以在走出创业这一步之前,对于可行性的分析一定要到位,规划切合实际,尊重商业规律,对创业的风险和困难也一定要有充分的准备。

在做出创业决定前,我的搭档利用HEC Paris的资源,与很多创业导师和投资人当面交流过,她上学时创业课程的导师为了能和她多谈一谈,亲自开车到机场去接她,以便在路上就可以交流项目的情况。

她原打算先兼职做,但是导师的意见很明确,你全职来做,你们的项目就非常可能会成功。最后我的档放弃了年薪四十多万的工作。其实我离职之前也是40万的年薪,只不过人家要把我的薪资减半,我就只好离开了。

创业的成本非常高,很多创业者前没有判断成败的商业逻辑,后不能割舍而全力投入;一个团队,带头的不知道往哪走,跟着的把后路粘在脚后跟。这边的另一家创业公司,就是因为创始人中有两三个人是兼职,搞得非常头疼。其他的项目,凡是有兼职创始人的,基本也没有做得很好的。

在此,顺便安利一下HEC Paris的在线创业硕士学位课程,纯友情安利,我没上过这课。在线学位,23,450欧元,确实有些贵。不过页面介绍的教授就是教我们MBA课程的(MBA学费现在69,500欧元),有很多水平确实很高。

MSc in Innovation and Entrepreneurship

HEC Paris Online Courses | Coursera

第四,英语到底重要么?

当你看到我引述的几乎都是英文资料,答案就已经是确定的了。如果只是想学门编程的手艺,找份工作,那或许找家培训机构就能达到这个目的。但如果你想要通过学习编程来实现自己的想法,构建完整的产品,没有很强的英语能力,尤其是听和读的能力,是肯定不行的。

那些说英语不重要的,都是在想方设法让你失去改变自己的力量,从而逐步沦为顺民。对于普通人,只想朝五晚九,或许英语屁用没有;但一旦有一天,你对现状有意见,想要做出改变,英语可能是最有效的工具,对当年的俞敏洪是,对今天的很多人也一样。

有人说知识就是力量,但你要知道,在知识全球化的今天,几乎所有高质量的知识都肯定有英文的;而中文么,就要少得多了。尤其是编程这一块,我不是没有尝试去找中文文档,而是实在找不到。中文的教学视频的质量更是差得可怕,有的时候你会觉得好像是妖怪在说话。

Vue.JS 是我们中国人开发的,但Vue优先完成的都是英文文档。看看这个知乎问题:

为什么vue的更新记录不能有中文,中文文档也一直滞后?

第五,多说无益,抓紧学技能吧。今天所谓的知识付费在国内搞不起来的原因只有一个:内容太垃圾。满嘴的方法论,没有一个愿意脚踏实地讲方法(技能)的。这种学风跟英语环境下完全没法比。行胜于言,就说到这里吧。

周日凌晨两点的Station F, 5000人的创业基地里看不到其他人, 我去年几乎每个周末都在这里度过


左图: 睡觉的会议室 右上: 3.9欧元的两个烤鸡腿加烤土豆 右下: 码不下去就去打街机

首先要选定编程学习的方向,例如 C、C++、Java、Python、JavaScript 等等编程语言,你最好先去查一查都有哪些编程语言,每种编程语言都侧重于哪些方向,例如 JavaScript 主要用于 Web 前端开发,Java 主要用于后端开发,也是安卓开发的基础,Python 在数据分析和机器学习等方面有较好的应用。不同的方向有着不同的吸引力和特点,你多了解一下,选一个自己感兴趣的。

接下来就是学习编程,那么在看书学习的过程中,有一点要记住:不要无脑照着别人的代码敲,重要的是思考,是学习编程的思想!照着别人代码敲一遍除了让你看得仔细点,练了打字外其它并没有任何帮助 — 和自己盯着代码仔细看是一样的,这样的学习效率是不高的。

重要的是学习编程思想,这个功能是怎么实现的,为什么这么实现,作者是怎么想到的,其次才是敲代码,学习好了思想以后,你可以自己敲,模精品敲,再对照着检查自己代码中存在的问题。

自学编程主要有以下几个阶段:

  1. 看书、看博客、学课程或者看视频等
  2. 模精品着书上或者博客的代码,进行复现,复现不重要,思考才是关键 ??
  3. 思考学习别人思路后,脱离书本和博客,完全自己实现功能
  4. 自己实现一些 DEMO,看别人项目代码,与别人讨论,提升代码能力
  5. 在别人的框架和要求下,写代码实现业务
  6. 自己负责别人设计的模块的实现
  7. 独立设计业务模块并开发实现
  8. 负责大项目框架设计和拆分,带领别人进行开发
  9. 其他高阶的架构和管理工作,已经不仅仅是代码能力了

那么在自学编程的前期和中期,能够完成前五项就是取得了很不错的效果了。

学习过程中的建议:

初级程序员,涉猎广泛,但都是浅尝辄止。这是很多人面临的问题,而在编程学习则是需要实际操练,加深体会,不断深入的一个过程。在这个回答里,我想说一下初级程序员应该如何提高。

1. 让编程成为一个习惯

想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。

对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。

为自己设定一下,每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。

2. 将每天的学习过程拆分成小块

对待编程学习,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做40分钟、然后休息5分钟,整个过程重复4次。很明显,40分钟这样的短周期更容易坚持也不会带来多少压力。

不过这样的方式应该配合更为灵活的执行思路。如果你感觉状态很好,而40分钟才刚刚完成热身,那就继续做下去并努力让自己抓住这种状态。向大家推荐蕃茄工作法,这是种学习新型技能的良好机制,推荐各位认真了解。

3. 学好基础知识

在确定好学习方向和技术栈之前,你可以多做尝试,学不同的语言。但是当你学到一定程度,知道自己对哪个方向更感兴趣的时候,就不要广撒网了,一定要专注于你所选择的领域,做深做精。认真系统化地学习相关语言知识。当然,这不是让你就知道看书,你要看书的同时结合项目实践,进而对自己的掌握程度得到反馈,知道自己哪里不足,再继续学习,如此反复,详见第四点。

4. 学练结合,从做项目中找知识漏洞

当你选好方向,认真学习基础知识后,学习一部分的知识,就结合项目做一些实践,已明确自己哪里不足。并且做项目能增加学习乐趣,给自己提供一些正反馈,让学习变得有趣,让自己有足够的动力继续学习。

5. 阅读别人的代码

学习编程不能闭门造车,经过这几年的编程学习,我认为想要提升编码水平的最佳途径就是多看、多写。看别人的代码,看一些程序员大佬写的代码,看一些标准库的源码,仔细思考他们的编程思维和编程方式,以提升自己的编程思维和编程方式。阅读别人的代码也确实是快速提升代码水平的一个技巧。

当然,也有一些提升阅读别人代码速度的技巧。很多时候读代码靠的不是阅读文字速度,而是理解的速度。我把自己理解的影响速度的原因列举出来。

1. 对整体的思路没有概念

2. 对类库不熟悉,包括方法调用不熟悉

3. 不理解里面的一些算法

4. 中途停顿时间太长,接过来后没有形成一个系统的思路。

阅读的方法是先整体再局部。目前我们知道了那些因素影响到了速度也知道了阅读的方法。那下面就开始一个个击破难度。

1. 把握整体有个大体的框架在脑海中,此时根据里面的文件名和文件夹,从入口文件大段大段看就可以,知道这段或者这个文件的作用就可以。很多写得好的类库都是思路很清楚,非常有助于从整体理解, 此时只需要知道这个文件和这个方法是什么作用就可以,还不到细细研究的阶段。

2. 对类库不熟悉那么会引起阅读时候左右查资料,影响速度。此时应该先把不熟悉的类库全部整理出来,一次性过一遍,然后到对应的官网查用法就可以,注意,此时不用全部看,只需要查调用到的地方什么意思,弄明白调用的意思即可。

3. 遇到不熟悉的算法此时就要静下心来,如果有注释可以根据注释来理解,如果没有那么也是一样的思路,想整体了解这个算法再细分进去了解,这一步只需要静下心里是可以理解的。

4. 中途不能说看一个小时,停了4个小时再接着看,或者是今天看一点点,隔了非常长的时间再看第二部分。最好是趁热打铁。

里面核心的地方还是从整体到细节的方法,掌握到了整体阅读细节才有意义,有时候知道了整体一些细节的地方清楚了,总之没有不努力就能理解的代码,上面的方法只是帮助你可以轻松些阅读,只是努力是必须的。

6. 寻找良师益友

学习编程的一个很好的方法就是和其他的程序员交谈。这不仅能够帮助我们多获得一种思维方式,同时也能够以更为愉悦的感受完成学习任务。至于内容没有特定的要求,可以是你正在学习的东西,也可以是你认为很酷的东西,更可以是你正在工作的东西。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你能了解到其他人是如何看待编程的。

7. 写技术文章

如果大家学习了一种新的编程概念,但不能确定自己是否已经真正掌握,可以写技术博文加以检验。或者是在技术博客网站上搜索,找找是否有人提出了类似的问题,然后给出您自己的答案。如果答案不对,那么讨论的过程能够有效加深理解。这样的过程,能给我们带来宝贵的经验,同时也能帮助他人。

值得提醒的一点,别因为自己刚刚涉及编程而有所顾虑。罗马不是一天建成的,出色的程序员也是一样。只要您对问题有所了解,就不妨给出自己的答案——无论对错,这都将成为一次宝贵的经历。

8. 保持耐心

对于人生来说,其中任何目标的实现都离不开耐心。编程学习就如其它任何学习任务一样,都需要反复努力并投入大量时间。

在这个过程中,您一定会经历高潮与低谷——别被这些曲线影响了心情。接受已经发生的一切,并尽可能避免其中不好的部分。就像打高尔夫球一样,我们的手感总在不断浮动,但只要坚持到底,您最终总能成为一个大神呢~


推荐一些程序员学习网站:

0. GitHub — 开发者最最最重要的网站:https://github.com

这个不用多说了吧,代码托管网站,上面有很多资源,想要什么轮子,上去搜就好了。并且呢,上面有很多优秀的程序员,你可以在这里交到很多好朋友喔。

1. Stack Overflow — 解决 bug 的社区:https://stackoverflow.com/

开发过程中遇到什么 bug,上去搜一下,只要搜索的方式对,百分之 99 的问题都能搜到答案。在这里能够与很多有经验的开发者交流,如果你是有经验的开发者,还可以来这儿帮助别人解决问题,提升个人影响力。

2. 程序员客栈:https://www.proginn.com/

程序员客栈是领先的程序员自由工作平台,如果你是有经验有资质的开发者,都可以来上面注册成为开发者,业余的时候做点项目,赚点零花钱。当然,如果你想成为一名自由工作者,程序员客栈也是可以满足的。只要你有技术,不怕赚不到钱。很多程序员日常在这里逛一下,接一点项目做。很多公司也在这发布项目需求。

3. 掘金 — 帮助开发者成长的技术社区:https://juejin.im

现在国内优质的开发者交流学习社区,可以去看大佬们写的文章,也可以自己分享学习心的,与更多开发者交流。认识更多的小伙伴儿,提升个人影响力。

4. v2ex:https://www.v2ex.com/

V2EX 是一个关于分享和探索的地方,上面有很多各大公司的员工,程序员。你想要的应有尽有。

5. 博客园:https://www.cnblogs.com/

博客园创立于2004年1月,是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。很多早期的高质量内容都在博客园。

6. Medium:https://medium.com/

国外优质文章网站,Medium 的整体结构非常简单,容易让用户沉下心来专注于阅读。上面有很多高质量的技术文章,有很多厉害的人在上面发布内容。

7. Hacker News:https://news.ycombinator.com/news

国外优质文章网站,上面有很多高质量的技术文章,有很多厉害的人在上面分享内容。

8. GeeksforGeeks:https://www.geeksforgeeks.org/

GeeksforGeeks is a computer science portal for geeks。(感谢@三三白白的补充)

除了这些论坛,程序员还有一些必备网站:

0. Google:https://google.com

这个不用多说了吧,查资料,有问题,Google 一下。当然,能访问的人自然会用,访问不了的人,可以用必应或者百度吧。

1. 算法学习 LintCode:https://www.lintcode.com/

算法学习网站,上去每天刷两道算法题,走遍天下都不怕。

2. 算法学习 LeetCode:https://leetcode.com/

也是算法题网站,同上。

3. 算法学习 LeetCode 中文站:https://leetcode-cn.com/

这个是上面算法题网站的中文站点,英文不好的可以刷这个,英文好的推荐去刷英文网站的题目,还能提升英语能力。

4. 牛客网 — 面经和刷面试题:https://www.nowcoder.com

各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer!

5. Web 开发练习题:https://www.freecodecamp.org/

这是国外发起的一个 Web 开发学习的网站,从简单到深入,一步一步带你学习 Web 开发。就像一本练习册,并且当你完成相应的内容后,会得到相应的资格认证。

6. 百度前端技术学院 — 前端开发项目库:http://ife.baidu.com

学前端的看这里,百度官方推出的前端开发学习技术学院,题目从简单到困难,如果你把里面的题都做会了,找个 BAT 的前端工作不成问题的。

其他学习网站:

0. 各种编程语言,编程工具,各种轮子的官方网站

要记得,学习一门语言或者一个工具,最优质的学习网站就是他的官方网站,官方文档。

1. 菜鸟教程:http://www.runoob.com/

菜鸟教程的 Slogan 为:学的不仅是技术,更是梦想! 记住:再牛逼的梦想也抵不住傻逼似的坚持!网站包括了HTML、CSS、Javascript、PHP、C、Python等各种基础编程教程。

2. 中国大学MOOC网:https://www.icourse163.org/

中国大学MOOC是由网易与高教社携手推出的在线教育平台,承接教育部国家精品开放课程任务,向大众提供中国知名高校的MOOC课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

欢迎将本回答分享给你的朋友,他/她可能正需要。


我的其他相关回答:

  • 程序员第一次接私活需要注意什么?
  • 新晋管理者如何做好面试工作?
  • 程序员如何提高生产力?
  • 初级程序员,该如何提高?
  • 如何才能做一名自由职业者?
  • 程序员上班有什么提高效率技巧?
  • 如何学习编程?顺便介绍些好的网站

1对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转变。

在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真正上道的那一天。

这个思维转换就是:

不要把自己当学生,而是要把自己当开发者。

不同的身份认同感,最后会导致不同的行为模式,而这行为模式,会对你的编程学习造成非常大的影响。

区别一:记笔记 VS 写技术文章

学生有一个特点,就是他们喜欢记笔记,但是开发者不怎么记笔记,而是会把自己学会的东西写成技术文章、教程的形式发表在技术博客或者知乎等网站上。

一个很有名的学习法叫做费曼学习法,这个学习方法简单地说,就是在学完一个东西之后,去给别人讲明白,注意,是讲给别人听,当你写成文章发表在网上的时候,你自然会去用更通俗的语言,更清晰的逻辑去讲述这个事物背后的逻辑,这个过程,是对自己学习的一个检验,也是加深映像,整理思路的重要过程。

那么如果你是去记笔记的话,很有可能,你不会去试图讲清楚这个东西,而是倾向于去照抄,或是不完全照抄,以“提纲”或是“知识点”的形式抄在本子上,说句实话,照抄的笔记,真的没用,因为现在搜索引擎的能力已经可以让你把大多数东西快速找到,你为什么还要照抄到笔记本上呢?

从功利的角度考虑,技术文章的写作,别人可以直接访问,也可以逐渐累积你的影响力,一个好的个人技术博客,会给你的简历加分很多,而一个厚厚的笔记本,没有人会管你记了什么。

区别二:以学会XX为目标 VS 以做出XX为目标

你会发现,学生思维里面有一个重要的特点,就是他们总是特别关注自己“学会了什么”,不仅如此,他给自己定的目标,定的计划,永远都是”学会XX书第XX章内容“。

学生永远在准备, 而开发者早已动手。

如果你还在上学,学生思维是“这个学期我要学会XX课程”,而开发者思维是“这个学期我要做出XX”。

如果学Python,学生思维会拿起一本教材,开始从头到尾看,我不知道你们发现没有,几乎所有那种编程语言教材,长得都差不多,上来先是基本的语法,基本的整型变量,浮点型变量之类的,然后伴随着几个小的教学例子。

开发者学Python,他第一步绝对不是去书店买教材,而是先去了解,Python适合做什么,然后他了解到,Python适合做爬虫,数据分析,AI,还能很轻松地搭建Web后端,之后他逛了一下午Github,看了看那些Python高星项目都是做啥的,于是他给自己定下了这个目标:

半年时间内,我要用Python和Python周边的库搭建出一个网站,这个网站服务端运用爬虫技术爬取一些数据,可以提供知乎粉丝性别比例分析功能。

学生继续看书,一个个的知识点去记忆,拿着他的小本本去总结知识点,而开发者上官网简单的看了下Reference Doc的简单交互式语法教程后,便马上开始了变做边学的过程,有了一个实际的项目目标,朝着这个目标走,不断地发现自己不会这,不会那,然后有目的性的去补足知识,他了解到了beatuiful soup作为爬虫主库,flask作为后端web服务主库,然后会去看一些简单的教程,在这个过程中,基础语法得到了熟练,也训练了工程能力。

学生的成就感来源于学会了什么,开发者的成就感来源于做出来什么

开发者很功利,他们深知他们学会的所有东西都是为了开发出伟大的产品而服务的,所以他们绝对不会出现“在学一个东西,但是也不知道学这个用来干嘛”的窘境。

区别三:厌恶不确定性 VS 接受不确定性

学生们总是对“确定性”有一种几乎疯狂的追求,他们总问,“C语言学到什么程度就一定能被大厂录取?”,“掌握XX要几个月?”,“上课认真听讲,认真做笔记,考试是否一定能上80分?”

这种对确定性的追求,直接导致学生有一种下意识的举动:

干什么都等准备好了再去做,但是却“永远在准备”。

因为他们害怕那种不太会还要硬上带来的各种不确定性,他们渴求一种内功的修炼,寄希望于”把基础夯实了,就能顺畅的开发,所以还是先夯实基础吧!”

开发者选择接受这种不确定性,他们愿意”边学变做“,因为他们知道,最初学习敲键盘的时候,他们就是这么做的,边看某个按键在哪,边打字,做和学交叉进行,他们始终抱有疑问,他们又始终试图通过学习的延伸拓展去解决疑问,他们精品佛就像是拿着烛火在迷宫中行走的侠客,在游戏的一开始,对迷宫的结构一无所知,通过不断地摸索和碰壁,逐渐建立起对整个地图的认知.

区别四: 线性学习 VS 递归学习

学生喜欢线性的学习,因为线性的学习(拿本教材从头到尾慢慢看)正是符合了他们对确定性的追求,可惜这违背了学习的本来面目

开发者知道,人脑最不擅长的就是线性枚举,即便我们认识几千个汉字,但是我们无法去线性地去将所有认识的汉字枚举出来,我们的大脑,本就不是用来进行线性思考的,而复杂度上了一定程度的知识,线性的掌握,基本不可能。

有难度的知识,往往是这样的:为了搞懂A,而去学B,为了学会B,而去学C,这叫递归学习,递归虽深,但有回溯,它最终会回溯到我们的起点。

所以开发者的学习更偏向于递归式的学习,而且可能会以一个知识点为起点,去完成树状知识外围的遍历。(有点像搜索引擎去爬虫)

知识是树状结构, 或者网状结构.

当我们试图遍历一个树的时候, 最简单直接的方式就是递归, 如果你非要去"线性"的学, 那就你是把编程学习当成了链表, 还是“单向”的,这种算法怎么可能用来遍历树呢?

区别五:拿会XX定义自己 VS 拿XX项目作者定义自己

linus 从来不说自己精通 c 语言, 与其说他不需要, 不如说他不关心, 因为他是 linux 和 git 的作者.

linus 这个程序员之神就是一个典型的开发者思维的人.

我希望所有计算机专业的同学们, 等你们毕业了之后, 你的github应该是绿油油的, 而不是贫瘠的一片白.

我希望你们用你们的简历里写的是"用c语言实现了一个XX引擎, github链接http://github.com/xxxxxx"

而不是"精通c".

我希望学生们明白, 任何一个像样子的项目, 制作周期至少是按月计, 你的大学有四年时间, 哪怕一个项目做一年, 你也能拿出两三个好项目, 不一定有多少star, 但是要完整, 文档, 测试, 一应俱全.

我希望学生们知道, 做项目和写课后习题不一样, 课后习题一个小时, 而项目是长期不断努力, 不断学习突破的过程, 需要你每天都搞, 善始善终, 最终拿出成果来.

我希望学生们明白, 这个世界衡量一个人的成就, 从来都是"他做了什么", 而不是"他学会了什么", 不要总用修炼内功去感动自己, 必要时, 也请你为开源世界贡献一点自己的力量.

我希望学生们明白, 考上985, 拿奖学金, 这都不叫成就, 因为和别人没关系, 只有真正影响到别人的东西, 让这个世界变得更好的东西, 才是值得去"秀"的.

最后送给学生们一句话:

愿你早日忘记学生的身份, 以开发者的姿态, 面对这个世界。

大家戳这个,超过60人评论评分仍然5.0满分的live!

有些朋友给我留言说,兴致满满的开始自学编程,但是拿到一堆书,却不知道从哪开始,最后的结果就像下面这个图:

那我们今天就来聊聊自学编程,怎么开始和需要注意什么。

1.首先,给你的学习编程一个重要的意义

做任何事情前,你都要首先明白为什么要做?这个理由不是学校开了某个编程课,你为了应付考试。或者看到其他人都在学,你没事干,也学下吧。这都是盲目的表现,就好比你追一个女孩,不是因为她家有钱,最重要你追她的原因是:你真的喜欢上了她。


所以从一开始,就给自己的学习定一个大的意义,这会让你不会中途放弃。而且能带给你前行的动力。

我当年学习编程,是因为觉得未来很多互联网的行业都于编程有关,意识到这是个基本技能,而且技能在手,不会哪天饿死街头。同时,编程的世界很纯粹,不像其他行业需要很多关系去维护,要想网上爬,的整日琢磨如何混好。但是,在编程的世界里,全靠技术说话:你行就行,不行就不行。

而且现在是人工智能时代,编程已经变成了像excel那样每个人都需要掌握的技能,你觉得学校编程意义大不大?更重要的是,学会编程你的收入概率会比其他人高。


2.如何选择你人生的第一个编程语言

很多人一开始是对编程有兴趣的,但是之前很多大学一上来就教C,C++。里面复杂的内容,也让很多人从入门到放弃。到最后连兴趣都没有了。没有兴趣是最可怕的敌人。

如果你是刚开始学编程,选一个比较人性化的编程语言,我建议从python开始。它足够简单,而且容易上手。而且现在连小学生都开始学python了。

我们再看看各大兵器排行榜上的python排名,它已经是人工智能的第一编程语言。,相信它的火热程度还会持续升温。

3.选择一本经典的书进行系统学习

很多人一开始为了追求快速,会选择一些比如xx天学会Python,xx天学会机器学习的书,这些书看上去高大上,其实是在误导你。世界上哪有xx天就能学会的,记住一条原则:越是有价值的知识,越难学,不然很多人都能学会了。

一般来说,一本书要比公众号的文章系统性强,一本某个领域的经典教材要比很多快销书系统性强。一个系列课程要比一次1小时的分享系统性强。所以从一开始就摆正心态,不要急于速成,有时候慢就是快。有了这个心态,就老老实实选一本这个行业经典的书,最好是国外的书。

既然在这个领域你是新手,就不要指望自己能把散落的信息整合成系统了,那是高手要做的事情。要想系统地学习,那就踏踏实实地拿出几个月的时间来,看几本这个领域的经典书,选一门系统课,或者跟着一个系统学习过的老师把这个领域的骨架摸清楚。

你又不比别人聪明几倍,却想用几分之一的时间,就掌握人家花了好长时间下了硬功夫,系统掌握的知识,怎么可能呢?

先接受一个已经存在的系统,再在上面修修改改,对于新手是最适合的方案。

有的朋友喜欢只听课,不看书,其实这是不对的。最好课程听了很多,但是还是不会编程。听课和看书必须是结合起来才有效果,正确的顺序是:先看书预习内容,把遇到的问题记下来,然后选择一个课程来学习,在课程中把之前预习的问题解决掉。带着问题学习才有效果。


3.选择一个有界面的编程环境

很多编程语言,一开始安装后,都是教你在命令台下写代码。面对这么一个黑洞洞的东西,你的兴趣又降下来了。

一开始编程不要在这个不友好的命令行下做。而是找一个集成开发环境(IDE),在里面敲代码。人对有界面的东东天然有好感和兴趣。比如学习Python,一开始用notebook就很容易敲出代码,而且运行结果也能实时的反馈给你。

当然最开始要做的事情就是先把环境搭起来,开始输出你人生的第一行代码:“Hello World”。这是简单的第一步,但是对于很多完全自学的同学都非常难了。好事情是,现在网上很多教程可以帮助到你。


4.重要的事情说三遍:多敲代码

编程是门手艺活,什么意思?就是你的多练习。这就好比,一个懂得再多泡妞理论的单身狗,都没有一个谈过恋爱的人,更懂得如何追女孩。

不要光看书,或者光听课。要多撸代码,在实践中成长。遇到不明白的地方,就多联系生活中的事情就类比想明白了。比如我在学习数据结构:队列,不明白的时候,就联想到了餐厅外婆家的排队叫号系统,就立马明白了。

其实编程中很多东东,都是为了解决现实生活中的问题,所以很多知识都能与现实生活中的实际事情对应起来。


5.学会记笔记

很多人刚开始学编程以往里面的很多东西都要记住,其实这是错误的做法。

不用去记住这些代码,理解代码比记住代码更重要。这里我们能理解代码是干什么用的就可以了。如果后面用的时候忘记了,反过头来知道在哪查找答案就可以了。这是学习的重要思想之一:知道在哪查找答案比记住更重要。

很多时候你感觉自己学会了,但是其实并没有掌握。我个人解决这个问题的办法就是记笔记。记笔记不是简单的罗列知识,而是将学到的知识,用自己的语言整理出来。同时,记笔记还能通过输出倒逼你的输入。下面是几个写实践笔记的讨论,对你应该会有帮助:


6.学会使用搜索引擎

刚开始学习编程,看到代码报错,就会茫然失措,脑子中立马闪出一个'funck'。

其实解决编程代码问题也是有套路的,这个套路就是:

能不用百度就别用百度,你要学会在宇宙第一大搜索引擎,和全球最大的技术问答平方:stackoverflow上搜索问题的答案。

一切的学习都是学习能力的提高。对于编程,真正的高手,就是遇到问题能从搜索引擎中找到答案。具体如何使用看这里:

如何用好搜索引擎?

如何优雅地使用 Stack Overflow?


7.多看大牛的技术博客

平日多关注这个领域顶尖高手的技术博客,选择你认可的人成为你心目中的榜样和导师。因为导师可以降低你加入一个新行业的成本,帮助你熟悉环境和行业规则,也会鼓励你完成心理方面的转变。

同时你也要 建立新的学习社交网络。如果你周围没有和你同样喜欢学习编程的人,会阻碍你的进步,更糟的是,有的人自己学不会,还会嘲笑你。过去的人脉关系会阻碍你的前进,因为他们是以过去对你的认知来评价你。感谢这个互联网时代吧,你可以在网上找到志同道合的朋友和你一起前进,新领域的人脉,会给你提供各种各样新的机会和情感支持,帮助你融入。

最后,人都是都是“快感型”物种。再加上学编程是一个长期的过程。所有需要你自己列个长期计划,并把长期计划分成段目标,每个目标完成后给自己进行激励。


8. 比知识更重要的是什么?

如果你有机会去互联网工作,就会发现你不会一直用一种编程语言工作的。很多时候,新项目来了,需要用新的技术,这时候老大会让你快速学会这个知识,然后在项目中应用。我之前做过的不同项目用到的编程语言来就有5种,而且是边学边用的。

回过头来看,比知识本身更重要的是你的学习能力。那什么是学习能力呢?

学习能力其实就是你能够做到“学什么会什么”。

有学习能力和没有学习能力的人差别是很大的。这就好比,你玩《王者荣耀》花钱找人替你通关,和你自己拼个人能力通关,所习得的技能和体验是完全不一样的。


提高学习能力的至少关键知识是什么呢?

其实就是两点:

1)习惯使用搜索引擎的能力

2)不做伸手党的能力

这两个能力看起来简单,但是长期养成却很难。

投机与投资的差别就是投机看重的是短期的股票涨跌,而投资看重的是一家公司长期的发展,希望你在学习编程的路上采用的是“投资”战略,并且培养了自己的学习能力。加油,你并孤独。

如何系统地自学 Python?


每个人都应该学习计算机编程,因为它教会你如何思考。

——史蒂夫 ? 乔布斯

随着大数据、人工智能、物联网的发展,学习计算机编程受到越来越多人的重视。当然每个人的学习目的是不一样的:有的朋友是为了找一份与编程相关的工作;有的朋友是因为兴趣爱好;有的朋友是为了了解计算机工作的思维……

那么对于零基础的朋友应该如何自学编程呢?

01、明确学习目的

因为不同的人学习编程的目的不同,带着目的去学习,不仅有利于学习激情的延续,也更利于找到适合自己的学习方法。如果是为了找一份与编程相关的工作,那么除了学习理论基础,更重要的是,能够解决实际问题,拿下真实的项目。

02、确定学习方向

编程语言非常的多,每种语言运用的领域有所不同。如当下比较热门的Java和Python语言:

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立于可移植性、多线性、动态性等特点,可以编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等。

Python具有简单,易学,免费开源,有极其简单的语法等特点,主要用于常软件的开发,网站服务器开发,数据爬虫开发,大数据分析、挖掘和深度学习、人工智能等领域。

具体要选择哪门语言进行学习,得明确自己的发展方向,兴趣点。如想要朝着热门的人工智能方向发展,那么可以选择Python语言就行学习。

03、规划学习之路

明确了学习目的和学习方向,接下来就是规划学习过程了。

1. 树立信心,持之以恒

零基础自学编程,要坚持下来,需要较强的自制力,在学习的过程中,遇到挫折,要有不言弃的决心。为了更好的坚持下去,可以寻找一些学习群,有共同奋斗的伙伴,可以相互鼓励,可能会更容易坚持下来!

2. 寻找学习资源,制定学习计划

对于自学者来说,书籍和教学视频可以结合来学习。首先要明确学习大纲,按着大纲有计划分阶段的学习。比如学习Java,我们可以分为小白起航,循序渐进,游刃有余,涅槃新生等阶段,其实这样做就是为了分解学习内容,一个板块一个板块的去攻克。

在Java基础知识的学习中,我们需要掌握Java语言的语法规则,理解面向对象原理和思想,掌握单元、集成测试方法和相应的自动化测试框架等,能够搭建Java开发环境等知识。

理论知识的学习是长远发展的基础,理论知识能帮你搭建自己完善的知识体系,所谓的实操项目就是知识的灵活运用。

3. 项目操作,理论与实践想结合

很多人会苦恼于知识学了之后非常容易忘,那是因为你还缺乏实操运用这一环节。所以,编程的学习一定离不开练习,每天写代码,看别人写的代码,这又是一个巩固内化的过程。项目驱动式学习,可以通过做项目,发现问题,巩固知识盲点和知识弱点,利于不断地推进学习进程。

4. 编程思维的锻炼

所谓编程思维,就是程序员解决问题的思路和方法,也就是程序员结合自身经验,在遇到问题时,进行资源的调用和整合的过程。一般可通过经典编程模式的掌握,实际开发案例的总结等过程去锻炼自己的编程思维。

在学习中不断去培养编程思维,带着编程思维去学习,这是一个相辅相成的过程!

5. 参加编程论坛/社区

参加编程论坛/社区,可以及时了解行业最新消息,同时遇到了问题也可以在上面提问,很多大佬也是非常乐于帮助解答的,但是很多简单问题,自己可以在百度/google上自己查找到答案。

自学编程的路上有很多怪兽阻拦,希望你都能迎难而上!加油哦~~

责任编辑:
热门阅读排行
© 16货源网 1064879863