请问大家都是如何提升编程能力的?

我的情况是这样的:

现在对网上的「实战教程」看的已经有一些倦怠了,甚至有点觉得在浪费时间,因为大多部分都是重复的内容。


我又去试着学习一些底层基础和理论知识,比如数据结构,Linux通信,等但由于基础薄弱,理解起来也很吃力。

我想请问一下,有没有那种「循序渐进」的书籍或者网站,从 0 开始扎实理论基础?或者请问你们都是怎么去扎实 基本功 的?

还有一个问题就说,我觉得如果要提升编程能力,需要不断的 刻意练习,但是一上来就搞算法这对我这种基础差的人简直是太硬核了,有没有那种「小栗子」可以由浅入深的那种?接地气一点的那种,总之特别希望大家能指导我一下,非常感谢。 :heartbeat:

悲观者永远正确,乐观者永远前行。
附言 1  ·  2年前

感谢大家的耐心解答,大家说的都很有道理,对我受益很多,非常感谢。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Summer
最佳答案

核心宗旨

别把事情想太复杂,我的建议是,核心宗旨只有一个:

写 10 万行代码。

以写代码为目的来磨炼自己。

有了这个核心宗旨以后,接下来就是考虑如何积累这些代码。

积累各种类型的代码

想学算法,一上来就啃大部头的书籍,或者做各种题,在我看来很难提高自己的编程能力。应该从实战出发,例如说写一些数据库项目,请见 翻译:Go rqlite 作者:开发数据库软件,算法很重要

想学网络相关知识,可以将类似这种项目 013. 负载均衡器第一部分:从零开始构建负载均衡器 ,功能完善下去,代码量会很多。通讯类软件,直播软件,创造一个,持续完善功能,也可以积累很多高品质的代码。

合理的激励

不要闷头写,开源出去。让大家来帮你提建议,鞭策你完善各种功能。持续不断的维护和升级一个项目,能力也可以得到稳定的提升。

把开源项目当成自己的作品来维护,可以作为求职最强有力的敲门砖。

把开源项目当做产品来细心呵护,尝试从中找到合适的商业模式,例如说授权、积累企业用户等。优秀的开源软件,已经听到有很多成功的被收购的案例,且都是一笔不菲的收入。

匠心

编程越久,越觉得编程类似于学语言、打篮球、打乒乓球、游泳、弹钢琴、写漫画等,想要技能提升,唯一能成为这些领域大师或者专家级别的方法,就是花大量的时间练习。

打篮球要提高,就练习投篮,科比每天投 200 个进的球,跳投。

贝多芬,每天练习弹钢琴 8 小时+。

海贼王作者尾田荣一郎,每天睡 3 个小时持续 20 年不断作画。

编程也一样,每天花大量时间编码,十年如一日的编码,一个个的项目,十万行优质代码,终成大师。

其他方法

博客:程序员的定位:『应用型工程师』或『科研型工程师』

2年前 评论
aba66 2年前
aba66 2年前
Summer (作者) 2年前
讨论数量: 22
Summer

核心宗旨

别把事情想太复杂,我的建议是,核心宗旨只有一个:

写 10 万行代码。

以写代码为目的来磨炼自己。

有了这个核心宗旨以后,接下来就是考虑如何积累这些代码。

积累各种类型的代码

想学算法,一上来就啃大部头的书籍,或者做各种题,在我看来很难提高自己的编程能力。应该从实战出发,例如说写一些数据库项目,请见 翻译:Go rqlite 作者:开发数据库软件,算法很重要

想学网络相关知识,可以将类似这种项目 013. 负载均衡器第一部分:从零开始构建负载均衡器 ,功能完善下去,代码量会很多。通讯类软件,直播软件,创造一个,持续完善功能,也可以积累很多高品质的代码。

合理的激励

不要闷头写,开源出去。让大家来帮你提建议,鞭策你完善各种功能。持续不断的维护和升级一个项目,能力也可以得到稳定的提升。

把开源项目当成自己的作品来维护,可以作为求职最强有力的敲门砖。

