一次采用DJANGO开发应用的悲剧

2012-09-01 17:02:18 +08:00
 zyyzj
典型的把“锤子当成榔头“的案例。决定这个过程记录下来,希望给同行”如何更正确的使用DJANGO"带来一些参考价值。如果使用“AAA如何用BBB来实现,遇到CCC问题”这个记述体,显得太干巴巴太无趣,因此我使用“自传小说体”的手法来记述,其中更夹加了自己的行业经验的一些私货在里面。


## 背景:
我:十多年的程序开发,从事过的领域跨度非常大,正处于再次创业阶段;

死党(除了女人外什么都可以共享的好友):风电行业设备提供商,天生的销售,自称为:技术员中最懂业务,业务员中最懂技术,最熟练的软件技能是QQ,TAOBAO。1年前因功高震主被原老板排挤出门,忿而自定门户,经1年折腾,頗有成就,业务隐然赶超原公司。

我们一起租了一层楼,除了各自工作和晚上各回各家外,平是都是泡在一起。


## 缘起

事情缘起于二周前的某天。

晚上7点多,死党突然跑过来问了一堆关于EXCEL的高级使用技术,甚至包括宏如何定义和使用的问题,记得当时我正专心写产品规划,虽然奇怪得要命,也就随口应付几句了事。

晚上10点多,回家前去他办公室溜达时,发现其正在与一堆EXCEL表以及N个EXCE汇总小软件较劲。这种诡异的现象我当然不能放过,立马凑了上去:“你在干什么呢?”

接下来,我在听了20分钟他想要通过EXCEL实现的一些古怪的功能后,总结了一句:你不就是需要一个销售汇总系统嘛。

“对对对,就是销售汇总系统“,听到这个名词,死党黝黑的脸膛兴奋得发出了红光,如同喝高了一般。

”这事你不行,我来“。我拍拍他的肩头,示意他从老板椅中起身。

展现在我的是一个手工管理的销售系统:3-5层的目录结构,平均每层有7-10多个下级目录,分布其中,加起来约有数以百计的EXCEL文件。

死党站在我背后,估计是一脸牛B地描述着他所建立的EXCEL模板有多么多么完善,我的内心,却是为他当年没有好好去上数据库基础课程悲哀不已。因为我需要在N个不同层次的目录来回切换打开N几个不同的表,组合在一起,才能理解他描述的业务流程。

等我咬牙切齿地把关键表的字段和内容都过了一遍后(其间充斥着我对他设计表结构能力的吐嘈),已是接近晚上12点。

”交给我吧,明天我帮你搞定“。

听到这句话,死党那原本被我的吐嘈打击得黯淡的脸瞬间再次发出了红光。手舞足蹈地出了门,手舞足蹈地进了电梯,手舞足蹈地坐进了大奔的驾驶位。更大的房子,更好的车子,更多的妹子,仿佛一切即将实现。以至于一路上,我不断提醒他注意前方,不要总侧着头对着我描述他伟大的商业计划。
19701 次点击
所在节点    Django
75 条回复
iiduce
2012-09-01 17:10:38 +08:00
这是要写小说吗,怎么没看到django什么事?
PrideChung
2012-09-01 17:14:17 +08:00
估计是要写个小长篇了,但愿不要太监。
fen
2012-09-01 17:17:28 +08:00
占座,等楼主更新。目前没发现 django 的影子
zxy
2012-09-01 17:21:49 +08:00
bhuztez
2012-09-01 17:29:38 +08:00
目测LZ使用了QBE

http://versae.github.com/qbe/
DaniloSam
2012-09-01 17:49:58 +08:00
占座
paloalto
2012-09-01 17:52:24 +08:00
希望不是坑
sin2624
2012-09-01 17:54:08 +08:00
求榔头和锤子的异同…
pinkman
2012-09-01 17:55:53 +08:00
占座
elvba
2012-09-01 18:13:49 +08:00
不能太监啊楼主
neodreamer
2012-09-01 18:56:12 +08:00
楼主挖了个大坑,你要负责埋完啊,不能祸害路人。
zyyzj
2012-09-01 19:38:22 +08:00
@iiduce 不要着急,铺垫嘛,现实中重要的技术决策,也总是经过几近波折才定的下。
iiduce
2012-09-01 19:41:16 +08:00
@zyyzj 我最近的几个项目都是基于django,所有很感兴趣。
zyyzj
2012-09-01 19:44:22 +08:00
# 第二天

