我心目中的商用化开发和工程化开发

来源:互联网 发布:wifi信号探测软件 编辑:IT博客网 时间:2019/09/17 14:18

理论部分

1. 商务程序员是什么?商务程序员和老师和学生的区别是?他们和工程的关系是什么?

商务程序员是解决实际问题的人。用的时间,人力,物力尽可能的少。只要求解决问题并且在问题里面很全面,在问题外面很简洁。

 

模 型

    打个简单的比分商务程序员,老师,学生,客户。好比参加大学开卷考试,答对得分,打错倒扣分。客户是命题人,试卷是计算机,老师是全范围研究怎么命题和怎么解题的和过去有哪些解,并形成理论,学生是学习老师的理论,商务程序员是快速解题的。现在开始打比方,现在客户们各出了一道题目,一张试卷完成了。

阐 述

老师们往往有查阅以往参考答案的权限,偶尔也跳进来参与解题,不过做起题目来了就不管你谁谁了,只有题目做不错的出来,能不能解,不会出错由计算机说了算,客户只关心这个题解没解出来,是不是按照他的要求解的,产品长相很差影响到客户的心情的要扣分的,连续做错也是要倒扣分的,如果严重了可能答卷的资格也没有了。

解得是否完备严密,分类讨论的是否都讨论了计算机和客户说了算,商务程序员只关心如何快速解题。微软的讨好用户策略在一定范围内也能取得很好的“好印象”分。

 

在答题时间内做完了检查了直接做下一道,在考试的时候题目是很多的,基本上都答不完,能做一道是一道,做得越快可以越早做下面的题目和提前交卷以及准备下面的考试。

一张试卷,我们要的是高分而不是一道题两道题解得过于漂亮,从长远来看漂亮的答题是可以方便大家查卷的。

至于你答题的方法是否好,答题用的纸的面积是否小客户不关心,计算机也就关心一点点。但是这个对你来说就是全部了,如何多快好省的解题将决定的未来的基础。

好比数学考试上面你做出了一道数学题,使用函数做的、还是用微积分做的或者其他的理论定理都可以,能不能得满分取决于你是否各个情况都讨论到了。

如果解一道题花费了过多的精力、时间对后面的答题无疑是不利的。初级阶段是做出来。后面能够移植、归纳、加速就是决定你将来的答题质量。这个就是商业化开发和工程化开发——一环套这一环。

照着这个思路和模型想大家都不陌生。你已经具备了商业化和工程化的思维和意识形态。

2.商务程序员怎么样?

    第一要义是解决问题,核心是以客户为本,基本要求是快速开发,根本方法是统筹兼顾。

第一要义,也就是关键,是解决问题。所有的东西都要围绕解决问题来完成。问题没有解决基本上一切都是零,原因很简单,不解决问题就不会给钱^_^,考卷上面的一个题,如果做了,没做出来无疑浪费了时间。而开发上一个月不吃饭公司的人都饿死了。

客户的需求就是核心,客户要求这样就是这样那样就是那样。好比上面的评卷子。你写了答案是你的,给多少分,给多给少命题人说了算。另一方面计算机参与改题,所以它的情况你要摸清楚。一个不是问题的问题也会造就大麻烦。因为你是为了别人打工。

要求是快速开发。能够用通解的用通解,不能用通解的用特解,还有通解+特解甚至你答第五题来个由第二题的第三行到第十行的结论得~@#你复制过来就可以。而一个团队的生存在于能否比其他团队更快速的开发出项目来,这个是残酷的斗争。

政治经济学上认为相同劳动时间复杂劳动的报酬是简单报酬的数倍。简单来说就是你做出了一道难题花的时间如果和别人做的简单的题目差不多那么就你的得分就高。

高学历将获得高视野,高手段达到高目标。不管怎么样都是要在规定的时间内抢分。一切的一切都来源于平时的积累。

 

前面说了这么多就是要花最小的力解决尽可能多的问题。要懂得平衡之道和舍弃之道。快速解题和快速编程差不多。是做还是换要有一杆秤。

 

3.如何成为商务程序员?

这个问题展开来讲就很广了。至于是术还是道的问题我觉得应该都有。就一道题而言比起一大堆的理论我更关心如何做出来的。就一张卷子来说我关心用到了哪些,哪些需要再归纳成定理,为了下次快速解题。道是第一要义是核心是基本要求是根本方法。有了框架还要术来充实。平时要养成准备术和归纳道的好习惯。一切为了实用,一切为了快速解题。

 

3.1几点误区和已有经验

1)有人说:我去念个博士出来解题该快了吧?

你怎么不去念个教授出来再解题呢?我们是解决问题不是比谁念书念得好。理论搞得好。对一般问题来说只有01的区别。实践是检验的唯一标准。过多的前进无疑是无用功。如何加速怎样加速大家见仁见智。

 

2)为何要规范?在商业开发中如何避免我的缺点?

