首页 理论教育 软件开发方法与逻辑:势和制度的逻辑链

软件开发方法与逻辑:势和制度的逻辑链

时间:2023-11-21 理论教育 版权反馈
【摘要】:显然“势”是一个相对概念。对于每天吃窝头的人,吃白面馒头就可以成“势”。在精神层面,“势”,则可以具象为成就感,荣誉等。从应用角度看,要结合每个人的现状,性格,背景,公司所能提供的环境来综合考虑,这样才能很好地判断个人的“势”究竟可以体现在那里。同时“势”也是双赢的一个关键基础。

软件开发方法与逻辑:势和制度的逻辑链

意识指导行动→总体来看,个人意识是倾向于扩张而非收敛(收入,荣誉,地位,自己意志的实行程度)→扩张的目标和现实的差距是每个人前进的动力→管理的一重使命是确保这种差距存在。

知名学者何新先生讲过一段很有意思的话,他说:

人的本性类似于热力学第二定律,即趋向于“熵”的增大方向发展。也就是说生物(包括人)的本性就是追求自由,优越感,出人头地等。

熵增意味着个人的意识倾向于扩展而非收敛,这事实上对管理提出了一个课题:每个人所处的现实和他的可见未来之间必须存在着可见的足够大差距,这样“势能”才可能足够大,也才可能激励一个人积极前行。

热力学第二定律

热力学第二定律可以表述为:不可能把热从低温物体传到高温物体而不产生其他影响;不可能从单一热源取热使之完全转换为有用的功而不产生其他影响;不可逆热力过程中熵的微增量总是大于零。

也可以被表述为熵增原理:在孤立系统中,一切不可逆过程必然朝着熵的不断增加的方向进行。

但热力学第二定律之所以有名却不是因为其对热力学的影响,而是因为其对形而上学的影响。比如说,我们可以把宇宙抽象为孤立系统,这样一来,宇宙最终的结局就是热寂。这不一定对,但对思考宇宙人生的人冲击确实非常强烈。

显然“势”是一个相对概念。对于每天吃窝头的人,吃白面馒头就可以成“势”。而对于每天吃白面馒头的人,多两个少两个则没什么价值。

这并不只是项目层次要解决的问题,但项目层次也并非什么都不能做。

马斯洛的需求层次理论把人的需求分为以下5个层次。

●生理上需要,比如,对水,食物的需要

●安全上的需要,比如,人身安全,财产安全

●情感和归属的需要,比如,爱情,友情

●尊重的需要,比如,成就感

自我实现的需要,比如,对理想的实现

这里面无论哪一项都可以转换为具体的“势能”,而显然的1,3,4,5和项目中的活动(评价、工作安排、交流)等直接相关。

具体来讲,在物质层面,“势”至少要具象为两类东西:一是职位以及收入的提升/下降;二是技能的提升。在精神层面,“势”,则可以具象为成就感,荣誉等。

从应用角度看,要结合每个人的现状,性格,背景,公司所能提供的环境来综合考虑,这样才能很好地判断个人的“势”究竟可以体现在那里。比如说,对于新毕业生,那就要很现实地共同考虑职业规划的下一步究竟在哪里,走到那里之后未来会更光明。这个时候一定要真诚且具体,否则就是“画饼欺人”,最终只会适得其反。

这里的关键词是具体,但具体并不是很难达到,只要一起考虑一定可以找到合适的答案。在此之前,通常需要对软件所牵涉的各种知识做一个分类,下面来举一个还算具体的例子,来进行说明。

构建软件的直接知识可以被分为以下3大类。

1)用于打造概念边界并且优化概念间逻辑关系的知识,比如,面向对象分析和设计。

2)用于实现概念和逻辑的通用领域知识。比如,编程语言

3)用于解决指定领域的专业的领域知识。比如,图形算法

在很多场合3)并不是必须的,但1)和2)则是不可分割的,并不存在孰轻孰重的问题。没有概念无法形成逻辑,没有逻辑,概念的彻底定义更是无从谈起。而没有载体(比如,编程语言或UML),概念和逻辑根本就无法表达。事实上编程语言的演化很大程度上就是想把这种表达变得更容易。

而与软件有关联的间接知识则有以下4大类。

1)需求开发和描述。比如,规格说明的编写。

2)估算。比如,功能点方法等。

3)测试。比如,验收测试等。

4)软件工程和方法论。比如,CMMI和敏捷。

根据上面的分类,我们可以制作一份分类的表单。

关于软件的直接知识如下。

(1)通用的领域知识

●编程语言(C/C++,Java,C#,Python,Perl等)。

框架和类库(MFC,Boost,Struts,,Hibernate等)。

●平台(WindowsAPI,POSIX,.NetFramework※1,JavaAPI,C/C++RuntimeLibrary等)。恰如JeffryRichter所说,大多时候可以从内存机制、线程机制、错误处理、异常处理、组件构建、组件组合等方面来进一步考察一个平台。

计算机体系结构(CPU指令、虚拟存储等)。(www.xing528.com)

●实用技巧(调试方法、代码生成器等)。

●……

※1有的时候子类别间的界限并不是很容易界定,其中一个主要原因就是存在着像.NET Framework这样涵盖了过多内容的概念。

(2)概念和逻辑创建和优化

●面向对象分析和设计/结构化分析和设计。

●设计模式。

重构

●契约式编程。

●UML※2。

●……

※2从形式上来看UML更近似于一种编程语言,但从其目的上来看也许归在这里是更合适的一种选择。

(3)专业领域知识

图形图像算法。

●网络协议。

人工智能

●数值/非数值类算法。

●……

关于软件的间接知识如下。

(4)需求开发和描述

(5)估算

●估算法。比如,COCOMO,FP等。

●估算术。比如,使用计数等原始办法。

(6)测试

(7)软件工程和方法论

●轻量型方法论。比如,敏捷。

●大方法论。比如,CMMI。

●综合分析。比如,《人月神话》,《人件》中所做的工作。

在这份表单里面,还没有列入与管理相关的内容。但基于这种分类已经可以设计一条很直观的,3~5年内可用的职业发展路径,如图2-4所示。

978-7-111-42626-4-Chapter02-8.jpg

图2-4 职业路径的例子

这时候要考虑当前的工作是否能支持既定的职业发展路径,比如,如果一个人当前的主要工作是使用C++做底层驱动,那么上面的职业路径就不适合。

人是很复杂的复合体,这就导致在不同情景下精神诉求会有很大的不同,能成“势”的点也很不同。完全漠视这类个体的特殊性,而简单地把每个人都等价为相同的人,并只是迷信于流程这样的手段,事实上是管理上的惰性。

可以讲,“势”在很大的程度上决定了团队的活力和向前走的动力。同时“势”也是双赢的一个关键基础。以职场而论,公司的诉求往往单一而清晰,大多时候是以平衡短期及长期利益为根本诉求;但个人的诉求却往往复杂而含糊,每个人的诉求既有共通之处,也有差异。如果在项目管理这一层次上漠视这种差异性,那个人诉求很可能就永远停留在不可见的区域里,这还谈什么双赢。

欲望的无边界特质

欲望的起源有很多,但最终大多以思维为媒介表达出来。在这一过程中,思维的的无边界特质直接导致了欲望的无边界化。比如说,一个人可能期望拥有整个宇宙。这最终导致到达一定程度之后,物质力量将不足以成“势”,精神的事情还是要回到精神层面来解决。这个时候人们很可能更需要成就感,需要自我实现的空间。但对刚毕业的人而言,这些则相对遥远。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