给编程新手的思维习惯

自怼歌 历尽bug千百遭,才知them皆套路 编码标点和空格,都是图森一闪念 五问为毛自知何,知识当时已麻爪 静静请问小黄鸭,立解崩溃九成九 还余一丝真bug,用对谷歌没难度 却问那咋总犯混,私恋不足心不坚 却向襄阳回洛阳,回炉互怼撩旧情

开智Python基础编程课结业,总结编程倡导的思维习惯:一手阅读、任务分解、主动协作、科学范式。反观自己三个月来的行动,将此四条纳入成长轨迹。

一手阅读

想搜索一个问题,首先反应是英文谷歌一下,尤其是计算机行业。大多源头的信息、技术、实践出自英文世界,github没有多国语言版,wikipedia英文条目五倍中文之多,信息来源是竞争力之一。从百度一下到谷歌它,工具不是创作的外在,是创作本身。同样关键词,本身结果中内容少,因为大量转载,内容重复。谷歌搜出结果,导向诸如stackflow、github一类成熟社区,在其中你更能感受技术世界的开源和互助。

如自怼诗上所说,几乎所有问题谷歌都有解。为什么这句话敢这样肯定?因为你是新手,一方面课程给你的任务,都是业界早已普遍实践的课题,另一方面身为新手的你,做任务是遇到的问题也被前人遇到过百遍。为什么你谷歌不出来结果?搜索姿势、频率、范围、时常有问题。大妈说他曾经用不同关键词,谷歌几百次,两三天之后搜到想要的结果。

多搜索,英文没有中文也好,网上信息不如言传身教,总有蛛丝马迹。换着关键词,在谷歌、知乎、微博,在浩瀚字节中发现惊喜。

任务分解

面对庞然大物,如何不被吓倒,拿起手术刀将它结构,变小,变成你的最小行动。在团队中,你不需要知道每个细碎的任务如何解,团队编程中,技术总监也看不懂所有人代码。你定义最小行动,找人完成它,拼接成整个任务的大图景。就像Fitlog项目,数据库、数据统计、前端页面三个模块分三人做,互相看不懂对方代码,不影响完成任务。

主动协作

人是社会动物,但社会动物在人类世界的实体,是一个个群落。大家守在特定圈子里,对圈外的人保持礼貌的距离。除非看得见的利益驱动,一个人很少会突破保护圈,去主动和圈外人相处。群落让我们安全,也封锁我们。如果说人类进步需要不断观念交融、信息流动,少数走出圈子,携手协作的人,推动着我们进步。伸手出去的人,身在信息节点,会发现更多。

科学范式

《这才是心理学》中,总结科学的三个特征:系统的实证主义、公共的可复用知识、实证可解的问题。编程本身作为一门技艺,更偏工程技术领域,不是元学科。它是计算机科学在具体领域的技术实践。类似力学和建筑学的关系。元学科和工程技术,研究的主题不同。元学科偏重思维方法的范式,工程技术偏重经验行动范式。编程中,新手更能体会到公共的可复用知识这个特征。

每个行业都有自己的公共标准,比如给排水工程规定施工管道的直径,食品安全工程规定食物中每平方厘米的细菌含量。这些标准,描述为操作定义,由第三方或权威评审执行。代码也有评审,只是这种评审被编译进了语法、编辑器、编译器中,你写出不符合规则的代码,编译永远报错,不管你几次复制粘贴,几次刷新重启,结果依旧。这是计算机交流反常识的地方,现实世界,我们日复一日重复一件事,期盼不同结果,甚至奇迹出现,工作升职、拜佛保佑;而计算机世界告诉你这行不通。

公共知识还存在网上无数的开源项目中。当科学的成果-论文,在期刊上发表时,意味着你头脑中的经验知识,变成了业内知识,同行可以复制你的实验、引用你的结论,可以支持反驳,科学就这样在吵吵闹闹中进步。如果说科学还是少数圈内人的游戏。你发布一段开源代码,引来的用户、程序员、api谋利者,你造出的轮子会被很多人同步迭代改进。

橡胶和轮子,善用轮子,成为造轮子的人。

迢迢大路,道阻且长,你需要轻装上阵,不再着林中蝴蝶。蝶影斑驳,你看到的只有五彩翅膀,路还在远处。