把开源项目当做产品来细心呵护,尝试从中找到合适的商业模式,例如说授权、积累企业用户等。优秀的开源软件,已经听到有很多成功的被收购的案例,且都是一笔不菲的收入。

匠心

编程越久,越觉得编程类似于学语言、打篮球、打乒乓球、游泳、弹钢琴、写漫画等,想要技能提升,唯一能成为这些领域大师或者专家级别的方法,就是花大量的时间练习。

打篮球要提高,就练习投篮,科比每天投 200 个进的球,跳投。

贝多芬,每天练习弹钢琴 8 小时+。

海贼王作者尾田荣一郎,每天睡 3 个小时持续 20 年不断作画。

编程也一样,每天花大量时间编码,十年如一日的编码,一个个的项目,十万行优质代码,终成大师。

其他方法

博客:程序员的定位:『应用型工程师』或『科研型工程师』

2年前 评论
aba66 2年前
aba66 2年前
Summer (作者) 2年前
AScorpio

学科基础:英语 + 数学
计算机基础:数据结构与算法、设计模式、Linux
后端基础:PHP/Go、Mysql、Redis、Nginx
推荐一个不错的学习网站:极客时间

2年前 评论
诺墨

对于某项具体的语言、框架或技术,最好的学习文档是官方的开发文档和手册

提升最有效的方式就是动手做一个项目,不仅仅在 Demo 或者是玩具层面。要 力求细节。你就会发现各种各样问题,然后尝试寻求解决的办法。

此外,尝试将你学到的东西写下来,反向输出 是一个很重要的事情。学到如果不会很好的表达,说明你对它的理解还不够深刻。学习的最高境界是分享。这也是大部分技术翻译、技术社区存在的价值之一。

PS:几乎大多数的实战课程,都是按照某一个思路,把在实现过程中的细节不断放大,然后带着你走一遍。但往往比起自己动手去做可能遇到的问题,覆盖的细节不到 30%。这也是为什么很多实战做完了你还是觉得自己没学会。只是按照人家给定的思路在试卷上「填空」罢了。。。

2年前 评论
sanders

参与几个开源项目,或者给人家提PR。

2年前 评论

我和你情况差不多。建议先有广度再有深度,不知道你现在的公司接触的项目广度够不够,还是只有curd。如果平台比较局限,建议自己做个项目上线,比较建议先弄小程序。自己上个项目然后慢慢迭代,自己觉得哪里不好也会去优化。从心里上来说,为自己打工更愉悦些

2年前 评论
pndx

同样的问题,也是不太知道怎么提升了,看一些书也不太懂,现在就主要看框架源码或composer包源码学习了,等大佬回答参考参考。

2年前 评论

从软件的角度来说

计算机的四大基础:操作系统、数据库、浏览器、编译器。

分别代表了:硬件,数据结构与算法,网络,语言。彼此互相促进,密不可分。

从代码的角度来说

粒度有三种:

  1. github上的项目粒度

  2. gist里的代码片段粒度

  3. lsp提供的代码补全的粒度

我觉得应该发挥好第二种粒度的作用。因为他是承上启下的关键。

到底要做什么呢?

应该学习的是如何的学习。

可以先从一个博客开始。

我也是开始搭博客,侧重点在于内容的管理,比如说

  1. 可以高亮某个关键字

  2. 融合plantuml

  3. 代码的提取,并可以与lsp结合(还没有实现)

2年前 评论

其实我也很迷茫

2年前 评论
陈先生

摸鱼 摸🐟 躺平摸🐟 就摸🐟 摸🐟能解决你所有的问题

焦虑就去写代码,就去看别人优秀的项目,哪里有什么循序渐进,无非是自己肯学罢了。
别人的方向不一定适用于你,你的方向也不一定适应于别人。

2年前 评论
zhuzixian520

我最近是迷上给yii2框架写个扩展,比如这个 博客:我的 Yii2 Meilisearch 扩展包 1.0.0 发布

2年前 评论
QIN秦同学
最近在看设计模式和数据结构与算法,看的懵逼懵逼的,但是基本功必须修炼。
慢慢啃,一遍不会就再来一遍,每天都看。
2年前 评论

