梦之所寄,行之所为——地狱之门就此洞开(读梦断代码有感)

  在博客园的精华区看到一篇名为“程序员,对自己好一点”的文章,颇有感触。我只是初涉这个圈子的一个小小的实习生,却也觉得对于程序员而言:累,加班工作,吃青春饭…。为什么要把自己弄得如此狼狈?为什么沦落到“连民工都不屑”的境地?…

  今天终于看了韩磊老师翻译的《梦断代码》,英文原名是”Dreamingin Code”。很梦幻的名字,很悲戚的故事。译者穷一年之功翻译了这本仅300多页的书,看了之后不禁为那个行将就木的Chandler扼腕叹息。作者ScottRosenberg讲述了OSAF团队在01到05年间为了他们那个改变世界的梦想,不断经历挫折又不断克服的历程。他们所设想的是一个近乎无所不能的个人信息管理器(PIM):让人们能够自由地这个和数据,方便灵活地管理琐碎的个人信息。不得不说,梦想是伟大的,愿景是诱人的。可是纵使有顶尖程序员,有巨资的投入,有呕心沥血的经营,最后还是以仍无定形而告终。一个曾经立志于超越Outlook的开源项目,最后的无疾而终,似乎告知着我们在软件的花园中,即使梦想足够绚烂,即使灌溉足够充分,甚至没有绽放就枯萎的不计其数。软件开发,着实不易!

  我很是能理解程序员本能怀揣的那个改变世界的梦想,正如书中所说:“HelloWorld”程序亦无所用,但是却能够蛊惑人心;它唤起每个新手心中最乐观的一面,让机器做任何事情!当初的我也是为C中printf出来的字句激动了好久。然后就大言不惭地说以后我要写个什么什么软件用来干什么干什么,至今也不见一点动静。真正要开发一个全新的软件时,程序员们的宏图大志在面对一个个横亘在自己和梦想之间的大坑之后,很容易便被消磨殆尽;即使残存,也会渐渐疲乏于应付接下来未知的漫漫征途。

  弗里德里克•布鲁克斯的一个看似悖论却又让人无法辩驳的论断说道:往已延误的项目中补充人力,只会使其继续延误。在书中说了很多导致Chandler项目进展困难的问题,但到底什么是导致它失败的根源,ScottRosenberg并没有为我们指明,想来是他自己也不能够断言吧。说到这里,我不禁又想到了之前试着翻译过的软件开发的12条敏捷宣言,其中有一个就是”Simplicity--the art of maximizing theamount of work not done--is essential.”。就我的理解而言,就是选择那些最有把握且最为贴近根本需求的功能。乍一听,好像和Scott的“实用最小主义”的案例有所重合。用最合适的人,找到最确切的目标,制定最恰当的计划。

  开发软件的过程中面对着很多问题,而且都是不可避免的问题。书中有这么一段话:当你抓起软件,手中全是沙子。就在你站在那儿尽力而为的当口,沙子开始从指缝中漏出去。10年后,只剩下几粒沙,那就是你要应付的事。你的任务是尽可能握紧拳头。不管什么样的编程,小至简单的排序,大至开发的软件,开始coding的同时就必须做好与bug周旋的准备。我承认我不是一个优秀的程序员,我总是在即将开始写代码的时候踌躇满志,碰到难以解决的bug又灰心丧气甩手不干。最直接的后果就是代码能力毫无长进,每每见到代码帝仍旧崇拜得五体投地。

  马上就要开始的teamproject对我们而言都是一个全新的体验,当然全新也就意味着挑战。知道未来的 道路上必然会荆棘满布,我们将携手共进。书里面的一些话给了我一定的启发:

  • 软件的灵活性只存在于思想中,每一行代码都是毫无灵活性的。所有的想法都要寄生于结构、语言。——就像之前的师兄所说的,先在逻辑上验证你的程序是可行的。自己首先要清楚要干的是什么,建立好结构框架才能一步步走下去。
  • 程序开发常常是不断妥协的过程,人的肆意想法与机器无情之间的妥协。——机器是没有思想的,操纵者终究是人。这就昭示了一个无法逃避的问题:我们必须学会如何联系我们的思维模式和机器语言,实现完美无瑕的转换。
  • 程序员如何沟通,是技术问题、管理问题、哲学问题。——作为一个team,我们首要解决的就是互相之间的交流沟通和理解问题。如果自己的同伴都无法认可,很显然,这个team已经走到了头。

  …… ……

         各种问题等待我们去解决,各种矛盾亟须我们去调和。因为那个改变世界的梦想,因为那个纯粹美好的愿望,我们开启梦之路,我们迈向地狱之门……

 

         谨以此:纪念创举性的Chandler,纪念CodingCrazy的team project开题

                             ——Zhouxiao

