独自一人花费了将近三个月的时间来做一个音乐网站(http://www.likenote.com ), 这对任何一个有过几年Web开发经验的人来说都不是件什么太难的事。虽然我也做了 4 年J2EE开发,但还是头一次使用全新技术来制作一个网站,这其中的辛苦却有点出乎我的意料之外。我大部分编程经验在 Windows 平台上,而这之前经过一番考察确定的技术方案,从操作系统,数据库,Web 服务器,到后台技术都是我不熟悉的。
只装过几次 Redhat Linux 我突然要去管理一个 Unix 服务器,还要作性能优化,编译内核,学习防火墙技术。
只使用过 Windows 版本的 Mysql 的我要去管理一个从未使用过的开源数据库。
只装过 Windows 版本的 Apache 的我要去配置一个完全陌生的 Web 服务器。
只撰写过一篇 Ruby on rails 文章的我(RoR 的经验仅仅限于那篇 Oreily 的教程),要使用它去开发一个完整网站。
虽然这并非很困难的事情,但是需要的是时间,我定下的开发时间是两个月,结果超出了一个月,实际花费在 ROR 开发上的时间只有3个多星期(RoR 的开发效率可见一斑),大部分时间在学习,学习上述的各种知识,它们对我来说都是陌生的,其中花费在学习服务器管理的时间就有一个多月,Rails 的学习花费了半个月(当然是读那本 Rails Book, 还有 Rails Recipes),还有 web 服务器和数据库也花费了一点时间。虽然网站的雏形已经出来,而且已经上线,但是我感觉真正的工作才开始。这将近三个月的学习和开发,自己总结了一些经验,对于那些打算独自开发 Web 项目的人可能有些借鉴作用。
1:首先也是最重要的一点:
做一件事情的热情远比完成它所需要的技术更加重要。
如果没有热情,就算是碰到一点小困难,你也会放弃,相反,就算是再大的困难你也能克服。
2:尽量不要到国内的任何技术论坛去提问,这既浪费自己的时间,也浪费别人的。
因为通常简单的问题搜索网络就能找到,反倒会招来嘲笑;复杂的问题也不会有人给你解决,通常论坛上也可能解决不了。最好的方式是自己从 Google 上搜索。(这是经验谈)
3:CSDN 上的这篇文章非常好,虽然是转载自国外的。
http://java.csdn.net/n/20060710/92484.html
其中我对第 6,11,15 条的感触最深。引用如下
15. "Build, learn, and make mistakes as you go--you'll know more about what you're doing as you're doing it, instead of before you do it." - Jason Fried, 37 Signals, advocating iterative development“一边做,一边建造、学习和犯错误——对你正在做的事情,你只有做了才会懂得更多,而不是事前空想。”——37Signals的Jason Fried鼓吹反复前进注解:国内程序员之间喜欢谈论技术的人多,真正闷头做事的人太少;各种论坛上相互争吵,辩论的多,写代码的人少。我也曾经是这样的人,很多东西都是停留在想法上,开始对 RoR 的顾虑也很多,性能啊,扩展啊。在网上搜索到很多这样的辩论,曾经动摇过我使用 ROR 的决心, 但是最终开发效率这一点最终占了上风。 其实仔细想想,你如果不喜欢一个东西,会找出有很多原因,如果喜欢它,一条理由就足够了。边学习边做的确是个好的方式,应该算是 Agile 的工作方式吧。那些考察讨论再三再开始做事的方式道象是 RUP 了。
11. "I like Google the best, they're the cleanest. Others are trying to take your attention away from what you're trying to focus on so it's counter productive to go to those sites." - Sasha, age 18, explains why it's smart to adapt to your customers instead of forcing them to adapt to you“我最喜欢Google,因为他们最干净。其他的网站则试图把你的注意力从你想要关注的东西移开。去那些网站不会有任何收获。”——18岁的Sasha指出,适应用户的习惯比起强迫用户去适应你的习惯要聪明得多6. "Traditionally, people think more is better. More may work, but it's painful, expensive, very cold-war. Think about one-downing people, underdoing your competitors." - Fried coins some new verbs“传统上,人们认为多就是好。多也许能行,但它是费力的和昂贵的,充斥着冷战思维。想想看,可不可以向用户少提供些功能,比竞争对手更简单一点。”——Fried创造了一些新提法这两条的理念是相同的,所以放在一起注解
注解:
这点的确很重要,我在开来始做网站的时候,界面设计选用了很复杂的页面模板,想到各种花哨的技术来堆砌它。后来觉得人家来你网站无非是推荐音乐,听音乐,评论,搜索,真正经常操作的就是这么一些简单功能,鼓捣花哨概念和技术的想法可能从最开始就是在远离你的用户。这的确是应该尽量避免的,如果不是读到这条,我可能也不会中途改版。
3:Ajax 看上去很美,但是它应该限制在某些特定功能的网站上(比如 Gmail, Google Map),整个网站采用它应该是不合适的。而且浏览器之间兼容的问题的确还是存在的。RoR 提供了非常简单的 Ajax 使用方式,有时候你会忍不住去采用它(Rails Recipes 这本书上充满了各种“奇技淫巧”),但是在做之前千万要考虑一下,这样做是否会给你的页面带来复杂性和服务器性能上的问题。在开发这个网站的开始,我也试验了很多 RoR 的Ajax 技术,但是后来都取消了,只保留了一个最简单的首页“最新留言”的动态显示功能。因为这个功能的确很有用。我将网站定位为一个多媒体的应用,所以采用 Flash RIA 来制作前端可能会更好, 整个网站采用 Flash 做前台比整个网站采用 Ajax 做前台更合理。原因如下:
1:Flash 比 Ajax 更成熟
2:Flash 有组件
4:如果你一个人制作整个网站,那么采用 RoR 是非常好的选择,原因当然是开发效率。整个网站从最开始有想法,到最终完成花费了三个月,其中学习时间占据了大部分,那么几个星期的开发时间就相当紧张了,如果采用 Java 可能根本无法想象。 其实搭建这么个音乐网站的想法,早在2001年就有了,我先后在论坛上推荐了四年的音乐,两年在博客上写音乐推荐。这期间我不是没有自己开发一个网站的想法,但是用 Java 实现起来太麻烦,我很多想法只是停留在脑海中,大部分时间用在考虑实现了,再加上我是个极为懒惰之人,看到那么麻烦的事情就不做了,直到 RoR 的出现,才使得这个网站得以完成。RoR 的好处在于:如果你有什么想法,你总是能很快的实现,只要你掌握了基本的技术,你就可以发挥你的想象来建设你的网站。 首页上泡泡框显示访客留言摘要的功能是我在一天早上5点醒来的时候想到的,爬起来用了两个小时就完成了它,很多人反映这个东西很好玩。
5:Web 2.0 的网站现在实在是太多,已经把整个市场搞坏了,前几天一个以前公司的朋友和几个人一起开了个公司,也是做 web 2.0 网站的,兴高采烈地把刚刚上线的网站地址给我,我一看,又是这种似曾相识的模板,似曾相识的应用。这种 Web2.0 站点的趋势就是:早期的ewb2.0国内站点抄袭国外的知名站点,后来的新进者抄袭国内已经成名的web2.0站点。如果这样的网站也有人投资那才叫怪了。 本来我也有开发网站寻找投资的想法,但是实在是想不出什么赢利模式,我也做不来这些写计划书的事情,还是自己凭兴趣做的好玩。朋友都说我的网站页面不适合商业站点,让我赶紧换了,我心里很清楚什么是他们说的商业页面模板,但是他们都说好,可我偏不喜欢。没法,还是按照我的想法来改造它吧。只要自己上班找个工作养活这个网站,或者更好的情况是,它能自己维持自己,这我就心满意足了。
6:现在的 RoR 实在是太火了,大有大家同上一条船的架式,搞 RoR 的人以它为荣,以搞 Java 为耻,估计也能写出个八荣八耻。但是它只是一种技术,众多后台技术中的一种,网站的访问者并不会因为你使用了 RoR 就给你掏钱,甚至是留下个好印象。网站的内容是主要的,掌握了它并不意为着能制作一个好网站。常言说:拥有榔头并不意为着你就是个建筑师 ,也不能让满地都是钉子。要么你去给人敲钉子为生,或者指导别人如何敲钉子,再或者找到一个好木场自己建个房子。“去 RoR 化”可能是我要做的下一个工作,把前台用 Flash 重建,采用 RoR 的 builder view 技术来传递信息。我个人感觉这个音乐网站有个好的想法,不管它是否能挣钱。首先是音乐推荐的确能给人带来快乐,做这样的网站才有趣。技术应该是实现你想法的工具,如果网站成为技术的试验品,对我来说就没有什么意思了。
未完待续