Thinking
程序员那些事儿
May 24th
没有最好,只有更好。
前不久,和北京的一个同事讨论一些问题的时候,他突然说:“很高兴自己是做开发的,特别是Web开发,我很喜欢这个行业。” 当时,我凝固了,我想这家伙不是写代码写傻了,不过,随后我回了一句,我也喜欢。哈哈~~自己又是一阵诡异的傻笑。这是我做开发这么长时间以来,第一次听到有朋友说喜欢这个行业,也是自己第一次承认自己也喜欢开发。
当然,这篇文章主要是写给非程序员的人,来了解程序员这个工种。
我是一个程序员(开发工程师),我极力的用其他工种的思维来思考那群程序员。
1、我提出的需求会不会被他们拒绝,我的需求是不是有些离谱?
不,程序员不喜欢拒绝你的想法,越有难度,越有挑战,你的需求也永远不会离谱,在他们看来,需求方的想法很少“正常“过。以前,我在一个香港人开的公司的时候,老板说他要做个像银行一样的叫号机器,还要打印和银行一样那种纸条,说是要卖20W。结果,还是被我用WEB做出来了,最后这个代码卖了10W。
2、我的文档写详细了没?不知道他们理不理解我的想法?
在程序员看来,需求方(客户)的想法永远是模糊的,抽象的。我们的工作就是把抽象事物实例化,具体化。还是叫号机的例子,我一开始就想,就喊我一个人,要搞定银行花了那么多钱做的叫号系统,有点狂想。和老板交谈后,老板说,不管怎么样,只要有声音,如果排队的人有次序,成本最便宜就可以了。得,这就好办,最后我还给他弄了个男女声版的叫号系统。
3、我还有很多想法,要不要告诉他们?
当然要说,越早说越好。早一点告诉我们,总比晚说好,不然他们会发出奇怪的语气助词,并用010的眼神说,“啊!原来你要做成这样。”,即使,有个想法没有做成功,但有一天可能他们会说:“嘿~~上次,你们说的那个想法还想要吗?我们现在可以实现了。”。当然沟通是最花时间的,更何况要把你的想法告诉一堆用120码速度思考问题的”疯子“。高速路上不太好换路线,错过了那个岔路口,要绕很久才能出高速,再上高速,方案的改变需要成本,越早告诉司机要去哪里,越好。
4、技术实现成本和需求强烈程度哪个优先考虑?
在这个时候,你可能被问,你一定要求这样做吗?这是时候需要慎重考虑这个问题。程序员们常在时间,性能,成本,可扩展性之间追求一个平衡,追求性价比最高的解决方案。
5、能不能实现?要多久?
这是我经常被问的一个问题,一般在回答不能实现的后面,我会说你可以这样做。
总之,这是一群可爱的程序员们,他们的世界充满着冒险和刺激,每天都在对付疯狂的需求和诡异的问题。
技术交流会
May 5th
只能说是很久以前了(呵呵,因为没把这件事写入Blog),所以就不介绍了,过期作废。
这样的活动还是不错,目前已经组织了两次了:
我参加了第一次的交流会,我做的PPT是《线程飞扬》
相关活动的文章有:
第一次
http://www.longtask.com/blog/?p=482
第二次
系统开发
Apr 27th
有好的团队,才是保证系统开发顺利的前提。
开发用到的是技巧,而不是技术。
∞
我们与其说A君有丰富的经验,不如说A君有丰富的技巧,擅长于开发。如果A君不但能够做好本职工作,而且能帮助其他人做好工作的时候,A君就可以领导其他人一起开发。
其实一切都很简单,狩猎最厉害的人应该当族长,族长的回报是把自己经验和多余的猎物给那些收获不多的人,这样才能维持整个种族的延续。
下面我们来讲讲开发的技巧:
操作系统,数据库,缓存等等这些,都是解决某一个或者某一类问题的方法。
未完待续~~~
团队建设
Apr 25th
甲:这个能搞定吗?
乙:能。
甲:需要多长时间?
乙:N天。
当你处在一个好的团队中的时候,你应该也必须感到欣慰,因为这来之不易。
在很多产业里,员工的经验就是企业的财富,如果你有一个有经验的团队,那这将是公司巨大的财富,他们是你的坚实后盾。
团队里有很多种角色,需要不同层次的队友,正因为大家关注的不一样,努力的方向不一样,大家各司其职,又相互依赖,为了共同的一个目标结合在一起,这样的团队是无坚不摧的。
在此,我不得不去嘲笑国家的教育体制,悲哀之极。
我想大家应该熟悉木桶理论吧,不熟悉的可以补下课。
木桶理论:指的是企业的整体水平取决于企业各项具体能力中最弱的一项,就像一只木桶,装水的容量最多只能达到所有挡板中最短的挡板的高度。
下面我做个比分,把团队的各种元素和木桶的各种元素联系起来:
- 团队的成员就是木桶的木板
- 成员的能力高低就是木板的长短
- 成员之间的默契度就是木板之间的耦合度
- 成员的效率就是木板的宽度
- 木桶能装液体的体积,就是团队的极限
- 从木桶里经过的液体的质量就是成本。
- 木板就是公司的地盘
- 木板的面积就是成员的待遇
- 木板的材质就是成员的底蕴和品味
如此看来,这个似乎成了一个有趣的游戏,成功的把理论应用到了团队管理上来了。
下面从游戏中得出的结论:
- 用数学的方式,我们得出了一个结论,大于或者等于3个成员的时候就叫团队。(我纯粹瞎说的)
- 当项目成立时,需要计算这个项目到底需要多少人,总不能喝口水用桶吧。
- 木桶可以斜着装液体。
- 这个木桶也可以用来装SHIT。
- 木桶如果漏水,可以放到水池(拓展,活动,聚餐)里泡会。
- 木板还是古董的好,能熬到现代的都是好板。
- 木板也需要保养(培养),别让虫吃了。
- 换块木板是很危险的,除非能把桶斜到一边,那块板沾的水越少越好。
- ……
简直太有趣了,我写这篇文章的时候也不会想到。显而易见,大家就知道如何去打造一个团队了,其实我也在学这个新发现,但愿是,可能和别人的思想不谋而合吧。
也许就验证了那句话:“小故事大道理”
这个不过是一个引子……
还有很长的路要走,这个世界没有绝对的正确,任何静止都是相对的。
相关知识:
木桶原理
反木桶原理
新木桶定律
木桶歪论
写在项目下线后
Apr 22nd
最近两年前开发的那个项目下线了,回想起两年来对这个项目做出的努力和从这个项目所获得的收获,感到无比的庆幸。
刚毕业后找了个小工作,自己摸爬滚打了好一整子,一顿瞎搞,虽然也有点小成,但总觉得想学到很多,想施展更多。
在这样的一个情况下,我加入了这个项目,虽然有件事情来得太突然,自己都没有预料到,但总归一切变好,自己始终没有放弃,一直低调的坚持下来,所以我很感谢当时在我身边的每一个人的关怀。
完整的经历了整个项目,虽然这个项目只有两年,但足以让我全盘把握,了解了并掌握了整个项目的开发,受益匪浅,估计还可以使用好几年:)
其实项目本身好无价值,贵在我们在项目上所花费的心血,所赋予的期望和所得到的回报,所以这是我人生的一个转折点,我踏进了项目开发的大门。
下面会分小块来讲解我的感悟:
各站点的Open API集合
Jul 2nd
Google Maps
Google Search API
Google Ajax Feed API
Facebook API
Digg API
Flickr API
YouTube API
Delicious API
Windows Live API
Yahoo Search API
Feedburner API
Audio Scrobbler API
Upcoming
MediaWiki API
相关文章
http://code.google.com/intl/zh-CN/labs/
http://www.pingable.org/the-top-15-web-apis-for-your-site/
PowerDesigner导入SQL生成数据模型
May 8th
此方法是还原数据库设计的一种很好的方法,正所谓偷学别人的方法和技巧。
File->Revers Engineer->Database
然后选择好SQL文件的数据库类型后确定。
选择”Using script files”并选择你的SQL文件。点击确定。
基于XNA的应用的研究报告(2D)
May 8th
一、前言
XNA是什么呢?简单得来说是一个C# + DirectX的游戏引擎,同OGRE等游戏引擎一样。总得来说,XNA引擎的架构设计得相当出色,我个人认为超过了OGRE引擎,也许是我更熟悉C#吧(其实我也不太熟悉,我本人从事Java方面的工作)。
笔者最近研究了XNA在游戏方面的应用,并做一个类似连连看的2D游戏,下面讲一下我对XNA的看法。
二、开发效率
基于C#(OOP)的开发,天性拥有迅速的应变能力,开发效率自然是高的。从我编写连连可这个游戏来看,使用XNA开发游戏可以大大缩短游戏的开发时间和降低编码人员的要求,这样作为游戏开发商就可以集中力量把资源投向游戏的策划和美术等方面。
网上有人把XNA和DirectX进行比较,我想这样是不严谨的,他们更本就不是同一类型的东西,何来比较?XNA是一个游戏引擎,DirectX是一个图形处理的接口。如果把OGRE和XNA比较,我更趋向认为XNA会缩短开发时间,当然这毫无根据。
三、运行效果
由于笔者还没有做3D方面的研究,只能说XNA在2D方面的应用肯定是可以的。
笔者的电脑是:
l CUP:AMD 双核1.6GHz
l 内存:2.5G
l 显卡:集成ATI Radeon Xpress 1150,128M
这方面还没有具体实验数据,笔者想在研究XNA在3D上的应用时一起做。
四、安装问题
安装一个基于XNA框架的游戏,对客户端的要求实在是因为XNA的血液原因。首先要在客户端安装.NET框架,这个框架安装的时间不知什么原因比Java 的框架安装的时间要长很多,而且让我感到烦躁,更苦恼的是让用户不知道何时会结束安装。另外会安装一个XNA的框架,这个框架安装时间很短。
这个是个比较致命的问题,不过如果说微软的操作系统直接安装了.NET框架,似乎XNA的游戏将成为一个很不错的发展方向。
五、开发中碰到的问题
在开发中碰到一个问题,虽然没有研究3D方面的应用,不过我想这也是XNA比较严重的问题。由于XNA游戏引擎的封装,对中文字的处理方式,会使编译的时间很长,因为会为每个中文字生成贴图,当然这个问题也有替代的方法,或许也不将成为问题。
六、保密性
那么最关心的问题,代码和贴图等的保密性怎么来保证呢?这又是一个致命的问题。重写贴图等素材的加载方式,可以使素材加密。代码的安全,用混淆来解决,如果降低了代码保护性的要求,这种方法似乎可以让大家满足。
七、总结
就目前我们国家的情况来分析,实在不适合用XNA来开发一个想赢利的游戏,山寨成风,对知识产权的保护实在是没有力度,我想这就是微软加强了中国的市场,但XNA在中国的开拓的力度不够的原因所在,似乎XNA也侧重于XBOX。如果是想通过一个公益游戏来打开市场或者开拓市场我想最好不过了,当然作为一个贵族游戏的首选。还有就是XNA可以跨越PC和XBOX360平台。
由于我对游戏研究的不多,同时对XNA的关注也才几个星期,而且在C++游戏方面没有经验,很多方面都谈的不够全面,或者说是错误的,如果大家感兴趣,不妨自己研究一下,或者等待我下次更加详细研究报告。
创业失败的10个教训
May 5th
playcafe.com网站创始人Mark Goldenson写了一封很长的公开信,总结了自己从失败中得到的10个教训。
1. 尽快拿到风险投资
2. 不要做内容
3. 速度 vs. 稳定性
4. 珍惜每一分钟
5. 营销很重要
6. 精确估计发展用户的成本
7. 尽早结成伙伴关系
8. 你总是会低估支出
9. 不做没有其他选择的谈判
10. 知易行难
