编程很有意思是因为我可以做一些很酷的东西,但是实际上让我着迷的却是那一行行代码的语法和语义。保持对好代码和坏代码之间差异的敏感相当激励人,同时,
去寻找编写高效、自文档化和经过深思熟虑良好组织的代码的方法将会永远吸引着我。这便是我对所在领域钟爱的原因编程的艺术,这种奇妙的复杂物将会让你花费
一生的时间去成为大师。
续
Ruby
之后,我学习了
Java
和
Objective-C
,我开始享受到底层软件开发的乐趣。我是在一个讨
厌繁缛语言开发的社区(
Rails
社区)成长起来的,但是当我第一次接触这类语言之后,发现我喜欢上了它们。它们(和
Ruby
比较起来)是不同的语言,但
仍然具有它们特有的乐趣。以
Java
里面的
for
循环为例,当以我的高级程序语言的背景,编写了一些这样的基础代码后,发现这种代码可以更好地帮助我理解面向对象的一些实践,但同时我也对
for
循环本身也产生了兴趣。这不仅仅是优美的语言吸引了我,也是语法背后的逻辑和不同语法形式让我着迷。计算机语言,以及它们之间的差异,本身就极具魅
力。
当这学期我在学校学汇编语言的时候,获得了相同的满足感。汇编很繁琐,有时相当痛苦,但是让我去思考使用这种新的方式去实现基本的程序功能,跟痛苦相比,是完全值得的。当然,意识到自己编写的代码如此底层,也让我享受到了奇客
(Geek)
的快感。
情况变得更糟了!在今年的早些时候,当我读到
Wolf
的
程序员不喜欢编码
时,
我经历了一个很不错的自我发现过程。我确实是喜欢在编码过程中解决问题,进行优雅地创造,以及通过编码来学习,但实际上我意识到我也是喜欢编码而编码。至
少,这就是我享受
CSS
和
XHTML
的方式。我拥有大量的
Web
前端开发经验,并且最近没怎么碰到新的问题(事实上,难搞的问题和我从没有见过的
Bug
会
让我异常兴奋)。尽管如此,我仍然喜欢这些东西。比如,整理一下我完全理解的代码让它变得好看点,就像是在我的笔记本上重复地画一些卡通猫,或者是坐在钢
琴前重复地弹三个相同的音调一样,这让我感到放松。甚至仅仅去阅读漂亮的
CSS
我自己写的
CSS
,上面每一样东西都整齐有序、缩进良好,并且进行了正确的
层叠(
CSS
里面很重要的一种技术)而感到心情舒畅;相反,当我看到某些论坛的样式表里面混乱的缩进、多余的空行、被注掉的一些老代码,以及通过故意使用
错误的属性名来屏蔽掉的样式的时候,我感到难受,就像是生病了一样。
当你可以如此轻易地被激起兴趣
,就是上面这个结果。仅仅是墙上的影子就足够让你继续生活下去(看来,她对柏拉图很有兴趣)。你得不断地重新审视自己的敏感度,以便让你的声色品味与你口袋里的钞票相匹配。(你对代码或者软件的品味来自于你自己的能力水平)
这
样来讲吧,这些天我一直在思考(整个)软件开发中的软件部分。特别是软件中的用户界面设计。今年在
BARcamp
,我喜欢
Aza Raskin
的一个实验,他让所有的开发人员举起手,然后是设计人员,接着他说那些第一次举手的人在第二次也应该举手。所有的开发人员必须是设计人员。至
少,幸运的是,所有的开发人员在他们的工作中可以对软件设计发表自己的意见。
我越来越对软件开发中设计部分的重要性感到兴奋,尤其是
当我反思我对过去所做的事情在不同方面的热情与心得的时候。在
Web
应用领域,开发和设计一般是分离的。有时候,设计部分的工作在项目中被最少化了,这是
因为客户是为软件的特性买单,而不会为漂亮的设计付帐。在一个项目中,我同时扮演了开发和设计的角色,回想起来,我对只分配了两天时间来完成可视化的设计
感到耿耿于怀。这决不是两天的事情。这是一个很复杂的应用软件,需要花上几周的时间与客户交流和迭代设计。不幸的是,客户并不会因此而买单。相反,客户对
我花了几个小时的原型感到无比满意,就这样,我们有了这个产品的第一个版本。
在今年的
C4
上我有了另一次觉悟。好像很多
Mac
下的开
发软件,可能他们中的大多数都在(私下)做自己的产品。这样,他们真的必须既是设计师又是开发人员。事实上,设计是最重要的部分,并且用户体验和制造了不
起的产品看起来要比代码本身更具有热情。在
C4
的一个晚上,有人在向我描述他的工作的时候,无意中帮助我看到了这一点:编码这个基本要素是最容易的部分。
那仅仅需要几周而已。真正困难和耗费时间的是搞定
UI
的规格。
哇噢,我在想,为什么这看起来如此正确?为什么对我而言是这么的酷?哦,是的,那是因为我是从设计人员开始的。我享受开发、设计和艺术的方式绝然不同,这就导致了这三种享受之间巨大的差别。我一直在尝试整合开发和艺术(这两个方面),但是我其实应该整合这三个方面。
毕
竟,我的天啊!我们想要漂亮的代码或者是漂亮的软件吗?我生活中的另一个观点是:由于我的思想极具开放性和强吸收性,我发现我自己可以接受各种相互矛盾的
观点,有时候甚至是相反的观点。这种问题目前不会困扰我,因为我正处在探索模式的阶段,而不是在只接受我所相信的阶段,但是,当然啦,为了保持我思想自身
的一致性,当它们有点头绪的时候必须要好好的整理一下。
所以,为了后续的考虑,我按照软件开发给人们带来的由内之外的收获,简单地列
出了这个清单。我没有选择其他一些极好的价值,比如社区、开源和挑战等等,是因为这些都很难按顺序列到里面去,不过我相信你可以领会到其中的要点。这个顺
序对我而言是极度重要的,因为心理学家讲过,内因的力量更为强大,更能让你坚持。比如,一个为了想从击打和踢腿中感觉到力量和兴奋而参加空手道训练的人,
肯定要比仅仅为了健康的人更容易达到黑段水平。
编程也是如此吗?
*
代码感(译者:还记得圣斗士里面的第六感吗?)
*
编码的知识
*
享受计算机逻辑
*
享受计算机语言
*
优雅的语法
*
优美的语义
*
学习代码
*
问题求解
*
了解问题
*
获得可用性
*
完成一个产品
*
优雅的软件
*
解决人的问题
*
解决商业的问题
*
满足市场需求
*
赚钱
*
有一个稳定的职业
哪
个是最能持续激励人的收获?更重要的是,哪种动机可以制造出最好的软件?有时候我很想在这个话题上做一个很正式的研究,当我们希望软件既满足可用,又具备
可维护性,同时还叫买,而且还要满足一些其他的目标的时候,我很确信这个答案就是清单上面各种条目之间健康的平衡。我同时还很确信这种平衡性是因情况和人
而异的。现在,我已经勾画出了一条钟形曲线(正态分布),那些可以促成最佳的软件的动机位于曲线的中间部分;但是,我想实际上所有的动机在某些方面都是有
益的,并且当程序员有她自己的优先级的时候,动机自然是越多越好。
我们领域的悲哀在于大多数程序员并不会欣赏上面大部分的收获,尤其
是那些更为重要的。这个清单很有用,因为大多数编程的工作无法满足那些关心所有这些事情的人。同样地,我很好奇,如果我们每个人都从内心关心我们做的东
西,并且不会有人为了稳定的工作而去选择计算机科学者个专业,那么这个(软件)领域将会成为什么样子呢?我好奇这样会对整个世界产生什么影响?
我
想我每年都应该反思一下这种问题,以便成为一个更好的软件开发人员。尽管如此,我还是觉得我的信念已经固定下来了:越是成长,就越希望能够在一个足够自由
的环境里面创造美妙的东西。值得注意的是,美妙和自由都是模糊和主观的概念,可以任意地去理解。我只知道,在大多数的编程工作中对代码之美和软件设计之美
的妥协永远会让我感到不满。如果到最后,我选择成为一个自由开发者去做
Web
设计,以满足这种自我的生活风格,我不会对此感到意外。
最
终我会从计算机上面退休,并且用我剩下的时间在国外美丽的农场里面画画。或者是,过上在街头涂涂抹抹和牢房之间互动的感性城市生活。想象一下,当我觉和技
术玩完了的时候,接下来要去哪里将是很有趣的。但愿永远不要发生这种事情,因为我希望成为一个酷酷的
guru
奶奶,到时候给孩子们上一些编程的必修课呢!
(Fantastic guru girl !!)
分享到:
相关推荐
5. 遵循编程规范和风格指南:统一的代码风格能提高团队协作效率,减少审阅代码时的困惑。例如,遵循PEP8(Python)或Google Java Style Guide等。 6. 单元测试:编写全面的单元测试可以验证代码功能,同时也是持续...
电脑编程,或称软件开发,是指使用编程语言来创建计算机软件的过程。这是一种让计算机执行特定任务的技艺,涉及到编写代码来指示计算机如何操作数据、执行计算、处理输入和输出等。 ### 编程的基本组成: 1. **...
《Java编程艺术》是Java程序员的一本经典读物,作者高永强深入浅出地讲解了Java编程的各种技术和技巧。这本书的源代码提供了丰富的实践示例,帮助读者更好地理解和掌握书中的理论知识。以下是根据标题和描述提炼出的...
《程序员编程艺术系列之程序员编程艺术》是一本深入探讨编程技巧和思维的艺术性书籍,旨在提升程序员的专业素养和代码质量。编程艺术不仅关乎技术的掌握,更在于如何将技术运用得巧妙、优雅,以实现高效、可维护的...
《软件编程代码大全电子版》是一本专注于软件开发实践与技术的综合性指南,旨在帮助读者深入理解编程原理,提升编程技巧,并快速成长为专业程序员。这本书的内容涵盖了从基础语法到高级编程概念,为初学者和有经验的...
在编码实践中,良好的编程习惯和代码规范至关重要,这有助于团队协作和代码可读性。同时,考虑到软件的安全性,开发者需要了解常见的安全漏洞和防止措施,比如SQL注入、XSS攻击、CSRF等。 对于插件开发,需要熟悉...
通过深入研究《编程艺术:Java源程序》中的代码示例,开发者不仅可以掌握Java语言的基本语法,还能了解到如何运用这些知识去解决实际问题,提升软件开发的技能。无论你是Java新手还是有经验的开发者,这个资源都会是...
Rust是一种现代、高效、安全的编程语言,被设计用来编写可靠且高效的软件。它提供了以下特性: 1. **性能**:Rust的性能非常出色,它的速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求...
压缩包中包含的文件可能与学习和使用《汇编语言编程艺术》这本书有关,让我们逐一解析这些文件的作用: 1. DBGHELP.DLL:这是一个动态链接库文件,常用于调试工具,如Visual Studio或其他调试器。在汇编语言编程中...
Ruby是一种动态、面向对象的编程语言,以其简洁和优雅的语法而闻名。由日本开发者松本行弘(Yukihiro Matsumoto,也被称为Matz)在1993年创建。Ruby语言的设计哲学强调了简单和生产力,它融合了多种编程范式,包括...
5. **元编程**:Ruby支持元编程,即编写代码来生成代码。 6. **丰富的库**:Ruby拥有一个庞大的标准库,以及一个活跃的社区,提供了大量的第三方库和框架,如Rails、Sinatra等。 Ruby常用于Web开发、自动化脚本、...
通过学习《C++编程艺术》,程序员不仅能掌握C++的语法和技术,还能培养良好的编程习惯和思维,将编程从单纯的代码编写提升到艺术创作的层次。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程技能和...
### Delphi 泛型编程:类型安全的代码复用艺术 #### 一、Delphi 泛型编程概述 Delphi 是一种高效的集成开发环境 (IDE) 和面向对象的编程语言,最初由 Borland 公司开发,后由 Embarcadero Technologies 接手维护和...
5. **结构化编程**:C语言支持结构化编程,允许使用循环、条件判断和函数等控制结构。 6. **指针**:C语言的指针功能强大,可以操作内存地址,实现复杂的数据结构和算法。 7. **编译型语言**:C语言是一种编译型语言...
通过深入学习《JAVA并发编程艺术》,开发者能更好地理解并发编程的原理,熟练运用Java提供的并发工具和API,解决实际开发中的多线程问题,提高软件的性能和稳定性。这是一本值得每一位Java开发者研读的书。
《Java编程艺术》是一本深度探讨Java编程技术与实践的书籍,旨在提升程序员的设计和代码编写技巧。在Java这个广泛使用的编程语言中,理解和掌握这些艺术对于任何开发者来说都至关重要。下面,我们将深入讨论Java编程...
《程序员编程艺术1-37章集锦》是编程领域的一部重要著作,它涵盖了从基础到高级的众多编程概念和技术。这本书旨在提升程序员的艺术修养,帮助他们掌握更高效的编程技巧,提高代码质量和可维护性。以下是根据描述和...
通过阅读《汇编语言编程艺术》,读者不仅可以掌握汇编语言的基本技能,还能深入理解计算机系统的底层运作,这对于软件开发者,尤其是从事系统级编程和嵌入式开发的工程师来说,是一份宝贵的参考资料。尽管现代编程更...