私活-深陷其中的项目
写在前面的话:
最近工作上比较忙碌,先吐槽一下,以解近来的郁闷之心情。我们在软件方面会面临如下几大劣势:
- 计算机方面,我们与西方国家(说英语的国家)相比有着先天的不足,因为计算机的键盘包含了英语的所有26个字母、而未包含一个我们汉字的偏旁部首。中文也是世界上最优秀的文字,但在计算机方面确实不如由26个字母组成的英文来得方便。这在根源上致使我们在学习计算机方面有着天然的“屏障”。
- 在意识方面,我们往往特别在意和重视硬实力重视硬件。在我们的思想中会觉得一台服务器的价值远远大于一张光盘可以容纳下的软件。在很多人眼里软件还需要花钱,那真是太不可思议了。一张正版软件光盘几十元,那也是光盘的价格,而不是里边所包含的软件的价格。
- 在知识产权方面,盗版似乎合理合法。从我们认识电脑就一直用盗版的OS,用盗版的software,看盗版的电影,读盗版的书籍。总之,盗版无处不在,盗版伴随我们左右。我们的思想里总不认为脑力劳动的成果是有价值的。所以,这种环境下忽然有一天发现软件需要购买,会感觉“太不公平”了。
- 思想方面,总是急攻近利,总想立杆见景,想在短期内取得成绩,以至于基础与理论的知识不愿意学习。领导与老板天天催着一年、几个月甚至几天拿出成果来,让他们能看到东西。如此以来,国外的一些开源网站往往是我们最经常光顾的地方,也是我们号称先进技术的出处,更有甚者,把国外开源的东西拿来后号称是他们的“技术机密“。
- 私活,包括某些知名的私活网站上的项目大多也是白菜价格,真如鸡肋。偶有到国外项目网站接项目的人,做得好的自己拉山头单干,其依靠的是RMB与$的汇率差。
- 以上的东西带有个人的一些情绪色彩,仅是我个人的偏见,如有不对,请一笑了之。
言归正传:
写我的私活。此项目时间已经很久,由于公司是专做地图方面的。后来在QQ群里有想做GE二次开发方面的东西。于是聊了起来。也想通过做一个小活提升自己的技术,通过小活来促进自己的学习。所以决定与甲方合作共同开发此项目。
需求:由于甲方工作需要,需要经常野外考察。考察时带GPS与DV分别记录经纬度与当地情况。回到办公场所后GPS与DV文件的对应是一项比较烦重的工作,经常找不到这个DV在地图上哪个地方拍的。现需要一软件将DV与GPS通过时间同步起来。一句话概括,就是看DV的同时可以看到其在地图上的轨迹,类似模拟导航。
技术:当时他们想用ApplicationGE接口来开发,通过一段时间的熟悉后发现ApplicationGE是google早期的二次开发接口,出了版本1.0后就不再维护了,考虑到平台的兼容情google 出了google earth com api的JS版本,Js版本一直更新到现在。最后说服客户用这个开发。语言选用我从来没搞过的C#来做。
价格:甲方说2W,我说2万太少,至少要4万。经过几次的交锋后软件开发出身的我显示出了其固有的软弱性,最终屈服了。感觉也没多大工作量,最多两个月的业余时间即可完成,2W我接了。
过程:
第一阶段1.5个月。其中GE com api的基本功能找了一个这方面的有一年工作经验的小伙子帮我做,支付2K给他。虽然后来被我推翻重新做的,但他提供的C#的代码给我很大的启示与参考价值。
第二阶段2.5个月。问题出现在接下来的一次碰面,客户要求与我见面,称2W支付给我前一定要与我见个面。于是我请假跑到甲方的城市待了3天,还见过他们的大老板。后来甲方要求我实现离线功能,即不连接网格仍然可以实现地图与DV的同步。于是乎,在离线方面,我花了大量的时间研究,甚至拖了两个月,最后与甲方协商,做一个简单的离线版来应急用采用的技术就是过时的applicationGE。但离线版仅做应急用,很多功能实现不了。
第三阶段1个月。后来甲方又提出支持单个图片浏览、支持全景视图浏览、lisence注册等功能。全景视图与公司业务毫无关系,后来在网上找一高手来做,大约三天完成,支付1000元。
总结:
- 稍大一些的软件,其需求的不可控性展现出来。一开始软件开发者往往无法准确把握需求,甲方在没有看到东西前也无法想到将后续的需求。后来增加大量的新功能,而又无法增加项目金额,兼职项目倒是可以接受,如若是全职,这样的项目很容易流产。
- 对于自己不熟悉的东西最好不要碰,否则你费9牛2虎之力研究几天不如业内高手几个小时的成果。
- 搞技术的人在商务谈判上灵活性欠缺太多,其实本项目完全可以在后期加钱的,但一想到兼职就没好意思开口。
- 本人的责任感还是很强的,曾几次wife建议我give up this project,但我一想拿人钱财给人做事,当初既然答应了,再不情愿也应该完成。之后应该吸取教训,不要重蹈覆辙。
- 过时的东西最好别碰。软件中需要获取MOV文件的播放时长,在Microsoft vista之后的版本里,用shell类很容易的获取,但在XP及以前的版本里,就无法得到。最后不得不启动外部的ffmpeg来获取。ApplicationGE是google 最早的针对GE的二次开发api,仅出过1.0,由于不支持跨平台,最后give up。而用可移值性更好的js作为接口。所以做离线版本用applicationGE的过程中,遇到太多的版本不兼容的问题。特别多,我就不一一列举了。
以下是部分截图: