我是如何学习写代码的?v2
「 代码 」对于我来说,如同「 设计 」一样,都是为了「 创造 」 出某种产品的一种手段。
作为设计师,与开发打交道,难免会有种 ” 巧妇难为无米之炊 “ 的感觉;
而程序员,当自己开发了某个工具之后,为了追求更好的体验,苦于不懂「 设计 」,也很难更上一层楼。
写代码重要吗?
“代码只服雷军”,雷军在小米之前,做了10年程序员。
据网友爆料,京东刘强东在一次讲座上,称自己大三(1995年)的时候,他给别人写代码,一个晚上就能赚5万。
设计师应该会写代码吗?
设计工具的演进,从Sketch 、 Pixate, 再到 Framer,设计师的工具,越来越简单有效地通过原型表现创意。
设计工具引入代码
Framer是一款结合代码与可视化实现的交互设计工具,因为通过代码,可以完全控制交互效果,设计师不仅停留在画图的层面,更多的可以关注到实现的真实效果。
写代码难吗?
一位朋友,在咨询了我一阵子后,开始学习 Python ,但是在坚持了2个月的时候,他逐渐减少学习时间,并最终放弃了。因为,他觉得代码要学习的知识太庞大了,不知如何入手,一旦有新问题解决不了学习进度就卡在那里,从而越学越觉得难。
知识量庞大,问题不断
其实写代码,入门并不难
因为还有积木式编程语言:Scratch
不管是成年人,还是青少年,通过Scratch可以快速得掌握编程的核心思想。但核心思想是什么?往往被许多人所忽略。
学习编程,应该掌握其运行的逻辑,试试回答以下几个问题:
1 我们是如何通过一个个的指令给计算机安排任务的?
2 计算机如何按照我们设定的条件,执行任务?
3 计算机是如何执行重复执行任务的?
4 计算机完成任务的时候,是如何反馈给我们的?
代码最难的是逻辑
引一位Oracle程序员在Hacker News上吐槽自己的工作的讨论。这个工程师的核心痛点是,Oracle经历长期的产品线迭代,代码异常庞大、逻辑复杂。每新增一个特性或者修复BUG,该工程师都需要大量的调试,小心谨慎的进行着日常的工作。而Oracle每次的版本发布都经历数百万次的测试,工作量可想而知。
学习代码也是有方法
一般的初学者是这2类:
零基础,指的是对代码一点了解,或者曾经看过一点点,没有系统了解过编程语言的。
入门级,会一门编程语言,会写一点点代码,但是无法自己完成一个项目从0到1构建的。
以下是给初学者如何学习代码的指南。
01
最小项目实践+系统地刻意练习
如果是零基础,建议先学一门语言,一步步来,按章节进行,同时,适当增加实践项目的练习,比如DIY一个以图搜图引擎等类似的项目。
当你学完这一阶段的入门,不再是0基础之后,就可以尝试了解各种语言的环境安装、最小可运行代码集,以及各种开发工具,尝试各种好玩、复杂的项目了~
02
最小可运行的代码集
主要通过看示例,包括作者提供的示例代码,网上文章提供的示例代码等;举一个turicreate的以图搜图代码示例:
03
理解功能
get到思想就好,理解代码里的每一句的含义,真实的行为,就跟读书一样,知道作者的核心思想是什么;
比如下面这3句,第1句是初始化一个类,该类可以提取图片的特征向量,第2句是通过文件路径打开图片,第3句是从图片提取特征向量。
04
关注输入、输出的数据结构
输入的是字符串,还是一个列表,还是一个字典?输出的是什么也非常重要,比如输出的时候,有None的可能,那下一段代码对此输出结果引用的时候,就要注意啦。
如果输入_idea为"",输出为None,这个时候写代码的时候就要留意输入跟输出的各种可能。
05
即搜即用
当你掌握以上技巧的时候,就会发现没必要从头到尾全部一口气把代码全部学完,需要的时候再快速翻阅文档,通过示例、输入输出、理解功能这三个点,就可以现学现用啦。
06
优雅的代码
对于初学者来说,需要关注如何书写优雅的代码,主要表现在:
代码所在位置恰当;
有适当的注释;
适当的缩进和空行;
以及没有重复代码……
这里面的内功修养,离不开设计模式和代码重构,还要有非常多的实践与刻意练习。这几本书都可以抽空读一读:
《Head First设计模式》
《重构》
《Clean Code》
以上为全文。
写代码是基本功,锻炼的是逻辑思维能力,跟解决问题的能力。
在不久的未来,写代码也是可以机器完成的,不知大家关注过这项研究吗?
pix2code 等论文提出了一个强大的前端代码生成模型,解释了如何利用 LSTM 与 CNN 将设计原型转化为 HTML 和 CSS 网站。
人工智能写代码,未来可期;
学习代码,我们应该更多地关注背后的逻辑思维能力。
欢迎在MixLab讨论相关内容、技术实现,