软件和硬件
偶然发现以前写的:
你们能告诉我软件和硬件的区别吗?这两个单词单独来看,有着自己特定的含义,但放一起来看,我们可以理解一下为什么在设计之初有着这样的类别。
软的和硬的,这之间的区别是什么。我个人理解硬的就是我触碰它时,它很难产生形变,如果再用力,直到它开始发生形变,那么同时也就是摧毁了它,它不再能够使用了。软的就是触碰它容易发生形变,再用力就会发生更大的形变。如果弹性够好,即使很大的力,它也可以保持原有的特性,最终会复原回来,弹性很差的那么虽然是软的,但是容易发生永久形变,这样的话很快就不能继续用了,只能丢弃。
那么软件和硬件是否也是类似,硬件运行需要额定的电压,温度湿度以及物理安全。很多环境下硬件不会运行,有些情况下甚至会永久损毁,所以我们会有独立的机房,提供电压的机柜,保持温度湿度的空调,以及螺丝钉和机架固定物理位置。
软件就又不同了,弹性是从表面上看不出来的,只有当我们给他足够的压力,才能知道它是不是符合我们需要的。有些软件外表上看起来很好很华丽,但是一旦使用起来,它就这样奔溃了,全部是问题。它本身也很难发生变化,变化本身就足以让它奔溃。
软的意思就是变化,对于软件而言,这指的应是需求,架构,设计上的变化。软件和硬件本身协同工作,那么就更看出其变化的本质了,软件之所以诞生,就是为了硬件的变化成本太高,专门设置了软件这种依赖硬件环境运行的东西,让其在硬件平台不发生变化时,可以成本较低的发生变化的东西。所以当我们设计,架构软件时,一定要知道,虽然这一期的需求报告文档是这样,但需求是一定会发生变化的,这就是为什么我们的需求方案转到设计文档时,大部分工作内容和评审的重点在软件的设计上,因为这就是我们将发生变化的东西,我们用Java或者别的东西像搭积木一样搭出了某种结构,这种结构上的材料和放置环境是很难变化的,可变化的就是结构上的逻辑,需求本来就会改变,所以设计也本来就会改变,它是否能改成功就看你原来设计的“弹性”,如果弹性不好就只好像硬件一样,发生永久形变并奔溃,那么你的软件也体现不出软件的特性来,它不够软,或者已经软到自身都无法保持了。
所以在软件这一领域,我们应该关注如何能方便的发生变化。按照目前领域内的做法,这一聊就会聊到测试技术了,这一领域我只是皮毛,好多工作上的问题还没有解决,测试本身的自动化都像软件一样难维护,那么还谈什么测试驱动开发,提供开发代码质量和设计思路。
以上的比喻,也许有些人觉得形象,有些人觉得狗屁不通,无论怎么觉得,认同或是不认同,有一点是要明确的。就是以上的比喻本身是没有任何意义的,近对于作者和已经有和作者类似经历的人有着一定总结性的作用。和很多成功人的心灵鸡汤一样,或者好学生的学习方法一样,还有最直接的例子就是老师小时候告诉你们要好好学习一样。在我明白了以后,我可能认同你的观点,就像很多大人都说后悔小时候没好好学习,并且和他们的孩子说过很多次。但是,你用这种方式告诉孩子后,你们发现有几个孩子是因为大人这么说而变得热爱学习,去努力学习的?应该没有,因为一来我不知道你后悔什么,你后悔的内容我本身都无法理解你为什么要“后悔”,而“等我长大就明白了”,是的,但你不觉得明白得太晚也只能一起去后悔了吗?二来就是定义上的歧义,好好学习,什么是好好学习?我做到怎样了算好好学习?其实这个问题一般就是孩子理解了就理解了,不理解大人也说不清楚,家长的教育是无法将你从不懂变到懂,只能你自己懂了再告诉你些别的加强一下理解,教育本身的力量现在远没有有一个悟性高的孩子的力量大。
还有一件比较讨厌的事,就是家长的建议,很很多失败的决策一样,是上级吩咐下级,这里有一点关键因素就根据家长的建议,你照做是可能失败的,因为可能没有充分考虑你的现实情况,但是失败了是你自己的问题,成功了却是家长的功劳。工作任务不明确,需求文档乱七八糟,但是开发成功了算架构师和项目经理干得好,项目失败了大多会指责开发人员能力不足。
工作上有些人只是混口饭吃,可能他自己都无法想象自己的位置可以做到这么高,但是家长和孩子就不一样了,家长是真的期望孩子好的,却用着过时,或者无知的方法,无视孩子喝环境的现实因素,对实际过程中的问题毫无关心,却要求孩子这样或那样,最后落得个两败俱伤,家长很暴躁,孩子很叛逆。在现实条件下,只有孩子本来就知道该怎么做,可能会听从建议,可能只是敷衍,具有悟性和自己的主见,才能避免以上的场景。然而,这种事是可遇而不可求的。
好的老师在孩子低龄阶段的影响,将可能直接决定未来人生的道路,所以名师难求,这样的机遇是非常难得的。
回到我们之前的观点,现在你知道我之前的比喻为什么毫无意义了嘛?有同样经历的会认同我,没有同样经历的会要么水平比我高的会觉得我说的不对,或者有不同经历的觉得我胡扯,还有的就是最可怕的,一无所知的断章取义,以后拿文中非常局限的观点当作世界观去喷以后看不顺眼的。这就是心灵鸡汤最坏的影响,他们讲述的是人生,但只是诠释,不是定义,阅读的人如果自己不会思考,那么只会具有别人的零散的世界观,自我本身就是矛盾的,但自己是不能觉察的,他们以后做事很容易出错。道德绑架,人生攻击,自以为是,沾沾自喜,现在喷子这么多难道不是对文章目的的误解造成片段似的世界观引起的?
所以,无论你认同不认同我的说法,一定要有这么一个过程,当我不同意一个人,我可以举出文章站不住脚的例子,而且有方法去验证这个例子的正确性。这个过程有一个关键因素,就是证明的过程有时候其实是自己证明自己,明明说不通,但自己还以为自己证明成功了。这,我还没想到解决的办法,以后博客谈论教育时再好好想一想吧。
今天国庆节,在单位值班,没什么事,随便写了写,祝大家国庆快乐。