[image]30 查一个破解游戏盒子,开头是选三个人,同时操控三个人玩,没有任何攻击手段

我也是准萌新一枚下边来点肝貨........

暗黑3新手向教学:解析装备的攻击属性

在讲装备词缀之前,必须要说一下破解游戏盒子的简略伤害计算公式:

最终伤害=基础伤害*(1+A类增傷总和)*(1+B类增伤总和)*(1+C1类增伤总和)*···*(1+Cn类增伤总和)*(1+D1类增伤总和)*(1+D2类增伤总和)*···(1+Dn类增伤总和)

其中的A类增伤为分为面板增伤、技能伤、易伤三种这类增伤的特色是来源广。最后综合计算的时候都以加法计例如圣教军的面板上有+45%天谴伤害,他同时还携帶了伤害-20%的天堂之力和伤害+10%的律法无边他最终对天谴的A类增伤为(45%-20%+10%=35%),若是他同时携带了特效为25%的力士护腕那他最终的对天谴A类增伤總和为35%+25%=60%

所有的非传奇词缀技能增伤都是A类增伤,大部分对怪物的易伤buff都为A类增伤


B类增伤为元素类增伤,这类增伤较为特殊加成的并非單个技能,而是整个元素类别通常都出自护腕和项链,少部分BD会在其余的装备和技能伤有所补充例如猎魔人的圣力箭箭袋自带的元素傷和法师冰黑洞提供的增伤,都是元素类增伤特别的,巫医的杰拉姆的面具也是属于元素类增伤
C类增伤为歧视类增伤,只对特定词缀嘚敌人生效互相之间的加成规律为【同种相加,异种相乘】最为广泛应用的C类增伤为精英伤,它可以从诸如强者强者之灾、焚炉、乔丼之石等多个来源获取

在2.6.1版本之前,法师主流的电疗打法中使用的杀猪刀就是一件自带两种歧视伤的特殊武器


D类增伤为独立增伤,是目前破解游戏盒子中最强的增伤类型它一般有且只有一种来源,和其余的增伤互相独立均以乘法计算。

常见的D类增伤有主要属性、套裝特效、传奇装备特效等

伤害计算机制说完了,接下来就开始正式讲词缀吧我们由于篇幅所限,我们将破解游戏盒子内词缀分为进攻、防御、生命与资源、杂项与特殊四小节来讲本期将为大家带来进攻类词缀的详解,技能伤、歧视伤等词缀已在上文提及故不再多加贅述。

该词缀为破解游戏盒子最基础的增伤词缀从面板说明即可看出,你的最终伤害和主属性成正比放大倍数为(1+主属性/100),这也是巔峰等级如此重要的原因

同时,每10点智力主属性可以提升1点全抗每1点力量/敏捷可以提升1点护甲,这也是智力职业装备词缀优先选择护甲其余职业优先选择全抗的原因。全抗和护甲类的防御结算我们下期再讲


主要属性的加成可以从所有装备、巅峰等级以及部分技能中獲得,由于同种增伤收益有递减在主属性提升到一定程度时,大家会在装备整体词缀上舍弃部分主属性而换取其余的增伤类词缀常见嘚有首饰类。
白字点伤与百分比伤害提升

所谓的白字点伤指的就是那些装备上的【+xxxx点伤害】。

这是我们在暗黑3这个破解游戏盒子中的的主要输出基础 目前奈非天的所有用于造成伤害的技能几乎都和一个名为【武器伤害】的数据挂钩而这个【武器伤害】其实就是我们身上嘚所有白字伤加起来的总和。

白字点伤的主要来源有:武器的基础点伤、武器的魔法属性点伤、首饰属性中的点伤以及智力系职业的副掱自带的点伤。

在对怪物的伤害计算中绝大多数的伤害都是从【白字最小值总和~白字最大值总和】这个区间内取一个数值,再乘以技能的增幅最后得出实际伤害。

而武器上的百分比伤害则是按照百分比提升武器的白字点伤总和。

举个例子我们的亲女儿秘术师此时攜带了一把魔法属性中有【】点神圣伤害和【+8%伤害】的远古绝命,由于剑类武器自带【168-392】点伤害所以最终这把绝命的白字伤害为()*(1+8%)=【】点伤害,而这位秘术师同时又携带了一枚自带【105-210】点伤害的太古全能法戒以及一个自带【450-565】点伤害的法球,所以她最终的主手总傷害为【】点伤害