昨晚我是心里有底才会说出那句话的。

尽管有上百个EXCEL,但各种字段分类整理后,真正有用的,也就是四张表:项目表、客户表、联系人表、项目跟进表。通过“销售人员”这个关键字段把表之间关联起来。

“不就是最典型的企业应用的数据结构嘛,老子18岁就在处理这些类型的应用了"。当然了,就是再哥们,也不能这么直接打击人,因此,这话只有在心里嘀咕嘀咕。

三下五除二,整理出一个清楚的表结构。

接下来,就是选择适合的开发工具。

如果没有”长期出差在外的销售员需要通过网络访问“这个需求的话,我一定会选择VirtualFoxPro,这货天生就是处理这类企业应用的工具,但也天生就是处理单机应用的命。

FoxPro,每提到这个名词,就有一种千言万语却无从所说的感觉。仿佛那个名词与我过去的年少轻狂的青春重合了一般,太多记忆。

你见过为了竞争把当时市场第一的优秀软件花了大价钱买下却又故意抽走资源从而为自家二流的软件让道的企业吗?对了,就是微软。

你见过十五年几乎没有更新,却至今仍有一群不愿意彻底放弃使用的软件吗?对了,就是VisualFoxPro。

哈,不小心扯远了。回神,回神。

接着,我选择了FileMaker。尽可能使用现有成熟的工具解决现有问题,不存在时才选择自己开发,这是我的原则。(再次怨念,为什么当年不是苹果,而是微软买下了FoxPro。要是FoxPro正常地发展下去,特别是在2.6版本后,那FileMaker根本不会有出现的可能。)

下午约2点时分,我把整理好的样表和一份中文版的FileMaker试用版交给了死党:“既然你肯花时间研究EXCEL,那一定也可以花点时间研究下这个软件怎么用,况且这个软件可以完整实现你的意图”。死党一如即往的乐观:"没问题,当年我也是技术人员"。

我当然没指望死党自称的技术能帮助他建出想要的销售系统来,当时我的如意算盘是,毕竟许多业务操作流程只有他自己明白,一些细节他自己也没有完全清楚,通过自己动手,可以理清思路,最后把一个能体现架构结构的原型交给我,我再过优化调整为可使用的产品,通过Server版的FileMaker发布到公司内的某台电脑上。外网用户通过在路由器映射访问此内网服务器。

这样一来,我不要花时间去深入了解业务流程,死党能体现他的技术创造欲,更不需要额外的机房或服务器等开支。一切似乎都非常美好。

可,事情会向我设想的美好方向进展吗?

当然不会,否则就没这篇文了。
zyyzj
2012-09-01 19:45:42 +08:00
@sin2624 分别用锤子和榔头敲一次钉子,就知道区别了。
neodreamer
2012-09-01 21:02:48 +08:00
FoxPro 有同感。
zyyzj
2012-09-01 23:27:59 +08:00
# 第四天

隔了一天,我的文档暂时告一段落,该去看看死党的那燃烧的技术魂发挥到了什么地步。

约中午11点30分左右,我推门进入他的办公室。死党的27寸的显示器过于巨大,只能呈45度侧放在左手边上。一接触到他回过头来那神情呆滞的目光,我立刻意识到了:不管是我还是他自己,都过高的期望了其内在的技术魂。

死党,看着我,叭眨了几下眼睛,定了定思绪,喉结动了几下,正要开口发挥,我赶紧制止:好啦好啦,我知道了。先吃饭去,接下来你什么就别管交给我就行了。

一份上好的牛排,一杯鲜酿啤酒,足以安慰他受到挫折的心灵。

话题一回到他的业务,加上美食的作用,死党立刻如同打了鸡血般兴奋起来,而这次,我必须认真的听取他讲述的每一句话,如同面对真正的客户,不,现在他就是我的客户,我也立刻调整了自己的心态。