转载于:https://www.cnblogs.com/codingcrazy/archive/2010/12/12/1903769.html

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

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

相关文章

MPLS-L3×××中的公网访问

1.在站点内配置一个代理服务器拥有公网IP做NAT,之后网关写到CE,CE上配置默认路由指向PE,之后PE上做静态的公网跳出路由,即在静态路由的下以跳写public关键字。之后做回程路由跳回,下一跳写站点地址即可,但是…

Vuetable-2使用全纪录

vuetable-2介绍 vuetable2是一款基于vuejs开发的table组件,支持表格加载和翻页、翻页信息展示的组件官方github | 官方API学习 | Tutorialvuetable-2包括三个部分: vuetablevuetablePagination vuetablePaginationDropdownvuetablePaginationMixinvue…

OCP-052考试题库汇总(26)-CUUG内部解答版

Which three of these must be accessible to keep a database open? A)Control file. B)All members of a redo log group. C)SYSTEM tablespace. D)SYSAUX tablespace. E)spfile Answer: ABC 赵: 1 nomount:实例已经启动,进程和内存已经分…

QT_C++

QT_C C 与 C 区别&#xff1a;  面向过程&#xff1a;吃&#xff08;狗&#xff0c;屎&#xff09; 面向对象&#xff1a;狗. 吃&#xff08;屎&#xff09; ^ . ^ 博客&#xff1a;https://www.runoob.com/cplusplus/cpp-tutorial.html 插入符&#xff1a;<< 控制符…

使用Nodejs搭建server

使用Nodejs搭建server&#xff08;MySQL MongoDB&#xff09; 环境 文件 版本号nodejs8.10.0mysql2.16.0express-generator4.16.0pm23.0.3ejs2.6.1 - 准备工作 安装上述环境依赖使用express-cli快速创建服务&#xff0c;资料 express project-name将express的默认引擎jade调…

静态路由的实现

在路由器A上做如下配置&#xff1a;router(config)#hostname AA(config)#interface f0/0A(config-if)#ip address 192.168.1.1 255.255.255.0 A(config-if)#no shutdownA(config)#interface f0/1A(config-if)#ip address 192.168.2.1 255.255.255.0 A(config-if)#no shutdownA(…

2019-08-09 纪中NOIP模拟赛B组

T1 [JZOJ1035] 粉刷匠 题目描述 windy有N条木板需要被粉刷。 每条木板被分为M个格子。 每个格子要被刷成红色或蓝色。 windy每次粉刷&#xff0c;只能选择一条木板上一段连续的格子&#xff0c;然后涂上一种颜色。 每个格子最多只能被粉刷一次。 如果windy只能粉刷 T 次&#x…

vue3实现打字机的效果

前言&#xff1a; vue3项目中实现打字机的效果。 实现效果&#xff1a; 实现步骤&#xff1a; 1、安装插件 npm i vue3typed 2、main.js中配置 import vuetyped from vue3typedconst app createApp(App) // 挂载打字机的全局方法 app.use(vuetyped) 3、界面使用 <vuet…

易中天与单田芳的区别在哪儿

单田芳先生是中国著名的评书演员&#xff0c;我非常喜欢听单田芒的评书&#xff0c;在那个没有电视机的时代&#xff0c;收听单田芳先生的评书对我来说就是一种最大的人生享受。所以&#xff0c;“单田芳”这三个字早就镌刻在我的脑海之中。一直到今天我还深深地敬仰着这位全国…

Express + Node 爬取网站数据

