先思再行 闭着眼睛编程

摘要:解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。

你会花多少时间思考如何编写代码?

乍看这是一个引人思考的深层次问题,在编程专业中常有这样的误解,软件开发就是写代码。软件开发实为一门艺术,而代码仅仅是通往艺术之门的工具。好比燃料和画布是画家的工具一样,代码的目的是实现某种策略和思路。对程序员来说,他的目标是开发出完整的软件系统,按照需求完成各个功能模块或许是某种无形的思路、特性。比如一个深思熟虑的架构、明确的内部组织和代码质量,最后将这些进行整合。画家每隔一小段时间会停下来重新评估进展和绘画,看看是否达到自己的要求,程序员也一样,必须定期审查代码、查看进展、检查思路是否实现。

那么你平时是如何工作的呢?是否确定工作区后就埋头苦干?什么都无法阻止你的前进呢?如果这个描述很适合你,那么你做的一切都有可能是错的。

所有好的软件都有共同之处——他们都设计精良。同样,大多数失败的案例也会有相同之处——缺乏结构和视觉上的盛宴,最终导致崩溃。软件开发是一项智力活动,这一切都归结于实现的结构和在混乱中找到开发软件的最佳理念。

我做过一个非常有趣的观察。在我第一年的编程生涯中,我设法在规定的时间里开发出大量的代码。结果大多数代码都需要重新开发、设计甚至是丢弃。速度提高了,而效率却明显下降了,欲速则不达。随着的时间推移,我学会一小步一小步前进,在开发前进行仔细分析思考,然后再开始开发编码。结果发现代码生成速度下降了好几倍,而成功率几乎达到100%,是不是有点戏剧性。我越来越多采用这种策略进行编程,我没有坚持把时间直接转换成代码量。事实上,我经常每天只写几行代码甚至有些时候会再删除几行。反而让我的代码从整体上更加简洁、效率更高。

许多程序员都体验过这种黑暗感觉,当你看到许多大大小小的缺陷都掺杂在一起的那种混乱,当走到这一步再回头重新修改设计代码,你会意识到为时已晚并且是毫无意义的,因为你继续下去的工作本质上已经是被丢弃的。

对此,你还能做什么?

事实上,你可以!学会把更多的时间用来思考并且减少代码输入。我发现长时间的盯着屏幕并不会帮助你找到解决问题的方式。当思绪被卡住的时候,我会放弃继续工作,离开电脑和所思考的问题。当我漫步在公园和一些安静的场所时,常常会想到一些非常棒的思路和理念。实际上你可以试着闭着眼睛编程,灯光和周围的一切都不会影响到你,片刻的休息会给你带来轰动的、突破性的思路。 我最喜欢的地方是浴室,它可以让人放松和平静下来,听到照亮内心的那些非常安静的想法和灵感。

解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaScript复习

ES6字符串方法: //console.log(String.prototype);var str "abcdefabc";//console.log(str.includes("a"));//结果true//console.log(str.includes("abf"));//结果false//console.log(str.startsWith("d"));//false//cons…

STS的安装教程-鹏鹏

STS全称Spring Tools Suite。 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的xml配置文件,而是由工具自动生成。STS有两种安装方式,一种是直接在E…

linux逻辑卷管理

2019独角兽企业重金招聘Python工程师标准>>> 摘要: Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符…

github 如何设置项目的语言显示

github 会根据一个项目文件最多的那个种类的文件显示为对应的语言项目 如果想让整个项目显示为 HTML 项目, 需要进行以下步骤的设置 1.在根目录下创建一个文件 .gitattributescreate .gitattributes2.在 .gitattributes 内编辑以下内容: *.js linguist-languageHTML…

postman界面变成了左右结构怎么办

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 在左上角 file -- settongs中设置一下:

1.springboot:入门程序

一、Spring Boot 简介 官网英文: Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. We take an opinionated view of the Spring platform and third-party libraries so you can get st…

javax.ws.rs.NotSupportedException: Cannot consume content type

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如题:javax.ws.rs.NotSupportedException: Cannot consume content type 解决:使用postman发送 post 请求访…

kotlin使用spring data jpa(一)

2019独角兽企业重金招聘Python工程师标准>>> 简单查询 spring data jpa是spring全家桶成员之一,用于操作各种数据库,下面写一个查询订单的简单示例 引入sqlserver驱动包及jpa所需包implementation(org.springframework.boot:spring-boot-star…

csvn(apache+svn)管理工具搭建

系统环境:centos7.4一、服务端下载这个文件并解压(如果打不开,请下方留言)https://pan.baidu.com/s/1miwdBc81、安装jdk,上传到服务器上,解压[rootslave2 opt]# tar -zxvf jdk-8u91-linux-x64.gz[rootslave2 opt]# vim…

编程复杂性等级划分

摘要:相信开发人员一定对初级、中级、高级软件工程师这类词汇很熟悉吧!你们是否对编程进行过等级划分?这个又是如何划分的呢?本文作者把编程复杂性从简到难化成27个等级,你同意这样的划分吗?通常来说&#…

东方程序员怎么看西方程序员

摘要:东方程序员与西方程序员,彼此心中是什么样子呢?本文收集了东西方程序员对彼此的看法与各种印象,对于西方/东方程序员,你留有什么印象呢? 本文是作者根据StackExchange上的一个讨论贴:东方程…

Android开发 - 掌握ConstraintLayout(一)传统布局的问题

在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面。随着ConstraintLay…

IDEA项目找不到浏览器报错的情况

调tomcat的时候,它会调用浏览器,浏览器关联如果有问题,肯定是会报错的 要是测试的时候,就是浏览器的问题,重新把浏览器装一遍让他自己重新关联一下应该就行了转载于:https://www.cnblogs.com/Koma-vv/p/10156478.html

CSS中的px与物理像素、逻辑像素、1px边框问题

一直不太清楚CSS中的1px与逻辑像素、物理像素是个什么关系(作为一名前端感觉很惭愧 -_-!),今天终于花时间彻底弄清楚了,其实弄清楚之后就觉得事情很简单,但也只有在弄清楚之后,才会觉得简单&…

平滑数据迁移,不影响服务

为什么80%的码农都做不了架构师?>>> 转自:http://www.10tiao.com/html/249/201703/2651959992/1.html 转载于:https://my.oschina.net/jzgycq/blog/2872104

NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

最近一段时间有些事情耽搁了更新,抱歉各位了。上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程。我们来回忆一下上一个项目的整个流程:当服务端启动后,绑定并…

Centos7防火墙设置

查看防火墙状态 or rootlocalhost ~]# systemctl status firewalld / firewall-cmd --state 启动防火墙 [rootlocalhost ~]# systemctl start firewalld 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld 设置开机启动 [rootlocalhost ~]# systemctl enable fi…

java面试题文档(QA)

– 基础篇 1、 Java语言有哪些特点2、面向对象和面向过程的区别3 、八种基本数据类型的大小,以及他们的封装类4、标识符的命名规则。5、instanceof 关键字的作用6、Java自动装箱与拆箱7、 重载和重写的区别8、 equals与的区别9、 Hashcode的作用10、String、String …

第四次软件工程作业

关于 石墨文档客户端 的案例分析 作业地址: https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 第一部分 调研, 评测 1.下载并使用,按照描述的bug定义,找3~5个功能性的比较严重的bug。请用专业的语言描述(每个…

Apple System: Error: ENFILE: file table overflow

2019独角兽企业重金招聘Python工程师标准>>> 在MAC上跑nodejs,遇到了一个问题:file table overflow 主要意思就是说文件打开太多了,超过了限制,产生这个问题主要是苹果操作系统的限制。 echo kern.maxfiles65536 | sud…