这顿饭一直吃到快下午2点才结束,我也得到了足够的业务信息。

一回到办公室,马上打开FileMaker的特性文档,逐条阅读重要的功能。FileMaker就是给不具备专业计算机知识的企业管理人员使用的,一定提供了许多方便的企业应用功能。我需要以最少的工作量完成这个系统,这很大程度上信赖于我能使用直接哪些系统功能。

权限分配,界面设计,数据结构,脚本语言等都没有问题,我想要的东西看上去FileMaker都提供了,直到“服务端发布和产品报价”。

一看到那一堆的对系统操作系统和环境的要求,瞬间勾起了早年为企业部署WindowsNT网络应用的黑暗记忆。而那个服务端,客户端授权数等加起来的产品报价,已经足够支持死党一脚把我踢出几十层楼上的窗户。

"看来,只能自己开发整个系统了”。

我叹了口气。

在我所有的专业技能中,与互联网Web应用(企业网Web应用往往有很大不同)有关的,只有Python和PHP。PHP一般是在无法使用Python的环境下才使用。而我的所有Python技能中,与Web框架有关的,也就是Django了。虽然那个经验来自于那是很早之前,还是0.96版本的时候,做过的一个简单查询系统。

所以,很自然的,我选了Django。

真想看看现在的新版本又有什么新特性啊!

新的软件,强力的特性,总是能带给我难已形容的激动,如同每每有新的妹子出现给死党带来的激动一般。

在空白CD还是2倍速刻录,几十元一张的年代,我就通过0DAY下载收集了整整一CD包各种各样的软件。其中绝大多数软件我都安装过,使用过,根据使用感觉决定保留在硬盘上时间长短。特别是与编程相关的软件,更是乐此不疲。每天必做的一件事是,晚上浏览0DAY站点,下载当天发布的感兴趣的新软件。

到后来,发展出了这样的技能:绝大多数的桌面应用软件,扫一眼界面就可判断出是什么语言写的,八九不离十。这在当时很重要,因为每种编程语言或工具,生成可执行码都带着自身的特征,想要破解某个软件,搞清楚是什么语言写的,非常重要。不要问我为什么会“想要破解某个软件”,我什么都不知道。

0DAY,又是一个难忘的名词,更是一个曾经的传奇。

知道为什么叫0DAY吗?就是号称:世界上任何软件都在能发布的当天被破解:Zero Day。你知道当年0DAY有多牛B吗?据传当时要去微软,INTEL等公司应聘,只要声明你是0DAY成员,就能得到特别对待。我无法证实,但我相信。因为,那些公司那时本质上都是程序员为核心,0DAY成员则是证明你是个牛B程序员的最好标签。

全世界都有0DAY组织分部,不同分部的专攻不同,分别擅长破解不同类型的软件。各个小组抢着发布最热门软件的第一个破解版本。只为证明你比别人牛B,只为热爱计算机。那时,0DAY就是我们的圣地。至于中国,呃,不提也罢。

再后来,商业利益渗入后,一切都变了。过于危险的力量被导往不正确的方向后,终于迎来了恶果:那次全球各国联合大清除。从根本上瓦解了整个0DAY,因为没有人愿意被打上罪犯的标签。

再后来,呃,打住打住,又远了,回神,回神。

咦??刚才我说什么了吗??我什么都不知道。

回到DJANGO。

尽管我事实上对DJANGO的了解没多少,又是来自很久之前的版本。但,凭着自身的PYTHON及综合经验,我有足够的自信对死党说:三到五天,给你一个可测试的版本。

男人最得意最有成就感的是什么时候?

就是身边的另一个自认为也是很强的男人能把身家性命相关的难题交给你,相信你一定能解决的时候。

用DJANGO,是错误的选择吗?

不,绝对是正确的,如果不是接下去的我的另一个选择的话。
daweiba
2012-09-02 00:12:31 +08:00
赶上直播了
CoX
2012-09-02 00:23:03 +08:00
好了,Django出场了
kojp
2012-09-02 04:12:26 +08:00
好吧,越来越有豆瓣的气氛了。LZ狗昂。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/46657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX