代码的创造性:向程序员学创造性的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种方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/book_soniced/article/details/5564521
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/261037

相关文章

Java 中的跨域问题解决方法

《Java中的跨域问题解决方法》跨域问题本质上是浏览器的一种安全机制,与Java本身无关,但Java后端开发者需要理解其来源以便正确解决,下面给大家介绍Java中的跨域问题解决方法,感兴趣的朋友一起... 目录1、Java 中跨域问题的来源1.1. 浏览器同源策略(Same-Origin Policy)1.

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

python3 pip终端出现错误解决的方法详解

《python3pip终端出现错误解决的方法详解》这篇文章主要为大家详细介绍了python3pip如果在终端出现错误该如何解决,文中的示例方法讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下... 目录前言一、查看是否已安装pip二、查看是否添加至环境变量1.查看环境变量是http://www.cppcns

Linux给磁盘扩容(LVM方式)的方法实现

《Linux给磁盘扩容(LVM方式)的方法实现》本文主要介绍了Linux给磁盘扩容(LVM方式)的方法实现,涵盖PV/VG/LV概念及操作步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1 概念2 实战2.1 相关基础命令2.2 开始给LVM扩容2.3 总结最近测试性能,在本地打数据时,发现磁盘空

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.