编程教会我的5个生活信条

1、不要等准备好了再出发,优秀的程序员都是“探路者”

我见过不少程序员不敢尝试新技术,空有好的idea却从不去实施。他们不是懒,而是“完美主义”,永远解释自己能力不够、没想好、准备中...

编程的经历让我发现,只要你开始疯狂敲代码,会不断蹦出新点子,很多问题也会迎刃而解。因为编程的过程中,你会不自觉地去思考逻辑、检索资料、咨询大佬、反复纠错校验,最后发现做出来的东西居然有模有样。

一旦你想法太多,始终在起跑线上观望,会陷入“完美主义”的陷阱,久而久之就成了拖延症晚期。拿学Python来说,其实语法并不难,但很多人死在了安装Python软件上,觉得各种麻烦、复杂,怀疑自己搞不定。也就一直处于“我对Python念念不已,Python对我爱答不理”的状态。

《黑客与与画家》书里说:你把整个程序想清楚的时间点,应该在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。

相信程序员都会有体验,你不可能每个功能都完美设计好,才开始写代码。

电影《饮食男女》也讲到:人生不像做菜,不能等一切都准备好了才下锅。

确实这么个道理。

2、很多事都是孰能生巧,没有足够多练习不要提天赋

编程应该是最能体验prctice make perfect的技能之一,在前期积累的阶段,往往要大量的去刷题、比赛、模仿,才能显得游刃有余。

资深码农就像是老师傅,哪个不是键盘敲到发白。

可能练习不一定会让你完美,但大量的练习会让你产生髓磷脂,一种神经元外侧的脂质,能让你的脑回路更加灵活。

人的大脑可以分为反射、思考、记忆三个功能,大脑可以通过大量的反复练习让思考演变成习惯,最后跳过思考只需要反射的指令操控就能完成,从而达到“生巧”的效果。

当然作为程序员,练习不是一味的重复,或者去完全复刻别人的代码,每一次练习都应该增加难度,有突破自己认知的成长。这样经过反复的输入、评估、输出、纠正,你会有惊人的变化。

当然练习不光是程序员需要做的事,几乎任何能力的修炼都离不开反复练习。

3、要有良好的习惯,才能事半功倍

编程是一项系统工程,就和写小说、建大厦一样,所以需要有模式、规矩、条理,才能不至于变成“屎山”。建议大家在写一个程序之前,可以用脑图软件理一下思路,也可以用伪代码提炼核心逻辑。

还有比如说规范代码命名、规范注释、模块化、版本控制、注意备份等等,都是需要养成的好习惯。

我非常喜欢Python编程的理念,尽量写符合Python习惯的代码,它在Python之禅里解释道:

优美胜于丑陋(Python 以编写优美的代码为目标)

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

可读性很重要(优美的代码是可读的)

即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)

当存在多种可能,不要尝试去猜测

而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

写代码需要好习惯,对个人学习、工作来说更需要。

你看看高中班里那些拔尖考名校的同学,基本都是上课认真听、考试不粗心,在同一个班里智商差异不明显的前提下,拉开差距的都是学习习惯。

我一个前同事,有个习惯非常让我佩服,他每次演讲PPT前,都要花一两天时间给每一页做备注,然后写演讲稿,在家不断练习。

这其实是一种习惯的养成,既然他在演讲PPT上这般用心,其他工作必然不会差。

4、最简单的往往是最有效的

很多人喜欢把简单的事复杂化,比如说一个线性回归能解决的事,非要用神经网络,浪费大量机器资源,跑出来的效果也不好。其实在编程领域,往往简单胜于复杂。

Python提倡一个函数只做一件事,一件事只有最好的一种解决方法,这其实就是把复杂问题简单化。

当然这里的简单不是幼稚、容易,而是最优解法,并且尽可能让更多人看懂。

5、愚者困惑,智者提问

如果你是程序员,会发现有大量的技术网站和博客,比如stackoverflow、csdn、博客园、github、掘金等等,似乎程序员比其他行业更需要交流和分享。

编程教给我最好的学习方法就是提问和搜索,遇到bug我可以百度、谷歌,肯定有现成的答案等着你,因为你遇到的难题前人基本都遇到过,并且绝大多数都给出了答案。

所以对一个初学代码的新手来说,千万不要买本书、看门课就ok了,其实学会提问和搜索才是你编程生涯的开始。

说到学会提问和搜索,有些人会疑惑这也要学嘛?

那是当然,会提问题代表你知道自己不懂什么,并且能准确的描述出来,会搜索代表你知道在哪找答案,并且能识别答案的真伪。

愚者困惑,智者提问。对每一个人都是真理。

你可能感兴趣的:(编程教会我的5个生活信条)