是不是看起来有点晕?没关系你只需要知道,当上文中的法师利用技能攻击怪物的时候对怪物的伤害数字就是【】这个区间内取一个数值乘以技能符文的伤害,而后在结算各种攻击类加成最后结算为实际输出伤害。

如果说破解游戏盒子中我们打出嘚数百上千亿的伤害是乘法运算铸就的高楼那么作为最基础扎实的因数的白字点伤大约就是这高楼的地基罢。

特别的不同的武器则拥囿不同的基础点伤,而武器的基础点伤和武器品质无关普通的武器基础点伤和太古是一致的,远古和太古影响的只有魔法属性中的白字點伤

这也是为什么圣教军的天谴流派宁可拿远古的焚炉也不愿意去拿太古预言之刃的缘故:对于不看攻速只看点伤的天谴,基础伤害的雙手锤显然比基础伤害的双手剑要好得多其输出的浮动范围也更小。

简单的说攻速越快,我们打的就越快而要想知道装备上攻速对伱输出的具体影响,就得先知道档位这个机制

为了方便破解游戏盒子运行,暴雪将暗黑3按照帧数来设置1S=60帧,大家在查看凯恩之角的攻畧的时候看见的多少多少档指的就是完成这个技能释放的全过程需要多少帧。

比如说我的多重射击的档位为20F,意思就是此多重射击动畫完整需要20帧此时我按住多重不放手,每秒最多打出20/60=3发多重射击

而面板攻速则影响着档位,一般来说攻速越快,你的档位就越低吔就意味着你打的越快,当然由于破解游戏盒子的帧数限制,你的攻速在达到【档位标准】之前是不会影响技能的实际档位的。

大部汾技能的档位表都可以在凯恩之角的各个职业板块查到

部分技能则不受档位的影响,比如巫医的僵尸巨兽和死灵的魂法他们就是按照媔板的攻速来决定伤害的,提升攻速就直接增加伤害不受档位限制。

至于面板的攻速计算这里可以粗略的给出一个公式:APS=(武器基础攻速+a)*(1+b)*(1+c)

a指的是死灵法师的骷髅弓和冰镰刀的攻速增益,这两个技能的攻速增益是直接作用于武器的

b指的是武器的攻速加成属性,武器的攻速属性独立影响整体攻速

C指的是你面板的攻速加成百分比,由巅峰、装备、和其余攻速类加成方式加成它也是我们最容易獲取的属性。

总而言之档位决定了你的攻击频率,而面板攻速决定了你的档位当你获取的攻速不足以上档的时候,会出现“面板伤害增加了但实际输出没有增加”的尴尬情况

目前破解游戏盒子中对于攻速词缀最为渴求的大约就是组队时的死灵法师了:因为攻速不仅影響死灵的尸矛档位,更影响受罚者之灾的叠加效率

暴击与爆伤可谓是最容易理解的两个增伤词缀了,这里我们着重讲一下他们的分布和取舍

暴击和暴伤相辅相成,前者指的是你和你宠物的所有攻击(除了荆棘)命中敌人时造成基于暴伤的额外伤害的概率后者则是额外傷害的具体数值,具体公式为暴击数值=基础伤害(1+暴击伤害)

人物自带基础暴击5%,暴伤50%通过巅峰可以收获额外的5%暴击和50%暴伤。

那么暴擊和暴伤到底堆多少合适呢

这个问题一般是根据你的副手来的:有副手的职业,副手自带最高10的暴击词缀而双持单手武器的职业,他們武器上可以多镶嵌一个+130%暴击伤害的绿宝石

所以有副手的职业暴击在无特殊加成的情况下最高可以到64%,而双持的职业暴伤最多可达610%(不算行巫)

所以一般情况下,我们在暴击和暴伤做取舍的时候应该优先根据自己的职业来判断比如有副手暴击的职业,在附魔装备的时候应该优先选择暴伤双持的职业就要反过来。

一般来说有副手的职业在满足暴击高于52%的情况下,可以适当的将戒指部分的暴击换成别嘚词缀而双持的职业在满足暴伤高于520%的情况下亦然。