忘记说了,考试不是一个人的考试而是一群人的。可能分工是你做135他做246,也可能你们一看就是两种情况a=0a≠0你们分工合作.但是遇到了重要的地方他一看这个小问题你解决了,来个由第一题的第814行的结论得。结果写到了计算机里面出了问题,编译通不过。无疑浪费了你们两个的时间。如果他不看你的解的过程自己写又无疑降低了效率。很可能你们考完了都挂了~

解题写得越规范越好,有的时候甚至保守一点。规范是写给自己和别人用的。团队就像一个人的手指头。虽然各有特点作为一个整体共同完任务。IBM有很大的代码库,要用直接搜索然后拿来一改就可以用。这个就是规范。解题就是要扬长避短合理分工。规范之后开发速度将大规模提升,将很免去一些认识和调试的时间。

 

3)为何要分类讨论?优缺点又是什么?

分类讨论使大家看得明白。说白了就是寻求稳定。其实分类讨论之后全局改起来巨麻烦,而且有极大可能降低系统性能。逐步求精是个思想,把缺点控制在小的范围内是可行的。

你也可以不讨论直接求全解,那很容易就看得一团糟。之后不只是别人就是你自己也不容易看明白。计算机里面就是结构化,面向对象,模块化和透明化。我这里取最广义的概念。说白了就是分工明确,层次清晰,协同完成,内部无关。

我在这里只说两个模型。一个是计算机网络的tcp/ip模型,一个是OSI模型。前者是四个,后者是七个,老师教我们的时候说了你说七层也可以,我说计算机网络有两百层也可以只要能够拿来用,分层过粗不容易理解概念不明确,分层过细就更不容易理解了。

事实是TCP/IP因为发展的广泛所以成为了实际的标准,上面的三个是自己的,在最底下是不分层的,原因是各个国家各个厂商有了自己的标准要统一起来不太可能比如对与数据传输欧洲有E1标准北美有T1标准。上层统一定义接口供他们使用,而下层的使用上层毫不关心。因此灵活TCP/IP成为了实际的标准。而OSI考虑完整和全面,所以有的滞后于发展或者有的技术超前于发展而无法实现。

 

4)更高角度的思考

   蜘蛛人上面有句话:能力越大责任越大。对应的中国有居庙堂之高则忧其民,处江湖之远则忧其君。底层的朋友要考虑上层的东西,一切为了出来。上层的朋友一切为了实用考虑底层的东西。都是为了挣钱,都是为了和客户打交道。表面透明实则不然。有的时候一些细节处理的疏忽是为了高效的编程。比如10^16+1=10^16

同时预见性的无法忽视的错误需要避免,越早解决代价越小,后期的大错误往往是致命的。问题特征往往来源于以前的项目里面,需要多做分析。

比如微软就称自己是做软件测试而不是做软件开发的。开发中有70%的时间用于测试而编码只占到了很少的时间。可否把70%的时间减少?我看是可以的,因为在一个团队里面编程的始终是那几个人那几杆枪。像对待解一样通用错误的通用检测特殊错误的专人检查这样也算是流水线将减少时间。

更好的方法是逐渐将好的东西养成习惯而习惯是从不习惯开始的。

 

5)如何对待理论学习和方法?

谁都知道学得越多越好。就像第一问中的博士一样,但是没有谁能充分学习。书到用时方恨少。理论学习越高深度越高,解决问题的思路可能越透彻有益无害但是理论的学习也是要时间的。我们考研的英语卷子不说我们做,就是命题人在规定的时间内也不一定做全对。更不要说各个高校的老师、外语系的人。不是说英语好就可以做的对,程序开发也是这样。没有无敌的教材只有无敌的头脑。闻道有先后,专攻需具体。

6)编程之外

基本上我们能列举出来的市面现存的操作系统都比微软的好,但是市场呢?还是windows的。下面是一个SUNSolaris和微软的windows的例子。

比如把C盘的东西复制到F盘去。CTRL+ACTRL+CCTRL+V不一会就会出现个显示时间的条条出来,如果没有,刷新一下也就出来了。虽然那个时间是不可靠的,但有比没有好。在Solaris操作系统中你复制之后没反应。好了弹出来至于他搞没搞,啥时候搞得你是不清楚的,用户不能等待。所以比windows优秀的多的操作系统没有走进千家万户。功夫还要下到位,就如何讨好用户来说微软下了很多功夫,Sun的倒塌也能从这里看到端倪。

贪吃蛇是很简单的游戏,现在有了网络贪吃蛇,如果能够分析出潜在的需求项目将获得成功。

有的时候我们除了在编程上需要动脑筋编程之外也要下功夫。这样才能高效优质的赢得市场。

理解商用开发很简单。就是写一张你写不完的数学卷子。大学就是为了考试。商业化开发就是为了快速解题。工程化开发就是为了每个题目都是满分。

附件一:属于实习版,也有一点我编程之外的想法,和商业开发无关,也不在本文讨论的范围之内,更像做系列产品。

http://student.csdn.net/space.php?uid=52770&do=blog&id=18523