一次采用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点。

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

听到这句话,死党那原本被我的吐嘈打击得黯淡的脸瞬间再次发出了红光。手舞足蹈地出了门,手舞足蹈地进了电梯,手舞足蹈地坐进了大奔的驾驶位。更大的房子,更好的车子,更多的妹子,仿佛一切即将实现。以至于一路上,我不断提醒他注意前方,不要总侧着头对着我描述他伟大的商业计划。
20030 次点击
所在节点    Django
75 条回复
imcj
2012-09-03 09:39:07 +08:00
提醒 @zyyzj 今天记得码字。
Danfi
2012-09-03 09:42:44 +08:00
今天有几更呢
evlos
2012-09-03 16:06:49 +08:00
等更新 =w=
akira
2012-09-03 16:48:15 +08:00
lz加油,等着更新呢。
SAGAN
2012-09-03 17:05:00 +08:00
LZ什么时候更新啊,等着看后面情节呢。。
clippit
2012-09-03 19:10:52 +08:00
居然没有更新了
hzlzh
2012-09-03 19:37:55 +08:00
@zyyzj 看到你第五天有一个操作的时候(Alfred Search URL: http://stackoverflow.com/search?q=[django]+{query})
还是推荐一下你Mac下, Dash app自带的这个功能。
另外,坐等更新。
rightgenius
2012-09-04 09:34:48 +08:00
厉!坐等更新!
catsky
2012-09-04 12:56:00 +08:00
给v2ex带来文艺性,不错
zyyzj
2012-09-04 13:32:07 +08:00
# 快进

注:写这篇文的动力在于一台新的MacBook Air和一款新的应用(ia Writer)的组合,突然让我很想很想写点什么。很久没有感受过这样功能纯綷的软件,这让我回想起来永远存在记忆中的Borland的蓝底白字的TC 2.0带给我的感觉。
现在的应用软件往往太复杂,如同现在的生活一样。
原本我只想吐嘈下DJANGO,谁知双手一放在键盘上,那些过去的记忆争先恐后迫不等待一涌而出,令我自己也愕然不已。在前面几次出现的“打住,回神”,实际上都是写了大段大段的文字,出于一些考虑,发贴时给去除了。
再这么记下去真要写成小说了,周期一长,太监的可能性就会大大上升。项目开发也是如此,把握进度一定要:快、准、狠,开发周期越长,越不可控。
必竟这篇文的名称是顶着DJANGO的,所以我决定“快进”。尽量压缩与技术无关的部分,同时保持前几次的文字风格,一次就把这个帖子给结了,再另开新贴记述别的内容。

我在死党的WIN7上安装好python,django还有cywgin,git pull一下,再写一个简单的bat文件放在桌面上。测试环境布置完成。

“这么快就完成了??让我看看,让我看看”,死党叫嚷着冲进来。
”完成个P啊,许多细节连你自己都没有搞清楚“,我嘀咕了一句,才回应:”只是原型,你看一下各表的字段是否符合要求,有没有漏掉的“。

一次典型的客户互动开始。

死党兴奋地移动着鼠标,能点的不能点的,都点了一遍。我站在背后,随着他鼠标的指向,做一些业务说明。

5分钟过后,死党沉默了一会,开始吐嘈。

“这是什么啊!”
“这东西没法用!!”
“我要的AABB的功能在哪里!!!”
“这个XXX是什么意思?为什么要叫XXXX!!!!”
等等等等。

完全在我预期中的反应。

对了,天底下所有的客户都是这德行。
这么多年来,无论是什么项目,在第一次展示就得客户很高满意度的情况,几乎没有出现过。
在第一次展示的时候,客户往往倾向于关注“还有什么没得到”,另外,还有一点,客户总是认为看到的,就是实际可用的,代表着你将要交付的软件。
没有客户能理解”原型“这个词的意思,就算他们口头上哦哦啊啊的点头。

”这系统还不如我自己的EXCEL表好用呢“,死党嚷嚷着。
切,就他那个古怪的连行列都分不清楚的EXCEL,如果不是身为老板的淫威不得不填,那二十几个销售人员早就把他爆菊无数次了。
“你再录入几条数据试试,如果有重要的字段还没有建立,马上告诉我”。我转身走出他的办公室。

所有重要的字段没有遗漏,这是我想要确认的信息。刚才在我几次催促下,死党确认了这点。

从死党的角度来说,他的吐嘈点大部分都是成立的。因为,我直接使用了ADMIN来展示。而那个界面,基本不符合国人的风格和使用习惯。

我选择了定制ADMIN模块来快速完成开发,我对ADMIN的印象太好了。

好吧,终于来了。
我真真正正要吐嘈的东西:DJANGO的ADMIN模块。

我知道 DJANGO框架的灵活性不如别的框架,我也知道其开发团队也都说了ADMIN是设计为给”信任的用户"使用的。但不是有源码吗?我改源码行了吧,毕竟这次的系统没有特别复杂的需求。

事实证明,我错得非常离谱。

我TMD的干嘛要“基于ADMIN来定制“呢?如果是自己写VIEW,自己写URL响应,那么这一切都不发生,也就不会有本文。

绝对不要试图基于ADMIN定制开发,并交付给最终用户使用。

ADMIN是自我封闭的,实现指定功能的完整应用。
虽然,可以通过重实现子类的函数来改变部分行为,但是,ADMIN的开发者压根就没想过”功能扩展“,几乎没有留下一丝的余地让你能做这些。

也许是中西方的文化差异,声明的ADMIN应该被“信任的用户”使用,其实等同于:仅用于开发阶段的内测。也许这就是ADMIN被设计出来的目的,却被我借误应用在于”试图对其定制,以交付给最终用户“,这也是我在第一次发文,宣称的:把锤子当成榔头用。

以上是总吐嘈,接下是细吐嘈。

1. 权限系统

死党需要的这套销售系统,唯一复杂的,就是”用户权限“。这跟销售员和公司的切身利益有关。但凡任何个人切身利益相关的事物,总会莫名的无比复杂。这也直接的反应到系统中。

扯远一点,软件其实就是现实世界的影射,是用于解决现实世界中问题的。多才多艺,丰富的生活洞察力,是”优秀程序员“和”一般程序员“的最明显的区别之一。

我们那个年代的程序员,除了个别外,绝对是很受妹子欢迎的。爱好文学,动手能力强,学习能力强,解决问题能力强,是通用的特征。此外,个个几乎都有独特的某项技能。
记得有一个长几届的前辈,数字系博士,爱好推算买彩票,中奖的几率高得令人发指,但也没特别高金额的,几千最常见。
还有一哥们,爱好读书,家里的书多得快把自己给挤出门口,博学尤其精通各国各种历史,曾经撰写一部穿越剧性质的计算机发展史,牛B的一塌糊涂,后来,太监了。
而我,擅长做菜,尤其是海鲜类。千万别小看这一技能,这绝对是把妹第一利器,尤其达到针对不同妹子不同心情做出不同的菜的时候。
那时,每到周六日,我家中就会聚集一堆妹子,偶尔会多出几个闻风而来的狼。
海鲜味,交集着欢笑声喧哗声,飘散在整个楼层。
永不会忘记,一个周日的早上,一个妹子,一头长发,一身长裙,左手抱着一只白猫,右手提着一口小锅,出现在门口。白猫是她的心爱宠物,所以要一起共享美味,而锅,则是要打包带走做为几天的口粮。也正是她在,在我25岁心情最不好的生日的时候,陪我去海边看月亮,呆了三天。
真的好怀念,那个时候,那种心情。
呵可,鼻子有点酸。

回到DJANGO,继续吐嘈ADMIN。
twor2
2012-09-04 14:39:28 +08:00
看现场,插楼
lambdaq
2012-09-04 14:50:11 +08:00
admin挺好用的。前提是你把contrib.admin 所有代码过一遍。。
jckwei
2012-09-04 15:33:10 +08:00
从python-cn googlegroups 过来插楼看吐槽。
ZoomQuiet
2012-09-04 15:36:51 +08:00
CPyUG 团前来 Mark,,,
很早就直觉的远离 Django,所以,一直无法精确的吐糟,,,现在,可以复用鸟!
ZoomQuiet
2012-09-04 15:38:29 +08:00
@ZoomQuiet 嚓! V2EX 严重需要只看作者功能!
felinx
2012-09-04 15:58:08 +08:00
@ZoomQuiet 只看作者还不够的,另需要有脱水功能,楼主的思绪如脱缰野马。
best1a
2012-09-04 16:31:39 +08:00
- -谁写段js脚本然后把不是作者的回复都隐藏掉就好了
ipconfiger
2012-09-04 16:47:46 +08:00
@felinx 这个......
pyleaf
2012-09-04 17:05:45 +08:00
貌似跟django没有半毛钱关系~~
s_m
2012-09-04 17:59:37 +08:00
CPyUG 团前来围观

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

https://tanronggui.xyz/t/46657

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

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

© 2021 V2EX