【转载】我多希望我学编程时,有人教我这些事!

1、学编程之前,想清楚自己想写什么。

学习编程基本就是在学习建造东西。如果你知道你到底想造什么,你的编程学习之路将会豁然开朗。

如果你的目标只是“学习如何编程”,却不知道自己到底想写出什么样的程序,也不知道这些程序将如何让你的生活变得更美好,你很有可能会感到编程学习令你沮丧受挫。

说起来还有点丢脸,我最早想学习编程,是因为我想证明我聪明。并且,我也想做一份属于聪明人的工作。我还喜欢思考数学及理论。因此,编程怎么看都和我很搭。

但是这些想法都不足以延续我的编程学习热情。直到有一天,当我终于发现如何将科技(编程)与我的真爱---音乐和文学---联系在一起时,我才真正爱上编程。

那么,你到底想用编程来干嘛呢?

网站?游戏?iPhone应用?一个让你暴富的初创公司?交互式艺术作品?

你是想让你的老板对你刮目相看,还是想写个程序让电脑帮你完成一个枯燥的任务,以让你能花更多的时间看水獭的萌照?

也可能你只是想在职场中更具竞争力,为你的简历加一个潮词(编程),或者满足你学校的毕业要求。

这些都是有价值的目标。你需要搞清楚自己的目标,然后有针对性地学习。

2、编程一点也不神秘,一点也不难。

编程和其他技能没有本质差别。就像语言学习里有语法和单词;就像数学里有不同的步骤和不同的题目;就像所有的技艺和手艺,编程里也有前人总结的针对不同任务的技巧,工具,和好的习惯。

这些东西,你都可以自由使用,修改,或者弃用。

有个人曾这样断定,程序大牛和编程界的芸芸众生之间有一个明显的区别---后者往往缺乏足够的智慧在编程界获得真正的成功。在这个人看来,这种智慧包含对指针 (pointers) 和递归 (recursion) 的理解。

我在学校曾学过指针和递归。在学生时代,能理解指针和递归的感觉真心超级爽。这种快感激发我踏上了计算机学习之路。

但在课堂练习之外,我极少有需要去碰这两个概念。并且,当我在教别人如何学习编程时,我也一次又一次地发现,人们不用这两个概念也能写出很有趣很赞的程序。

所以,不要害怕,也不要去想自己是否足够聪明。想这些都没意义。是的,编程任务越复杂,越难懂,你就需要越高超的技巧才能完成。

但哪个领域不是如此呢?除非你这辈子就靠编程讨生活了,否则你不太可能需要去理解编程中的递归。

3、没人能一次搞定。

当你第一次学习编程时,你会很快撞上这么个问题。你觉得你已配置好一切了,你查了又查,但你的代码就是有!问!题!你对如何排错毫无头绪。

错误信息(如果运气好你有的话)很有可能对你说的是---“我了个去”。这个时候,你很有可能想要放弃。你觉得你永远不可能搞定,觉得自己就不是编程的料。

嘿!当我第一次尝试编写C++程序,运行,却只得到 “segmentation fault” 这样的错误代码时,我也有过一样的沮丧感。

但是这种经历对任何一个水准的程序员而言,都再正常不过了。有过这种经历,并不代表你的智商,技术悟性,或你和编程的适合度有任何问题。

不管你是编程新兵,还是程序大牛,你都会遇到这样的经历。而新兵和大牛的区别就在于如何对待这样的经历。

新兵和大牛的一大区别就是信念。什么信念呢?

就是深信出错的原因是符合逻辑的,并可以找到的,深信问题可以被解决,深信总有办法实现自己的目标。从0到1之路也许并不明显,但只要你有耐心,你通常都可以找到。

4、总有人说你做的不对。

大括号{}应该怎么放放?该不该不用tab来缩进?该不该对代码添加注释?

对于这些问题,大家的做法各有不同。没有谁有标准答案。很多程序员热衷推销自己的偏好的那种处理方式,但这不意味着答案只有一个。

事实上,与那些说我做的不对的人面对面,然后再努力去搞懂他们说的到底是不是对的,这种来来回回,是我职业生涯的压力源之一。

如果你与一个团队的其他成员一起写码,总会有人不认同你的某些行为。

有时他们是对的,但事实上你到底是!对!是!错!永远值得你亲自去推敲。

有时他们纯粹就是无理取闹,你别理他们就好了。