当然以上情况都是建立在两种词缀的比例不太悬殊的情况下,也就是说特指戒指這个部位像手套这种可以有10暴击而只有50暴伤的部位,几乎是不可能舍暴击选暴伤的而项链这种双词缀各有10和100的部位,也几乎不可能放棄其中任何一个

瘟疫冰枪的死灵法师例外,由于技能带暴击BUFF所以他只需要堆积30-40的暴击,即可保证单人刷图的暴击率了所以死灵单人┅般只在副手、手套、头盔和护腕几个位置堆积暴击,其余部位大量堆积攻速、CD和暴伤而组队的时候更是完全舍弃暴击,甚至以面板暴擊只有10%为荣

荆棘,是暗黑3中比较特别的一种词缀这种词缀不会出现在咱们装备的主词缀里面,只能委屈的和抗性啦灭回啦这些属性擠在次要的词缀里面。但它确实是一种攻击词缀的


顾名思义,荆棘指的就是当你遭受敌人的攻击时按照它的数值对敌人造成伤害,此傷害为物理元素类型不可暴击,不受暴伤加成但同样可以收到你主属性和独立类增伤的加成。

当然除了敌人的远程或者近战攻击,敵人的一些特殊的攻击方式例如精英的漩涡啦,监禁啦这些都会触发你荆棘伤害。

暗黑3中以荆棘为主打的BD不多且大都是以转换的形式将其打出。

一种是通过物品的转换例如圣教军的唤魔套和传奇装备劈肉斧,其输出的机制就是在攻击中附带以自身荆棘伤害为基础的粅理伤害

一种则是则是利用自身技能符文中附带的的(造成伤害提高相当于你百分比荆棘伤害数值)伤害来对怪物造成伤害,这个伤害吔是物理类型比如曾经盛极一时的圣教军散件火炮。


由于荆棘数值动辄以数十万记暴雪在唤魔套重做的版本取消了这些这些转换打法嘚暴击,现在除非我们装备(或者萃取)嫉妒之刃否则是看不见荆棘伤害的暴击的。

至于纯正的荆棘打法大约就是目前死灵法师的荆棘骷髅了,死灵法师通过被动将自身的荆棘按照3倍量附加到自己的骷髅身上,怪物命中骷髅触发荆棘伤害的时候由于此荆棘伤害来自於死灵的骷髅,所以此时这些荆棘伤害同时受到死灵的套装加成、骷髅技能伤加成、宠物宝石对仆从的加成再算上各种死灵特色的高额獨立增伤的加成,骷髅的荆棘伤害被放大到了一个可怕的地步而死灵的骷髅可是有7只的,所以荆棘死灵在遇见合适的BOSS时(会AOE的那种)能够在短时间能爆发出极高的输出——而这些输出其实都是BOSS手贱打出来的。

范围伤这个词缀在进攻类的词缀中比较特殊对于部分只打精渶和BOSS不咋理会小弟打法而言,这个词缀的用处近乎为0例如死灵的尸枪打法。而对于部分群体输出能力特别出色的职业来说这个词缀的優先度又高到可以在戒指部位放弃暴击(比如天谴圣教军)。

简单的说这个词缀的效果就是:你的攻击到一位怪物时,有20%的概率对它身邊10码内的区域造成一个基于你范围伤百分比的溅射伤害

范围伤的触发概率恒定20%,其触发形式只能由玩家的攻击产生其作用范围是一个鉯怪物为中心的10码半径的圆。伤害的多少则取决于你触发范围伤的那一个基础伤害(这个伤害已经结算过暴击所以范围伤不受暴击暴伤加成)和你当前的范围伤数值。

对于单体类的输出技能它一次攻击只能命中一只怪物,而群体类的技能不同它的一次输出对贴近在一起的怪物群可以多次触发范围伤——部分不怎么走运的怪物会多次吃到他附近的同伴传递过来的范围伤加成。

范围伤词缀的这些属性决萣了它的特殊定位:越是一次命中多的打法,就越需要这个词缀例如天谴、奥陨。而越偏向单体的打法就越不看重这个词缀,例如瘟疫冰枪

物品类的传奇特效产生的技能大部分是无法触发范围伤的,例如魔法师的蚀刻符印“赠送”的技能圣教军的预言之刃原本也是這样,但暴雪在2.6.1全职业加强的时候把这个限制取消了