前言 因为自己写的demo需要历史天气的统计数据&#xff0c;但是国内很难找到免费的api接口&#xff0c;很多都需要付费和审核。而国外的网站虽然免费但需要提前知道观测站&#xff0c;城市id等信息。所以就有了这么一篇文章的诞生。 准备工作 库 作用superagent发送请求supera…

ajax省级联动 回发或回调参数无效

今天在做项目有个修改内容的&#xff0c;有个地方用到省级联动&#xff0c;现在一般都用ajax&#xff0c;很少用auto什么的那个属性了 想想ajax做省级联动也很简单&#xff0c;就开始做了&#xff0c;没想到在修改的时候提示回发或回调参数无效&#xff0c;然后去网上找了好久 …

虚拟局域网(VLAN)的管理

什么是虚拟局域网&#xff1f;虚拟局域网是一种用逻辑的定义方法&#xff0c;把两个或更多的连在交换网络上的终端规划在一起。 这种逻辑定义方法可以延伸到多个交换机。被规划在一起的终端&#xff0c;可以通过几种网络设置来规划。好像任何一种网络技术一样&#xff0c;了解…

学习antd-design-pro

学习使用react-antd-pro框架(一篇学习中的问题思考记录) 框架介绍 react-antd-pro 大体上等于 react antd pro。官网对于相关技术栈的描述如下&#xff1a; 我们的技术栈基于 ES2015、React、UmiJS、dva、g2 和 antd UmiJS: 可插拔的企业级 react 应用框架 dva: React and r…

SqlZoo.net习题答案:The Join 【Movie】

习题地址&#xff1a;http://sqlzoo.net/3.htm 表结构&#xff1a;  movie(id, title, yr, director)      actor(id, name)      casting(movieid, actorid, ord) 1b.Give year of Citizen Kane. select yr from movie where title Citizen Kane 1c.List all …

汉语编程++

没想到汉语编程又有人开始网上对骂了。一方指另一方骗人&#xff0c;一方吹自已伟大。今天群里头有人又把它翻出来了&#xff0c;刚好无聊&#xff0c;也就发明了一个汉语编程语言&#xff0c;集成到visual studio 2005的IDE中&#xff0c;名字就叫汉语编程&#xff0c;欢迎同样…

hightopo学习系列:hightopo介绍(一)

起因 新的软件主管来公司以后&#xff0c;有整整2周的时间没有搭理前端开发。就在这周一快下班的时候&#xff0c;突然和我说话了。问了我一些以前用的图形库&#xff0c;并让我开始了解hightopo。甩给了我一个全拼&#xff0c;就拂袖而去&#xff0c;留下一脸懵逼的我。 没办…

mongo指令

use admin db.runCommand({logRotate:1}) show dbs; db.currentOp(); db.serverStatus().connections db.killOp(26593769); use adbname db.tblname.ensureIndex({"sendtime":1}) db.tblname.getIndex() 转载于:https://www.cnblogs.com/ccgblog/p/8427972.html

女人,向《奋斗》中的夏琳米莱们学习什么

被称为赵宝刚导演的转型之作电视连续剧《奋斗》&#xff0c;看得我有些意犹未尽。据说佟大为与马伊俐都是本色表演&#xff0c;但是我却更喜欢剧中米莱的角色。 刚开始看《奋斗》的时候&#xff0c;以为夏琳是许晴演的呢&#xff0c;从长相性格表情连发型都像&#xff0c;像缩小…

vue项目积累

工作记录 1.修饰符及其使用 最近项目上看到这样的代码&#xff1a; child组件隐藏模态框触发以下事件 closeHandler () {this.$emit(update:open, false)},查阅资料发现&#xff0c;这是以修饰符的方式实现了“双向绑定”&#xff0c;避免了真正的双向绑定会带来维护上的问题。…

OpenCV4Android Tutorial0解析

Tutorial0是一个纯粹的android程序&#xff0c;没有opencv部分&#xff0c;是其他程序的框架基础。 有Sample0Base.java, Sample0View.java&#xff0c; SampleViewBase.java.三个文件。 Sample0Base 是程序入口&#xff0c;主要设置surfaceview和菜单。 requestWindowFeature(…