5、总有人会说你不是一个真正的程序员。

看看这些说法吧!

“HTML不是真正的编程语言。”

“如果你不用vi,你就不是真正的程序员。”

“真正的程序员得懂C语言。”

“有些人就是不适合编程。”

“有些人就是学不会。”

“你根本就不是真正的程序员,我才是。”

要我说,编程对于不同的人有不同的含义。同时,编程的含义随着时间的流逝也在变化。

有趣的是,那些能让初学者,甚至是编程老鸟,更快上手,更省事的工具,包,框架等往往会被贴上 “真正的程序员不该使用” 这样的标签。

这种贴标签行为背后是一种恐惧:如果任何人都能称自己为程序员,那这个头衔就将毫无意义。不过,我认为这种闭关自守的行为是有害的。

去用那些让写程序变得容易的工具吧。如果那意味着你用 Stencyl 或者 GameMaker 来写游戏,而不是从零开始写一个新的,没事,只管去做。

如果你第一次尝试编程是从HTML或者Excel宏开始,没事,只管去做。哪个(编程方式)你能坚持下去,你就用哪个。

随着你技术不断提升,你就会发现那些便利工具对你的限制大于对你的帮助。那时,你就会去寻找更强大的编程工具。

但大多数时候,很少有人会看你的代码,或者问你用什么编程工具。你的程序到底好不好用才是真正重要的。

6、坚持比方法更重要。

关于 “正确编程学习法” 和 “最佳编程学习法” 的文章有很多。的确,学习编程的方法有很多。

你可以看书来学,你可以做练习来学,你可以给别人的程序捉虫来学。当然了,也有很多种编程语言你可以挑选来作为你的第一门语言。

自学型的编程课程或者讲座系列常常有个问题:一开始你总会学得很爽,但难度会陡然上升。

print命令总是很简单,但要真正搞定一个实用程序的编写,往往让人抓狂。你很有可能觉得跟着教程走却并没搞懂,然后你就开始抱怨教程有问题。

当你撞上这个 “编程玻璃顶” 时,那些教程和线上资源对你的意义已经不大了,因为他们默认你已经是一个编程好手了。

更让整个编程学习进阶之路变难的因素是,你根本不知道自己缺什么 (you don’t know what you don’t know) 。甚至,搞清楚自己接下来需要什么都成了难题。

不管上什么编程课,你都会有这么一段 “撞墙期”,唯一的解决办法就是坚持到底。

这意味着你要不断尝试新事物,学习新知识,不断地,一步步地,去解决问题,去编出你要的程序。如果你这时认真回看自己的编程初心,你就更有可能获得成功。

坚持到底,就会胜利。这就是我之前提到的信念的价值所在。如果你真的坚持到底,你就真的会胜利。

时间: 2024-08-06 00:16:21

【转载】我多希望我学编程时,有人教我这些事!的相关文章

一起学编程(转载)

人类认知这个世界的开始并不是开始于人类成为人类的时刻,应该是生命开始诞生的时候就开始了,因为我们对世界的认知中,有部分已经刻画在我们的基因里面.在这里,我并不想写认知的历史和哲学,因为一是功底不够,二是我的目标是写学编程.但由于编程本质上也是认知世界的一部分,因此,我想我应该被允许从这里开始我们的编程之旅. 当生命具有自我意识的时候,其实就代表生命可以把自己从环境中区分开来,当然,前提是事物是可区分的,即事物具有生命感官可区分的特性(属性和行为).分类是我们认知这个世界最基本的手段,而分类的基础

半路学编程能否成大牛(非鸡汤)

许多人认为,学一门技术,走到哪都不愁没饭吃,加上程序员在互联网行业里的工资是处于中上水平,因此有许多互联网人士以及在校学生选择自学程序. 不说鸡汤,谈谈现实:半路转行做软件工程师的人,他们的职场现状是怎样的. 一.为什么会要改做程序员? 因为工作原因,在日常生活中,以及在知乎上,有很多人向我咨询职业生涯的抉择.他们大都对自己的职业现状不满意,打算学习编程成为一名程序员. 我问,为什么想要做工程师? 答案五花八门,其中「工资高」「好找工作」「有职业发展」是很常见的理由. 二.半路转行做程序员,在求

17岁开始学编程,晚么?