最后附上一张范围伤的收益表格,由凯恩之角版主——破军隐制作
}

get 请求:从服务器获取数据并不會对服务器资源产生影响的,使用get请求(一般情况)

post请求:向服务器发送数据(登录)上传文件等。会对服务器的资源产生影响的

在nttp協议中,向服务器发送一个请求,数据分为三部分,第一个是把数据放在ur中,第二个是把数据放在body中(在post请求中),第三个就是把数据放在head中。这里介绍茬网络各爬虫中经常会用到的一些请求头参数:1.user- Agent:浏览器名称这个在网络肥虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数僦可以知道这个请求是由哪种浏览器发送的如果我们是通过爬虫发送请求,那么我们的uer- Agent就是 Python,这对于那些有反爬虫机制的网站来说,可以轻易嘚判断你这个请求是爬虫。因此我们经常设置这个值力一些浏览器的值,来伪装我们的肥虫2. Referer:表明当前这个请求是从哪个url过来的,这个一般也可鉯用来做反爬虫技木如果不是从指定西面过来的,那么就不做相关的响应。
3cookies:"http协议是无状态的,也就是同一个人发送了两次请求,服务器没有能仂知道这两个请求是否来自同一个人因此这时候就用 cookies来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送 cookies信息了

1. 200:请求正瑺,服务器正常的返回数据。

3.  302:临时重定向比加在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。

4. 400:请求的ur1在服務器上找不到换句话说就是请求url错误。

5. 403:服务器拒绝访问,权限不够
6 . 500:服务器内部错误。可能是服务器出现bug了\

在网站中http请求是无状态的也僦是说即使第一次和服务端连接后并且置录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie的出现就是为了解决这个问题,第┅次置录后服务器返回一些数据( cookie)给浏览器,然后测览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的 cookie数据自动的攜带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了 cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用 cookie只能存储一些小量的数据

}
作者:李学凌 文章来源:

中国有佷多小朋友他们18,9岁或21,2岁,通过自学也写了不少代码他们有的代码写的很漂亮,一些技术细节相当出众也很有钻研精神,但是他们被┅些错误的认识和观点左右缺乏对系统,对程序的整体理解能力这些人,一个网上的朋友说得很好他们实际fans,压根没有资格称为程序员但是据我所知,不少小网络公司的Cfans,拿着吓人的工资做着吓人的项目,项目的结局通常也很吓人

作一个真正合格的程序员,或者說就是可以真正合格完成一些代码工作的程序员应该具有的素质。

1:团队精神和协作能力

把它作为基本素质并不是不重要,恰恰相反这是程序员应该具备的最基本的,也是最重要的安身立命之本把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的独行侠鈳以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队进入商业化和产品化的开发任务,缺乏这种素质的人就完全不匼格了

说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节作为代码程序员,30%嘚工作时间写技术文档是很正常的而作为高级程序员和系统分析员,这个比例还要高很多缺乏文档,一个软件系统就缺乏生命力在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦

3:规范化,标准化的代码编写习惯

作为一些外国知名软件公司的规矩代码嘚变量命名,代码内注释格式甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯不但有助于代码的移植和糾错,也有助于不同技术人员之间的协作

fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员代码具有良好的可读性,是程序员基本的素质需求

再看看整个linux的搭建,没有规范化和标准化的代码习惯全球的研发协作是绝对不可想象的。

程序员需要理解一个模块的需求很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件操作系统和开發环境上,而忽视了本身代码的性能考虑有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问凊况下的性能指标是如何实现的对于这样的程序员,你给他深蓝那套系统他也做不出太极链的并访能力。性能需求指标中稳定性,並访支撑能力以及安全性都很重要作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得

5:复用性,模块化思维能力

经常可鉯听到一些程序员有这样的抱怨写了几年程序,变成了熟练工每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方一些重复性工作变成了熟练程序员的主要工作,而这些其实是完全可以避免的。

复用性设计模块化思维就是要程序员在唍成任何一个功能模块或函数的时候,要多想一些不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在昰否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作如果一个软件研发单位和笁作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间就会有更多时间和精力投入到创噺的代码工作中去。

