Posts Tagged ‘技术’

像 Cocoa 开发专家一样思考

February 24th, 2009

Apple 除了拥有独特的用户社区文化之外,还有一个独特的开发文化,那些优秀产品的诞生之源。想要成为一个优秀的 Mac 或者是 iPhone 的开发者,在熟悉 Objective-C 和 Cocoa 之余,你需要用不同的方式来思考你的软件的设计和代码,Think Different 的思想 需要深入你心。了解一下那些经验丰富的 Cocoa 开发者们的思考方式,这将有助于你成为一名开发的专家。如果你对 Mac 的开发非常陌生,可以看看这篇《成为一名 XCoder》。

和 Unix 社区一样,Mac 的开发也有浓厚的社区文化,在 FreeBSD 架构上脱胎换骨的 Mac OSX 让这种文化更加繁荣,在保持 KISS(Keep It Simple and Stupid)原则的基础上,一名 Cocoa 开发专家的所有的工作焦点都是他的最终用户,而不是代码的优雅算法。他们永远都从简单的、低技术含量的解决方案开始,除非你有一个清晰的理由让他们去使用一个复杂的方法来解决问题。这并不表示他们不注重技术,给用户留下一个深刻的印象才是首要的目标。

如何实现伟大的软件

避免过渡设计 – 不要坐在那里去设计一个可以把所有可能存在的细节都表述清楚的架构方案。你应该做的是,抓住那些确实存在的,用你手边的工具去实现它们。将一部分搞定之后,你会从中学到你所能做的,然后再迭代到下一个部分里面,直至全部完成。

避免盲目设计 – 不要盲目的去实现设计需求中的每一个功能。把那些需求作为一个起点,然后持续的问自己这个问题:“确实有这样做的必要么?”我们最终的目的是开发给人使用的软件,而不是去实现一份写在纸上的漂亮文档。Getting Real 中也提到过相同的观点,文档最终的归属是垃圾桶,那些与你的程序分离的描述是毫无价值的,你只需要记录关键的地方,一些机制、方法和容易忘记的东西,其它的就直接动手去做吧。

为乐趣而过渡设计 – Mac 的开发者们喜欢用那些超越工程师思维的解决方法来实现一些有趣的东西。在不影响软件的整体质量和交付时间的基础上,他们试图给彼此留下深刻的印象,这些锦上添花的过渡设计会给大家带来发自内心的喜悦,同时还能够很好的工作。

优化 – 在你知道你实际要做什么之前就去考虑优化的问题,会妨碍产品的正常开发。让一些部分先工作起来,然后把它们重组成一个相对清晰的设计,这之后再去优化性能。永远从你所知的最简化的方式开始实现,记住简化才是关键,而不是萦绕地的去思考如何优化。

专家写更少的代码 – 有经验的 Cocoa 开发者通过 OSX 的框架(frameworks)来组装需要的东西,在决定自己从轮子开始造车之前,多花些时间去研究如何使用那些内建的方法和类(classes)。自己实现的代码需要花费你宝贵的时间来维护,如果使用了内建的代码,这种事情就永远不会发生。

Frameworks 和 API – 不要凭空的去创造自己的可复用框架,让你的代码在应用程序里面去解决了实际的问题之后,再把它们整理成可以被调用的 API。如果你通过功能的猜测来创建 API,你很有可能会因为错误的设计而无法进行下去。

时刻注重体验,不管是内在的还是外在的

体验无处不在 – 老练的 Cocoa 开发者会把每一个步骤的用户体验都考虑周到。通常新手只认为那些显示在屏幕上的图形才是用户能体验到的地方,但实际上那些设置窗口中文字的用词和大小写,存储在本地的数据文件名,甚至是命令行窗口的消息文字,都是应该考虑到的环节。

用户并不傻,只是他们还有其他的事情要做 – 不要把用户当作专家,但是也不要看扁他们。那些非专家用户通常是不愿意花太多时间像工程师那样思考的聪明人,因此,让你的软件尽量做到的对初级用户友好,而不要用起来像一个专家才能完成的任务。

写优美的代码 – 开发人员的代码阅读体验是非常重要的。现在你是唯一的开发人员,但将来你可能只负责其中的一个版本,或者由其他的人来开发,也有可能是贡献业余时间的自由开发者,当你决定把代码开源之后,所有的情况都表明代码不是为一个人而写的。我们可以把发布拥有优美代码的软件作为一个期望,但至少也应该做到在最后的发布之前把代码整理干净一些,这样不至于让代码看上去越来越丑陋。

如何让软件变得更加优秀

成为用户的拥护者 – 专家们会像画家对自己的作品那样细致审视自己的软件,他们寻找任何可能的机会去改进,而不会对那些瑕疵视而不见。你不需要这样做去影响你的同事或者是合作伙伴,你需要做的就是成为最终用户体验的真正拥护者。

学会观察全貌 – 当审视软件的时候,真正的专家不会单纯的将软件分离成相互独立的部分来看待。用户最终看到的只会是一个整体,一款伟大的软件就像是科学中的艺术品。最高的目标就是满意度,为了达成它,可能需要面对一些非逻辑、和反直观的东西。

接纳反馈 – 经验丰富的开发者不会忽视那些苛刻评论和反馈。感谢那些第一批使用你软件的先锋用户,因为他们会带给你真正有价值的信息。一定不要用个人的情绪来排斥自己不愿意接受的批评。

明确哪些是不需要实现的 – 专家能够鉴别那些没有被采纳但用意良好的反馈,把用户的所有需求都实现出来对你并没有什么帮助。能够让产品成功的一个关键点就是决定那些功能不去实现,这样才能让你专注的将剩下的功能打磨的闪闪发光。

我们建立规则,我们打破规则

“给用户带来真正伟大的东西” - 为了达到这一目标,上述的规则都可以被打破和修改。有一点需要铭记,享受你所做的事情,它会完全反应到你的作品里!

本文翻译整理至 Scott Stevenson 的 《Thinking Like a Cocoa Programmer

7种改变一切的技术

October 9th, 2005

Business 2.0提出了这7种技术,声称可以改变一切:
  • Ajax让WEB也像普通软件;
  • 生物技术在制药上很有用;
  • 深度WEB搜索发现隐藏起来的互联网;
  • 高清晰度电台;
  • 带有Wifi功能的手机;
  • 微型燃料电池;
  • WI-MAX大范围的无线连接。