刚在伯乐在线上看到一篇文章: 有位年轻的童鞋在 Quora 提问,“如果想成为一名顶级程序员,17岁开始学编程晚么?”FB 前程序员 Don Pinkus 针对这个问题,分享他从 22 岁开始起学习编程的经历. 看完他的分享,截取对自己有帮助部分马克一下,查看原文(http://blog.jobbole.com/85548/) 如果你现在就希望自己成为一名工程师,那么以下就是你的任务清单: 1. 到w3schools.com网站上学习HTML和CSS.2. 思考一下你想做一个什么样的网站.已经有

从零学编程1-写一封情书

一哥们闲暇之余想学编程,博主作为"会装系统的人"自然脱不了干系,这哥们名字叫鹰,初中文化,对于电脑的认识属于只会上网听歌看电影,差点忘了他强调过CF玩的不错. 那就教起吧. 主人公两枚: 鹰:从零学编程的哥们 我:从零教编程的作者 !!注意为了便于新手理解,使用大量的便于理解的语句,不代表本人知识水平.我怎么会告诉你Windows启动过程呢.(- o -)~ 开始我们的故事 我:今天让我们写一封电子情书. 鹰:我听说过,但是网上说得太复杂了- 我:会非常简单的.先下载个编程工具.就用我

我给女朋友讲编程分享篇--看我姐和我女朋友如何学编程

有两天没有更新文章了,真是惭愧啊.前天,我想写写有关网站配色.美工方面的一些内容,查了很久,都没有找到满意的,本人也是程序员,没做过美工,所以对这方面确实很欠缺,希望哪位美工看到了,可以给我们程序员专门写一个系列的文章,叫<我教程序员学美术>,然后用最简单的.最生动的内容写出来,一定有很多程序员喜欢看.如何真得火了,到时候出书了,我一定买一本,捧捧场,哈哈. 昨天,搜了一下,如何注册免费空间和域名,本来是想注册一个免费的域名,申请一个免费的空间,自己可以更新文件的那种,结果,找了好几个,都不满

立足GitHub学编程:13个不容错过的Java项目

立足GitHub学编程:13个不容错过的Java项目 今天我们将整理一大波干货满满的Java示例代码与能力展示素材. GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能绕得开GitHub. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术.该项目允许大家创建REST服务.Web应用.任务.

【转】计算机专业不是学编程

学计算机的如果你有耐心看下去,我敢保证这绝对是一种收获大师提醒: 计算机专业不是学编程,而是懂得计算机的工作原理,以及和计算机相关的学科技术.一个高手不必懂得编程,coder是最底层的人物,最重要的是思想,解决问题的思想.对计算机专业的学生来说,英语和数学也是最重要的.编程不用于实际,编得最好也是花哨,毫无意义.对于初学者来说,应该懂得更多的why 原理,而不是更多的how,那是工作后的事情. 每一计算机学者都应该有自己的思想,不要跟着别人走,不要看着别人用什么新技术作出什么来的时候,你就心动了

【转】半路学编程,可以成为大牛吗?

半路出家,能不能成为大牛我不清楚,最好在付出前不要在意结果,难道因为吃鱼有1%的几率卡喉,你就一辈子不吃了?成不了大牛,就不学编程了?如果你的对象一开始不...... 1.如果你没有去做,是不会知道自己能不能成为大牛的. 2.学习是一辈子的事情,哪里来的半路出家?25岁学编程,35岁的时候你就是有10年编程经验的人. 3.在互联网时代,随处可见的秘籍太多,而诚心修炼的人太少,和是不是科班出身没太多关系,有的人4个月培训就干掉人家2年的工作经验. 4.半路出家,能不能成为大牛我不清楚,最好在付出前

半路学编程,可以成为大牛吗?

不说鸡汤,谈谈现实:半路转行做软件工程师的人,他们的职场现状是怎样的? 一.为什么会要改做程序员? 因为工作原因,在日常生活中,有很多人向我咨询职业生涯的抉择.他们大都对自己的职业现状不满意,打算学习编程成为一名程序员. 我问,为什么想要做工程师? 答案五花八门,其中“工资高”.“好找工作”.“有职业发展”是很常见的理由. 二.半路转行做程序员,在求职市场上的现状如何? 抛开其他因素,先只讨论薪水:业界标杆 BAT 的薪水如下(图表为100offer 制作) 百度 阿里 腾讯 但对于大多数半路决