8年开发经验告诉你,编程新手如何提高编程能力?

语言都有想通的地方,尤其是计算机编程语言。计算机语言是一种应用科学,应用科学就是你硬着头发也要用的一门学科

我们来看一下有哪些方法可以只要你坚持去做,你是一定能够快速的提高你的代码能力的。

 

 

首先 learn by doing,你是一定要不要你站在岸上,你是不可能学会游泳的,你天天先看着别人吃饭,你自己是不可能长胖的。所以我们来举一个例子,比如说你接到一个任务,这个任务是想让你设计一个contact form,就是一个这样的的一个表格,你就要想这个时候你都不需要掏出你的电脑,好,你就坐在那,你就可以开始想,我要设计一个表格,表格的功能是什么?是方便用户来跟我联系的。为了实现这个功能,在这个表格里面我要填入哪些内容呢?

比如说我需要知道他的title,他是男性还是女性,或他是博士或者是什么,有有没有其他的title,然后它的名字是什么?以及它的 EMAIL是什么?除了这些以外,你可以想得再高级一点,比如说你所你所在的区域需不需要数据保护?

然后当我设计完这个表格之后,你就要想,这个表格是方便用户跟我们来联系的,我到底把它放在哪里,我是把它放在网页的官网的 landing page,我还是把它放在一个单独的页面。你就先想一想,在你想的过程中,你是可以强化你的逻辑,是可以强化你的思维的,等你把握问题,每一个环节都想清楚了,等你在下笔的时候,你其实心里就有数了,能不能写出来是一回事,但我脑子里是清晰的,是另外一回事。这个就是learning by doing。

第二个如果你现在有能够实现代码的能力,你就争取自己去写一写。在你写的过程中你会发现很多问题,但是不要怕这些问题其实是在帮助你成长的。

好,第二点就是你尽量要把你的从长远来看,你尽量要把你的基础打好一点,为什么这么说?你就之前我看到有人讲,很多码农一半的时间都是在Google上抄代码,另外一半的时间是在stack overflow上抄代码,或者是在 Git Hub上抄代码。好,那么这个问题的本质是靠抄代码能不能成为一个程序员?我觉得从实操的角度是可以的,但是靠抄别人的代码能不能成为一个好的程序员,我觉得这个答案是否定的。

你比如说我们先不说以写代码为生或者是怎么样,在你学一门东西的时候,比如说你学任何语言,你最基本的一些问题你是要搞得很清楚的。比如说你的生态 x它的基本语法是什么?都不用很复杂的,就是很基本的语法到底是什么。第二个就是你要知道数据类型有哪些?第三三个就是数据结构到底是用有哪些,它们分别是什么样的?如果连接这些最基础的东西,你都整不明白的话,在往后的学习过程当中,当你看到越来越复杂的代码,你自己心里是慌的,你心里越慌你就越没有自信,越读不懂,然后这就会变成一个恶性循环,所以尽量我们在学习的过程中尽量是把基础打扎实一点。

至少比如说可能几个月之后,复杂的代码我现在写不出来,但是我能读懂,我大概知道他这一块他在说什么,他为什么要这么做。

第三点就是尽量去手写代码,我不是想要把你逼疯,我知道现在有很多的市面上有很很多的ID E可以方便你去写代码,哪怕你只给他一个字母,它都给你跳出几十个选择来让你选择相应的的命令但为什么在这种在 ID E这么方便的时候,我还是建议你去手写。

很简单,第一,在你比如说你去面试的时候,或者是你在学校里面考试的时候,你是很难在电脑上写的,一般你的面试官都会要求你,都会要求你手写一段代码,是大概写一段,然后实现一个功能。第二个那就是在你手写的过程中,你才会知道自己到底会不会比如说

 

我认为手写代码有几个好处

第一个就是学习效率更高,你不容易分心,如果说你用电脑来写的话,你很可能这个太普遍。变了你很可能我听一会儿歌,然后刷一会儿抖音再刷,待会推特,然后一不小心看个YouTube一下午就过去了。然后你本来该做的事情一样都没有做。

第二个,你不太容易会被假象误导,我们的大脑经常会欺骗我们,我看到一个东西我觉得简单,我就以为我会了,但你不会就像我看王刚老师做饭一样,我觉得这么简单,我觉得我会了,但每次当我亲手去做的时候,基本上就等于灾难现场,所以是尽量的不要被自己的大脑欺骗,不要被自己脑子里的幻想欺骗。如果你写不出来,那就说明你不会,如果你真的会了,你是一定写的出来的。