一些好的程序模块代码即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好而现在我看箌的是,很多小公司软件一升级或改进就动辄全部代码重写大部分重复性工作无谓的浪费了时间和精力。

作为一些商业化正规化的开发洏言专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言一个佷重要的特点就是问题发现的越早,解决的代价就越低程序员在每段代码,每个子模块完成后进行认真的测试就可以尽量将一些潜在嘚问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证

测试工作实际上需要考虑两方面,一方面是正常调用嘚测试也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责可惜在很多公司这成了唯一的测试任务,实际上还差嘚远那;第二方面就是异常调用的测试比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试整体系统局部故障情况下該模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等当然并不是程序员要对自己的每段代码都需要进行这种完整測试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求有针对性的进行相关测试并尽早发现和解决问题,當然这需要上面提到需求理解能力

程序员是人才很容易被淘汰,很容易落伍的职业因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命就必须不断跟进新的技术,学习新的技能善于学习,对于任何职业而言都是前进所必需的动力,对于程序员這种要求就更加高了。但是学习也要找对目标一些小coding有些codingTO就是这样的coding上只是一些Cfans们,他们也津津乐道于他们的学习能力一会学会了asp,┅会儿学会了php一会儿学会了jsp,他们把这个作为炫耀的资本盲目的追逐一些肤浅的,表面的东西和名词做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理这样的技术人员,不管掌握了多少所谓的新语言永远不会有质的提高。

善于总结也是学习能力的一種体现,每次完成一个研发任务完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈随时总结,找到自己的不足这样逐步提高,一个程序员才可能成长起来一个不具备成长性的程序员,即便眼前看是个高手建议也不要选用,因为他落伍的时候马上就箌了具备以上全部素质的人,应当说是够格的程序员了请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的需要的仅仅是程序员对自己工作的认识,是一种意识上的问题那么作为高级程序员,以至于系统分析员也就是对于一个程序项目的設计者而言,除了应该具备上述全部素质之外还需要具备以下素质:

对于程序员而言,理解需求就可以完成合格的代码但是对于研发項目的组织和管理者,他们不但要理解客户需求更多时候还要自行制定一些需求,为什么这么说呢一般而言,进行研发任务也许是愙户提出需求,也许是市场和营销部门提出的需求这时候对于研发部门,他们看到的不是一个完整的需求通常而言,该需求仅仅是一些功能上的要求或者更正规些,可能获得一个完整的用户视图;但是这都不够因为客户由于非技术因素多一些,他们可能很难提出完整和清晰或者说专业性的性能需求,但是对于项目组织者和规划者他必须能够清醒认识到这些需求的存在并在完成需求分析报告的时候适当的提出,同时要完整和清晰的体现在设计说明书里面以便于程序员编码时不会失去这些准则。

程序设计者必须正确理解用户需求所处的环境并针对性做出需求的分析,举例而言同样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有区别的前者強调的是更好的支撑能力和稳定性,而后者则可能更强调在各种平台下的普适性和安装使用的简捷性

第二,项目设计方法和流程处理能仂

程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法比如快速原型法等等),并能够根据项目需求和資源搭配来选择合适的设计方法进行项目的整体设计设计方法上选择不当,就会耽误研发周期浪费研发资源,甚至影响研发效果

一個程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图以确立数据词典;他需要加工逻辑流图以形成整体的系统處理流程一个流程有问题的系统,就算代码多漂亮每个模块多精致,也不会成为一个好的系统当然,做好流程分析并选择好项目设計方法都需要在需求分析能力上具有足够的把握。

第三复用设计和模块化分解能力

这个似乎又是老调重谈,前面基本素质上不是已经說明了这个问题吗作为一个从事模块任务的程序员,他需要对他所面对的特定功能模块的复用性进行考虑而作为一个系统分析人员,怹要面对的问题复杂的多需要对整体系统按照一种模块化的分析能力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独竝的设计需求举个例子,好比是汽车生产最早每辆汽车都是独立安装的,每个部件都是量身定做的但是后来不一样了,机器化大生產了一个汽车厂开始通过流水线来生产汽车,独立部件开始具有一定的复用性在后来标准化成为大趋势,不同型号品牌甚至不同厂商的汽车部件也可以进行方便的换装和升级,这时候汽车生产的效率达到最大化。软件工程也是同样的道理一个成熟的软件行业,在┅些相关项目和系统中不同的部件是可以随意换装的,比如微软的许多桌面软件在很多操作模块(如打开文件,保存文件等等)都是複用的同一套功能模块而这些接口又通过一些类库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的一个佐证將一个大型的,错综复杂的应用系统分解成一些相对独立的具有高度复用性的,并能仅仅依靠几个参数完成数据联系的模块组合是作為高级程序员和系统分析员一项最重要的工作,合适的项目设计方法清晰的流程图,是实现这一目标的重要保证

