现在的位置: 首页 > 综合 > 正文

由一句需求引发的mysql崩溃说起

2013年08月02日 ⁄ 综合 ⁄ 共 1591字 ⁄ 字号 评论关闭

废话少说直接上正文

正文

今天有有人需要我从数据库导出一份excel表,这个人是非技术人员,他的的需求是:

19号到25号选手的投票数据,导出excel格式

ok大家看清这个需求了,

我的第一想法

找到选手用户表,然后在看了一个投票记录表,

联表查选,找出19号到25号选手的投票数。

我把结果发给对方,对方很快就告诉我错了,这个不是他想要的,我正纳闷呢,

结果他说他需要的是19日到25日的选手投票数据,

第二次:

按照他的要求很快写好mysql语句,到数据库查询,不知道怎么搞的,总是没有数据,

首先我怀疑我的时间条件写的有问题,在网上找半天就是没有解决,万般无奈之下只好求助技术老大,

未果,经过再三沟通,最后发现他要的投票数据不是选手的投票数,而是投票记录的日志(对应的表也就是投票日志表,而不是投票记录表),

现在在来分析一下的他的需求:

  • 19号到25号选手的投票数据,导出excel格式

歧异1:19号 25号 是指时间而不是指选手id

歧异2:投票数据不是指投票数,而是指投票日志

但是这句需求也没有什么错误,站在任何一个非技术人员的角度来说上面没有错误,

站在我的角度来思考:貌似我也没有什么错误,如果我提要求的话估计也是这样提。

但是双方的真正需求和了解可谓是天壤之别,不得不思考,作为技术人员如何和非技术人员沟通?

正巧看到月光博客上一篇程序员的本质,经过下午的折腾,更是深有体会;再录一段,

博客原地址;http://www.williamlong.info/archives/2907.html

一名优秀程序员所具备的能力

我们可以看到,一名优秀程序员应该具备应付两个不同世界的两套技能。

理解人类的需求并提出解决方案:

  • 1. 沟通——与人建立联系的能力,能够同他人亲密的交谈,并有勇气去尝试分享自己的观点。
  • 2. 意图——从谈话中提取有用的信息,理解并使之有意义。
  • 3. 逻辑——为不懂让步的计算机整理、剔除那些人类思想中含糊而有争议的内容。
  • 4. 创造力——挖掘、转变人类的想法,从而创建优秀的解决方案。
  • 5. 构思——利用人类友好的接口和便捷的互动性来包装编程思想。
  • 6. 大局观——清楚解决方案是如何适应全世界的用户、企业以及其他,从而使你的程序更有用。

告诉计算机该做什么,并建立解决方案:

  • 1. 逻辑(再次强调)——把程序员的想法组织整理成有凝聚力的软件思想和计算机指令
  • 2. 技术——发现并理解科技黑箱(对于99%的人来说是黑箱)。
  • 3. 编程语言——学习美观的、富有逻辑的、清晰明了的语言,从而把程序员的想法提供给电脑。
  • 4. 算法——精通让计算机完成任务最高效的方法。
  • 5. 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
  • 6. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健康与可改变。

面向人类和面向硬件对象/系统的程序员有很大不同。

不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。

最后一句话很重要:

不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。

最后一句话很重要:不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。

那么怎样做好沟通?欢迎大家谈论,也请管理员手下留情

Technorati 标签: 

知识共享许可协议本文基于署名-非商业性使用
3.0
许可协议发布,欢迎转载,演绎,但是必须保留本文的署名:PHP10086博客网(PHP淮北):http://www.php10086.com,也可以邮件与我联系。据说每个程序员都应该挖一口自己的井,希望各位支持我的"井":PHP10086博客网(PHP淮北):http://www.php10086.com

抱歉!评论已关闭.