请问大家都是如何提升编程能力的?
我的情况是这样的:
现在对网上的「实战教程」看的已经有一些倦怠了,甚至有点觉得在浪费时间,因为大多部分都是重复的内容。
我又去试着学习一些底层基础和理论知识,比如数据结构,Linux通信,等但由于基础薄弱,理解起来也很吃力。
我想请问一下,有没有那种「循序渐进」的书籍或者网站,从 0 开始扎实理论基础?或者请问你们都是怎么去扎实 基本功 的?
还有一个问题就说,我觉得如果要提升编程能力,需要不断的 刻意练习,但是一上来就搞算法这对我这种基础差的人简直是太硬核了,有没有那种「小栗子」可以由浅入深的那种?接地气一点的那种,总之特别希望大家能指导我一下,非常感谢。
感谢大家的耐心解答,大家说的都很有道理,对我受益很多,非常感谢。
核心宗旨
别把事情想太复杂,我的建议是,核心宗旨只有一个:
以写代码为目的来磨炼自己。
有了这个核心宗旨以后,接下来就是考虑如何积累这些代码。
积累各种类型的代码
想学算法,一上来就啃大部头的书籍,或者做各种题,在我看来很难提高自己的编程能力。应该从实战出发,例如说写一些数据库项目,请见 翻译:Go rqlite 作者:开发数据库软件,算法很重要 。
想学网络相关知识,可以将类似这种项目 013. 负载均衡器第一部分:从零开始构建负载均衡器 ,功能完善下去,代码量会很多。通讯类软件,直播软件,创造一个,持续完善功能,也可以积累很多高品质的代码。
合理的激励
不要闷头写,开源出去。让大家来帮你提建议,鞭策你完善各种功能。持续不断的维护和升级一个项目,能力也可以得到稳定的提升。
把开源项目当成自己的作品来维护,可以作为求职最强有力的敲门砖。
把开源项目当做产品来细心呵护,尝试从中找到合适的商业模式,例如说授权、积累企业用户等。优秀的开源软件,已经听到有很多成功的被收购的案例,且都是一笔不菲的收入。
匠心
编程越久,越觉得编程类似于学语言、打篮球、打乒乓球、游泳、弹钢琴、写漫画等,想要技能提升,唯一能成为这些领域大师或者专家级别的方法,就是花大量的时间练习。
打篮球要提高,就练习投篮,科比每天投 200 个进的球,跳投。
贝多芬,每天练习弹钢琴 8 小时+。
海贼王作者尾田荣一郎,每天睡 3 个小时持续 20 年不断作画。
编程也一样,每天花大量时间编码,十年如一日的编码,一个个的项目,十万行优质代码,终成大师。
其他方法
博客:程序员的定位:『应用型工程师』或『科研型工程师』