自学简单编程可行吗?看看过来人怎么说

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达640?wx_fmt=jpeg

在逛知乎查资料的时候,偶尔收到这个邀请回答,因此我就进去看了一下大佬如何回答这个问题。希望过来人的经验能帮助我们少踩一些坑

转载自:知乎用户 程序员客栈

已申请授权转载

640?wx_fmt=png

回答的整体框架

本回答首先分享了如何选定学习方向,自学编程主要有几个阶段,学习过程中有哪些注意事项和学习方法,最后分享了目前权威的学习资源

选定编程学习的方向

首先要选定编程学习的方向,例如 Python、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. 保持耐心

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

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

640?wx_fmt=jpeg

推荐一些程序员学习网站

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课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

640?wx_fmt=jpeg

好文推荐:

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

640?wx_fmt=png

加群交流

扫码添加助手,可申请加入AI_study交流群。一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡西),不根据格式申请,一律不通过。

640?wx_fmt=jpeg

喜欢就点个"在看"呗^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值