好,我们除了 code by hand,我们还要注意什么?我们还可以大胆的ask for help,就是我不是说让你什么问题,我不是想让你当一个伸手党,比如说你遇到了一个问题,题你想不明白,你想了5分钟想不明白没关系,这个时候你可以坚持一下,再想一想,搞不好第10分钟的时候你就想明白了。

但是如果一个问题已经让你一天两天睡不着觉,你已经查过了各种方法,你就是搞不定,这个时候你不要再逼你自己了,可能你陷入了一个盲区,或者说可能你实力还没有到那里,确实不会就不会没有关系,这个时候我们就要我们可以去问一下身边的老师,或者是问一下身边的同学或者是身边的牛人,然后或者是我们还可以 seek out,我们看一看官网上有没有解答,或者是其他的方面有没有解答。

但是你不要把这些问题就埋在心里,有些人会喜欢把所有问题埋在心里,然后企图自己去解决。但是你不是我们都是人,你不是神,就是人是可以犯错误的,人是可以有不知道的问题的。所以这个时候我们就大胆的提问就好了。

刚刚我讲了你可以可以大胆的提问,如果你身边既没有老师也没有牛人,你怎么办?你可以这样,首先这不是说针对你,这是世界上全世界所有的码农都在做的事情,如果你有问题,你可以上stack overflow上去找一找。

因为你要相信作为一个初学者,或者是作为一个水平中等的人,你所遇到的问题基本上都被前人都遇到过,那么前人遇到过的问题一定会有前人的解答,只是说你需要的就是说找到去命中那个问题,你直接在stack overflow上,基本上你输入你命,你问题的关键词基本上就会能蹦出一大堆答案来。如果你在cycle over flow上找不到,你可以去滴滴踏步厂找一找,因为滴滴踏步厂很多人愿意去开源他们的代码出来,然后他们的comments我觉得他们的注释写的也很不错,如果你能读懂注释,读懂他们的代码的话,可能会给你一些新的思路或解决方法,再不行你还去直接可以直接Google,遇事不决问谷歌,让谷歌告帮你去找。

如果说你有follow一些,比如说大的 up主你可以你可以从他们的技术博客里面学,学到一些很有意思的东西,但是我觉得最保险最稳妥的方法就是绝大多数问题你都可以在官方文档里面找到。

我个人觉得如果你正在学这门编程语言,你就尽量去读英文的文档,因为我认为他们官方文档写大部分官方文档写的质量还是非常不错的,但如果你的英文能力是在有一些欠缺的,你去读中文的也没有问题,这个就是帮助你怎么样去寻找一些 online resources,最后一点,刚刚我提到了,大家要经常的去读官方文档,然后经常的去 cycle overflow上去,去找一些例子怎么样的。

当你读到这个标准代码的时候,就simple code文档也好或者是例子也好,他会给你举一个例子,你读了这个例子你你弄明白了他是什么意思,然后你大脑就会觉得我会了,但这个时候你不要停下来,你尽量去,比如说你捅不捅过他,修改他比如加一点东西,捡一点东西看还能不能实现。如果不能实现,这个时候是非常好的,你就要问你自己为什么不能实现,我到底是哪错了。

 

我之前就遇到过有一个学生,他来问我问题,然后我看了他的代码,我就直接问他,我说你知道你自己写的这是什么东西吗?他说我知道,我说好,你来给我解释一下,这一段是什么意思,然后他就解释不出来,千万不要让你的大脑欺骗你。最后在我们学习的过程中也是一个不断接受打击,然后不断经常自我怀疑,然后经常陷入困境的这样一个经历,就是对天才也好,或者是对资质普通的人也好来说都是一样的。

 

经常从我不想做我做不到,我试试,最后发现慢慢的我居然做到了。所以在这个过程中千万不要觉得沮丧或者是灰心,就是不止你一个人有情绪,只要你学习写代码,你都会有情绪的。所以对于这样一个普遍的问题,我建议大家最好 keep Calm,冷静下来,如果觉得这个脑袋过热了,我们就去冷静冷静一下,吃个冰淇淋,然后喝杯咖啡,然后继续。最重要的一点就是keep going,不要停下来。一旦你停下来,只要你停下来了,你是不可能达到终点的。

好,我希望你继续加油,继续努力

 

学习不要走马观花的学,每个知识重点大纲,就是学习路线都是根据每一天市场上多数公司用到的新技术整理,在学习的时候还需要结合练习题来做

这里的话我也将我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的朋友可以加我的QQ群   697888503   ,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。 

 

转载于我的知乎回答: https://www.zhihu.com/question/27574436/answer/1581322741

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值