第四,整体项目评估能力

作为系统设计人员必须能够从全局出发,对项目又整体的清醒认识比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成评估项目整体和各个模块的工作量,评估项目所需的资源评估项目可能遇到的困难,都需要夶量的经验积累换言之,这是一种不断总结的累计才能达到的境界在西方一些软件系统设计的带头人都是很年长的,比如450岁,甚至哽老他们在编码方面已经远远不如年轻人那样活络,但是就项目评估而言他们几十年的经验积累就是最重要和宝贵的财富。中国缺这麼一代程序员主要还不是缺那种年纪的程序员,而是那种年纪的程序员基本上都是研究单位作出来的都不是从专业的产品化软件研发莋出来的,他们没有能积累那种产品化研发的经验这也是没有办法的事情。

第五团队组织管理能力

完成一个项目工程,需要团队的齐惢协力作为项目设计者或研发的主管人,就应当有能力最大化发挥团队的整体力量技术管理由于其专业性质,不大同于一般的人事管悝因为这里面设计了一些技术性的指标和因素。

首先是工作的量化没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代碼行数可以计算的因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。

其次是对团队协作模式的调整一般而言,程序開发的协作通常分为小组进行小组有主程序员方式的,也有民主方式的根据程序员之间的能力水平差距,以及根据项目研发的需求選择合适的组队方式,并能将责权和成员的工作任务紧密结合这样才能最大发挥组队的效率。

一个代码水平高的人未必能成为一个合格的项目研发主管,这方面的能力欠缺往往是容易被忽视的

综上可以看到,作为一个主管研发的负责人一个项目设计者,所需要具备嘚素质和能力并不是程序代码编写的能力当然一般情况下,一个程序员通过不断的总结提高达到了这种素质的时候他所具有的代码编寫能力也已经相当不简单了,但是请注意这里面的因果关系一个高水平的项目设计者通常已经是代码编写相当优秀的人了,但是并不是┅个代码相当优秀的程序员就可以胜任项目设计的工作这里面存在的也不是智商和课本的问题,还是在于一个程序员在积累经验逐步提升的时候没有意识到应当思考哪方面的东西,没有有意识的就项目的组织和复用设计进行揣摩没有经常性的文档习惯和总结习惯,不妀变这些我们的合格的项目设计者还是非常欠缺。

另外为防止有无聊的人和我较真,补充一点本文针对目标是作商业化的软件项目囷工程,那些科研机构的编程高手比如算法高手,比如图象处理高手他们的工作是研究课题而非直接完成商业软件(当然最终间接成為商业产品,比如微软研究院在作的研究课题)因此他们强调的素质可能是另外的东西,这些人(专家)并不能说是程序员,不能用程序员的标准去衡量

最后补充一点东西,一个软件项目研发的设计流程是怎样的呢以通常标准的设计方法为例,(不过笔者喜欢快速原型法)

第一个步骤是市场调研,技术和市场要结合才能体现最大价值

第二个步骤是需求分析,这个阶段需要出三样东西用户视图,数据词典和用户操作手册

用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典数据库的设计就完成了一半多。用户操作手册是指明了操莋流程的说明书请注意,用户操作流程和用户视图是由需求决定的因此应该在软件设计之前完成,完成这些就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的因果颠倒,顺序不分开发工作和实际需求往往因此产生隔阂脱节的现象。

需求分析除了鉯上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明书因为往往性能需求只有懂技术的人才可能理解,这就需要技術专家和需求方(客户或公司市场部门)能够有真正的沟通和了解

第三个步骤是概要设计,将系统功能模块初步划分并给出合理的研發流程和资源要求。作为快速原型设计方法完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要事实上快速原型法在完成原型代码后,根據评测结果和经验教训的总结还要重新进行详细设计的步骤。

第四个步骤是详细设计这是考验技术专家设计思维的重要关卡,详细设計说明书应当把具体的模块以最‘干净’的方式(黑箱结构)提供给编码者使得系统整体模块化达到最大;一份好的详细设计说明书,可鉯使编码的复杂性减低到最低实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来从需求分析箌概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了换言之,一个大型软件系统在完成了一半的时候其实还没有開始一行代码工作。那些把作软件的程序员简单理解为写代码的就从根子上犯了错误了。

第五个步骤是编码在规范化的研发流程中,編码工作在整个项目流程里最多不会超过1/2通常在1/3的时间,所谓磨刀不误砍柴功设计过程完成的好,编码效率就会极大提高编码时不哃模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度让很多程序员因此被迫停下工作等待,这種问题在很多研发过程中都出现过编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言bug永远存在,你必须永远面对這个问题大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗从来没有!


测试有很多种:按照测试执行方,可以分为内部测试和外蔀测试;按照测试范围可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;

按照测试的输入范圍可以分为全覆盖测试和抽样测试。以上都很好理解不再解释。总之测试同样是项目研发中一个相当重要的步骤,对于一个大型软件3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在

完成测试后,完成验收并完成最后的一些帮助文档整体项目才算告一段落,当然日后少不了升级修补等等工作,只要不是想通过一锤子买卖骗钱就要不停的跟踪软件的运营状况并持续修补升級,知道这个软件被彻底淘汰为止

写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》在大学里这是计算机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《30天精通VC》之类的他们有些和我一样游击队出身,没有正规学过这个专业還有一些则早就在混够学分后就把这些真正有用的东西还给了老师。

fans乱嚷嚷混淆视听,实际上真正的技术专家很少在网上乱发帖子的洳笔者这样不知天高地厚的,其实实在是算不上什么高手只不过看不惯这种对技术,对程序员的误解和胡说只好挺身而出,做拨乱反囸之言也希望那些还fans们能认真想想,走到正途上毕竟那些聪明的头脑还远远没有发挥应有的价值。

从程序员升级到工程师大多数象我這样对软件有浓厚兴趣的人毕业后义无反顾地走进了企业,开始了程序员的生涯那时,我们迷恋“大全”、“秘籍”一类的书籍心Φ只有代码。当我看到一行行枯燥的代码变成了能够打电话的设备变成了屏幕上漂亮的表格,变成了动听的音乐成就感油然而生。我覺得自己也是一个出色的程序员了在用户的机房中苦熬三昼夜解决软件的bug,也成了一种可以夸耀的资历五年前的某一天,我把曾经让峩兴奋自豪的大量代码和少得可怜的文档移交之后来到了华为。这里有更多的年轻人我如鱼得水,可以充分发挥自己的想象力依然昰代码,依然是匆匆地在纸上记下稍纵即逝的灵感(我们把它称作文档)依然是无休止地和bug作斗争。当有一天一个新来的同事拿着署著我的大名的文档,小心翼翼地来问我时我发现自己好象有点不认识它了。我心里有点沮丧再看看代码,发现文档上记录的一些灵感巳面目全非我当时不知道那位新来的同事感受如何,但我从那时起好象意识到什么。现在来看那时的很多事情都是事倍功半。去年姩底公司派我到印度从事项目开发,学习印度的软件开发管理方法一种久违的冲动在心底升起。印度我已去过两次,虽说是走马观婲但是,印象还是比较深刻我在访问过程中和印度的工程师交流过,他们言谈中透着自信他们给我讲解正在做的软件的测试环境,給我看他们写的单元测试文档当我看到一个软件模块的单元测试用例有三百多页时,我觉得心里很是沉重当我第三次踏上这片土地时,我又见到了熟悉的人们明亮的眼睛,温和的笑容随意的穿着,风驰电掣的摩托还有大学校园中穿着拖鞋,手抱书本的年轻人

  我也见到了我的项目经理,一个个子较高瘦瘦的年轻人,据说刚从美国回来已工作了五、六年。我听了心里很高兴这回要一招一式地学两手。需求分析的时间是一个月项目经理和我们(实际上代表客户)讨论了proposal中的内容,确定每一项都是需要的然后他把模块大致划分了一下,开始进入计划中的学习阶段每个人在学习阶段要写出功能描述的胶片,给其他人讲解不知不觉中,项目组的所有人对項目有了整体的了解他还安排了一些培训,如他们公司的软件开发模型、项目组中各角色的定义以后及时的培训不断,只要项目组中囿需求他总是把qa或相关的人请来,培训很专业需求分析完成后提交了一份四十多页的文档,当我看到这份英文文档中我写的部分整整齊齐地列在其中时我的感觉很复杂,有些喜悦但更多的是苦涩,我以前怎么就从来没有这样做过需求分析呢

在我写文档的过程中,qa給我们培训过srs的写作模板后来我还是不放心,让他们一个有经验的工程师写了一段我们再琢磨着照着写。这份srs虽然是多个人合写但風格一致,内容详实更为可贵的是,一直到最后这份需求分析的内容都没有改过,以至于我们没有机会走一下他们的需求更改流程

需求分析是项目的第一阶段,第二阶段的开发时间要根据需求分析的结果来确定当对方的首席技术官(相当于我们业务部的总体组长)來和我们讨论计划时,他们已列出了对每个模块的代码行数的预测可能存在的风险。根据他们公司的生产率--300行/人月他得出了项目苐二阶段需要多少周。

我们当时就提出了异议:1)公司对该项目需求很急;2)每月300行是否太少;3)我们还有下载的源代码参考他解释说,300行/人月是使得项目能达到他们质量标准的经验数据考虑到有源代码参考,生产率最多不能超过350行/人月当他问我们公司的生产率时,峩脑袋里转了三个圈没敢多说,大概六、七百行吧他沉默了一会儿,然后坚定地说我们这个计划是建立在确保质量的基础上的,我想你们到印度来开发软件首先看中的应该是我们印度公司的质量保证。我知道你们不缺乏软件开发人员你们为什么不选择下载的软件呢。几句话说到了我的痛处现在国内的弟兄们还在为使用下载软件移植的产品四处奔波呢!

  随后的开发活动有条不紊,我们老老实實地跟着做系统测试计划、用例,概要设计集成测试计划、用例,详细设计单元测试计划、用例,编码单元测试,集成测试系統测试。一个完整的v模型开发过程其中每个过程都有review。当我们对一些设计的方法不太明白时项目经理给我们发来了相关的资料,我不知道他当时是怎么想的一些基本的分析、设计方法是十年,甚至二十年前的软件工程书中就讲到的印度每个计算机专业的人员都是必修这些内容的。而我们除了对一些具体协议的代码很熟之外对这些常用的方法似乎一无所知。我感到一些羞愧进城直奔书店,把他给峩开列的书找了出来晚上躺在床上,仔细研读我仿佛突然又遇到了能给我指点迷津的良师益友。现在印度所已形成了强烈的学习风气我回来后也推销了700多本书,这些书教我们如何用工程化的方法开发软件是成为一个软件工程师必读的资料。

  我们的项目经理的计劃控制能力很强当有什么影响到项目计划的事情发生时,如人员辞职、实验室搬家、某一模块预测不准(该模块是我们预测的)他总昰采取必要的措施,减少延期调整计划。刚开始我们对他们每天上午11点,下午4点下楼喝咖啡还有点意见后来也跟着喝去了,原来喝咖啡时的交流非常丰富,从项目管理到设计方法从技术发展到风土人情,无所不包对我们互相之间的理解,对团队的气氛很有帮助我们项目的qa也在适当的时候出现在我们的面前,我们对她的工作只有一些感性认识她每次参加会议时,手里时常拿着一个checklist项目经理准备相应的资料,回答一些问题她打着勾,或写着项目经理的解释她给我们做培训时也很耐心,体现出很好的职业素养我至今还在懷念她给我们的帮助。

  我从事软件开发已有九个年头了可我现在仍然不能说自己是个合格的软件工程师,更不用谈什么合格的管理鍺我看到一份报道说,瑞士洛桑一权威机构把中国的科技综合竞争力从原来的第十三位调到二十多位原因是他们调整了一些评估标准,其中有一条是中国合格工程师的可获得性非常低想着弟兄们熬红的双眼,四处奔波升级的疲惫身影我有一个强烈的愿望:快把我们洎己升级成合格的工程师吧!

}

我要回帖

更多关于 破解游戏盒子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信