Ning's profile人牲一笑PhotosBlog Tools Help

Blog


    July 27

    Web2讲义

    胡子写了个半成品的讲义,共享一下,记得有版权的!
    August 31

    舍得舍得

    有很多想法,都想着自己来完成。只是分身乏术,现实中总要混饭吃的,忙这忙那总有取舍,于是闷在肚子里让它慢慢腐烂。
    既然如此,不如自己脚踏实地先把目前的事情做好。
     
    这年头,创意最值钱也最不值钱,与其烂掉,不如分享。
    把以前存的想法整理一下发出来,有缘者淘上一淘。如果,还是没有人做,将来有空自己再来,算是圆梦吧。
     
    希望断了退路,一门心思的时候,能够得到些什么……
    一笑,呵呵。
    December 30

    高效会议 vs 头脑风暴

    许久之前挖的一个坑,赶在年关前还债了。
     
    源于和朋友们沟通的时候似乎不那么顺畅。应该是类似头脑风暴的讨论,但是时间有限,并且习惯对一些约定俗成的东西总是“想当然的默认”。可胡子头脑风暴的习惯是从不同角度不同角色重新想一遍,表现得似乎总是“慢了半拍”,或者总在讨论高潮的时候降温。
    也许是胡子关于议题的准备工作不充分,也许事到临头总是“以防万一”的思想在主导,也许对朋友思路的不信任……
     
    如何在有限的时间之内获得成果?有多少人能够发现苹果横向切开那美丽的图案么?天才的结论也许需要白痴的过程,高效会议和头脑风暴,很有趣的矛盾。
     
    需要朋友间习惯的接受,迁就,信任,改变。多担待了,“同志的信任”……
    理解万岁!一笑,呵呵。
    December 21

    胡说中国软件外包之现状

    先抄两个小故事:

    假设在一个地方发现了金矿,来了一个人投资建了一个矿场,雇一百个工人为他淘金,每年获利1000万,矿主把其中的50%做为工人工资发下去,每个工人每年收入5万,他们拿一万来租房子,剩下的四万可以结婚,生孩子,成家立业,矿主手里还有五百万,可以做投资。因为工人手里有钱,要安家落户,所以,房子出现需求。于是矿主用手里的钱盖房子,租给工人,或者卖给工人。工人要吃要喝,所以,开饭店,把工人手里的钱再赚回来。开饭馆又要雇别的工人,于是工人的妻子有了就业机会,也有了收入。一个家庭的消费需求就更大了。这样,几年之后,在这个地方出现了100个家庭。孩子要读书,有了教育的需求,于是有人来办学校,工人要约会,要消费,要做别的东西,于是有了电影院,有了商店,这样,50年过去以后,当这个地方的矿快被挖光了的时候,这里已经成了一个10万人左右的繁荣城市。

    假设同样发现了金矿,同样有人来投资开采,同样雇100工人,同样每年获利1000万,但是矿主把其中10%作为工资发下去,每个工人一年1万。这些钱只够他们勉强填饱肚子,没有钱租房子,没有钱讨老婆,只能住窝棚。矿主一年赚了900万,但是看一看满眼都是穷人,在本地再投资什么都不会有需求。于是,他把钱转到国外,因为在本地根本就不安全,他盖几个豪华别墅,雇几个工人当保镖,工人没有前途,除了拼命工作糊口,根本没有别的需求。唯一可能有戏的就是想办法骗一个老婆来,生一个漂亮女儿,或许还可以嫁给矿主做老婆。50年下去以后,这个地方除了豪华别墅,依然没有别的产业。等到矿挖完了,矿主带着巨款走了,工人要么流亡,要么男的为盗,女的为娼。

    是财富再生体制的寓言,借用一下。天下熙熙,皆为利来;天下攘攘,皆为利往。各行各业不外如是。
    (很多情况下,都是采用第二种方法进行血淋淋的原始积累后,采用第一种方法持续发展。)

    继续发挥些。
    工人总要有些盼头吧。于是10个工人为了省力,研究起更省力的镐子,最终发明了!于是他们变成了“制作”镐子的人!他们走了,专门把镐子卖给不同的矿主。(矿主把人招满)
    矿主给工人全部换上新镐子,生产效率提高了。50年的开采缩短为25年。建设加速了,贫富差距也加速了(也许会失控,谁知道呢)。
    又有10个工人总结出了开矿的方法,发现也可以用相同的方法和工具开金矿,开银矿,开煤矿……他们找到了一份可以自己选择老板的生计。他们走了,开了公司,专开各类有色金属矿。(矿主把人招满)

    10年过去了,有个地方开了新矿,矿主过来挖人,每人每年发1万5,10个人欢天喜地的跳了过去,他们不知道的是,那是个小矿,可能两年后就开完了,而他们到达新矿的旅费,也要1万多。(矿主把人招满)
    15年过去了,有个地方开了新矿,矿主过来挖人,每人每年发1万5,10个人跳了过去,他们是幸运的,那是个大矿,至少在矿工们有生之年是不会挖完的。(矿主把人招满)
    20年过去了,又有20个工人预见到自己的日子不长了,于是他们开始向亲戚朋友打听有没有别的地方有金矿。找到了。离开旧矿,去新矿。于是,又有20年好混。
    矿主又雇了20个工人填补前面的空缺。他们感激涕零,兢兢业业,却没有想到,只有5年了……
    还有上千拿着镐子等着开矿的矿工……

    软件业来说,开发就是镐子。
    开发改进镐子的那10个,有的姓叫Microsoft,有的姓Sun,有的姓IBM,中国有实力但是坚持做下去的不多,Apusic算是之一了。定规范者可称帝王!
    专门提供开矿服务的10个,有两三个起了个时髦的名字叫“咨询公司”,剩下的都变成了产品生成公司,中国有那么一两个跟风成功,金蝶,用友云云。业务为核心!渠道为主!掌握渠道,做通者为王!业务成为“外包模式”中最专业,最高端的金字塔尖。

    这20个矿工中,有那么几个有了钱,走着第一个良性循环的道路进一步发展。

    剩下那些一门心思只会“用镐子”开矿的熟练工们,造就了目前比较普遍的软件工人市场,也组成了更方便管理的多级“外包模式”的基层。

    国内外包还是也“用镐子”为主!却很难有人能跳出“镐子工”的角色。
    工具越来越便利,使用工具的熟练工培养周期自然越来越短。国家曾经引以为豪的“人口大国”为行业消化造成的不小的压力。加上若干目光短浅,一心原始积累的小矿主们搅和。
    没有信仰的年代,通过发达的媒体展现出西方“极乐”世界纸醉金迷的生活,成就了浮躁。个人生活上又不能满足基本住和行的压力。
    能安得下的心工作,能安心工作的环境,都是如此的可遇不可求。直接造成了国内程序员干不长,国内三十五的程序员已经算凤毛麟角了。自然,能力强到可以改进工具或有能力把注意力转到“开矿”的软件人员就更少了。多的只是跟风和机械单一的熟练工……
    于是,频繁的跳槽……于是,恶性竞争……于是,怨声载道……

    这样素质的矿工,造成了矿主(发包方)的不信任,又限制了再次发展……

    坐地铁的时候听到几个即将毕业的研究生侃大山。为工作生计而烦,号称潜力巨大的软件外包。联想到最近客串的几次面试官的经历……
    有感,不禁想发发牢骚,记录一二,不想越写越多。
    多大的心胸做多大的事。中国程序人才这么多,希望早日见到中国镐子去开世界的金矿……
    经历不足,纸上谈兵之嫌。胡说八道,想当然尔,姑且一看。一笑,呵呵。

    February 12

    一个外包快速业务原型体系规约

    用客观而开放的用语、系统而严密的语言体系来描述已知甚至未知的客观世界。
    原意是想把整个物理世界映射到电子模型中去的……好大的野心啊!思忖再三,决定发发疯。
     
    先拿到外包项目上用用看。不论效率,只求效果。
    外包项目主要三类。
    廉价劳动力,低端外包,在质量可控的情况下,通过廉价劳动力的获取节省成本,以达到性价比最优;
    产品的专业子模块外包,相对于产品架构,需要整合成熟子模块,通过评估,直接将相对专业的模块交付给更专业的团队完成,专业子模块外包;
    物理需求的电子映射,一般适用于相对传统的专业领域,为了提高效率或者整合业务的需求,向电子化改造。由于项目领域的专业性以及行业的市场,导致不太可能完全复用现有的电子产品,导致只能作为单一的项目进行外包。
     
    第一类相对低端的熟练工,第二类专业而持续的项目。不详谈。
    而最后一类由于项目的多样性、业务的专业性成为目前外包特别是海外外包行业的难点。四五年的领域经验才能完整了解系统的运作,需要在相对较短的项目周期忠实现需求映射并且完成、交付。很有挑战性!物理需求到电子需求映射的偏差导致设计的问题导致实现问题的放大,最后返工……蝴蝶效应!
     
    需求描述正好契合最简单而严密的世界系统描述。拿来做这个系统的试金石。胡吹一二。
    除去主观的形容词,任何一句复杂的句子可以转换成为一系列简单句:主谓宾、动宾……
    某某以什么为依据做事情,得到什么东西。
    ……
     
    元数据模型,名词,包含有效性规约;
    接口原型,动词,包含动作入口和出口的名词规约;
    权限管理平台,主语限制。自然而然的包括计算机模拟人的代理机器人了;
    工作流引擎,系列简单句顺序规约。
    当然,不能忘记合理的设计器。
     
    准备做这么一个原型。扔到开源项目上去,写着玩玩吧。一笑,呵呵。
    January 02

    台湾地震……来得更猛烈些吧!

    总要来些技术擦边球以提醒自己是吃这行饭的……
     
    淘宝抓住了ebay系统升级造成系统不稳定的机会而跃居榜首……
    台湾地震,光缆断线;国外网站全中国90%范围上不去了。中国互联网的机会啊!
    网络恢复得七七八八,机会没见有多少把握住的。
    厚积薄发,只欠临门一脚——尚未积,如何发?小兄弟,路还长呢……
     
    让地震来得更猛烈些吧……你,准备好了么?一笑,呵呵!

    人机斗争何时休……

    偶然看到高人对杀毒软件的评价,一笑转贴,分享……
     
    卡巴(Kaspersky)就好象西毒,凶猛强悍,神功盖世,对敌决不留情,出手狠辣,招招夺命,绝少失手,不愧为一代枭雄,但毕竟练的不是纯正内功,容易走火入魔,导致系统出问题;
    麦咖啡(McFee)就象东邪,玉树临风,俊朗潇洒,对敌招式繁多,机关重重,杀伐决断从不迟疑,为江湖第一机智聪明之人,但因其心机太深,令人难以掌握;
    诺顿(Norton)就象南帝,雍容华贵,稳沉厚重,胸怀博大,练的是纯正内功,靠的是教化感人,对敌有慈悲心肠,一般采取隔离教化,使其不再作恶,很少杀人,称的上是一代宗师,但因其过于敦厚,不仅自己活的累,别人也为他感到累;
    nod32就象北丐,来无影去无踪,潇潇洒洒,笑傲江湖,对敌用的是逍遥游和打狗棍法,江湖上少有对手,但因其过于轻浮,难免误事。

    国产的就像全真七子 ,一起上还凑合。
     
    胡子续貂一条。
    中神通!有道是:机慢由他慢,眯眼打个盹;机破由他破,慢听硬盘小夜曲;他蓝屏来他烧掉,我自盯黑屏做春梦!
    老子就用裸机,而且机都不开,我看你牛去……哼哼哈嘿!我只爱睡大觉、白日梦——
    August 24

    横向池模型高效项目方法论

    软件工程到现在,基本阶段大致确定了,需求》分析》设计》实现》测试》部署》……;各阶段彼此顺序在时间轴上也衍生出很多变化,顺推、回溯、循环、……,产生瀑布、演化(迭代)、螺旋等等模型。
    实际上就是方法论,减少互相内耗,提高效率;减少差错,自然效果变好……
    在多人参与的项目中,彼此角色不同,大部分情况是走的隔断递推(分析人员只看需求人员;设计人员只看分析人员;……):这样效率相对较高,但是容易出现最大的问题就是“Misunderstand”(交互失察):方向错了,那可是南辕北辙,效率越高,纠正代价越大。同样,也有些方法,完全理解/经历前方阶段之后再完成本阶段,方向对了,效率不足,其极端情况就是全程参与的所谓捉对的“敏捷开发”,坚决走对方向,算得上是“性价比”比较高的了。(实际上敏捷开发还有“敏捷反应”的意思。而需求本身还有变更的可能,所谓“牵一发而动全身”,反应得当,如臂使指,代价可期。)
    所以一般的控制首要解决“交互失察”,再尽可能的减少内耗,加上合理有效的应激措施(变更)。高效项目合理存在。
    公司(特别是外包公司)做项目有人员要求,理想中的公司应该没有固定的项目组,而是一个个人才池,需求的、分析的、设计的……项目开始的不同阶段由项目经理统筹引入人员,所有的联系都是横向而不是纵向。大集体的磨合,方法论的应用,劳动力的压榨,到了极限拉,爽!(搞技术的好明白,看看现在J2EE中间件、.NET Framework中间层架构就了解了)
     
    糁人的题目,内容空洞,沾之即走(估计所谓“离题千里”就是说俺咧)。实际早就想表达些,但是自己都没有总结出来,上午扫描了一遍Code Complete 2,联想到。写出来玩玩。
    一笑,呵呵!
    January 09

    类比

    奇怪的梦,朦胧的时候冒出这么一段话……
     
    1 —— 2 —— 3(数学的还是哲学的,搞不清楚,多维还是一生二生三生万物……)
    细胞 —— 器官 —— 生物体
    人 —— 角色 —— 社会
    …… —— …… —— ……(好像是经济学相关的,记不清了,有兴趣自己填吧)
    程序 —— 模块 —— 系统
    OOP —— AOP —— ?
     
    任何一个领域都是从小到大,实际没啥可比的……
    可是却又有些奇怪,好像彼此都有借鉴,新瓶旧酒……难道我们的思想毕竟还是没有超脱生物的范畴么?通过各种方式,一遍遍找寻自己(Human Being)“何所从来”?!也许吧。
     
    所谓理性产物,所谓纯理性的社会人……唉。好大的一个套子……
     
    冥冥中一个声音在呐喊:“同志,成熟一点,站在器官的高度来思考问题吧……”
     
    断断续续的思路,俺也不知道在说些啥,发昏了。
     
    一篇文章用了这么多“……”,可以算是俺多年以来的纪录了…… 呵呵。
     
    December 15

    软件工程和经济发展

    前两年看经济学相关东东的时候有些联想,就写出来分享。

    经济学研究的是“社会”利用资源,生产价值,最后合理分配的行为方法(原文是:经济学研究的是社会如何利用稀缺的资源以生产有价值的商品,并将它们分配给不同的个人。—— 萨缪尔森《经济学》)。核心是不同层面的效用决定,达到效益最大化。
    软件工程研究的是一个独立项目中花费时间、人力资源和金钱最小化的方法。其中利用资源,生产价值,合理分配倒是可以和经济学略做借鉴。做项目预算和立项市场分析的时候也可以沿用经济学的一些方法。
    经济学经过发展已经形成各自一套相对完善的体系。经济学是一门巨牛的东东,人(实际是社会人)的一些表现和决策都可以量化。比较起来,软件工程还只是成长中,软件工程还只是拿人作为“人力资源”来用,人只是“角色”(都是理性人,靠制度约束),具体的协调激励工作靠项目主管来做(那是管理学的东东了)。离千万人协作还有很大的距离,路漫漫其修远兮,任重而道远啊……扯远了。
    具体谈起来就那么1/10瓶子水的逛荡,上不了大雅之堂。献丑不如藏拙。所以单就高中政治(实际是政治经济学)中关于“经济发展”一段知识和软件工程过程做些比较(虽然这个比较是西瓜比芝麻)。姑且吹之。
    项目做个黑盒作为生产者,客户/需求提供者作为消费者。

    经济发展根据生产力发展经历自然经济—→商品经济—→产品经济三个历史阶段。取决于人类对自然界的认识程度和改造能力,即生产力的发展水平。(明显是抄的,呵呵)
    我国的经济发展经历三个阶段小农经济、计划经济、社会主义的市场经济(中国特色的市场经济?)。(之前的似乎也有,n年前就还给老师了,就这三个吧。)

    小农经济就差不多是自然经济,基本就是单干,需要啥写啥,只有工作分工,层次感不是特别强,高手的自留地,一天上万行代码,几天搞定,怎一个“牛”字了得;

    “计划经济”是指:根据国民经济发展客观规律的要求,社会(国家)从具体情况出发,预先拟定经济的发展方案,并在实施过程中不断地进行修正,从而对社会经济活动实行“自觉”的组织管理和调节,它是自觉运用经济规律的主观表达形式。我们实行计划经济的时候有些片面,计划经济在形式上的“主观认知性”特点,变成了“主观意志性”,从而形成脱离社会经济活动实际的“主观命令型”经济。有些象瀑布模型,用文档驱动过程,对于非专业用户的交互容易出现误差,而继续“主观命令”,一旦计划偏差损失就比较大了;

    市场经济就是复杂商品经济,以市场为导向的一种客观经济形式。在软件工程来说,由客户需求主导,好比快速原型模型,快速丢弃原型,如果保留的话在随后开发会付出更大的代价,此类工程以功能性为主,等价于产品的一个子集,原型开发速度很快,设计方面几乎没有考虑的。保留原型的增量模型也是一个例子,具体倒是没有用过。增量模型的演进版本的XP(极限编程)是目前比较火的一种模型。目前的中小型项目都差不多对应这个阶段。这些模型对大项目超大项目还是有缺陷的;

    社会主义市场经济仍然以市场为主导,不过加入了一些计划的宏观调控。除去预算控制、维护和复用,软件工程中的质量控制、风险控制、过程改进都可以参考。RUP作为重量级开发过程就可以与之相对应了。这一类适合大型项目的软件工程。RUP体系很大,使用要很小心。“一个高明的铁匠用铁锤可能可以打出一把好兵器,如果是普通人搞不好就会砸到脚”;

    接下来就是老马说的真正的“计划经济”了。计划为主,适应市场,不断修正,持续改进。智能模型勉强可以算这一类。有些超越软件工程的范畴了,一般都是企业做持续性产品的规划开发,算是软件的产品线工程开发了。再大一些,就是更高一级管理控制,需求/客户体验纳入项目组成,做超超大型应用,现在都不敢想象了,也许是将来软件发展的趋势吧;

    至于最后的产品经济,以“各尽所能,按需分配”的形式来满足自身的需要。在软件业倒是有那么一种体验:开源/共享。想一下,linux好像有那么些个意思了。不过已经不是软件工程了。

    经济发展和软件工程都是很大D,这么肤浅的吹一下,差不多就这么多了。问题是肯定有D,砖头是肯定要挨D。板砖横空出世,俺也只能硬着脖子挺啊。

     

    后记,牛吹出来之后收到板砖无数,最具代表性的是这个:

    将西方经济学和马克思扯起来实在是天大的笑话,而主流的新古典的西方经济学的精髓恰恰就在于反对马克思的所谓计划,通过市场交易来实现帕累托最优。
    文章不是肤浅的吹,是完全不懂,任何受过正式经济学训练的人都知道,马克思的一套不是经济学

     

    被骂得很惨啊,呵呵。

    不过俺没有说经济学,实际只是高中那套“经济发展”的理论在忽悠人呢。目前软件工程还真的脱离不了计划。真正能通过市场来实现最优必须有一个大前提,有一个完全的平台,一个潜规则在应用。个体的工程是完全无法满足这一需求的。主说:需要大系统。 于是被一帮人海扁,仔细一看,M$、Google、IEEE……

    软件尺度的“真随机数”

    谈一谈随机数。单纯的计算机不会产生绝对随机的随机数,只能产生“伪随机数”。

    简单介绍一下计算机密码学中随机数生成器(RNG Random Number Generator)的概念。
    RNG引入信息熵的概念,通过信息熵和冗余数据复合运算得出随机数序列的。其中信息熵就是计算机不可预知的信息。
    简单介绍一下随机数生成的步骤和衡量标准,了解一下吧。
    步骤:收集信息熵,对信息熵进行估算(实际就是对数据初步裁减过滤),生成信息熵集合,计算输出函数。
    衡量标准主要两个方面:随机性和安全性。随机性就是在多点采样的时候所有随机值(离散数)可达,并且根据算法生成的随机数满足一定分布规律,如正态分布或者平均分布等;安全性则是随机数输出函数不可逆,无法破解(实际上这些个随机数大部分是密码计算的一个部分的)。
    很多随机数生成器通过人为控制或者硬件环境控制计算出信息熵集合,得出随机数。比如NoiseSpunge需要移动鼠标,Intel通过电阻和振荡器来生成热噪声作为信息熵资源,Linux的dev/random采用按键,鼠标移动或者irq中断等。
    顺便一提,信息熵的信息量如果很有限的话,就不是一定是真的随机数了。

    在一篇科幻小说(忘了题目了)中提到,如果大爆炸的奇点理论是正确的,那么只要获取爆炸前数据,就能完美模拟宇宙了。
    我一直认为世界是离散的。即,不存在真正意义的随机数了。但是我们感知的数量级低于这个离散值,所以就出现了“随便”的事情。
    我们的世界上最“随便”的数据就是人脑(人心哪……),宇宙的信息(不了解规律,等同“随便”,当然要精确到一定数量级)。那么考虑用这些东东作为随机数生成器的信息熵(为了满足随机性和安全性,不能直接拿来用)来源就是“真随机数”了。前面提到移动鼠标,按键之类的实际就是人为参与的数据了,在毫秒级的时钟控制下足够作为信息熵源了。

    不过动作的“随便”是比不上思想的“随便”。那么离“真随机数”还是有差别的。组建一个动作采集器的网络,将网络终端的信息汇总,那么大概还是可以拉近几个数量级的差异的。这样命题就变成网络的组建了,看来要达到人脑的数量级还是比较难的,估计等到软件能“随便”的时候人类能对AI做的贡献就到尽头了。

    结束了。有些虎头蛇尾啊。因为原来想写的是通过网络数据来采集信息(包括天文地理等等的网络资源),结果仔细一想还是有人参与的,看来做一个完全自适应的纯软件随机函数发生器还是比较难。幸好明智的加了一对引号,;)。