算法入门推荐《算法图解》,Python实现的,但是看懂不难。这本书有很多图片,对小白很友好。

2年前 评论
Junwind

对于过来人,如果你是新手,基础薄弱,千万不要学楼上的方式, 看官网文档?(很多都是英文好么,如果不缺时间,英语好倒是可以慢慢磨,并且很多都需要fanqiang的), 什么数据结构,算法,操作系统,编译器,设计模式?(请问一个新手搞这些,哪怕是公司技术负责人,也不可能敢说对这些东西都非常了解吧 。 这不是为难一个新手吗,当然时间充足,钱多当我没说) , 对于新手先了解简单的(菜鸟教程,b站搜视频,w3c,慕课,掘金,leetcode),在深入比较好(c,c++,网络协议方面,linux,算法,数据结构。。。) , 再次进阶(看牛逼软件的源码,reids,mysql,nginx,docker,linux,。。。) 。 先爬,到走,再跑。 没有基础,一定不要急于求成,囫囵吞枣,很多厉害的人也不是一朝一夕就变厉害的,而是日积月累形成的。

2年前 评论
MArtian (楼主) 2年前
Summer

核心宗旨

别把事情想太复杂,我的建议是,核心宗旨只有一个:

写 10 万行代码。

以写代码为目的来磨炼自己。

有了这个核心宗旨以后,接下来就是考虑如何积累这些代码。

积累各种类型的代码

想学算法,一上来就啃大部头的书籍,或者做各种题,在我看来很难提高自己的编程能力。应该从实战出发,例如说写一些数据库项目,请见 翻译:Go rqlite 作者:开发数据库软件,算法很重要

想学网络相关知识,可以将类似这种项目 013. 负载均衡器第一部分:从零开始构建负载均衡器 ,功能完善下去,代码量会很多。通讯类软件,直播软件,创造一个,持续完善功能,也可以积累很多高品质的代码。

合理的激励

不要闷头写,开源出去。让大家来帮你提建议,鞭策你完善各种功能。持续不断的维护和升级一个项目,能力也可以得到稳定的提升。

把开源项目当成自己的作品来维护,可以作为求职最强有力的敲门砖。

把开源项目当做产品来细心呵护,尝试从中找到合适的商业模式,例如说授权、积累企业用户等。优秀的开源软件,已经听到有很多成功的被收购的案例,且都是一笔不菲的收入。

匠心

编程越久,越觉得编程类似于学语言、打篮球、打乒乓球、游泳、弹钢琴、写漫画等,想要技能提升,唯一能成为这些领域大师或者专家级别的方法,就是花大量的时间练习。

打篮球要提高,就练习投篮,科比每天投 200 个进的球,跳投。

贝多芬,每天练习弹钢琴 8 小时+。

海贼王作者尾田荣一郎,每天睡 3 个小时持续 20 年不断作画。

编程也一样,每天花大量时间编码,十年如一日的编码,一个个的项目,十万行优质代码,终成大师。

其他方法

博客:程序员的定位:『应用型工程师』或『科研型工程师』

2年前 评论
aba66 2年前
aba66 2年前
Summer (作者) 2年前

可以自己总结下,发下计划

2年前 评论

推荐看看公众号架构师之路、程序员小灰过去往期的文章。 极客时间上感兴趣的内容也可以看看。 还有就是了解数据结构、计算机网络、设计模式等。 确实还有就是编码,多写多思考才能提高代码水平。同事之间的代码review也是不错的方法

2年前 评论

如果时间多的话,可以仿写一些优秀开源的功能,然后把它的代码和自己做对比,了解别人为何这么写,优秀的编程思路是什么样的。自己写代码时的思路是什么样的。代码不仅要写,还有学会反思

2年前 评论
MArtian (楼主) 2年前

实战教程,看个轻量的博客之类的就够了,curd都是一个道理。 提升就是了解未知的,可以搜搜网上php或者后端学习路线之类的,会有很大的图,搜个中肯点的,看自己哪个不会就学哪个就完事了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!