代码的创造性:向程序员学创造性的14种方法

2023-10-22 11:10

本文主要是介绍代码的创造性:向程序员学创造性的14种方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对程序员传统的看法一般是这样的:书呆子,兜里揣着防止钢笔漏水的塑料片,以及,非常、非常的无聊。一般没有人会把程序员和创造性两个词放在一起。 不过,这样的看法错的不能再离谱了。事实上,编写代码是一个人能做的最优创造性的事情了。 程序编写者必须在两个完全不 同的世界——结构的世界和想象的世界——之间求取平衡。他们使用一种非常结构化的语言,却实现了很抽象的概念。这可不是简简单单的工作。

我能够知道这些,是因为我最近重新温习了一下我那少的可怜的PHP知识,写了一些有趣的网站(别着急,我会告诉你们最新的进展的)。我刚发现写程序 是一种真正的能锻炼创造性的好方法。这是因为:

  • 编写城西能够给你绝对的控制权。从无到有的建造一个东西就是创造性的最好的例子。程序员拥有一个软件或者网站的绝对的控制权,他/她可以 按照自己的意愿让它变成任何东西。
  • 完成一件事情的多种方法。为了建立一个网站,程序员必须首先建造一个构架。他们有目的的奠基,在最后到达那个目的前,一切都只是个想法。 程序员使用大量的能找到的工具和方法。

程序员们必须找到创造性的解决方案,否则就会什么也创造不出来。

程序员是打破框框进行思考的最好的例子,怎么说呢……程序员实际上就是“框框”的创造者。以下就是一些可以从程序员那里学到的,促进创造性思维的方 法:

1. 学习一种新的语言

程序员总是在学新的语言,无论是出于爱好还是需要(T_T)。不要把自己局限在现在的知识范围里并乐在其中。扩充自己,学习新的技术。

2. 从最基础开始

如果你准备写一个软件,你不可能一开始就完成好大一部分。你必须从“第一块砖”开始。有些时候,要想找到一种创造性的解决方案,最好的方法就是回到 起点,重新审视做过的工作。

3. 质疑精神

质疑精神就是说,审视每一种假设,然后确定这样是对的。所有的编程工作都建立在一些最基础的假设之上。如果软件架构的底层代码出问题了,那么整个软 件就有可能无法正常工作。

有时候创造会受限于假设。这时候只需要放弃这些假设,换一个全新的视角去思考,就会找到创造性的解决方法。

4. 把这当作娱乐

如果你认识一些程序员,你会发现他们总是在不停的做这些什么。即使是已经完成了一天的工作,他们总会画几个小时在做自己的有趣的东西。他们喜欢“忙 着”。

不断的把新的想法和解决方法“烘焙”出来,不应该被看做是琐碎的小事。你应该把它看做一种休闲,而且会很有趣。

5. 永远不要停止尝试自己的想法

程序员总是在不断的修剪(重构)代码,以使它们尽可能地高效。即便是微小的改动都有可能让程序或者网站挂掉,所以,对于每一个程序而言,不断的测试 和改进都是非常重要的。

想法都必须经过严格的验证,并按照一定的要求进行修正。你的想法总会变的,只不过是变多少的问题。不断的评估和重新思考,是“修剪”你的想法的一个 很棒的方法。

6. 培养激情


Photo by Marco Wessel

如果你尝试过和一个程序员谈论他的工作两分钟以上,你很快会发现这个程序员对自己的工作充满激情。他们吃程序,睡在程序上,甚至呼吸着程序。

对于你自己的想法,你有这样的激情么?

7. 精通手中的工具

程序员会不断的厉声自己的知识和对工具的掌握。一个好的程序员会密切关注软件的发展,不停地在尝试新的方法来提高自己对他们的掌控能力。你很难发现 那个程序员不会打造他自己的“工具箱”。

无论你的能力如何,你对工具的熟练程度总会限制你能力的发挥。越能熟练掌握手中的工具,就越有能力去创造。

8. 把抽象的东西放在一起

  • 你需要在电脑上打电话么?
  • 能不能在网上编写word那样的文档呢?
  • 人们会关心其他人都在做什么么?

创造Skype、Google DOC和Twitter的人们都有这样一个共同点:他们能把不同的抽象的想法融合在一起。找到这些 “假如”并实践它们是一个很棒的的开始,开始去从不同的角度、更有创造性的角度来思考问题。

9. 把架构看成一种工具,而不是一种限制

人们总会把创造性和“一块巨大的画布,以及让自己的思想任意驰骋其上”联系起来。然而,这种想法有一个很严重的问题:这只是一个关于创造性的神话。

看,到处都有限制。我们无从躲避,只有适应其中。程序员会拥抱程序语言或者开发工具的局限,并乐在其中。这些限制成为他的工作的基础。有 些时候,一些边边角角的发现,会导致十分伟大的想法。 需求才是创造之母。

10. 尝试之前不要排除任何可能

幼儿园老师说的没错:没有任何问题是愚蠢的。如果你(没有)做到第3条并且无视任何假设,在你尝试之前,你永远都不会知道它到底可不可行。如果你不 尝试,你又怎么知道它能不能行呢?你或许会很惊奇,即便这个提议失败了,它有可能会引导你走向一个解决方案。

有些时候,最好的方法是创建一个原型,然后对它进行测试。如果这个原型不可行,就放弃它。不然的话,你有可能会于一种可行的方法失之交臂。

11. 一直都要去寻找更简单和优雅的解决方案

好的程序员知道,找到最简洁的解决方案的办法就是不停的去寻找。复杂的疗法经常对导致……并发症。而程序的目标一直都是长时间的平稳的工作。

我们的想法有时候太复杂了,以至于我们经常沉浸于让想法的更新奇,而忘掉它的实用性。最简单的解决方法总是最好的。

12. 不要恐惧使用别人的代码

Internet好就好在,你所想做的没准儿已经有人做好了。当我要写一个网站的时候,我总是采用已经存在了的开源程序。何必要重复发明轮子呢?

实现一个不错的想法,并不意味着你要从白纸开始画起。完全可以修改和改进已有的方法来达到自己的目的。有时候,一些伟大的想法只是 修改自已经存在的东西。 Gmail就是一个很好的例子,它只是在传统的Email里填上了更有用的东西。

13. 不要害怕合作

一些最好的程序——或者任何有创造性的项目——都是由不止一个的杰出的人们,向着同一个目标而共同创造的。召集一支队伍,采用无论谁怎么想出来的杰 出的想法,让每一个人都能贡献其中。

14. 从最简单创造美

程序员会不断的重复使用一些代码,这些代码并不需要很“漂亮”,但是它们组合在一起却能创造出让人惊叹的程序。无论你要做什么“创造性”的工作,要 注意那些细节,特别要注意细节对全局产生的影响。

 

来自:http://www.yeeyan.com/articles/view/Rivendare/12092
原 文:Creative Code: 14 Ways to Learn From Creative Programmers

这篇关于代码的创造性:向程序员学创造性的14种方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261037

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain