<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    數(shù)據(jù)加載中……

    2008年12月8日

    俄文網(wǎng)站出現(xiàn)亂碼解決方法

    有access數(shù)據(jù)庫(kù)的俄文網(wǎng)站出現(xiàn)亂碼的解決方法
    2008年12月12日 星期五 18:34

    最近站長(zhǎng)解決了此問題,做俄文網(wǎng)站,后臺(tái)添加數(shù)據(jù)的時(shí)候,必須做俄文版的后臺(tái),中文版的后臺(tái)寫數(shù)據(jù),時(shí)候前臺(tái)顯示肯定會(huì)出現(xiàn)亂碼,俄文版后臺(tái)最前面必須加<%@ codepage=866%> 866代表俄文的,下面還有幾種代表方式

    < %@ codepage=65001%>UTF-8
    <%@ codepage=936 %>簡(jiǎn)體中文
    <%@ codepage=950%>繁體中文
    <%@ codepage=437 %>美國(guó)/加拿大英語
    <%@ codepage=932 %>日文
    <%@ codepage=949 %>韓文

    codepage指定了IIS按什么編碼讀取。
    例如采用UTF-8編碼,就在文件的最上面加上 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    例如采用GBK編碼,就在文件的最上面加上 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

    管理后臺(tái)還要加上<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

    這一句,不然部分代碼會(huì)出現(xiàn)亂碼.

    本站站長(zhǎng)解決了此問題供大家參考.

    posted @ 2010-07-15 17:16 flyleer 閱讀(1633) | 評(píng)論 (2)編輯 收藏
    軟件項(xiàng)目管理實(shí)踐之日計(jì)劃(轉(zhuǎn)載)

    軟件項(xiàng)目管理實(shí)踐之日計(jì)劃

     袁光東 原創(chuàng)

    如何提高項(xiàng)目的生產(chǎn)率,保證項(xiàng)目按期交付是每個(gè)軟件開發(fā)項(xiàng)目經(jīng)理都需要面對(duì)的難題。關(guān)于這方面的研究,在《人月神話》、《人件》等書籍都有很詳細(xì)的論述。研究表明,不同程序員之間的生產(chǎn)率最高差別在40倍以上。雖然筆者沒有親睹這種樣例,但是筆者的開發(fā)和管理生涯中所發(fā)現(xiàn)的相同技術(shù)水平程序員之間的生產(chǎn)率最大差距可達(dá)4倍。這個(gè)數(shù)據(jù)就發(fā)生在筆者的一個(gè)項(xiàng)目中,這讓筆者感到非常的震驚。如果說40倍的生產(chǎn)率差距可能會(huì)有技術(shù)能力、工作經(jīng)驗(yàn)、熟悉程度諸多因素的影響。那么,筆者所發(fā)現(xiàn)的4倍生產(chǎn)率差距卻更讓筆者感到不可思議。

    案例

        程序員J:四年開發(fā)經(jīng)驗(yàn)

        程序員L:三年開發(fā)經(jīng)驗(yàn)

        程序員Y:五年開發(fā)經(jīng)驗(yàn)

        技術(shù)能力:Y > J > L

        J,L,Y同時(shí)進(jìn)入一個(gè)項(xiàng)目組,開發(fā)時(shí)間為30個(gè)工作日,即6周,包括需求分析、設(shè)計(jì)、編碼和集成。其中編碼和單元測(cè)試時(shí)間為10個(gè)工作日(2周)。產(chǎn)生的工作績(jī)效為:

     

    程序員 規(guī)模(代碼行)
    J 1500
    L 3600
    Y 6000

        可見,當(dāng)程序員的技能達(dá)到一定水平后,技能與生產(chǎn)率并不成正比,并不是技術(shù)水平越高的程序的生產(chǎn)率越高。

    一、最后期限

        很多程序員都會(huì)有類似的經(jīng)歷:

        1月1日,項(xiàng)目經(jīng)理說:“小張,在1月5日之前把這項(xiàng)工作做完,詳細(xì)的需求文檔我已經(jīng)發(fā)到你的郵箱中。”

        1月1日,小張對(duì)需求文檔瞥了幾眼,估計(jì)2天就可以完成,嘀咕:“現(xiàn)在才是1月1日嘛。這項(xiàng)任務(wù)要1月5日才提交。我還有時(shí)間,不用管它,還是先看我的小說吧。”

        1月2日,小張繼續(xù)看他那心愛的小說......

        1月3日,小張繼續(xù)看他那心愛的小說......

        1月4日 9:00,小張開始看需求文檔,2小時(shí)后中斷,因?yàn)樗枰迯?fù)系統(tǒng)的一個(gè)Bug。

        1月4日 18:00,小張正在埋頭苦干,因?yàn)槊魈炀鸵峤还ぷ鳎墒且粋€(gè)代碼還沒有寫呢。

        1月4日 23:00,小張完成大部分工作,下班走人。

        1月5日 9:00,項(xiàng)目經(jīng)理問:“小張,那個(gè)功能做完了吧?”小張答道:“就快了,今天提交沒有問題。”

        1月5日 14:00,小張發(fā)現(xiàn)有一部份代碼需要重寫。用戶的要求是需要一個(gè)可配置的功能,而小張卻寫成了硬代碼。

        1月5日 17:00,項(xiàng)目經(jīng)理來到小張面前:“小張,你中午不是說今天提交沒有問題嗎?怎么現(xiàn)在還沒有看你提交代碼?”小張委屈地答道:“經(jīng)理,遇到一點(diǎn)小麻煩。不過相信我,下班之前一定完成。”

        1月5日 18:00,項(xiàng)目經(jīng)理急匆匆趕到小張的座位旁:“小張,請(qǐng)馬上提交代碼,不然就來不及了。”小張這時(shí)也急了:“你不要催我。這個(gè)功能麻煩大了,沒有想象得那么簡(jiǎn)單。我今天晚上得加班。”項(xiàng)目經(jīng)理無可奈何地走了。小張加班到凌晨1點(diǎn)。但程序還是有一些問題。

        1月6日,小張仍然在修改程序......

        1月7日,小張仍然在修改程序......

        1月8日,總算是修改完成。已經(jīng)拖了三天,來不及測(cè)試,只能匆匆把代碼提交。

        后來,又經(jīng)過5次修改,直到1月20日,這個(gè)功能總算是徹底完成。

        小張向項(xiàng)目經(jīng)理請(qǐng)了一周假。因?yàn)檫@兩周來幾乎每天晚上都是加班解決問題。

        許多的程序員還會(huì)有這樣的經(jīng)歷:

        4月1日,項(xiàng)目經(jīng)理:“小王,這個(gè)功能交給你,需求你看了嗎?你看需要多長(zhǎng)時(shí)間完成?”

        小王:“哦,經(jīng)理,這個(gè)功能我剛看過,大約需要1周時(shí)間。”

        項(xiàng)目經(jīng)理:“那就是4月5日可以提交啦?”

        小王:“是的,經(jīng)理。這個(gè)功能內(nèi)容很多,還要實(shí)現(xiàn)一個(gè)郵件功能,4月5日能提交已經(jīng)是我的極限了。”

        項(xiàng)目經(jīng)理:“那就4月5日吧。”

        4月2日,小王發(fā)現(xiàn):系統(tǒng)中已經(jīng)有一個(gè)類似的郵件功能,直接使用就可以。

        4月2日 18:00,小王已經(jīng)把功能都完成了。

        4月3日 9:00,小王把功能都測(cè)試通過,并且還私下請(qǐng)用戶幫他進(jìn)行測(cè)試通過。

        4月3日 11:30,項(xiàng)目經(jīng)理:“小王,那個(gè)功能做完了嗎?”

        小王:“經(jīng)理,正在做呢。你看,昨天你又叫我修改另外一個(gè)Bug。不過,經(jīng)理你放心吧,4月5日一定可以提交。”(小王已經(jīng)做完工作,但聲稱沒有做完。)

        4月4日,小王專注的看著一本電子書,名字叫《The Deadline》。

        4月5日 15:00,小王把代碼提交,并向經(jīng)理發(fā)郵件,主題是:XXX功能已經(jīng)完成。

        4月6日 9:00,項(xiàng)目組開會(huì),項(xiàng)目經(jīng)理表?yè)P(yáng)了小王,要求大家向小王學(xué)習(xí)。因?yàn)檫@次發(fā)布只有小王按時(shí)完成了工作。

        簡(jiǎn)直不可思議,我們的程序員就是這樣工作的。是的,我也認(rèn)為不可思議!可是哪個(gè)程序員敢保證自己沒有這么干過呢?這就是所謂的最后期限:人們總是在最后期限才開始工作

    二、熱衷于加班

        在所有的軟件項(xiàng)目組中,加班已經(jīng)成了天經(jīng)地義的事。甚至有些管理層認(rèn)為,如果一個(gè)項(xiàng)目組不加班,說明項(xiàng)目組沒有盡全力的去做事。我至今不明白這是什么道理,工作是否盡力與加班到底有何關(guān)系?工作的績(jī)效又與加班有何種關(guān)系?

        在筆者的項(xiàng)目組中,筆者的客戶方也曾對(duì)筆者要求項(xiàng)目組必須加班,遭到了筆者的拒絕。在保證每個(gè)階段在不加班的情況下按期完成,客戶方才勉強(qiáng)同意。事實(shí)證明,不加班也是可以把項(xiàng)目做完的,而且可以做得更好。

        在我的程序員生涯中,曾經(jīng)兩次長(zhǎng)達(dá)4個(gè)月的封閉開發(fā)期,被要求每天從19:00-22:00集體加班。但實(shí)際情況是,每天都可能要在23:00之后才可以下班。因?yàn)轫?xiàng)目經(jīng)理沒有走,所以其它開發(fā)人員也只能留下。痛苦的是,我在那段加班時(shí)間里除了看技術(shù)電子書外,找不到任何可做的事情。我相信,當(dāng)時(shí)項(xiàng)目組有太多的人跟我一樣。當(dāng)我每天23:00回到賓館時(shí),已經(jīng)完全麻木了。我無時(shí)不想那該死的項(xiàng)目早一天結(jié)束。在那段時(shí)間里,我最大的收獲時(shí)進(jìn)行了大量技術(shù)積累。項(xiàng)目結(jié)束時(shí),我的加班記錄累計(jì)長(zhǎng)達(dá)30人天。

        甚至有些程序員在正常的工作時(shí)間里也是不做事的,下班前開始忙碌,加班干活。想想這樣的加班又有什么效果呢?

    三、工作成熟度與團(tuán)隊(duì)成熟度

        因此,我一直致力于研究提高個(gè)人工作績(jī)效的方法和提高項(xiàng)目組工作績(jī)效的方法。

        在長(zhǎng)期的學(xué)習(xí)、摸索、實(shí)踐中,我發(fā)現(xiàn)全心的投入工作,干好4個(gè)小時(shí)就足以把工作做好。這種全心投入產(chǎn)生的績(jī)效要比以前一周所干的還要多。如果每天努力干好8個(gè)小時(shí),你會(huì)比周圍的人產(chǎn)生2倍以上的績(jī)效,當(dāng)然也會(huì)非常疲憊。

        在管理一個(gè)40人規(guī)模的團(tuán)隊(duì)時(shí),我每天投入僅僅4個(gè)小時(shí)就足夠。為什么會(huì)有這么高的工作效率?主要是長(zhǎng)期堅(jiān)持下面的方法:

        1.日計(jì)劃,列出工作清單(列出當(dāng)天需要做的事情)

        2.為任務(wù)劃優(yōu)先級(jí)(標(biāo)出當(dāng)天必須完成的事情)

        3.只做最重要的事情,而不是最緊急的事情

        4.絕不拖延,計(jì)劃當(dāng)天必須完成的事情就一定要做完才走。

        筆者長(zhǎng)期以來在思考,這個(gè)方法能否幫助團(tuán)隊(duì)提高工作績(jī)效?能否讓項(xiàng)目組提高生產(chǎn)率?能否使項(xiàng)目按期交付和提前交付?能否幫助程序員在不加班的情況下把項(xiàng)目做好?

        在筆者帶項(xiàng)目和監(jiān)控項(xiàng)目的過程中發(fā)現(xiàn),程序員工作效率不高的原因除了技能因素外,還有幾個(gè)重要的因素在影響著程序員的工作績(jī)效:

        1.工作無計(jì)劃:很多程序員根本不知道每天要做哪些事情,每天必須做完哪些事情。很少有程序員對(duì)當(dāng)天的工作進(jìn)行計(jì)劃,

        2.工作無重點(diǎn):很多程序員通常按事情發(fā)生的先后順序來做事。有時(shí),有些程序員忙碌了一天下來卻發(fā)現(xiàn)當(dāng)天其實(shí)沒有做什么有用的事情。

        3.工作無目的:程序員不知道當(dāng)天要把事情做到什么程度,完全是憑心情做事,憑良心做事。事情沒有做完,別人下班自己也跟著下班,認(rèn)為反正明天還有時(shí)間,還沒有到最后期限。

        4.工作不到位:工作起來總是覺得差不多就行。把代碼寫完和功能能夠運(yùn)行當(dāng)作兩回事情。工作到位就是一次就把工作做好,達(dá)到可交付。

        5.工作無積極性:被動(dòng)式工作,就算工作做完也不提交,一定要等到最后期限才提交。如果比承諾時(shí)間提前提交工作,馬上就會(huì)帶來新的工作,多干和少干一個(gè)樣,誰愿意多干呢?

        我們可以提出一個(gè)概念叫做“工作成熟度”。工作成熟度高的程序員通常會(huì)有計(jì)劃性、工作有重點(diǎn)、有目的性、工作做到位。而成熟度低的程序員通常是無計(jì)劃的,工作不分輕重,很容易被突發(fā)事件打斷當(dāng)前工作,工作要通過多次修改才能夠完成。所以,我發(fā)現(xiàn),工作成熟度對(duì)程序員生產(chǎn)率造成最直接的影響。

        筆者在監(jiān)控項(xiàng)目的過程中也發(fā)現(xiàn)造成項(xiàng)目組效率低下、進(jìn)度落后的一些因素:

        1.項(xiàng)目經(jīng)理不了解項(xiàng)目當(dāng)日狀態(tài)。是的,有些項(xiàng)目經(jīng)理根本不知道今天每個(gè)程序員會(huì)干些什么?該干些什么?

        2.項(xiàng)目經(jīng)理不了解項(xiàng)目實(shí)情。沒錯(cuò),項(xiàng)目經(jīng)理根本就不知道每個(gè)程序員當(dāng)天干了多少活,干到什么程度,還要干多久?也就不知道項(xiàng)目到了什么程序,還有多少工作量要做?

        3.項(xiàng)目經(jīng)理不知道每個(gè)人是否能夠按期交貨。項(xiàng)目經(jīng)理只能是望天收成,期望程序員憑良心、憑職業(yè)道德做事。但是,至于程序是否能夠按期交貨,只有鬼才知道。

        4.項(xiàng)目經(jīng)理不知道工作的重點(diǎn)是什么?哪些工作是本階段必須要完成的?哪些是可以拖后的?

        5.不良溝通。項(xiàng)目組的溝通不良,產(chǎn)生大量重復(fù)代碼。甚至?xí)袃蓚€(gè)程序同時(shí)開發(fā)一個(gè)功能,但是彼此間卻不知道。

        6.信息不能共享。程序員彼此之間不知道別人干得怎么樣?也不知道項(xiàng)目整體情況到底怎么樣?這也難為程序員了,因?yàn)轫?xiàng)目經(jīng)理也不知道。

        糟糕的項(xiàng)目都存在著一個(gè)黑洞。通常會(huì)是在編碼階段,整個(gè)項(xiàng)目組就像在黑洞中穿行一樣,誰也看不清對(duì)方,不知道黑洞的盡頭在哪里,誰也不知道走過多少地方,還要多久才能走出黑洞。總之,項(xiàng)目經(jīng)理只能拼命的喊:“快點(diǎn),快點(diǎn),兄弟們,我們的時(shí)間不多了。”所以,項(xiàng)目經(jīng)理只能讓所有的人每天加班,星期六不能休息,到最后,星期天也不能休息。

        這就是我們可以提出的另一個(gè)概念——“團(tuán)隊(duì)成熟度”。

        “噢,伙計(jì),我已經(jīng)聽煩了。好像是有那么回事!可是又能怎么樣呢?所有的項(xiàng)目不都是這樣過來的嗎?”

    四、日計(jì)劃做什么?

        程序員的工作成熟度直接影響了程序員的生產(chǎn)率;項(xiàng)目的團(tuán)隊(duì)成熟度直接影響了項(xiàng)目的生產(chǎn)率。如果我們能夠提高程序員工作成熟度和團(tuán)隊(duì)成熟度,就一定可以提高項(xiàng)目的生產(chǎn)率。

        而程序員工作成熟度和項(xiàng)目團(tuán)隊(duì)成熟度的共同核心點(diǎn)就是計(jì)劃。在筆者的研究和實(shí)踐過程中,可以通過在項(xiàng)目中實(shí)施日計(jì)劃來提高程序員的工作成熟度和項(xiàng)目的團(tuán)隊(duì)成熟度,從而提高程序員的生產(chǎn)率和項(xiàng)目的生產(chǎn)率。

        實(shí)施日計(jì)劃的流程:

        1.每天8:30-8:35,項(xiàng)目組召開晨會(huì)。由項(xiàng)目經(jīng)理列出每個(gè)開發(fā)人員的工作清單,并對(duì)每個(gè)工作任務(wù)標(biāo)注優(yōu)先級(jí)別,設(shè)定任務(wù)完成的標(biāo)準(zhǔn),指明當(dāng)日必須要完成的任務(wù),并得到責(zé)任人的承諾。

        2.每天下班前20分鐘,由項(xiàng)目經(jīng)理依次檢查開發(fā)人員的工作。評(píng)定工作是否完成。如果有開發(fā)人員未能完成任務(wù),一起分析任務(wù)未能完成的原因。然后召開一個(gè)簡(jiǎn)單的會(huì)議,介紹當(dāng)天工作的完成情況及當(dāng)前階段的項(xiàng)目狀態(tài),未完成任務(wù)的開發(fā)人員需要加班完成。

        每天早晨的會(huì)議我們稱之為晨會(huì),下午的會(huì)議稱之為夕會(huì)。

        日計(jì)劃的實(shí)施環(huán)節(jié):設(shè)定目標(biāo),制定計(jì)劃,檢查,反饋。

        日計(jì)劃的特點(diǎn):

        1.開發(fā)人員每天在晨會(huì)承諾完成的任務(wù)必須當(dāng)天完成,提倡日清日結(jié)。

        2.提交可交付的成果。(事先制定任務(wù)完成的標(biāo)準(zhǔn),并由項(xiàng)目經(jīng)理進(jìn)行檢查,評(píng)定任務(wù)是否完成。)

        3.做最重要的事情

        4.保證把工作做完

    五、我們是怎么實(shí)施日計(jì)劃的?

        日計(jì)劃看起來非常簡(jiǎn)單,下面我們將對(duì)日計(jì)劃的實(shí)踐進(jìn)行討論。

        1.實(shí)施日計(jì)劃對(duì)項(xiàng)目有什么作用?

        · 實(shí)施日計(jì)劃,使項(xiàng)目有良好的溝通機(jī)制。每個(gè)開發(fā)人員都非常清楚項(xiàng)目的當(dāng)前情況:項(xiàng)目已經(jīng)完成了多少?還有多少工作沒有完成?

        · 日計(jì)劃提倡可交付的成果,也就是每天完成的工作都一定是可交付的。

        · 日計(jì)劃提倡只做最重要的事情,使項(xiàng)目抓住了重點(diǎn)。

        · 項(xiàng)目經(jīng)理通過實(shí)施日計(jì)劃,非常清楚每個(gè)開發(fā)人員每天需要完成哪些任務(wù),每天必須完成哪些任務(wù),以及每個(gè)人的完成情況怎么樣?項(xiàng)目經(jīng)理充分地掌握了項(xiàng)目的情況,可以及時(shí)調(diào)整計(jì)劃,應(yīng)對(duì)各種變化。

        · 日計(jì)劃實(shí)現(xiàn)了項(xiàng)目的良好溝通,每項(xiàng)任務(wù)都由開發(fā)人員和項(xiàng)目經(jīng)理達(dá)成一致。

        · 日計(jì)劃通過晨會(huì)和夕會(huì)實(shí)現(xiàn)了項(xiàng)目組的信息共享。

        2.實(shí)施日計(jì)劃對(duì)程序員的作用

        · 日計(jì)劃列出了程序員每天要做的任務(wù)清單,并且對(duì)任務(wù)確定優(yōu)先級(jí)。

        · 對(duì)程序員的工作指明方向,并且要求程序員優(yōu)先做最重要的任務(wù),使程序員抓住了工作重點(diǎn)。

        · 日計(jì)劃要求提交可交付的成果,要求程序員把工作一步要做到位,養(yǎng)成良好的習(xí)慣。

        · 日計(jì)劃提高了程序員的工作績(jī)效,程序員可以回到正常的工作時(shí)間,減少無謂的加班。

        · 程序員比以前完成更多的工作而獲得獎(jiǎng)勵(lì)。

    3.在實(shí)施日計(jì)劃時(shí),與傳統(tǒng)項(xiàng)目管理的工作分配有什么不同?如何進(jìn)行工作分配?

        傳統(tǒng)項(xiàng)目管理的工作分配中,工作項(xiàng)的粒度比較粗。每一個(gè)工作項(xiàng)通常指一個(gè)功能。通常是把一個(gè)功能分給某程序員,甚至把一個(gè)模塊分派給某個(gè)程序員。工作項(xiàng)的工時(shí)以周為單位,通常是一周或者兩周。

     

    傳統(tǒng)項(xiàng)目管理任務(wù)分配表
    模塊 功能  當(dāng)前狀態(tài) 計(jì)劃開始 計(jì)劃結(jié)束 實(shí)際開始 實(shí)際結(jié)束 責(zé)任人
    訂單管理  訂單信息查詢 已開始 2009-3-1  2009-3-7 2009-3-1    L
    新增訂單 已開始 2009-3-1  2009-3-7 2009-3-1    L
    訂單管理 修改訂單 未開始 2009-3-1  2009-3-7     L
    刪除訂單 未開始 2009-3-1  2009-3-7     L

        實(shí)施日計(jì)劃的工作分配中,“工作項(xiàng)”的粒度更小。如果按照XP和Scrum的說法,功能就是指一個(gè)“故事”,完成“功能”的步驟或事件叫“任務(wù)”。

        傳統(tǒng)項(xiàng)目管理的任務(wù)分配是以“故事”為最小粒度。日計(jì)劃的任務(wù)分配是以“任務(wù)”為最小粒度。“任務(wù)”是指完成某一個(gè)“功能”的步驟或事件。每個(gè)人當(dāng)天的任務(wù)工時(shí)總合為1人天。

        故事和任務(wù)的區(qū)別:

     

    故事
    任務(wù)
    訂單信息查詢
    DAO編碼
    DAO單元測(cè)試
    業(yè)務(wù)層編碼
    JSP表示層編碼
    集成測(cè)試

        要實(shí)現(xiàn)訂單信息查詢就由右邊的那些任務(wù)組成。

        開始,我不知道怎樣來描述一個(gè)“功能”和實(shí)現(xiàn)一個(gè)功能細(xì)化的“任務(wù)”。后來,當(dāng)我看到Scrum的書籍后,看到Sprint和任務(wù)板時(shí),才知道自己的實(shí)踐與Scrum的某些實(shí)踐竟有如此相似之處。我困惑很久,想不到用什么詞來表示一個(gè)“功能”和實(shí)現(xiàn)一個(gè)功能所需要的“步驟”。Scrum使用“故事”和“任務(wù)”來定義它們,我認(rèn)為非常的準(zhǔn)確到位。

        但是日計(jì)劃的工作分配與Scrum的工作分配是不同的。實(shí)施日計(jì)劃是由項(xiàng)目經(jīng)理主導(dǎo)的;而Scrum強(qiáng)調(diào)由程序員主導(dǎo)。至于這兩種方式,哪一種更好。我覺得可以結(jié)合具體的情況進(jìn)行不同的實(shí)踐。

        如果是程序員成熟度比較高的項(xiàng)目,可以由程序員來主導(dǎo)。程序員成熟度較低和工期很緊的項(xiàng)目,可以由項(xiàng)目經(jīng)理來主導(dǎo)。總之,這都需要程序員和項(xiàng)目經(jīng)理達(dá)成一致。程序員需要向項(xiàng)目經(jīng)理承諾。

        Scrum會(huì)對(duì)每個(gè)任務(wù)進(jìn)行事先估算,而日計(jì)劃分配工作任務(wù)前才會(huì)進(jìn)行估算,并且只為每個(gè)人分配工作量為1人天的任務(wù)總和。

     

    日計(jì)劃樣例:2009-3-22程序員L工作計(jì)劃
    開發(fā)人員  今日計(jì)劃工作及完成情況
    序號(hào) 工作任務(wù) 優(yōu)先級(jí) 完成標(biāo)準(zhǔn) 是否完成 完成百分比 完成情況 未完成原因 檢查人
    L 1 訂單管理模塊DAO實(shí)現(xiàn) 50 單元測(cè)試通過          
    2 與用戶確認(rèn)頁(yè)面原型 10 用戶確認(rèn)郵件          

        程序員L任務(wù)1的優(yōu)先級(jí)為50,任務(wù)2的優(yōu)先級(jí)為10。這并不表示兩個(gè)任務(wù)的重要程度相差40,而是表示L當(dāng)天應(yīng)該先做任務(wù)1,再做任務(wù)2。

        筆者認(rèn)為這種日計(jì)劃更加靈活。因?yàn)轫?xiàng)目經(jīng)理可以靈活的設(shè)置任務(wù)。Scrum的任務(wù)都是依據(jù)故事。日計(jì)劃甚至可以把與開發(fā)根本不相干的事情包括進(jìn)來。

        當(dāng)天要完成哪些任務(wù)是由項(xiàng)目經(jīng)理先計(jì)劃的,但是程序員可以提出不同的意見。雙方達(dá)成一致。并且任務(wù)是可以量化和檢查的。因此,事先還要設(shè)置完成標(biāo)準(zhǔn)。一旦程序員與項(xiàng)目經(jīng)理達(dá)成一致,就相當(dāng)于程序員向項(xiàng)目經(jīng)理承諾,今天可以完成這些任務(wù)。

        對(duì)于成熟度比較高的程序員,完全可以由程序員先提出計(jì)劃。然后,由項(xiàng)目經(jīng)理進(jìn)行評(píng)估和檢查。雙方達(dá)成一致后,就把任務(wù)放入日計(jì)劃的工作任務(wù)表中。

    4.為什么要檢查?怎么進(jìn)行檢查?

        如果沒有檢查,計(jì)劃就是無效的。

        日計(jì)劃強(qiáng)調(diào)提交可交付的成果。雖然事先制定了標(biāo)準(zhǔn),但是程序員和項(xiàng)目經(jīng)理可能會(huì)對(duì)可交付成果的理解不同。項(xiàng)目經(jīng)理如果要清楚地了解到項(xiàng)目狀況就必須要親自進(jìn)行檢查。

        如何進(jìn)行檢查?項(xiàng)目經(jīng)理一定要在現(xiàn)場(chǎng)工作,最好的辦法就是讓他演示給你看。對(duì)于不能演示的任務(wù)就進(jìn)行抽查。因?yàn)槭孪纫呀?jīng)制定完成標(biāo)準(zhǔn),大家只需要按規(guī)矩辦事即可。

        并且一定要填寫完成情況,以便后期的跟蹤。

        5.如果程序員不能完成日計(jì)劃怎么辦?如何才能夠使程序員能夠完成日計(jì)劃?

        程序員不能完成日計(jì)劃時(shí),也就是進(jìn)度出現(xiàn)了偏差。項(xiàng)目經(jīng)理一定要與程序員一起分析偏差的原因,并記錄下來。進(jìn)度發(fā)生偏差最有可能的兩個(gè)原因:計(jì)劃不合理和計(jì)劃執(zhí)行不力。

        計(jì)劃不合理包括:對(duì)任務(wù)的難度和工作量估算失誤,對(duì)程序員能力的估算失誤,或者程序員的工作方法存在問題,需要支持和協(xié)助等。

        如果是對(duì)任務(wù)估算發(fā)生失誤,就需要重新進(jìn)行估算。這正是日計(jì)劃和檢查帶來的好處。項(xiàng)目經(jīng)理需要重新調(diào)整計(jì)劃。

        如果是對(duì)程序員能力估計(jì)失誤,項(xiàng)目經(jīng)理也需要重新進(jìn)行調(diào)整,如換人,或延長(zhǎng)時(shí)間。

        如果是程序員工作方法存在問題,就一定要進(jìn)行指導(dǎo),或者安排其它人員進(jìn)行協(xié)助。

        如果是計(jì)劃執(zhí)行不力,也要找到最核心的原因是什么?是意愿不高?中間去做其它事情?工作習(xí)慣如此?都需要找到核心原因,方可對(duì)癥下藥。

        在我的團(tuán)隊(duì)中,績(jī)效考核的幾個(gè)核心指標(biāo):工作效率*工作效果*工作量

        不能完成日計(jì)劃,會(huì)直接影響到月底的績(jī)效和獎(jiǎng)金。

        如何才能夠使程序員完成日計(jì)劃?首先是計(jì)劃一定要合理,要考慮到個(gè)體差異,分配任務(wù)在其能力范圍之內(nèi)。日計(jì)劃一定要獲得當(dāng)事人的承諾。檢查和跟蹤一定要到位。要與考核掛勾,做到會(huì)得到什么?做不到會(huì)有什么后果?

        六、沒有銀彈

        是的,沒有銀彈。沒有任何一種方法可以保證項(xiàng)目一定能夠成功。日計(jì)劃也一樣。目標(biāo)、計(jì)劃、執(zhí)行、控制構(gòu)成管理的核心。所謂工作成熟度和團(tuán)隊(duì)成熟度其實(shí)都可以歸納為“執(zhí)行力”。日計(jì)劃只是一種管理實(shí)踐,在不同的環(huán)境可能會(huì)有不同的實(shí)踐方法,并不是一層不變的。

    posted @ 2010-03-24 17:29 flyleer| 編輯 收藏
    Oracle創(chuàng)建數(shù)據(jù)表空間,用戶,授權(quán),表,索引,簇(2008-07-26 22:38:59)

    //創(chuàng)建臨時(shí)表空間(日志文件)
    create temporary tablespace test_temp
    tempfile 'E:\oracle\test_temp01.dbf'
    size 32m
    autoextend on
    next 32m maxsize 2048m
    extent management local;

    //創(chuàng)建數(shù)據(jù)表空間
    create tablespace test_data
    logging
    datafile 'E:\oracle\test_data01.dbf'
    size 32m
    autoextend on
    next 32m maxsize 2048m
    extent management local;

    //創(chuàng)建用戶并指定表空間
    create user 用戶名 identified by 密碼
    default tablespace test_data
    temporary tablespace test_temp;

    //給用戶授予權(quán)限

    grant connect,resource to 用戶名

    ————————————————————————————————————

    create cluster s_t_cluster(tid number(8));--創(chuàng)建索引簇
    ----------------------------------------------------1
    --建立簇表stu
    create table stu(
           tid number(8),
           sname varchar2(50),
           sinfo varchar2(50),
           constraint pk_tid primary key(tid)
    )cluster s_t_cluster(tid)
    --建立簇表sc
    create table sc(
           tid number(8),
           score number(8),
           constraint fk_tid foreign key(tid) references stu(tid)
    )cluster s_t_cluster(tid)
    ------------------------------------------------------2
    --建立簇索引
    create index s_t_idx on cluster s_t_cluster;
    ------------------------------------------------------3
    --插入數(shù)據(jù)
    insert into stu(tid,sname,sinfo)values(1,'haha','usa');
    insert into stu(tid,sname,sinfo)values(2,'gaga','Japan');
    insert into sc values(1,90);
    insert into sc values(2,85);
    --查詢
    select s.sname,s.sinfo,i.score from stu s,sc i where s.tid=i.tid
    --建立序列
    create sequence stu_SEQ
    minvalue 1
    maxvalue 99999999
    start with 3
    increment by 1
    cache 20;

    --用命令插入N條數(shù)據(jù)往表stu
    declare
    x number;
    begin
      for x in 1..100000 loop
        insert into stu values(stu_seq.nextval,'名字'||x,'地址'||x);
      end loop;
    end;
    ---------------------------------------------
    --用命令插入N條數(shù)據(jù)往表sc
    declare
    x number;
    begin
      for x in 1..10000 loop
        insert into sc values(sc_seq.nextval,x+50);
      end loop;
    end;
    ---------------------------------------------
    --查詢
    select s.sname,s.sinfo,i.score from stu s,sc i where s.tid=i.tid--未加索引時(shí)的普通查詢太慢了
    --使用索引簇查詢
    select s.sname,s.sinfo,i.score from stu s,sc i where s.tid=i.tid

    ————————————————————————————————————————

    //創(chuàng)建表,序列號(hào)(sequence)

    create table test1(
           tid number(8),
           tname varchar2(50),
           tbd date,
           constraint pk_tid primary key(tid)
    )
    select * from test1
    ==============================================================
    create sequence test1Seq --自定義的序列名
    increment by 1           --每次加幾個(gè),即遞增的間隔
    start with 1             --從1開始計(jì)數(shù)
    nomaxvalue               --不設(shè)置最大值
    nocycle                  --一直累加,不循環(huán)
    cache 10;
    ==============================================================
    insert into test1(tid,tname,tbd)values(test1Seq.Nextval,'ccc',sysdate);

    posted @ 2009-03-19 20:13 flyleer| 編輯 收藏
    sybase的問題

          近來在做sybase的性能調(diào)試,發(fā)現(xiàn)我啟動(dòng)多線程的時(shí)候,線程會(huì)處于lock sleeping。 剛開始還以為是數(shù)據(jù)庫(kù)不支持并發(fā)訪問,后來想想真幼稚。。原來是我在做并發(fā)插入數(shù)據(jù)的時(shí)候,該表的鎖設(shè)置為全頁(yè)加鎖了。 后來設(shè)置為數(shù)據(jù)行鎖,這樣才可以執(zhí)行并發(fā)操作的測(cè)試。 但是后面又遇到一個(gè)問題,就是out of lock的問題,也就是ASE設(shè)置的鎖不夠用。如果是在windows下的話,可以用ASE的補(bǔ)助工具修改number of locks來增加更多的鎖,因?yàn)樵O(shè)置的是數(shù)據(jù)行鎖,所以,在執(zhí)行Insert的時(shí)候,如果不提交事物的話,就會(huì)每一條數(shù)據(jù)加一個(gè)鎖。。在增加鎖的時(shí)候,必須要增加內(nèi)存,也就是增加max memory。。大概一個(gè)鎖占據(jù)的內(nèi)存是120byte。 如果是在Linux系統(tǒng)的話,就修改“服務(wù)名.cfg“文件。 
         1、全頁(yè)鎖(allpages lock) 對(duì)查詢的表及索引頁(yè)加鎖,也就是table lock 
           2、頁(yè)鎖  (data lock)     對(duì)所查詢的結(jié)果所在頁(yè)加鎖,對(duì)索引不加鎖 
        3、行鎖  (row lock)      對(duì)某行數(shù)據(jù)加鎖

      sybase除非對(duì)配置參數(shù)加以特定,對(duì)所有的表都予置了隱含的全頁(yè)面加鎖機(jī)制。

    sp_configure ‘lock scheme’, [allpages | datapages | datarows]

      當(dāng)數(shù)據(jù)庫(kù)從原先版本的服務(wù)器中轉(zhuǎn)儲(chǔ)出來重新加載時(shí),所有的表都被定義為全頁(yè)面加鎖的表。當(dāng)建立一個(gè)新表時(shí),可以不使用這個(gè)缺省值,可采用如下的句法格式:

    create table <tablename>;… lock [allpages | datapages | datarows]

      為了在使用的一個(gè)表中改變加鎖類型,可以采用如下的句法格式:

    alter table <tablename>; lock [allpages | datapages | datarows]

    posted @ 2009-03-07 15:27 flyleer| 編輯 收藏
    oracle 在Linux 自啟動(dòng)方法

    1、 修改Oracle系統(tǒng)配置文件/etc/oratab

    /etc/oratab 格式為: SID:ORACLE_HOME:AUTO

    把AUTO域設(shè)置為Y(大寫),只有這樣,oracle 自帶的dbstart和dbshut才能夠發(fā)揮作用。我的為:

    TestDB:/home/oracle/product/10.2.0:Y(以oracle 10為例子)
            2、 編寫服務(wù)腳本:
            如下:

     

    #!/bin/bash

    #

    #################FUNCTION#############

    #

    # AutoStart Oracle and listener

    # AutoStop Oracle and listener

    #

    #####################################

    #

    # Created by ZhouYS 2003-11-26

    #

    case "$1" in

    start)

    echo "Starting Oracle Databases ... "

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Starting Oracle Databasee as part of system up." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    su - oracle -c "dbstart" >> /var/log/oracle

    echo "Done."

    echo "Starting Oracle Listeners ... "

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    su - oracle -c "lsnrctl start" >> /var/log/oracle

    echo "Done."

    echo ""

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Finished." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    touch /var/lock/subsys/oracle

    ;;

    stop)

    echo "Stoping Oracle Listeners ... "

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    su - oracle -c "lsnrctl stop" >> /var/log/oracle

    echo "Done."

    rm -f /var/lock/subsys/oracle

    echo "Stoping Oracle Databases ... "

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    su - oracle -c "dbshut" >>/var/log/oracle

    echo "Done."

    echo ""

    echo "-------------------------------------------------" >> /var/log/oracle

    date +" %T %a %D : Finished." >> /var/log/oracle

    echo "-------------------------------------------------" >> /var/log/oracle

    ;;

    restart)

    $0 stop

    $0 start

    ;;

    *)

    echo "Usage: oracle {start|stop|restart}"

    exit 1

    esac


           將腳本命名為oracle,保存在/etc/rc.d/init.d下。
           
            3、建立服務(wù)連接:

    系統(tǒng)啟動(dòng)時(shí)啟動(dòng)數(shù)據(jù)庫(kù),我們需要以下連結(jié)∶

    --------------------------------------------------------------------------------

    $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle

    $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle

    $ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused

    --------------------------------------------------------------------------------

    要在重新啟動(dòng)時(shí)停止數(shù)據(jù)庫(kù),我們需要以下連結(jié)∶

    --------------------------------------------------------------------------------

    $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止

    $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新啟動(dòng)

    轉(zhuǎn)貼于:Oracle認(rèn)證考試_考試大    

    posted @ 2008-12-26 11:54 flyleer| 編輯 收藏
    井底之蛙

            最近閑來無聊,搬來同事的講JDK6.0的書翻翻。。 感觸很多,一直都聽到什么JDK的一些新特性,自己也用過。但是一直不知道到底引入了哪些新特性,直到今天看了書,才知道。。唉,得鄙視下自己。。 不過看書,實(shí)在無聊,好想瞌睡。HOHO。
            還是把新特性列下,免得自己以后又不記得了。。
            1.診斷能力:這個(gè)到底有啥用,搞不很懂。。 大概是當(dāng)我們的程序要生成堆棧追蹤信息的時(shí)候,如果沒有控制臺(tái)窗口的時(shí)候,可以自己聲明試采用程序來編輯而獲得這些信息。。
            2.Annotation:這個(gè)到是用到過,知道是注釋。它的作用是:提供了一個(gè)連接附加數(shù)據(jù)到Class,Interface,Method和Field中的能力。使用它的目的是使我們的開發(fā)和運(yùn)行工具得到一個(gè)基礎(chǔ)框架,以減少編碼和發(fā)布程序時(shí)所需的額外的工作。
            3.泛型:這個(gè)用的比較多。在集合框架中經(jīng)常用到。主要是使代碼看上去更舒服。呵呵,節(jié)省不必要的類型轉(zhuǎn)換。。
            4.自動(dòng)裝/拆箱:這個(gè)就是用在JAVA中的基本類型和封閉類之間的轉(zhuǎn)換。。也是使代碼看上面簡(jiǎn)潔。減少類型的轉(zhuǎn)換。。
            5.靜態(tài)引入:這個(gè)好像頭一次看。。呵呵,試了一下。真的可以。。HOHO,看來我真的孤陋寡聞啊。  看來以后的代碼中如果很多地方用到了靜態(tài)類的屬性的話,可以直接導(dǎo)入這個(gè)類了。。也可以減少一點(diǎn)代碼。。不過想想其實(shí)也差不多。。
            6.格式化輸入/輸出:現(xiàn)在JAVA也可以像C語言一樣使用printf打印輸出信息了。其輸出格式基本相同。這個(gè)我還沒用過, 不過知道是比如:
       System.out.printf("%d和%f",m,n);這里告訴m,n必須是整型和浮點(diǎn)數(shù)。。
            7.參數(shù)數(shù)量的可變:這個(gè)是說可以向一個(gè)方法傳入多個(gè)不定數(shù)量的參數(shù),可以簡(jiǎn)單的使用...來表示一個(gè)方法接受不定數(shù)量的參數(shù)。
            8.并行工具包:這個(gè)是指提供了一個(gè)功能強(qiáng)大的、高層次的線程構(gòu)造器。例如:線程任務(wù)框架,線程安全的隊(duì)列,計(jì)時(shí)器,鎖和其他的一些同步的基本類型。

    posted @ 2008-12-08 16:01 flyleer 閱讀(76) | 評(píng)論 (0)編輯 收藏
    主站蜘蛛池模板: 日韩在线不卡免费视频一区| 亚洲第一成年网站视频| 91视频免费网站| 色噜噜AV亚洲色一区二区| 老司机免费午夜精品视频| 国产三级电影免费观看| 免费在线观看亚洲| 久久久久无码专区亚洲av| 一个人看的www在线免费视频| 亚洲av再在线观看| 九九免费观看全部免费视频| 亚洲精品无码永久在线观看 | 亚洲成AV人片在线观看无| 热99RE久久精品这里都是精品免费| 亚洲热线99精品视频| 久久久久久曰本AV免费免费| 亚洲狠狠成人综合网| 国产成人免费福利网站| yy一级毛片免费视频| 久久亚洲精品视频| 国产曰批免费视频播放免费s| 亚洲AV无码无限在线观看不卡| 国产精品久久久久影院免费| 日韩大片在线永久免费观看网站| 精品亚洲综合久久中文字幕| 久久久久久精品免费看SSS| 亚洲AV成人精品一区二区三区 | 亚洲中文字幕无码久久2017| 免费国产黄网站在线观看| 亚洲永久在线观看| 国产日产亚洲系列最新| 91免费在线播放| 欧美日韩亚洲精品| 亚洲综合国产精品| 国产精品无码一二区免费| 中文字幕一区二区免费| 亚洲免费一级视频| AV在线播放日韩亚洲欧| 亚州免费一级毛片| 岛国精品一区免费视频在线观看 | 久久久久久亚洲av无码蜜芽|