• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 94, comments - 250, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            引言:

            GameByro作為一款次世代引擎,使用了復雜的材質(zhì)系統(tǒng),用來滿足各種各樣的需求。材質(zhì)代表了物體受到光照后所呈現(xiàn)出的質(zhì)感,而這種質(zhì)感在計算機圖形學中需要著色代碼來完成,所以當前流行的圖形引擎設(shè)計是使用被渲染對象的材質(zhì)與shader相關(guān)聯(lián),GameByro也不例外。GameByro的材質(zhì)系統(tǒng)可以通過shade tree生成shader程序,增強了應(yīng)用程序?qū)訉删幊啼秩竟芫€的控制能力。

            渲染架構(gòu)概覽:

            在GameByro中,對象表面的色彩、紋理、光滑度、透明度、反射率、折射率、發(fā)光度等可視屬性與傳統(tǒng)的材質(zhì)系統(tǒng)分離,獨立的成為了對象的渲染屬性(NiProperty),而材質(zhì)(NiMaterial)僅用來對著色程序的封裝,這樣就實現(xiàn)了渲染數(shù)據(jù)和渲染方法的分離,降低了耦合性。如上所說的這些可視屬性在Gamebyro中會封裝成一個屬性對象,在應(yīng)用程序中如果對對象掛載這個屬性對象,在GPU程序中就可以訪問這個屬性對象的值。渲染屬性對象可以在創(chuàng)建時指定其類型,如紋理、浮點、矩陣、向量或數(shù)組,此外一些全局性的對象也可以通過在Shader中用語意聲明為全局object對象,如燈光和攝影機等,這樣就可以以同樣的方式來訪問這些對象上的屬性。

            GameByro每一幀的渲染(NiRenderFrame)劃分為多個步驟(NiRenderStep),每個步驟又包含很多個批(NiRenderClick),NiRenderFrame封裝了上層對渲染系統(tǒng)調(diào)用的接口,而NiRenderClick則代表了圖形硬件的一次繪制操作(對渲染隊列中所有的對象的頂點緩存調(diào)用DrawPrimitive),當應(yīng)用程序調(diào)用NiRenderFrame的Display接口時, NiRenderFrame會依次調(diào)用每一個NiRenderStep的Render()接口,NiRenderStep就會執(zhí)行所有的NiRenderClick操作。

            對于每個NiRenderClick來說,首先要設(shè)置視口和渲染目標,也就是渲染數(shù)據(jù)流的入口和出口。視口建立以后就可以通過關(guān)聯(lián)的攝影機對場景圖中的對象進行裁剪(默認的有視口裁剪和遮擋裁剪,此外還可以通過回調(diào)函數(shù)加入自己的裁剪方式),將未被裁剪的對象放入渲染隊列。然后Gambyro會根據(jù)材質(zhì)來對渲染隊列中的對象進行排序,讓材質(zhì)相同的對象處于相鄰位置,這樣可以減少切換shader的開銷。

            clip_image002

            如圖所示為幀渲染系統(tǒng)的結(jié)構(gòu)圖(簡化版)

            材質(zhì)系統(tǒng):

            GameByro中的材質(zhì)代表渲染對象所采用的方法。前面說過。紋理屬性包含了著色所需的原料,那么材質(zhì)就指定了對這些原料的加工方法。基于當前可編程渲染管線設(shè)計,材質(zhì)就成為連接對象與GPU程序的中間層,應(yīng)用程序可以通過材質(zhì)將shader應(yīng)用于幾何體。

            NiMaterial類是所有材質(zhì)的基類,這個類通過一個Map來保存當前應(yīng)用程序中所有NiMaterial的指針,當然這個Map是靜態(tài)也就是說相當于全局變量,通過static NiMaterial* NiMaterial:: GetMaterial(const NiFixedString& kName)接口對這個全局的Map進行訪問。也就是說,當前環(huán)境中所有的NiMaterial對象是通過NiMaterial類來管理的。此外NiMaterial類還通過靜態(tài)成員變量保存了一個工作路徑(即shader文件路徑),通過這個路徑加載shader文件。NiMaterial就像是一個中介,全權(quán)代理對對象的渲染工作。用戶可以通過重載NiMaterial來實現(xiàn)自己的渲染機制。每個NiMaterial都是全局性的,可以作用于多個甚至是所有的渲染對象,但一個渲染對象也可以擁有多個NiMaterial,但只能有一個處于激活狀態(tài)的NiMaterial。

            NiMaterial的派生類NiFragmentMaterial提供了對可編程渲染管線完整的控制機制,內(nèi)部保存了NiShader的哈希表、一個NiGPUProgramCache數(shù)組。并且NiFragmentMaterial會生成一個用來編譯GPU程序的shade tree(后面會有解釋)。這樣的話,每個NiFragmentMaterial可以對應(yīng)多個shader程序,這樣就提供了一種機制,在運行時根據(jù)不同的運行環(huán)境和渲染對象不同的狀態(tài),來選擇合適的shader程序。在NiRenderClick依次渲染可見集中的每個對象時,首先會判斷其是否需要被渲染的標記(flag),如果需要被渲染,則使用NiMaterial::IsShaderCurrent接口判斷當前shader(上一次渲染所使用的shader)是否有效,所謂有效就是仍然存在并且可以應(yīng)用于本次的渲染對象,如果無效,則會調(diào)用NiMaterial::GetCurrentShader獲得shader,用于本次渲染。NiMaterial::GetCurrentShader會根據(jù)渲染對象的屬性和當前環(huán)境硬件條件來選擇合適的shader程序。當然,可以通過重載IsShaderCurrent和GetCurrentShader接口來指定自己的有效性判斷規(guī)則和如何選擇shader程序的方案。 NiFragmentMaterial提供了一套搭建shade tree的框架,用戶可以通過重載來搭建自己的shade tree,當然,如果不想通過shade tree的形式生成shader程序也可以,使用NiSingleShaderMaterial可以從文件生成shader程序。

            Shade Tree

            什么是shade tree呢?我們通常編寫的shader代碼是線性執(zhí)行的,即每個pass流程執(zhí)行的是文本上定義好的shader流程,每一段shader功能模塊是按一定順序依次執(zhí)行的。如果需要修改流程中的某一部分就需要更改相關(guān)的shader代碼并重新編譯。而shade tree將shader代碼以樹形結(jié)構(gòu)組織起來,每一個shader代碼塊(一般是一個函數(shù))都會被編譯成一個節(jié)點,通過定義輸入變量和輸出變量來提供數(shù)據(jù)流的入口和出口,這些節(jié)點的插入和刪除可以通過應(yīng)用程序來控制,從而靈活的控制整個渲染過程。這樣shader程序中的一些核心模塊可以由美術(shù)通過工具生成,然后插入到shade tree中,只要輸入和輸出的接口不變,就無須修改其他代碼,從而降低了美術(shù)開發(fā)shader的門檻。

            GameByro通過以下幾個類搭建shade tree:

            l NiMaterialConfigurator:shade tree被封裝在這個對象中,Uniform constants被封裝在NiMaterialResource中,而NiMaterialNode封裝了相關(guān)的shader代碼,所有的資源和節(jié)點通過NiMaterialResourceBinding連接起來。當所有的連接都確立以后,NiMaterialConfigurator會調(diào)用Evaluate接口生成GPU程序和一個輸入Uniform資源的集合。

            l NiMaterialFragmentNodes:這個類包含了一個shader代碼片段的集合,這些代碼片段為不同的平臺和編程語言所編寫。這就為shader程序員提供了更大的靈活性,用以控制他們的代碼在不同平臺和圖形硬件上的表現(xiàn)。例如:在高端平臺可以采用高級的shader model提供更好的效果,而在低端平臺上可以關(guān)閉一些特效來加快速度。

            l NiMaterialNodeLibraries:這個類是一個NiMaterialNode的集合,其實也就是一個shader庫。它允許shade tree節(jié)點完全基于數(shù)據(jù)驅(qū)動。shader庫的生成可以通過兩種方式,解析XML文件或用XML文件生成C++代碼。GameByro提供了相關(guān)的解析器和代碼生成器。

            l NiMaterialResources:shade tree中的Uniform constants,支持多種數(shù)據(jù)類型,包括Constant、Predefined、Attribute、Global、Object。

            固定管線的渲染:

            GameByro支持固定管線的渲染,其紋理混合過程如下。

            clip_image004

            固定管線的著色處理流程

            上圖很清楚的顯示出了每個stage的操作,平行的表示兩張紋理的采樣是同時進行的,特定情況下右邊的紋理可能被忽略。

            大部分情況下,應(yīng)用程序不會使用上面所有的stage,開啟或者關(guān)閉那個stage可以由應(yīng)用程序來指定。

            以下為多重采樣的原理圖:

            clip_image006

            固定管線的紋理多重采樣

            缺省的著色處理流程:

            GameByro提供了一個默認的著色處理流程,封裝在NiMaterial的派生類NiStandardMaterial中,這個類執(zhí)行類似于固定管線的流程,在不同階段將紋理采樣、并將采樣到的數(shù)據(jù)混合到最終的結(jié)果中去。

            GameByro默認的材質(zhì)系統(tǒng)的特性如下:

            • Skinned and unskinned transformations. Skinned transformations can support up to 30 bones per draw call.
            • Vertex colors
            • Base maps
            • Normal maps
            • Parallax maps
            • Dark maps
            • Detail maps
            • Bump environment maps
            • Gloss maps
            • Glow maps
            • Decal maps (up to 3)
            • Cubic and spherical environment maps
            • Point/Spot/Directional/Ambient lights contributing to the diffuse, specular, and ambient color. Up to 8 total lights. Per-pixel or per-vertex.
            • Projected light maps. Clipped or unclipped. (Up to 3)
            • Projected shadow maps. Clipped or unclipped. (Up to 3)
            • Texture transforms per map.
            • Per-vertex fog

            下圖顯示為不同的紋理、燈光、材質(zhì)屬性的組合過程,不過需要注意的是,視差貼圖和凹凸貼圖屬于特殊的情況,它們僅僅影響到紋理采樣的UV坐標,而并非直接對最后的顏色值產(chǎn)生貢獻。視差貼圖會改變所有貼圖采樣的UV坐標,而凹凸貼圖僅對環(huán)境貼圖的UV產(chǎn)生影響。

            clip_image008

            以上流程完全由shade tree構(gòu)建,NiStandardMaterial提供了大量的函數(shù)接口用于對每個流程的控制,用戶可以通過重載相關(guān)的接口,插入自己的shade tree節(jié)點,修改每一步的操作或處理過程。例如:

            virtual bool HandleBaseMap(Context& kContext, NiMaterialResource* pkUVSet,

            NiMaterialResource*& pkDiffuseColorAccum,

            NiMaterialResource*& pkOpacity, bool bOpacityOnly);

            當然,整個流程的順序和結(jié)構(gòu)修改起來比較困難,如果有需要可以定制自己的材質(zhì)系統(tǒng),搭建自己的shade tree。

            NiStandardMaterial提供了若干回調(diào)函數(shù),這些函數(shù)可以動態(tài)的修改流程,分割PASS,對shader運行失敗進行容錯。

            l SplitPerPixelLights/SplitPerVertexLights:這兩個函數(shù)分別作用于逐頂點光照和逐像素光 照,當物體所受的光源數(shù)量太多,超過了頂點或像素著色器的能力時,通過這些函數(shù)可以將失敗的pass分割成兩個,如果分割出的pass仍然不能執(zhí)行,那么函數(shù)會被遞歸調(diào)用,直到每個pass只有一個光源為止。

            l SplitTextureMaps:這個函數(shù)會把對紋理采樣的pass進行分割,當紋理查詢過多時,頂點或像素著色器就會過于復雜,這時就可能導致shader運行失敗。此函數(shù)只能迭代一次,生成一個額外的pass。

            l DropParallaxMap:這個函數(shù)用來從幾何體上移除視差貼圖,且不產(chǎn)生額外的pass。

            l DropParallaxMapThenSplitLights:這個函數(shù)首先調(diào)用DropParallaxMap移除視差貼圖,然后一直調(diào)用SplitPerPixelLights直到失敗為止。

            NiMaterialInstance:

            NiMaterial并不是直接與NiRenderObject相關(guān)聯(lián),而是經(jīng)過了NiMaterialIstance這個中間層,由它來代理將NiMaterial關(guān)聯(lián)到幾何體,它負責調(diào)用NiMaterial為NiRenderObject生成NiShader,通過改變NiMaterialIstance上的接口SetMaterialNeedsUpdate,可以決定每一幀NiRenderObject所使用的材質(zhì)是否需要被更換,通過接口SetDefaultMaterialNeedsUpdateFlag,可以決定當前材質(zhì)所需的數(shù)據(jù)(即當前渲染流程所需的數(shù)據(jù))是否要被更新。這樣每個NiMaterialIstance只能被一個NiRenderObject所擁有,而多個NiMaterialIstance可以共享一個NiMaterial,這樣就減少了重復創(chuàng)建NiMaterial的時間和空間上的開銷,同時降低了渲染對象個材質(zhì)之間的耦合度。

            如下為材質(zhì)系統(tǒng)的類結(jié)構(gòu)簡化圖:

            clip_image010

            渲染屬性:

            前面提到過,GameByro將渲染所需要加工的數(shù)據(jù)全部封裝在了NiProperty中,只要在shader中用指定的語法進行聲明,就可以訪問這些屬性的值。

            目前引擎中已經(jīng)定義了12種屬性,均派生自NiProperty,分別代表渲染數(shù)據(jù)的12種不同類型:

            l NiAlphaProperty

            l NiDitherProperty

            l NiFogProperty

            l NiMaterialProperty

            l NiRendererSpecificProperty

            l NiShadeProperty

            l NiSpecularProperty

            l NiStencilProperty

            l NiTexturingProperty

            l NiVertexColorProperty

            l NiWireframeProperty

            l NiZBufferProperty

            用戶也可以自定義屬性類型,但所對應(yīng)的數(shù)據(jù)類型要被shader語言所支持。

            光照與陰影:

            光照與陰影密不可分,因為陰影就是由光照產(chǎn)生的,前面在材質(zhì)系統(tǒng)中已經(jīng)提到過光照對著色的影響,這里重點闡述,GameByro是怎樣根據(jù)光源產(chǎn)生陰影的。由GameByro提供的陰影均基于ShadowMap技術(shù),

            但也提供了ShaowVolume的示例代碼。

            Shadowing System是完全建立在幀渲染系統(tǒng)上的, 通過一個RenderClick生成ShadowMap,然后在正常渲染流程開始之前將ShadowMap更新到可見集內(nèi)每一個渲染對象上。這樣當渲染對象使用NiStandardMaterial時就會根據(jù)光源的陰影技術(shù)來對ShadowMap進行采樣,并將結(jié)果與最終的輸出顏色按一定比例混合。

            陰影系統(tǒng)由以下幾個類構(gòu)成:

            GameByro提供了三種類型的Shadow Write Materials,分別為NiPointShadowWriteMaterial、

            NiDirectionalShadowWriteMaterial、NiSpotShadowWriteMaterial,適用于三種不同的光源類型。

            • Shadow Technique:這個類封裝了陰影算法的細節(jié),包括生成ShadowMap和使用ShadowMap投射陰影。
            • Shadow Render Click: 這個類是一個生成ShadowMap的批,這個類的對象是由shadow click generator負責生成。
            • Shadow Click Validator: Shadow Render Click:通過此類對象判斷接受陰影的幾何體對于shadow generator來說是否可見。
            • Shadow Map: 每個ShadowMap對象包含一個作為陰影圖的紋理,shadowmap對象由shadowManager直接管理,每個shadowmap對象都被一個shadow generator引用。
            • Shadow Cube Map: 同shadowmap作用相同,只是陰影圖的紋理類型為CubeMap。主要用于點光源生成的全方向陰影。
            • Shadow Generator: 陰影生成器,每個ShadowGenerator都對應(yīng)一個NiDyamicEffect(NiLight的基類),也就是為這個NiDyamicEffect代表的光源生成陰影, 生成陰影所采用的技術(shù)由對象引用的ShadowTechnique來決定。
            • Shadow Click Generator: 生成ShadowMap的Shadow Render Click都由此類負責創(chuàng)建。這個類為每個ShadowGenerator指定ShadowMap,并負責每幀更新ShadowMap和ShadowMap所對應(yīng)的變換矩陣。
            • Shadow Manager:所有的ShadowMap、ShadowTechnique、ShadowGenerator、shadow render click對象都由ShadowManager統(tǒng)一管理,并負責使用一個shadow click generator 在每一幀生成一個shadow render click的列表。

            陰影系統(tǒng)靜態(tài)結(jié)構(gòu)如下:

            clip_image012整個陰影渲染的流程大致如下:

            1. 在應(yīng)用程序初始化階段,通過調(diào)用NiShadowManager的Initialize()接口實現(xiàn)對整個陰影系統(tǒng)的初始化,此時應(yīng)用程序會注冊所有的ShadowTechnique,并初始化NiShadowClickGenerator。

            2. 當我們創(chuàng)建一個NiLight以后,我們可以通過NiShadowManager為這個NiLight新建一個NiShadowGenerator,NiShadowGenerator會通過NiLight的類型來選擇合適的NiShadowTechnique,此時NiShadowManager會為新的NiShadowGenerator創(chuàng)建一個NiShadowRenderClick。

            3. 當幀渲染系統(tǒng)啟動后,NiShadowRenderClick的PerformRendering()接口會被調(diào)用,此時NiShadowRenderClick會通過引用的NiGenerator獲得陰影生成的著色程序和所需的數(shù)據(jù)(例如深度偏移),同時通過NiGenerator引用的Camera獲得場景圖中的可見集。下一步就是對可見集中的渲染對象添加ShadowWriteMaterial并設(shè)為激活狀態(tài),而ShadowWriteMaterial的類型是根據(jù)NiDyamicEffect的類型指定的。最后NiRenderClick就會啟動渲染流水線,將可見集中的對象的深度全部渲染到ShadowMap中。

            4. 在第一個RenderClick中生成了ShadowMap,下面就要使用這些ShadowMap投射陰影。在每一幀開始之前,用戶還可以自己指定不接受陰影的節(jié)點,手動將其插入NiShadowGenerator::m_kUnaffectedReceiverList中。在渲染BackBuffer的RenderClick中,首先會對場景圖中的節(jié)點進行一次遍歷,將不受陰影的節(jié)點放入NiShadowGenerator:: m_kUnaffectedCasterList的列表。在對每個節(jié)點進行渲染時,會遍歷NiShadowManager中所有的NiShadowGenerator,判斷這些NiShadowGenerator是否對這個節(jié)點有影響,判斷的規(guī)則是此節(jié)點是否存在于UnaffectedReceiverList和UnaffectedCasterList這兩個鏈表中,如果存在于任何一個鏈表,則節(jié)點不受此NiShadowGenerator影響,如果受此NiShadowGenerator影響,那么就將該NiShadowGenerator上的ShadowMap和數(shù)據(jù)更新到節(jié)點上的渲染屬性中,NiStandardMaterial會根據(jù)這些數(shù)據(jù)選擇對ShadowMap采樣的方式,并將結(jié)果混合到最終的輸出顏色中。

            值得注意的是,點光源的shadowMap默認的是采用CubeMap實現(xiàn),用戶可以通過接口選擇不使用CubeMap實現(xiàn),當采用CubeMap實現(xiàn)時,光源無法產(chǎn)生軟陰影。

            渲染系統(tǒng)的擴展:

            為了驗證GameByro渲染系統(tǒng)的擴展性,筆者嘗試著加入了一個后期處理特效Screen Space Ambient Occlusion(SSAO),即屏幕空間的遮蔽,由于僅僅為了熟悉GameByro的渲染流程,所以筆者并未對SSAO算法做深究,僅僅用了自己簡化的算法。

            在渲染過程中先單獨使用一個RanderClick將場景中的深度渲染到一張紋理上,然后在渲染到后臺緩沖區(qū)的RenderClick中對深度紋理進行采樣,執(zhí)行SSAO算法,將結(jié)果混合到最終的結(jié)果中。采樣點的偏移坐標是通過對一組隨機向量進行歸一化再乘以0~1之間的隨機數(shù)而生成的,即長度為0~1之間的隨機向量。

            PS代碼如下:

            float VerticalRange:GLOBAL; //控制XY方向采樣范圍變量,可以在應(yīng)用程序?qū)訉ζ溥M行調(diào)整

            float HorizontalRange:GLOBAL; //控制在Z方向采樣范圍的變量

            float calAO(float2 texCoord,float dw, float dh ) //通過當前像素所標和偏移量計算AO

            {

            float2 coord = float2(texCoord.x + dw, texCoord.y + dh);

            float4 CenterPos = tex2D(DepthSampler,texCoord);

            float4 CurPos = tex2D(DepthSampler,coord);

            float depthDiff = clamp(CenterPos.z - CurPos.z,0,VerticalRange);

            float ao = depthDiff/length(CurPos.xyz - CenterPos.xyz);

            return ao;

            }

            // Pixel shader

            float4 PS_SSAO(VS_OUTPUT In) : COLOR

            {

            float2 texCoord = In.BaseTex;

            float depth = tex2D(DepthSampler,texCoord).z;

            float ao = 0.0;

            float scale = HorizontalRange/depth; //因為采樣范圍會受深度影響,故除以此系數(shù)。

            for(int i=0; i<32; ++i)

            {

            float2 offset = arrRandomPt[i].xy* scale;

            ao += calAO(texCoord, offset.x, offset.y);

            }

            ao/=32;

            float4 color = tex2D(BaseSampler,texCoord);

            color.xyz *= (1.0 - ao);

            return color;

            }

            最終實現(xiàn)效果如下:

            clip_image014clip_image016

            SSAO生成的明暗圖 無SSAO材質(zhì)

            以下兩圖上圖為無SSAO效果,下圖為開啟SSAO后的效果。

            clip_image018

            clip_image020

            總結(jié):

            GameByro的幀渲染系統(tǒng)是比較靈活,想加入自己的渲染流程是比較容易的,此外由于RenderTarget和RenderView都可以由用戶指定,所以想實現(xiàn)自己的shader效果不是很難。然而,NiStanderMaterial的shade tree比較復雜,總共高達6000行代碼以上,過程非常復雜,這就是說,如果想實現(xiàn)自己的材質(zhì)處理流程也要付出相當大的工作量,陰影系統(tǒng)雖然實現(xiàn)了較低的耦合度,但是實現(xiàn)過于復雜,不夠簡潔高效。

            作者:葉起漣漪

            posted @ 2009-04-22 10:22 Condor 閱讀(2165) | 評論 (2)編輯 收藏

            ★ 你好,我去殺幾個人,很快回來。
            ★ 我去后山和黑山老妖研究吃唐僧的事,有事回來再說。
            ★ 便秘中。。。。。勿攪。。。
            ★ 你終于來啦,我找你N年了,去火星干什么了?我現(xiàn)在去冥王星,回頭跟你說個事,別走開啊
            ★ 您所呼叫的用戶尚未安裝QQ......
            ★ 你呼叫的人現(xiàn)在不在,當你聽到硬盤“咔”的一聲,請對著鼠標留言,謝謝......
            ★ 主人不在。到哪兒去了?就......就是不告訴你!真要找的話,請按住電腦power鍵4秒鐘后留言......
            ★ 該用戶沒有回應(yīng),可能用戶忙,請稍候再試。或按Ctrl+Alt+Del返回.
            ★ 自殺中,稍后再說...
            ★ 有事找我請大叫!
            ★ 你現(xiàn)在連接到的是海狼的冰箱,放入食物后請斷線,謝謝合作。
            ★ 我正在下五子棋,上次分心把褲子輸光了。這次再輸會被拍裸照!我可不想讓人看見,等這盤下完了一定回你。
            ★ 嘀,這里是自動應(yīng)答,MM請再發(fā)一次,我就與你聯(lián)系;JJ請再發(fā)兩次,我就與你聯(lián)系;GG、DD就不要再發(fā)了,因為發(fā)了也不和你聯(lián)系!
            ★ 騰訊服務(wù)器系統(tǒng)崩潰,請稍后再試!
            ★ 計算機正在處理你的信息,請稍侯,如果長時間沒有響應(yīng),請重新啟動計算機!
            ★ 你好,現(xiàn)在我在玩一個叫CS(或其他)的游戲,有事請按下電腦上“RESET”鍵,在聽到“嘀”一聲之后留言,謝謝
            ★ 你有權(quán)保持沉默,你所說的一切都將被作為存盤記錄。你可以請代理服務(wù)器,如果請不起網(wǎng)絡(luò)會為你分配一個。
            ★ 您使用的QQ是未注冊版本。您可以繼續(xù)使用本軟件,但將屏蔽發(fā)送短信息的功能。支持國產(chǎn)軟件,請您注冊新版!
            ★ 廣告之后,馬上回來!
            ★ 正在澡澡哦~~不要偷看~~~嗯~啊~~嗯~啊~~~
            ★ 在加本人為好友前請詳細閱讀以下條款:1.未滿18歲者請在父母指導下與本人聊天;2.非專業(yè)聊天人士,不承擔主動招呼義務(wù);3.謝絕你問我答制。在本人不回復的情況下請自覺停止一切信息!
            ★ 你所呼叫的用戶正在系統(tǒng)整理,請稍后再呼。
            ★ 此人正在被國際刑警組織全球范圍內(nèi)通緝,如果您有此人的消息,請撥打當?shù)貓缶娫?20,請對著電話說如下密語言:我真的不是瘋子,我不是瘋子,我真的不是瘋子!然后匯報你的所在地謝謝合作。我們的專業(yè)人員會去保護您的安全。
            ★ 您的QQ已經(jīng)中了我安插的病毒,請不斷向本人發(fā)信,否則本人一有閑暇立刻動手!
            ★ 您好,QQ今天休假,我是NETANTS......
            ★ 由于大氣電離層影響,與該用戶的衛(wèi)星連接已中斷,請稍后再試。
            ★ 對不起,由于服務(wù)器的原因,您剛才發(fā)的信息丟失,請重發(fā)一面。
            ★ 機主正在裸奔,機主已奔出服務(wù)區(qū)。
            ★ 正在格式化你的硬盤,請稍候......
            ★ 唉呀~你可真調(diào)皮!你看,我話還沒說完你又來了~~
            ★ 嗨~我現(xiàn)在不在,如果有事請在聽到“逼”的一聲后留言······逼!
            ★ 對不起,網(wǎng)路不通,請重新發(fā)送...
            ★ 你要機主不在,請等到“嘟~”聲后拿起鼠標留言。。。
            ★ 對不起,您所呼叫的用戶不在計算機旁,請你現(xiàn)在立刻猛擊你的顯示器直到它冒火花為止,聽到響聲后我會給你回復
            ★ 你好。這是騰訊服務(wù)中心自動回復。收到這條信息表明您的操作系統(tǒng)出了問題。請按Ctrl+Shift+Del
            ★ 您所呼叫的用戶先不再服務(wù)區(qū)內(nèi)......可能是網(wǎng)絡(luò)不通...想解決此類問題...請您將頭用力撞向顯示器......以保證網(wǎng)絡(luò)通暢......
            ★ 本人現(xiàn)在位置:WC; 姿勢:下蹲; 臉部:抽搐; 狀態(tài):用力中。。。。
            ★ 注意:使用騰訊移動QQ的用戶可能無法立即獲取你的留言。
            ★ 我去吃飯了,如果你是帥哥,請一會聯(lián)系我,如果你是美女.................................就算你是美女,我也要先吃飽肚子啊
            ★ 你要和我說話?你真的要和我說話?你確定自己想說嗎?你一定非說不可嗎?那你說吧,這是自動回復,反正我看不見
            ★ 你好,我是XXX的自動回復,現(xiàn)在他不在,跟我說什么我也就這幾句!
            ★抽筋中……請勿打擾……
            ★悟空啊,你想和為師說話么?想說話你就說呀,你不說為師怎么知道你想和為師說話呢?

            posted @ 2009-04-06 21:43 Condor 閱讀(710) | 評論 (0)編輯 收藏

            終于結(jié)束了近一個小時的枯燥會議,每周五公司級別的項目周會就像一個例行的檢查,多少有點不痛不癢的味道,大部分的時候就是一個例行貫事,每個項目組按照順序匯報一下各自項目組的情況和需要,如果不出現(xiàn)大的問題的話,也就是有本上奏,無本退朝的一個過程。或許有些人覺得這是一個比較浪費時間而且意義不大的會議,每周浪費大伙一個小時的時間去再次陳述這些本來在郵件中已經(jīng)說明的問題和項目進度,不過存在就有價值,這個會議的最大的功能在于能盡量使各個項目組之間有部分的消息互通,至少能讓大家了解到一點,其他人都在做什么,從而避免了每個項目組過于孤立的現(xiàn)象。
                   今天的周會時間有點長,主要由于兩件事情的討論超出了會議的議程安排,第一件事情是大偉負責的項目目前進度出了問題,目前人員處在一個持續(xù)加班的緊張狀態(tài),即便如此,對于項目的最終Release時間還是比較確定的狀態(tài),用大偉的話來形容就是:“我們能夠按時完成,但是可能會有點小問題。”一句比較含糊的托詞,如果說套用官方的言詞就是:“對于項目能夠按時完成,我們還是謹慎樂觀。”另外事情對于公司來說是一個好消息,公司將在下個月啟動一個新的項目,這個項目是今年規(guī)模最大的一個項目,其業(yè)務(wù)方向主要針對美國的醫(yī)療領(lǐng)域,規(guī)模大概有150人/月。
            這個項目將會被安排到我們項目組來處理,消息對于我來說就是一個挑戰(zhàn),對于自己來說,這個規(guī)模的項目也是超過了以往的一切項目,在會議上聽到這個項目將由我來接手處理,不由小小的興奮了一把,但是這股興奮的感覺很快就被沖淡,自己粗略的考慮了一下項目組內(nèi)目前的工作量和目前的人員情況,不由感覺到這個活不太好攬。不過有壓力才有動力,這是我一貫的做事風格,類是這種明知會將苦重重的活,我越能夠信心十足。我簡單的在自己的記事本上寫下了以下下周的關(guān)健工作內(nèi)容:確認項目的具體開始時間和結(jié)束時間;調(diào)整目前項目組內(nèi)的工作內(nèi)容;向客戶先要部分的開發(fā)相關(guān)資料;了解一下公司內(nèi)部其它項目組的人員狀況。
                   會議后半程的內(nèi)容我沒有聽多少,只是對于大偉的問題大家有部分的討論,我才回過神來參與,大偉雖然說自己還是有信心能夠保證項目的進度,但是為了保險起見,希望從其它的項目組借調(diào)兩個人來協(xié)助他們做一些類是測試的工作,這樣的話總的進度就可以進一步得到保證。以目前公司的架構(gòu)模式,每個項目組相對獨立的運作模式,如果說希望從其它的項目組借調(diào)人員,這種短期人員的借調(diào)有時候是比較困難,因為每個項目組目前來說都處于比較繁忙的階段,目前閑暇的人員不多,即便其它項目組肯借人,大多放出去的人員也都是能力相對比較弱,正常情況下人不可能把項目組內(nèi)部優(yōu)秀的人員借調(diào)出去,這或許也是人的一種私心。
                   在公司的協(xié)調(diào)安排之下,最后還是給大偉支援了兩個人員,這才把討論不休的會議打住。會議結(jié)束后我還在會議室坐了一會,我的腦袋里還在考慮下周的工作順序,盯著自己的筆記本在對剛剛寫的問題進行細化,把工作分解到下周的每一天。突然一股濃濃的煙味直接灌進我的鼻子,我不用抬頭就能猜出是大偉,這個煙槍一天最少一包煙,如果遇到加班或則心情不好的話,估計兩到三包都有可能。
                   “少抽點煙,怎么心情不好?”看著大偉吐著煙圈,我問道。
                   “沒有,只是有點累。”大偉嘴里叼著煙,目無表情的應(yīng)道。
                   “我看到你們項目組的那些去年剛剛畢業(yè)的學生,最近是天天加班到晚上11點左右。這是怎么回事?”
                   “噢,那時我故意的。”
                   “故意?”我一時沒有明白,疑惑的問道,“為什么要故意呢?”
                   “我是按照我自己的工作能力給那些新人安排工作,如果說我是能夠在上班時間內(nèi)完成工作的話,那么那些新人肯定需要加班了。這樣他們才能進步。”大偉的表情中開始露出得意的神色。
                   “怪不得他們要加班,你工作了多少年,他們才工作多少年,再說了你拿的工資和他們那得工資能一樣嗎?”
                   “我就告訴他們,如果你想工資那得和我一樣,那么這些工作你能夠準時完成,那么你就有機會。”大偉熄掉手中煙頭,用雙掌在臉上使勁得措動。
                   “那你該不會是按照你的能力來做的項目估算吧?”對于大偉的這個邏輯我并不能茍同,但是我還是想了解項目的問題。
                   “嗯…..”大偉支吾著回答到。
                   “哈哈,你這是自作自受。”我對著大偉帶著嘲諷的笑聲說道。
                   對于大偉的做法我卻是無法茍同,雖然他的失誤在于前期的估算過于樂觀而且并不準確。但是對于給新人安排工作的方式上存在有比較大的問題,如果說前期的估算出現(xiàn)失誤,這些錯誤在后期項目開始過程中還可以進行添加人員的方法進行補救的話,那么對于人員使用不當?shù)膯栴},就像整個項目過程的絕癥,其會影響到整個項目過程。
                   項目組中開發(fā)人員從能力上有幾個不同的級別,系統(tǒng)架構(gòu)師(Systems Architect),高級工程師(Senior Engineer),中級工程師(Middle Engineer)和初級工程師(Junior Engineer)等等。對于每個級別上的人員的能力和開發(fā)技能都有一定的差異。這些就像我們手的手指一樣,五指有長短,能力個不同。不同能力的人員應(yīng)該在項目組中相應(yīng)的工作內(nèi)容和工作量。
                   在正常的項目中我們講究的是人盡其用,但是不能把一個項目在開始的時候就設(shè)想是通過發(fā)揮項目組人員的超水準的基礎(chǔ)上來完成。很多人都說人在一定的壓力之下,能夠超能力的發(fā)揮出他們的水平,但是比代表說所有的人都能夠在這種環(huán)境下能夠有說突破,很多人在持續(xù)長時間的高壓下會顯得精神不振,萎靡的情況。所以作為項目管理來說,不能再項目一開始的時候就采用這個立足點來進行開發(fā)工作。
                   對于大偉所說的那種歪論,我只能回應(yīng)以自作自受的答案。我們給個人都是在逐步的學習和進步,如果說有一定壓力災(zāi),對于學習確實是一個比較有效的促進。但是作為項目經(jīng)理來說,需要明白的是一個問題,我們的職責在于項目,而不是在于鍛煉新人,新人進入項目組織后,通過項目過程的工作和學習能夠提高他們的能力,這些是項目的副產(chǎn)物。而我們首先要保證項目的進度,質(zhì)量。我在實際的項目開發(fā)過程中,對于給新人的工作計劃都是按照其能力的80%-90%進行安排,很少會針對新人能力的100%進行工作任務(wù)分派,因為新人由于缺乏經(jīng)驗,所以在項目實際過程中如果遇到問題,他們解決這些問題的所采用的方法和思路都存在有時間的風險,有時候他們可能由于一個問題會難住他們,消耗掉很長的時間。即便我不斷強調(diào)說如果有遇到問題,在一個小時內(nèi)解決不了的話,就要把問題拋出來給大伙來共同處理,但是往往這個問題被最后迫不得已提出來的時候,都是在一天或則更長的時間之后。新人在開發(fā)過程中遇到這些問題的概率非常高,所以在工作安排工程中必須要考慮到這種風險。所著一旦推倒第一張加班的牌,那么后續(xù)的將是多米洛效應(yīng),加班將一發(fā)不可收拾,進入惡性循環(huán)階段。
                   對于實際的項目中我會采用減算安排工作的方式,那是因為我需要保留對項目整體的進度有更大的回旋緩沖時間。無論對新人還是對高級工程師,中級工程師和初級工程師我都會采用一樣的策略,因為人腦不是機器,所以我們無法保證我們時時刻刻都能正常的滿負荷運轉(zhuǎn)。但是在平常的學習過程或者非實際項目的鍛煉過程中,我會采用超負荷的工作安排模式,這個時候給人員的工作量安排都是100%-120%的程度,因為這個時候我的主要目的在于人員培養(yǎng),所以需要一種超強度的環(huán)境,營造一種壓力的氣氛。其實開發(fā)過程何嘗不是一個不見硝煙的戰(zhàn)場,如果你想要在戰(zhàn)場上不受傷,只有在平時多多受傷,這樣在真實的戰(zhàn)場上才能從容應(yīng)對。
                   對于項目組中我們需要比較清楚的了解每個成員的能力和個性,如果對于他們的能力了解能夠像看著我們手指頭那么清楚,我們就能夠依據(jù)他們的長短,讓他們協(xié)調(diào)發(fā)揮出水平來。我們需要避免工作不分能力,均等劃分的安排方式,更不能把項目寄托在成員的超水平發(fā)揮的基礎(chǔ)上。在工作中我們需要明白項目的最終目的,項目成功還是鍛煉人員,從而采用減算還是加算得工作安排方式。
            作者:Yice(小余)
            出處:http://www.yice800.cn

            posted @ 2009-03-25 21:20 Condor 閱讀(703) | 評論 (0)編輯 收藏

            超仔剛剛推門進來,屁股還沒有碰到他的椅子上已經(jīng)讓人感覺到他歡喜輕飄的神色,我抬頭望著他眼睛,神色中洋溢的滿是歡快。我看著他那興奮的樣子,微微笑著問道:“簽完了?結(jié)果還可以嗎?”
            “還不錯!”
            “能滿意就可以,繼續(xù)努力。”
            “嗯。”
            我知道超仔剛剛和公司簽了新的合同,在新合同里他的工資有了一定的提高,這些都是因為對于他去年的績效考核成績還不錯應(yīng)該得到的結(jié)果。
            年底對于我來說,可真是多事之秋,因為我需要在年底前完成對我團隊這些人的一年的績效評定,這些不但關(guān)系到他們年終的獎金,也影響到來年他們工資的漲浮。雖然自己一直講究的是賞罰分明的做事方法,但是往往對于我來說要清晰分析哪個人在過去的一年中犯了什么樣的錯,對于這些錯誤去做一個評定,算其功過,工作不亞于一個項目的開發(fā)。一方面如果我評定的尺度太嚴格,那么最明顯的一個影響就是年底年終獎金和來年的工資,在工作中涉及到這部分利益的東西處理起來本身就是敏感,所以自己一直都是平時嚴厲甚至苛刻,但是到這個時候,我反而會手下留情,只要態(tài)度對位,錯誤可以酌情考慮。對于我來說,一個人的態(tài)度決定他的一切。
            “我的工作目標就是要替掉你。”這是超仔在面試的時候留給我印象最深的話,也因為這句話我發(fā)而對他有不少的好感。人最應(yīng)該有的是有自信,超仔是剛剛畢業(yè)一年的新人,在面試時候做在我前面表情僵硬,全身緊張的他,在我問“你希望進入公司之后,能夠有什么養(yǎng)的發(fā)展方向時?”這樣的回答可能是一種自大,但是在我看來,這也是他的自信。也這是這種自信讓我決定錄用這個計算能力不算好,但是我覺得各種條件還算合格的小伙子。
            當然我也非全憑一句“就要替掉你。”就把小伙子招聘進來,然后放到自己身邊使勁摟擰,我想自己還不至于有這種變態(tài)的愛好。我喜歡面試的時候讓應(yīng)聘人員都手動填寫一份簡歷,雖然很多時候他們自己都帶了一份打印的現(xiàn)成簡歷,但我還是會讓他們把公司那份表格填寫完整,雖然很多時候他們自要把內(nèi)容抄寫過去就可以,但是這也是我對他們的第一個考驗。很多程序員的字寫的都有大師級的水平,對于他們來說,楷書,行書都不足以表達他們的意境,狂草,唯有這個才能體現(xiàn)他們的追求。有不少程序員在填寫這個簡歷的時候,字跡就和天書一樣,當然文字也像蛇一般的在紙上盤繞。
            對于我來說,我只是通過這張簡歷看看他對自己的一個態(tài)度,我不要求他們的字能夠達到書法家的水品,但是至少要工整,整個紙張讓人看起來要干凈清晰。我很難看到你對目前的工作有多少的渴望,但是我可以通過你寫下來的文字看出來你是否重視這個事情,如果連工作機會都不重視,那以后的態(tài)度就值得擔憂。所以通過這個我也放棄掉不少的人,雖然有些人在和我免談的時候給我感覺也非常不錯,但是如果兩者結(jié)合在一起評定,如果后面沒有做好,那么我只能認為他是學院派的,能說未必能做。
            超仔長的不像程序員的樣子,一米七五的個子,相貌也有幾分帥氣,留著平頭短發(fā),每日衣著新潮個性。他平時個性活潑開朗,又一次他還請了一天的假,說是去參加超男的選拔賽,結(jié)果回來之后,感慨道:“強人太多了,人外有人。”不過自己到?jīng)]有為被淘汰的事情耿耿于懷,倒是很享受樂在其中的過程。
            超仔進入公司的時間也只有半年左右,在這邊年里面他不到兩個月就給他轉(zhuǎn)正了,比公司規(guī)定的三個月試用期提前了一個月多。肯學習和努力的態(tài)度讓我對自己當初挑選他感到非常滿意。在第一個月培訓的時候,讓他整理了以前遺留的舊的項目,那些項目本身缺少相關(guān)部分文檔,但是由于項目一直在延續(xù)開發(fā),所以久而久之,也就這么一直持續(xù)的做下來,那些已經(jīng)對這些內(nèi)容滾瓜爛熟的人也就沒有心情去做,后來者也之能夠在前輩的口傳身教的情況下才能了解其中的奧妙,我一直希望能夠把這部分資料補充完整。但是由于人手上不足,所以就一拖再拖。
            公司對新人有比較詳細的培訓計劃,在這些培訓之外,我對超仔說:“你看看這個程序,因為你以后需要維護和開發(fā)這個,如果你有時間的話,可以把熟悉開發(fā)環(huán)境的步驟寫成文檔,文檔的格式可以參考項目組內(nèi)其他的模板,內(nèi)容你線考慮一下,但是有一個要求,如果另外一個新人來接觸這個程序,我需要他再看了你的穩(wěn)當之后,就可以把環(huán)境搭配起來。些做的方式可以圖文結(jié)合。”
            結(jié)果在一周之后,超仔就給我說:“小余,我把那份文檔寫了一部分,你先看看有什么問題,如果不行的話我再修改。”
            很多人都知道程序員非常討厭寫文檔,所以很多程序員寫出來的文檔比寫出來的代碼還要難讀,有時候讀這種文檔就是一種折磨,比讀法律條款還難受,估計很多時候需要和法律文件一樣,需要再配套上一本詳細的解釋才能把問題說明清楚。
            但是超仔的文檔讓我非常滿意的地方在兩個地方,一方面再環(huán)境搭建的時候,用了截圖的方式描述,而且每一幅圖都是用作圖工具簡單的剪裁過,只保留關(guān)鍵部分,而避免樂像其他人那樣是整個屏幕的圖片,在么個圖中對于操作關(guān)鍵區(qū)域還用紅色正方形邊寬標注說明,每個圖片還有編號。
            另外一個是整個文檔是用Excel文檔做成的,因為公司比較喜歡用Excel做給中開發(fā)文檔,但我嘗試著用打印預覽的時候,讓我驚奇的事情發(fā)生了,總共10頁的文檔,每一頁都調(diào)整過,圖片沒有出現(xiàn)跨頁的問題,而且打印的頁頭和頁尾都修改過了,并沒有保留上個文檔的名稱,作者和日期也都是正確的。
            “頁面打印是你調(diào)整過的?”看著文檔,我輕聲問道。
            “我常常聽到你讓大家發(fā)郵件給客戶的時候,要預覽一下。所以我也就調(diào)了一下。”
            聽到這話,我心中是暗自竊喜,一個新人能夠有這樣的工作意識和態(tài)度,實屬可造之才,技術(shù)可以學習培養(yǎng),但是如果你想改變一個人做事態(tài)度其難度要遠遠大于技術(shù)上的培養(yǎng)過程。
            超仔在后續(xù)半年的工作中也有犯了不少的錯誤,從剛剛開始技術(shù)上弱勢,但是好學肯問,其進步的幅度不小,也使得他在很快的時間內(nèi)能夠達到對他所定位的能力要求。在于我看來這一切取決于他的態(tài)度,態(tài)度端正。
            “態(tài)度端正,學習良好。”我的腦海中突然冒出這幾個字,這不是小學時候,老師在每學期的期末成績單上最喜歡用的兩個評語。什么是態(tài)度?怎么才能算是端正呢?我在心中問了一下自己:“我的工作態(tài)度算不算端正呢?”或許像超仔這樣的新人屬于上升求學階段,所以憧憬無限,但是對于我來說呢?當年何嘗不是如此,現(xiàn)在還是不是一就有這樣的心境呢?
            “哎。”想著想著,不由自己嘆了口氣,難道我老了嗎?怎么我還沒有感覺到青春燦爛,這青春怎么就沒了呢?看看坐在開發(fā)室中的其他人:老馬,阿毛,木子,超仔,大師, 杰克這幾個人,我們應(yīng)該是活力無限的開發(fā)團隊。
            “Hi,小余,你在嗎?”還沒等我在繼續(xù)發(fā)愣,MSN上的就彈出消息來。是上海的PM李。
            我急忙回過去問有什么事情。
            “我剛剛給你發(fā)了一封郵件,我把需要像客戶移交的內(nèi)容重新做了一個整理,你再看看有什么問題沒有?”
            我突然記起來,昨天晚上快接近9點的時候,我還在理發(fā)店修頭發(fā)的時候,就接到李從上海給我打過來的電話,她問我現(xiàn)在有沒有先前她發(fā)給我的計劃列表,因為明天客戶需要確認,所以她想今天晚上再把這份計劃列表完善一下,如果我筆記本上有備份的話,給她轉(zhuǎn)發(fā)一份,結(jié)果我剛好也只是把郵件接收到公司的機子上。最后我聽到她在電話里說了一句:“那好,我明天早點去公司去修改一下,然后再給客戶。”
            李在一個月之前已經(jīng)和公司提出離職的申請,因為她家庭的原因,她需要到國外發(fā)展。應(yīng)該說再過兩天她就會到美國去了,她本來是這個項目上海的項目經(jīng)理,但是對于我來說,她是一個非常優(yōu)秀的項目經(jīng)理,從她身長我看到了一個項目能夠成功的關(guān)鍵,態(tài)度。也就是她的這種工作態(tài)度,讓整個項目有序穩(wěn)定的進行。
            在聽完李的電話之后,我里一直佩服到,這才是工作態(tài)度。
            作者:Yice(小余)
            出處:http://www.yice800.cn

            posted @ 2009-03-25 21:19 Condor 閱讀(772) | 評論 (0)編輯 收藏

            你有沒有考慮過自己能夠管理多大的項目,能夠帶領(lǐng)多少人員的項目團隊?5人?10人?100人?還是千軍萬馬?但是在現(xiàn)實的項目中,能夠帶領(lǐng)100人員的項目經(jīng)理未必能夠帶好10人的團隊,反之亦然。因為作為軟件項目來說存在有非常大的差異?無論你是大才還是小才,我們首先要清楚的認識到自己的才能是否能符合項目的實際應(yīng)用,5人的項目和100人的項目團隊中項目經(jīng)理的工作重心必然不同,如果不區(qū)別對待,那么你的結(jié)局是大才小用,或者是小才大用。
            項目的差異性
            我沒有機會參加類似IBM的OS/360規(guī)模的項目,我所能夠參與的最大項目規(guī)模不過是100人/月上下的項目,當然也做過產(chǎn)品線的長期開發(fā)項目。所以對于那種巨無霸形的項目也只能是望梅止渴,對于其中的奧妙也只能捧讀《人月神話》這類的經(jīng)典,希望能夠從中吸取精華來強壯自身。
            項目的規(guī)模不一樣,項目所能夠配備給定的人員也不一樣,對于大型的項目,除了項目經(jīng)理之外,還會配置項目輔助管理人員和咨詢顧問管理人員等。如果說項目超過了10000人/月這個規(guī)模,項目往往會采用縱向切割來進行管理,整個項目會像工廠中產(chǎn)品線生產(chǎn)方式:系統(tǒng)需求;系統(tǒng)設(shè)計;配置管理;代碼開發(fā);系統(tǒng)測試;文檔編寫;產(chǎn)品構(gòu)建等過程,整個項目會根據(jù)不同的分工被切割成每個小項目團隊,雖然每個團隊可能的工作都只是針對于局部,在各自的內(nèi)部這些工作是相對獨立的,但是每個項目又都對其他部分有比較嚴重的依托,比如系統(tǒng)設(shè)計是以項目需求為基礎(chǔ),代碼開發(fā)是以系統(tǒng)設(shè)計為前提,所有的工作序列彼此關(guān)聯(lián),每個工作都可以獨立安排二級甚至三級的項目經(jīng)理,這樣整個項目的組織管理模式也就形成了金字塔的模式,從項目經(jīng)理到最底下的開發(fā)人員形成一個自頂向下的體系結(jié)構(gòu)。這個時候?qū)τ陧椖拷?jīng)理的主要工作也就不能要求事必躬親,小到一個螺絲釘都要親自過問,對于這種項目經(jīng)理的要求更多在于總體協(xié)調(diào)和整體的掌控上面,他就像一個元帥一般的任務(wù),要的是果斷的決策,準確的判斷,良好的協(xié)調(diào)和豐富的管理經(jīng)驗。
            實際上大部分的項目經(jīng)理很難有機會成為如此大規(guī)模項目的最高決策者,即便有機會參與的時候,更多都是處在二線或者三線的位置,所能夠管理的實際人員也大部分在10人或則20人左右。更多項目經(jīng)理參與的項目都是中小規(guī)模的項目,畢竟中小的項目的數(shù)量還是非常巨大,所以有很多的項目經(jīng)理在從事這種的開發(fā)工作。對于項目規(guī)模在100人/月的項目對于很多公司來說也算是具備有一定規(guī)模的項目,這些項目的人員投入一般都會在10人之上,不會有公司對這種項目采用投入一個人做一百個月的方式。對于10人規(guī)模的項目管理對于大部分的項目經(jīng)理來說可以是一個不小的挑戰(zhàn),因為雖然說項目的規(guī)模不能與上述所說的超級項目抗衡,但是項目在整體過程中所做的事情和上述相當,系統(tǒng)需求,系統(tǒng)設(shè)計,配置管理,代碼開發(fā),系統(tǒng)測試,文檔編寫,產(chǎn)品構(gòu)建等都不會缺少,但是在人員配備里面可沒有二級或則三級的項目經(jīng)理,甚至很多時候會有人力資源捉襟見肘的情況,在10人的規(guī)模里面可是要包含需求做成人員,項目開發(fā)人員,測試人員等。在很多的時候一個人需要充當多個角色,可能在某一個階段你需要做需求,當需求做完了之后,你又需要投入開發(fā),后期的時候可能需要做項目文檔和項目部署,甚至用戶培訓。所以對于我的直觀感覺來說,這種項目對于項目經(jīng)理的能力要求可能更高,如果要做好這種項目的項目經(jīng)理,首先最好有比較扎實的技術(shù)開發(fā)能力和工程背景,這樣你的項目估算才能做得比較準確,為后續(xù)的開發(fā)贏得更多的時間;其次好需要又比較良好的業(yè)務(wù)知識,因為你可能更多需要做一個用戶的接口,所有的需要都需要通過你和客戶去溝通,以及最終的定案,所以對于業(yè)務(wù)的熟悉程度也至關(guān)重要;再者需要又良好的計劃性,因為這種項目的變數(shù)比較多,項目不會像又很長的規(guī)劃周期,所以如果控制好這些可變因素,已經(jīng)如何協(xié)調(diào)內(nèi)部的有限資源,讓資源發(fā)揮最大的優(yōu)勢可能成為項目經(jīng)理每日計劃中關(guān)鍵的一部分。
            還有不少的項目規(guī)模在10人/月左右的項目,這種項目對于很多公司來說屬于不痛不癢的項目類型,因為同一個時期內(nèi)公司可能會有多個這種類型的項目同時在進行中,在這種情況下項目所能夠獲得的資源就更加有限,往往項目的安置人員也就在5人左右,當然和上面兩種情況類是,項目過程的事情還是不可省缺,但是由于項目總體的規(guī)模偏小,所以項目的復雜度也比較容易控制,但是這種項目對于項目經(jīng)理的要求更多在于技術(shù)上的要求,因為如果這個時候在安排一個缺乏技術(shù)經(jīng)驗的人員做項目經(jīng)理,那么整個項目組的安排出現(xiàn)一個外行領(lǐng)導四個內(nèi)行的局面,而且四個內(nèi)行中可能有一半以上是新人或者初級的開發(fā)人員,如果再包括測試等一系列的工作,人員分布上就缺乏合理性。所以這個時候的項目經(jīng)理往往都是技術(shù)過硬的人員擔任,這樣可以化解人員不足的問題,但是也有一個問題,對于技術(shù)優(yōu)秀的人員都會有一個通病,首先看不上別人的工作結(jié)果和質(zhì)量,另外一方面往往會以自己的標準去衡量別人和給人安排工作,這樣對于新人或者初級的開發(fā)人員來說,他們的工作就會出現(xiàn)不合理的問題。同時在做估算的時候也比較容易出現(xiàn)輕易的問題,以自己的能力估算項目進度,結(jié)果造成項目估算不準確,后期嚴重加班的問題。所以這種類型的項目經(jīng)理需要又良好的技術(shù)背景,還需要學習項目的實際管理和合理的人員安排,以及如何做好與項目內(nèi)部成員的友好溝通和關(guān)系。
            最后一種項目類型就是那種一個人吃飽,全家不額的類型,項目規(guī)模非常小,不到1人/月,所以在這種項目的投入人數(shù)往往只有一個人或則兩個人。當然這個時候也不會要求說項目開發(fā)的那一系列的工作都做到位,很多時候都是口頭相傳,這種項目的結(jié)果大部分之要求軟件代碼和程序能夠滿足要求。所以這個過程中很多人可能認為只要管好自己就可以了,但是我認為,時間雖然短,但是事情還是需要做足,比如說需求的明確文檔化,還有與外界的溝通等一些列過程實際上都可以和正常的模式一樣,對自己的工作也需要有一個良好的計劃,這個時候?qū)τ谧约旱囊缶褪且粋€鍛煉的機會,為今后做更大的項目準備好時機。所以這種項目經(jīng)理的要求實際不抵,如何管理好自己可能會是一個比較大的難題。
            項目類型的差異性
            項目從規(guī)模差異上來說是對一個項目經(jīng)理的開發(fā)能力,管理能力等有不同的要求。但是如果說從項目類型的差異的角度來看,就會對項目經(jīng)理的一些其他能力又要求,如果說你做的是國內(nèi)的項目,那么你需要有與客戶溝通的良好能力,能夠有足夠的能力應(yīng)對客戶的各種要求,如何應(yīng)對客戶千奇百怪的要求,如何合理的說“NO.”都是你需要具備的能力。如果說是對日,對歐美的外包服務(wù)開發(fā),需要有良好的語言溝通能力,比如說日語,英語。還需要了解不同國家的文化差異等等,這個時候你可能需要充當起橋梁的作用,如何與國外的客戶進行溝通和交流,包括有工作安排,技術(shù)上等一系列問題的溝通工作。
            給自己的定位
            項目管理本身就是一個比較復雜的過程,不像行軍打戰(zhàn)那樣,有了一盯一眼的制度就可以管理好項目,因為項目的變數(shù)太多,情況迥異,也就沒有放之四海而皆準的管理方法。所以對于不同類型的項目來說,我們需要了解項目的特點,在我們有良好的基礎(chǔ)準備的前提下,根據(jù)自己的能力特點,再結(jié)合項目的實際情款來不斷調(diào)整工作中的方法和內(nèi)容。
            雖然我們很難有一個標準化的管理手冊來指導每一個希望做項目經(jīng)理的人,但是我們可以從別人身上去借鑒各種成功或則失敗的經(jīng)驗,特別是別人失敗的經(jīng)驗,因為別人的成功可能我們很難克隆,但是我們可以避免別人錯誤再我們身上重演。
            不想當將軍的士兵不是好士兵,但是不想當項目經(jīng)理的程序員未必是壞的程序員。畢竟對于技術(shù)領(lǐng)域來說,程序員的最終發(fā)展方向項目經(jīng)理未必是一個最優(yōu)秀的方向,程序員可以走的道路有很多,可以往架構(gòu)師,分析師,資深技術(shù)人員,咨詢師等等。路可能有很多條,而且每一條對于人員的能力要求也都不一樣,都有良好的發(fā)展機會。所以對于自己能力的判斷和分析,認清自己,給自己合理的定位是直觀重要。讓自己的才華得到發(fā)展和認可是今后職業(yè)道路上一個關(guān)鍵,自己要才盡其用。
            作者:Yice(小余)
            出處:http://www.yice800.cn

            posted @ 2009-03-25 21:18 Condor 閱讀(559) | 評論 (0)編輯 收藏

            自己一個人獨自回想工作了這么多年,到底給自己留下了什么?如果要給自己找一個答案,或許有兩個會在今后很長一段時間一直影響自己的東西,一個是在工作了這么多年讓自己明白了我們要擔負什么樣的責任,另外一件是工作這么多年給自己的頸椎留下了不小的病癥。一好一壞或許是這么多年的最大收獲。
            我們該如何看待責任
            時至今日蒙牛老總牛根生說過的那句話還讓我記憶猶新,“有德有才,破格重用;有德無才,培養(yǎng)使用;有才無德,限制錄用;無德無才,堅決不用。”在我認為德的基本就是這個人的責任心和他的態(tài)度。無論是軟件行業(yè)還是其他的行業(yè),在很多的時候考核一個人是否符合相應(yīng)的工作崗位,職位技能往往不是最主要的考核標準,而在所有的考核標準中,人的品性和責任態(tài)度才是考核的關(guān)鍵。
            什么人活得最輕松,不負責人的人。丈夫有責任給妻子一個良好的生活環(huán)境;父親有責任給孩子一個良好的生長環(huán)境;孩子有責任贍養(yǎng)自己的父母;員工有責任做好自己的本職工作;所有的這些都是一些基本的責任。如果一個人富有責任心,生活中的這些責任會讓自己感覺到沉重的壓力,一旦人在這些壓力的之下,要想過的輕松舒服就很困難。所以如果你希望自己過得輕松寫意,你放下一切的責任態(tài)度,做個不負任何責任的人,那么或許你會過得比較輕松,但是你也將成為社會中一個不合格的人。
            軟件開發(fā)本身屬于腦力密集型的勞動,所有的一切都依托于人,軟件行業(yè)本身和其它的制造行業(yè)有一個本質(zhì)性的差異,軟件主要依靠人的智慧來進行工作,雖然我們現(xiàn)在看到很多的軟件工程管理書籍,無論是大師的作品,還是坊間口聲相傳的經(jīng)驗之談,我們都很難解決一個問題,我們很難像制造行業(yè)一樣,讓我們每個程序員寫出來的代碼都能夠像機器加工出來的那樣,每一個行代碼都能夠像一個模子印出來的,很難做到整個團隊寫出的代碼像出至一人之手。所以軟件行業(yè)的工程管理比其它的工程來說要存在有更大的困難,那么在這些問題困撓之下,整個行業(yè)對人的依賴尤為嚴重,對人的依賴程度也就造成對人本身品德和責任心的要求程度相對要高。
            在自己工作這么多年來,感覺最輕松的時候還是剛剛畢業(yè)的時候,那個時候是初出校門,作為一個新人進入項目組中,對于自己最大的挑戰(zhàn)主要是能不能按時準確的完成自己相應(yīng)的模塊開發(fā)工作。后來開始負責項目之后,雖然也在做編碼開發(fā)工作,但是所擔心的和讓自己歡欣的事情和開始已經(jīng)完全不同。如果你希望自己能夠能夠作為一個合格的項目經(jīng)理經(jīng)理,那么你首先需要明確自己的肩上的擔子的分量。在我們的工作中,我們每個人必須承擔工作的各種責任,如果我們?nèi)笔н@種看待責任的態(tài)度,那么工作最后的結(jié)果往往將會以失敗告終。
            對于自己在這幾年的最大一個一個收獲就是讓自己更明確到責任重于泰山的道理。當然也是這種態(tài)度讓自己能夠堅持著把一個一個項目做下去,做好這些項目。如果要對自己做一個評價,或許在技術(shù)上我不敢說自己有十足的優(yōu)勢,但是這些年養(yǎng)成的這種做事情的方法和態(tài)度還能值得一提。
            在項目中你該承擔什么責任
            如果你要問項目組中誰的壓力最大,一般說來應(yīng)該是項目經(jīng)理,當然項目經(jīng)理所拿的工資相對來說也會比較高,責任和壓力本就應(yīng)該和報酬成正向比例關(guān)系。項目經(jīng)理對下必須對項目團隊成員負責,向上必須對公司負責,同時還需要縱向向客戶負責,所以項目經(jīng)理經(jīng)理就像一個傳動軸承,這個項目的運作應(yīng)該在他驅(qū)使之下有效穩(wěn)定的運轉(zhuǎn)。
            項目經(jīng)理需要考慮項目的成本因素,所有的公司都是以盈利為主要目的,有時候公司會出于其他的因素和目的,對于項目的盈利并沒有很嚴格的要求,但是項目經(jīng)理要有成本的概念和意識,要有團隊的總體成本和利潤要有基本的計算方式。同時還需要控制項目的質(zhì)量和進度,還有些項目還要求有保密意識和其他的相關(guān)要求,這些都是項目經(jīng)理需要向公司負責的地方。
            如何組建好一個團隊,如何培養(yǎng)團隊的成員,讓每個團員很夠在一個比較良好的環(huán)境中工作和學習,能夠?qū)崿F(xiàn)每個人的目標和各自的價值觀,把團隊建設(shè)成什么樣類型,和項目經(jīng)理所采取的方法有直接的關(guān)系,有些項目團隊組建后團隊人員如走馬燈似的換,有些團隊組建后隊員除了編碼之后就沒有任何的學習機會,如何利用有限的資源和合理的安排,讓團隊的成員都能夠發(fā)揮各自的特長,讓每個人都能夠體現(xiàn)自己的價值,有時候需要替項目組的成員去和公司去爭取他們所應(yīng)該有的福利和報酬,這就是對項目團隊和團隊成員所要承擔的負責。
            我們每一個項目最終都將面對我們的客戶,有時候我們的客戶的要求會讓我們很難接受,甚至有時候會讓我們團隊感覺到很惱火,但是作為一個項目經(jīng)理需要化解這些對項目團隊一個不利的因素,一方面需要避免影響團隊的士氣,另外一方面需要和客戶進行溝通,明確那些要求可行,那些要求不可行,對于不可行的要求需要給一個比較合理的解釋,避免由于后期無法完成對客戶造成欺騙的行為。同時需要控制項目的整體進度和質(zhì)量,保證項目最終能夠解決客戶的為,這些就是對客戶負責的一個態(tài)度。
            如何樹立團隊的責任意識
            對于項目組中項目盡力所承擔的責任應(yīng)該說是最大的,無論項目的成敗都和項目經(jīng)理由直接的關(guān)系,所以任何一個項目做項目總結(jié)的時候,如果項目成功的話,需要給項目經(jīng)理記上一功,如果項目失敗的話,不論任何原因,棒子首先需要打在項目經(jīng)理的身上。項目經(jīng)理需要對項目的得失成敗負上完全的責任。
            在一個項目團隊中,需要有各個不同的角色相互配合才能最終完成項目,需求調(diào)研人員,系統(tǒng)分析人員,高級程序員,初級程序員,測試人員,配置管理人員等,雖然項目經(jīng)理在項目中的責任最大,但是項目中每一個成員都會有相應(yīng)承擔的責任,或許說著這都是一些工作的職責,開發(fā)人員需要按照開發(fā)中的各種要求進行開發(fā)工作,測試人員需要按照測試的要求準備測試文檔和數(shù)據(jù)等,所有的角色都會有各自的工作內(nèi)容,在實際工作中我們是每一個角色協(xié)作來完成項目,有時候由于項目的規(guī)模偏小,有些人可能會同時充當多個角色,比如說高級程序員有時候需要同時兼顧系統(tǒng)分析人員,項目經(jīng)理有時候還需要兼顧測試等等。但是不論規(guī)模的大小,項目經(jīng)理需要非常清晰的意思到每個角色的工作職責,在項目分工中對各種工作要比較清晰,合理化安排。同時也需要讓每個工作的人員清楚的知道自己的工作要求和檢驗的方式,避免含糊性的安排,做到責任清晰。
            明確責任的首要是明確工作內(nèi)容,對于團隊成員中需要做到責任均衡,盡量避免能者多勞的問題,工作中進行工作安排時往往容易把工作重點都落到部分能力較強的人員上,這種安排比較容易造成工作天平的傾斜,一旦傾斜的嚴重,這部分開發(fā)人員就比較容易造成由于精力不足造成質(zhì)量問題。所以項目經(jīng)理在安排工作中需要有個權(quán)衡,如果說存在人員能力不均衡問題,那么在工作安排的時候,需要盡可能抽取重復性的工作,讓能力欠缺的人員做這部分工作,同時需要協(xié)調(diào)他們學習,也需要明確學習的目標和結(jié)果。
            對于團隊中我們需要樹立一個責任意識,同時需要有合作精神,在項目開發(fā)中整個團隊需要彼此合作,有時候一個人的問題有時候會影響到整個團隊的質(zhì)量和進度。我們最終給客戶交付的是一個完整的程序,其中任何一個部分出了問題,客戶對整個產(chǎn)品的評價都會因此而改觀,客戶不會說那個模塊怎么怎么樣,而是說你這個程序怎么怎么樣,這就代表說是一個整體的結(jié)果,所以項目經(jīng)理需要在團隊中樹立起這種整體的責任意識,避免團隊中出現(xiàn)個人自管門前雪,不理他人瓦上霜的現(xiàn)象。
            你能承受多大責任
            你有沒有評價過你的項目經(jīng)理,你有沒有對你的項目經(jīng)理感到無奈和氣氛,如果你希望自己能夠往項目經(jīng)理方向發(fā)展,在我看來你首先需要考慮的不是你的技術(shù)背景,你的管理經(jīng)驗是不是足夠,首先要考慮的是你是不是有能夠承受那些責任的心態(tài)。如果你是項目經(jīng)理的話,那么你負責管理的團隊無論人員多少,他們需要在你的協(xié)調(diào)下工作,那么你肩上擔負的就是那些人的工作結(jié)果和評定,還有來自公司的各種壓力和考核。這些比單純寫代碼要勞心許多。
            影響項目成敗的因素有很多,但是如果說項目經(jīng)理缺少責任心,我可以說項目必敗無疑。正是因為這樣,我才會在此一再強調(diào)責任心的問題。
            作者:Yice(小余)
            出處:http://www.yice800.cn

            posted @ 2009-03-25 21:17 Condor 閱讀(605) | 評論 (0)編輯 收藏

            如果你愛他,那么讓他去當項目經(jīng)理,因為那里會是他事業(yè)的天堂;如果你狠他,送他去當項目經(jīng)理,因為那將是他的地獄。
            軟 件開發(fā)工作應(yīng)該屬于分工比較明確的行業(yè),每一個項目的啟動,調(diào)研,開發(fā),測試,部署,用戶培訓和后期維護等一系列的過程都有不同的角色參與其中。在這一系 列的角色中項目經(jīng)理是最直接的管理者,無疑顯得格外的突出和重要。軟件項目開發(fā)的成功率本身就不高,在眾多的失敗過程中,由于項目經(jīng)理在管理上存在的問題 造成項目無法按時交納,質(zhì)量不高甚至失敗的例子在我看來數(shù)不勝數(shù)。雖然項目經(jīng)理的能力并不是項目失敗的直接原因,因為影響項目成敗的因素有很多,但是如果 一個合格的項目經(jīng)理,對于項目的整個開發(fā)過程來說,如何利用他的經(jīng)驗和能力來有效合理的管理項目進度,從而避免很多無謂的失誤,在項目的最終成敗中還是占 有關(guān)鍵作用。
            對 于很多從事軟件開發(fā)的人來說,項目經(jīng)理是他們事業(yè)上追求的目標,從初出校園的小牛犢,從最低級的學徒似的初級開發(fā)人員,再不斷的努力和學習,慢慢得爬到有 經(jīng)驗的中級程序員,再后來到高級程序員,到后來的大牛人才,慢慢開始帶領(lǐng)新人,開始接觸項目管理上的工作。我想很多人的軌跡都是這么一步一步的過來。在整 個過程中我們彼此都在學習,關(guān)于很多的技術(shù)方面的知識可以通過網(wǎng)絡(luò)和書籍進行學習。但是如何做一名項目經(jīng)理,如何做好一名項目經(jīng)理,倒缺乏一個系統(tǒng)的學習 框架,包括我自己在內(nèi),也是跟隨前人身邊學習,自己觀察,在一次次錯誤后進行反思后才有所進步。這個話題的文章我考慮了很久后才決定要寫出來,在一系列的 文章中結(jié)合我自己的項目和我自己身邊的項目,希望能夠?qū)⑦@些經(jīng)驗與大伙分享,通過討論,彼此共勉。機會往往是給有所準備的人,不論你現(xiàn)在是否是充當項目經(jīng) 理的角色,但是如果你有所準備,我想對于你來說機會只是遲早的事情。
            項目從規(guī)模來說,可以劃分微型項目,小型項目,中型項目和大項目,當然還有超大型的項目,對于工數(shù)在一人/月(一個中級程序員開發(fā)一個月,總計21個工作日)的項目定為微型項目;對于工數(shù)在1人/月到10人/月之間的規(guī)模稱為小型項目;對于工數(shù)在10人/月到100人/月之間的規(guī)模稱為中型項目;如果超過 100人/月的項目稱為大型項目;對于我們所討論的項目管理中,對于超過1000人/月的項目不做討論,因為一般的公司來說,還是比較少能夠遇到中規(guī)模的項目。
            如 果從類型來說可以簡單的劃分為產(chǎn)品開發(fā)和項目開發(fā),產(chǎn)品的開發(fā)一般會有后續(xù)定期的產(chǎn)品升級性開發(fā),項目的開發(fā)時間跨度也會比較長,對于項目的開發(fā)來說,一 般是指為了滿足某一特定客戶而開發(fā)的軟件,其開發(fā)周期往往會比較緊張,后續(xù)的開發(fā)主要是針對客戶的新功能追加,這種項目的開發(fā)往往會劃分為幾個階段分步進 行。
            如果從合作方式上也可以劃分為自主研發(fā)和外包開發(fā),甚至還有部分項目使用外駐人員進行項目開發(fā),有時候開發(fā)還受到地域性的影響,兩地,三地合作開發(fā),國內(nèi)國外的合作開發(fā),還有甚至多國之間的合作開發(fā)。
            不 同的項目開發(fā)方式都會有不同的問題出現(xiàn),比如說小型項目和大型項目的人員配備上就不可能一樣,外包開發(fā)和自主研發(fā)的項目計劃也不一樣,跨地域的合作上的時 間差異和人員的溝通和本公司內(nèi)部背靠背的模式也不一樣。項目中實際可能發(fā)生的事情千奇百怪,這些問題絕大部分都需要項目經(jīng)理來過問,分析和決策。所以說項 目經(jīng)理或許對于很多人來說將會是地獄,一旦深陷其中,很難有苦盡甘來的那一天。但是如果方法得當,管理手段有效,能夠合理的規(guī)避風險呢?那你將會感到項目 中的一切對你來說游刃有余,團隊中每個人也都能相應(yīng)發(fā)揮自己的特長,也都能從中找到各自的成就感。
            生與死只在一線間,好和壞也是如此。希望能夠從項目經(jīng)理的角度來看看項目實際過程中我們會遇到哪些問題,該如何去處理這些問題,通過著一些列的文章能讓你對項目的整體過程有更全面的了解,同時也能夠讓你更清楚項目經(jīng)理的日常工作和行為職責。
            作者:Yice(小余)
            出處:http://www.yice800.cn

            posted @ 2009-03-25 21:16 Condor 閱讀(693) | 評論 (0)編輯 收藏

            作者:Michael Howard
            原文出處:Strsafe.h: Safer String Handling in C

              在微軟公司舉行的Microsoft Windows Security Push 活動期間,一批測試者、程序管理經(jīng)理和普通程序員共同決定要為 C 語言量身定制一套具有較高安全性的字符串處理函數(shù),并且希望這些函數(shù)能被 Windows 程序員和微軟公司內(nèi)部的程序員所采用。
            簡單說來,現(xiàn)有的 C 語言運行時函數(shù)實在難以在當今充斥著惡意攻擊企圖的大環(huán)境下立足。這些函數(shù)要么在返回值和參數(shù)上缺乏一致性,要么隱含著所謂的“截斷誤差”(truncation errors) 錯誤,要么無法提供足夠強大的功能。坦言之,調(diào)用這些函數(shù)的代碼太容易產(chǎn)生“內(nèi)存溢出”問題了。
              我們發(fā)現(xiàn),面向 C++ 程序員的類足以應(yīng)付各種安全處理字符串的編程需要;他們能夠選擇 MFC 的Cstring 類、ATL 的CComBSTR 類 或者STL 的string 類,等等。然而,經(jīng)典的 C 語言程序仍然普遍地存在,何況許多人正在把 C++ 當作 “改良的 C 語言” 來用,卻把豐富的 C++ 類束之高閣。
              其實只需要添加一行代碼,你就能在 C 語言代碼中調(diào)用安全性良好的 strsafe 系列函數(shù)了,詳細請參閱:
            《Using the Strsafe.h Functions》
            這些新函數(shù)包含在一個頭文件和一個函數(shù)庫(可選)中,而后兩者能在新版的 Platform SDK 中找到。對,就這么簡單:

            #include "strsafe.h"

            還等什么呢!
            再強調(diào)一次,對 strsafe 函數(shù)庫的引用是可選的。
            為了實現(xiàn) strsafe 系列函數(shù)的目標,你的代碼必須滿足下列條件:

            • 始終以 NULL 字符結(jié)束字符串。
            • 始終檢測目標緩沖區(qū)的長度。
            • 始終用 HRESULT 語句產(chǎn)生統(tǒng)一的返回值。
            • 兼顧 32 位與 64 位兩種運行環(huán)境。
            • 具有靈活性。

              我們覺得,缺乏統(tǒng)一性是導致現(xiàn)有許多 C 語言字符串處理函數(shù)容易產(chǎn)生安全漏洞的根本原因,而 strsafe 系列函數(shù)所帶來的高度統(tǒng)一性恰恰是解決此問題的一劑良藥。然而,strsafe 也不是萬能藥。單純依靠 strsafe 系列函數(shù)并不能保證代碼的安全性和堅固性——你還必須開動你的大腦才行——然而這樣對解決問題還是大有幫助的!
            下面給出一段采用經(jīng)典 C 語言運行時間函數(shù)的代碼:

            void UnsafeFunc(LPTSTR szPath,DWORD cchPath) {
            	TCHAR szCWD[MAX_PATH];
            
            	GetCurrentDirectory(ARRAYSIZE(szCWD), szCWD);
            	strncpy(szPath, szCWD, cchPath);
            	strncat(szPath, TEXT("\\"), cchPath);
            	strncat(szPath, TEXT("desktop.ini"),cchPath);
            }

              以上代碼中的 bug 隨處可見 —— 它沒有檢查任何一個返回值,而且在對 strncat 函數(shù)的調(diào)用中也沒有正確地使用 cchPath (因為MAX_PATH 中保存的是目標緩沖區(qū)內(nèi)剩余空間的長度,而不是目標緩沖區(qū)的總長度)。于是,“內(nèi)存溢出” 問題將會快找上門來。然而,象這樣的代碼片段早已泛濫成災(zāi)了。如果改用 strsafe 系列函數(shù),那么以上代碼應(yīng)該變成:

            bool SaferFunc(LPTSTR szPath,DWORD cchPath) {
            	TCHAR szCWD[MAX_PATH];
            
            	if (GetCurrentDirectory(ARRAYSIZE(szCWD), szCWD) &&
            			SUCCEEDED(StringCchCopy(szPath, cchPath, szCWD)) &&
            			SUCCEEDED(StringCchCat(szPath, cchPath, TEXT("\\"))) &&
            			SUCCEEDED(StringCchCat(szPath, cchPath, TEXT("desktop.ini")))) {
            
            			return true;
            	}
            
            	return false;
            }						
              這段代碼不但檢查了每一個返回值,還保證了適時傳入同一目標緩沖區(qū)的總長度。你還可以采用 Ex 版本的 strsafe 系列函數(shù)來實現(xiàn)更加高級的功能,比如:
            • 獲取目標緩沖區(qū)的當前指針。
            • 獲取目標緩沖區(qū)的剩余空間長度。
            • 以某個特定字符填充空閑緩沖區(qū)。
            • 一旦字符串處理函數(shù)失敗,就把用特定值填充字符串。
            • 一旦字符串處理函數(shù)失敗,就把目標緩沖區(qū)設(shè)成 NULL 。

              如此改進后的代碼性能又如何呢?告訴你一個好消息:它與原先的代碼在性能上幾乎沒有差別。我曾在自己的 1.8 GHz 電腦上測試過混用經(jīng)典 C 語言中各種字符串連接函數(shù)的代碼、混用 strsafe 系列中各種字符串連接函數(shù)的代碼和混用 Ex 版本 strsafe 系列中各種字符串連接函數(shù)的代碼。它們各自獨立運行一百萬次(沒錯,就是 10,000,000 次)所消耗的時間分別為:

            • 經(jīng)典 C 語言 —— 7.3 秒
            • Strsafe 系列—— 8.3 秒
            • Strsafe 系列 (Ex 版) —— 11.1 秒

            在測試中,調(diào)用 Ex 版本的 strsafe 系列函數(shù)的程序會在調(diào)用失敗時把緩沖區(qū)設(shè)為 NULL ,并以 0xFE 作為填充字節(jié),代碼如下:

            DWORD dwFlags = STRSAFE_NULL_ON_FAILURE | STRSAFE_FILL_BYTE(0xFE);

              其中設(shè)置填充字節(jié)的代碼耗時較多。事實上,如果這里僅僅把緩沖區(qū)設(shè)置為 NULL 的話,則采用 Ex 版本的 strsafe 系列函數(shù)的代碼將會與采用普通的 strsafe 系列函數(shù)的代碼耗時相同。
              由此可見,以上三種方案的性能差異極小。我相信你也不會經(jīng)常在一個程序中數(shù)百萬次地反復執(zhí)行包含大量字符串處理函數(shù)的代碼吧!
            還有一點值得引起注意:當你引用 strsafe 系列函數(shù)時,原有的 C 語言字符串處理函數(shù)都將被自動進行 #undef 處理。這也沒問題,因為調(diào)試過程中的出錯信息將會告訴你哪些函數(shù)已經(jīng)被相應(yīng)的 strsafe 系列函數(shù)取代了。好了,請放心地使用 strsafe.h 吧!更多相關(guān)信息請參閱 《Using the Strsafe.h Functions》

            posted @ 2009-03-20 10:57 Condor 閱讀(2720) | 評論 (1)編輯 收藏

            一、墨菲定律

                1949年,一位名叫墨菲的空軍上尉工程師,認為他的某位同事是個倒霉蛋,不經(jīng)意間開了句玩笑:“如果一件事情有可能被弄糟,讓他去做就一定會弄糟。”
            這句話迅速流傳,并擴散到世界各地。在流傳擴散的過程中,這句笑話逐漸失去它原有的局限性,演變成各種各樣的形式,其中一個最通行的形式是:“如果壞事情有可能發(fā)生,不管這種可能性多么小,它總會發(fā)生,并引起最大可能的損失。”
            這就是著名的“墨菲定律”。下面是墨菲定律的一些變種或推論。
            人生哲學
            1.別試圖教貓唱歌,這樣不但不會有結(jié)果,還會惹貓不高興?
            2.別跟傻瓜吵架,不然旁人會搞不清楚,到底誰是傻瓜?
            3.不要以為自己很重要,因為沒有你,太陽明天還是一樣從東方升上來?
            4.笑一笑,明天未必比今天好。
            5.好的開始,未必就有好結(jié)果;壞的開始,結(jié)果往往會更糟。
            處世原理
            6.你若幫助了一個急需用錢的朋友,他一定會記得你——在他下次急需用錢的時候。
            7.有能力的——讓他做;沒能力的──教他做;做不來的──管理他。
            8.你早到了,會議卻取消;你準時到,卻還要等;遲到,就是遲了。
            9.你攜伴出游,越不想讓人看見,越會遇見熟人。
            愛情意義
            10.你愛上的人,總以為你愛上他是因為:他使你想起你的老情人。
            11.你最后硬著頭皮寄出的情書;寄達對方的時間有多長,你反悔的時間就有多長。
            生活常識
            12.東西越好,越不中用。
            13.一種產(chǎn)品保證60天不會出故障,等于保證第61天一定就會壞掉。
            14.東西久久都派不上用場,就可以丟掉;東西一丟掉,往往就必須要用它。
            15.你丟掉了東西時,最先去找的地方,往往也是可能找到的最后一個地方。
            16.你往往會找到不是你正想找的東西。
            17.你出去買爆米花的時候,銀幕上偏偏就出現(xiàn)了精彩鏡頭。
            18.另一排總是動的比較快;你換到另一排,你原來站的那一排,就開始動的比較快了;你站的越久,越有可能是站錯了排。
            19.一分鐘有多長? 這要看你是蹲在廁所里面,還是等在廁所外面。

                二、二八法則

                1897年,意大利經(jīng)濟學家帕列托在對19世紀英國社會各階層的財富和收益統(tǒng)計分析時發(fā)現(xiàn):80%的社會財富集中在20%的人手里,而80%的人只擁有社 會財富的20%,這就是“二八法則”。“二八法則”反應(yīng)了一種不平衡性,但它卻在社會、經(jīng)濟及生活中無處不在。    附:破窗理論等

                 在商品營銷中,商家往往會認為所有顧客一樣重要;所有生意、每一種產(chǎn)品都必須付出相同的努力,所有機會都必須抓住。而“二八法則”恰恰指出了在原因和結(jié) 果、投入和產(chǎn)出、努力和報酬之間存在這樣一種典型的不平衡現(xiàn)象:80%的成績,歸功于20%的努力;市場上80%的產(chǎn)品可能是20%的企業(yè)生產(chǎn)的;20% 的顧客可能給商家?guī)?0%的利潤。遵循“二八法則”的企業(yè)在經(jīng)營和管理中往往能抓住關(guān)鍵的少數(shù)顧客,精確定位,加強服務(wù),達到事半功倍的效果。美國的普 爾斯馬特會員店始終堅持會員制,就是基于這一經(jīng)營理念。

                 “二八法則”同樣適用于我們的生活,如一個人應(yīng)該選擇在幾件事上追求卓越,而不必強求在每件事上都有好的表現(xiàn);鎖定少數(shù)能完成的人生目標,而不必追求所有的機會。

                三、馬太效應(yīng)

                《新約·馬太福音》中有這樣一個故事,一個國王遠行前,交給三個仆人每人一錠銀子,吩咐他們:“你們?nèi)プ錾猓任一貋頃r,再來見我。”國王回來時,第一 個仆人說:“主人,你交給我的一錠銀子,我已賺了10錠。”于是國王獎勵了他10座城邑。第二個仆人報告說:“主人,你給我的一錠銀子,我已賺了5錠。” 于是國王便獎勵了他5座城邑。第三個仆人報告說:“主人,你給我的一錠銀子,我一直包在手巾里存著,我怕丟失,一直沒有拿出來。”于是國王命令將第三個仆 人的那錠銀子賞給第一個仆人,并且說:“凡是少的,就連他所有的,也要奪過來。凡是多的,還要給他,叫他多多益善。”這就是馬太效應(yīng),它反映了當今社會中 存在的一個普遍現(xiàn)象,即贏家通吃。
            對企業(yè)經(jīng)營發(fā)展而言,馬太效應(yīng)告訴我們,要想在某個領(lǐng)域保持優(yōu)勢,就必須在此領(lǐng)域迅速做大。當你成為某個領(lǐng)域的領(lǐng)頭羊的時候,即便投資回報率相同,你也能 更輕易地獲得比弱小的同行更大的收益。而若沒有實力迅速在某個領(lǐng)域做大,就要不停地尋找新的發(fā)展領(lǐng)域,才能保證獲得較好的回報。

                四、手表定理

                手表定理是指一個人有一只表時,可以知道現(xiàn)在是幾點鐘,而當他同時擁有兩只表時卻無法確定。兩只表并不能告訴一個人更準確的時間,反而會讓看表的人失去對 準確時間的信心。你要做的就是選擇其中較信賴的一只,盡力校準它,并以此作為你的標準,聽從它的指引行事。記住尼采的話:“兄弟,如果你是幸運的,你只需 有一種道德而不要貪多,這樣,你過橋更容易些。”
            如果每個人都“選擇你所愛,愛你所選擇”,無論成敗都可以心安理得。然而,困擾很多人的是:他們被“兩只表”弄得無所,心身交瘁,不知自己該信仰哪一 個,還有人在環(huán)境、他人的壓力下,違心選擇了自己并不喜歡的道路,為此而郁郁終生,即使取得了受人矚目的成就,也體會不到成功的快樂。
            手表定理在企業(yè)經(jīng)營管理方面給我們一種非常直觀的啟發(fā),就是對同一個人或同一個組織的管理不能同時采用兩種不同的方法,不能同時設(shè)置兩個不同的目標。 甚至每一個人不能由兩個人來同時指揮,否則將使這個企業(yè)或這個人無所適從。手表定理所指的另一層含義在于每個人都不能同時挑選兩種不同的價值觀,否則,你 的行為將陷于混亂。

                五、“不值得”定律

                不值得定律最直觀的表述是:不值得做的事情,就不值得做好,這個定律似乎再簡單不過了,但它的重要性卻時時被人們疏忘。不值得定律反映出人們的一種心理, 一個人如果從事的是一份自認為不值得做的事情,往往會保持冷嘲熱諷,敷衍了事的態(tài)度。不僅成功率小,而且即使成功,也不會覺得有多大的成就感。
            哪些事值得做呢?一般而言,這取決于三個因素。
            1、價值觀。關(guān)于價值觀我們已經(jīng)談了很多,只有符合我們價值觀的事,我們才會滿懷熱情去做。
            2、個性和氣質(zhì)。一個人如果做一份與他的個性氣質(zhì)完全背離的工作,他是很難做好的,如一個好交往的人成了檔案員,或一個害羞者不得不每天和不同的人打交道。
            3、現(xiàn)實的處境。同樣一份工作,在不同的處境下去做,給我們的感受也是不同的。例如,在一家大公司,如果你最初做的是打雜跑腿的工作,你很可能認為是不值得的,可是,一旦你被提升為領(lǐng)班或部門經(jīng)理,你就不會這樣認為了。
            總結(jié)一下,值得做的工作是:符合我們的價值觀,適合我們的個性與氣質(zhì),并能讓我們看到期望。如果你的工作不具備這三個因素,你就要考慮換一個更合適的工作,并努力做好它。
            因此,對個人來說,應(yīng)在多種可供選擇的奮斗目標及價值觀中挑選一種,然后為之而奮斗。“選擇你所愛的,愛你所選擇的”,才可能激發(fā)我們的奮斗毅力,也 才可以心安理得。而對一個企業(yè)或組織來說,則要很好地分析員工的性格特性,合理分配工作,如讓成就欲較強的職工單獨或牽頭來完成具有一定風險和難度的工 作,并在其完成時給予定時的肯定和贊揚;讓依附欲較強的職工更多地參加到某個團體中共同工作;讓權(quán)力欲較強的職工擔任一個與之能力相適應(yīng)的主管。同時要加 強員工對企業(yè)目標的認同感,讓員工感覺到自己所做的工作是值得的,這樣才能激發(fā)職工的熱情。

                六、彼得原理

            管理學家勞倫斯·丁·彼得(Laurence.J.Peter),1917年牛于加拿大的范庫弗,1957年獲美國華盛頓州立大學學士學位,6年后 又獲得該校教育哲學博士學位,他閱歷豐富,博學多才,著述頗豐,他的名字還被收人了《美國名人榜》、《美國科學界名人錄》和《國際名人傳記辭典》等辭書 中。

                 彼得原理(The PeterPrinciPle)正是彼得根據(jù)千百個有關(guān)組織中不能勝任的失敗實例的分析而歸納出來的。其具體內(nèi)容是:“在一個等級制度中,每個職工趨向于 上升到他所不能勝任的地位”。彼得指出,每一個職工由于在原有職位上工作成績表現(xiàn)好(勝任),就將被提升到更高一級職位;其后,如果繼續(xù)勝任則將進一步被 提升,直至到達他所不能勝任的職位。由此導出的彼得推論是,“每一個職位最終都將被一個不能勝任其工作的職工所占據(jù)。層級組織的工作任務(wù)多半是由尚未達到 不勝任階層的員工完成的。”每一個職工最終都將達到彼得高地,在該處他的提升商數(shù)(PQ)為零。至于如何加速提升到這個高地,有兩種方法。其一。是上面的 “拉動”,即依靠裙帶關(guān)系和熟人等從上面拉;其二是自我的“推動”,即自我訓練和進步等,而前者是被普遍采用的。

                 彼得認為,由于彼得原理的推出,使他“無意間”創(chuàng)設(shè)了一門新的科學——層級組織學(hierarchiolgy)。該科學是解開所有階層制度之謎的鑰匙, 因此也是了解整個文明結(jié)構(gòu)的關(guān)鍵所在。凡是置身于商業(yè)、工業(yè)、政治、行政、軍亨、宗教、教育各界的每個人都和層級組織息息相關(guān),亦都受彼得原理的控制。當 然,原理的假設(shè)條件是:時間足夠長,五層級組織里有足夠的階層。彼得原理被認為是同帕金森定律有聯(lián)系的。

                 帕金森(C.N.Parkinson)是著名的社會理論家,他曾仔細觀察并有趣地描述層級組織中冗員累積的現(xiàn)象。他假設(shè),組織中的高級主管采用分化和征服 的策略,故意使組織效率降低,借以提升自己的權(quán)勢,這種現(xiàn)象即帕金森所說的“爬升金字塔”。彼得認為這種理論設(shè)計是有缺陷的,他給出的解釋員工累增現(xiàn)象的 原因是層級組織的高級主管真誠追求效率(雖然徒勞無功)。正如彼得原理顯示的,許多或大多數(shù)主管必已到達他們的不勝任階層。這些人無法改進現(xiàn)有的狀況,因 為所有的員工已經(jīng)竭盡全力了,于是為了再增進效率,他們只好雇用更多的員工。員工的增加或許可以使效率暫時提升,但是這些新進的人員最后將因晉升過程而到 達不勝任階層,于是唯一改善的方法就是再次增雇員工,再次獲得暫時的高效率,然后是另一。次逐漸歸于無效率。這樣就使組織中的人數(shù)超過了工作的實際需要。

                 彼得原理首次公開發(fā)表于1960年9月美國聯(lián)邦出資的一次研習會上,聽眾是一群負責教育研究計劃、并剛獲晉升的項目主管,彼得認為他們多數(shù)人“只是拼命地 想復制一些老掉牙了的統(tǒng)計習題”,于是引介彼得原理說明他們的困境。演說召來了敵意與嘲笑,但是彼得仍然決定以獨特的諷刺手法呈現(xiàn)彼得原理,盡管所有案例 研究都經(jīng)過精確編纂,且引用的資料也都符合事實,最后定稿于1965年春完成,然后總計有16家之多的出版社無情地拒絕了該書的手稿。1966年,作者零 星地在報紙上發(fā)表了幾篇述論同一主題的文章,讀者的反應(yīng)異常熱烈,引得各個出版社趨之若婺鴛。正如彼得在自傳中提到的,人偶爾會在鏡中瞥見自己的身影而不 能立即自我辯認,于是在不自知前就加以嘲笑一番,這樣的片刻里正好可以使人進一步認識自己,“彼得原理”扮演的正是那樣一面鏡子。

                七、零和游戲

            一個游戲無論幾個人來玩,總有輸家和贏家,贏家所贏的都是輸家所翰的,所以無論輸贏多少,正負相抵,最后游戲的總和都為零,這就是零和游戲。
                零和游戲之所以受人關(guān)注,是因為人們在社會生活中處處都能找到與零和游戲雷同或類似的現(xiàn)象。我們大肆開發(fā)利用煤炭石油資源,留給后人的便越來越少;我們研 究生產(chǎn)了大量的轉(zhuǎn)基因產(chǎn)品,一些新的病毒也跟著冒了出來;我們修筑了葛洲壩水利工程,白鰭豚就再也不能洄游到金沙江產(chǎn)卵了……
                發(fā)展是硬道理。人類在經(jīng)歷了經(jīng)濟高速增長、科技迅猛發(fā)展、全球經(jīng)濟一體化及曰益嚴重的生態(tài)破壞、環(huán)境污染之后,可持續(xù)發(fā)展理論才逐漸浮出水面。零和游戲原 理正在逐漸為“雙贏”觀念所取代,人們逐漸認識到“利己”而不“損人”才是最美好的結(jié)局。實踐證明,通過有效合作,實現(xiàn)皆大歡喜的結(jié)局是可能的。
                領(lǐng)導者要善于跳出“零和”的圈子,尋找能夠?qū)崿F(xiàn)“雙贏”的機遇和突破口,防止負面影響抵消正面成績。批評下屬如何才能做到使其接受而不抵觸,發(fā)展經(jīng)濟如何 才能做到不損害環(huán)境,開展競爭如何使自己勝出而不讓對方受到傷害,這些都是每一個為官者應(yīng)該仔細思考的問題。
                還是那句話,世上沒有現(xiàn)成的標準答案。這些企業(yè)經(jīng)營管理定律只能供我們參考和借鑒,至于什么條件下適合借鑒哪一種,回到手表定理上去,你需要自己選擇一塊戴著舒適而又走時準確的手表。

                八、華盛頓合作規(guī)律

                華盛頓合作規(guī)律說的是:一個人敷衍了事,兩個人互相推諉,三個人則永無成事之日。多少有點類似于“三個和尚”的故事。

              人與人的合作不是人力的簡單相加,而是復雜和微妙得多。在人與人的合作中,假定每一個人的能力都為1,那么10個人的合作結(jié)果有時比10大得多,有時甚至比1還要小。因為人不是靜止的物,而更像方向不同的能量,相互推動時自然事半功倍,相互抵觸時則一事無成。

                九、酒與污水定律

                酒與污水定律是指,如果把一匙酒倒進一桶污水中,你得到的是一桶污水;如果把一匙污水倒進一桶酒中,你得到的還是一桶污水。幾乎在任何組織里,都存在幾個 難弄的人物,他們存在的目的似乎就是為了把事情搞糟。他們到處搬弄是非,傳播流言、破壞組織內(nèi)部的和諧。最糟糕的是,他們像果箱里的爛蘋果,如果你不及時 處理,它會迅速傳染,把果箱里其它蘋果也弄爛,“爛蘋果”的可怕之處在于它那驚人的破壞力。一個正直能干的人進入一個混亂的部門可能會被吞沒,而一個人無 德無才者能很快將一個高效的部門變成一盤散沙。組織系統(tǒng)往往是脆弱的,是建立在相互理解、妥協(xié)和容忍的基礎(chǔ)上的,它很容易被侵害、被毒化。破壞者能力非凡 的另一個重要原因在于,破壞總比建設(shè)容易。一個能工巧匠花費時日精心制作的陶瓷器,一頭驢子一秒鐘就能毀壞掉。如果擁有再多的能工巧匠,也不會有多少像樣 的工作成果。如果你的組織里有這樣的一頭驢子,你應(yīng)該馬上把它清除掉;如果你無力這樣做,你就應(yīng)該把它拴起來。

                 十、水桶定律

                一只水桶能裝多少水取決于水桶中最短的一塊木板而不是最長的那塊木板。
                任何組織幾乎都有一個共同的特點,即構(gòu)成組織的各個部分往往是優(yōu)劣不齊的,但劣勢部分卻往往決定著整個組織的水平。問題是劣勢部分是組織中一個有用的部分,你不能把它當成爛蘋果扔掉,否則,你會一點水也裝不了,可它卻讓你那些長的東西白長了!
                劣勢決定優(yōu)勢,劣勢決定生死,這是市場競爭的殘酷法則。水桶定律告訴我們,領(lǐng)導者要有憂患意識,如果你個人身上某個方面是“最短的一塊”,你應(yīng)該考慮盡快 把它補起來;如果你所領(lǐng)導的集體中存在著“一塊最短的木板”,你一定要迅速將它做長補齊,否則,它帶給你的損失可能是毀滅性的—叫艮多時候,往往就是因為 一件事沒做好而毀了所有的努力。有些人也許不知道水桶定律,但都知道“一票否決”,這是中國的“水桶”,有了它你便矢口道水桶定律是多么重要。
                決策和執(zhí)行發(fā)生的機率。讓謀劃的人盡心謀劃,讓執(zhí)行的人全力執(zhí)行,讓他們都從中獲得間接而不是直接的功利,這樣我們才能把“粥”分得更好。當然,還應(yīng)有必不可少的獨立的監(jiān)督。

                十一、蘑菇管理原理

                蘑菇長在陰暗的角落,得不到陽光,也沒有肥料,自生自滅,只有長到足夠高的時候才開始被人關(guān)注,可此時它自己已經(jīng)能夠接受陽光了。
                蘑菇管理是大多數(shù)組織對待初入門者、初學者的一種管理方法。從傳統(tǒng)的觀念上講,“蘑菇經(jīng)歷”是一件好事,它是人才蛻殼羽化前的一種磨煉,對人的意志和耐力 的培養(yǎng)有促進作用。但用發(fā)展的眼光來看,蘑菇管理有著先天的不足:一是太慢,還沒等它長高長大恐怕瘋長的野草就已經(jīng)把它蓋住了,使它沒有成長的機會;二是 缺乏主動,有些本來基因較好的蘑菇,一鉆出土就碰上了石頭,因為得不到幫助,結(jié)果胎死腹中。
                讓初入門者當上一段時間的“蘑菇”,可以消除他們不切實際的幻想,從而使他們更加接近現(xiàn)實,更實際、更理性地思考問題和處理問題。領(lǐng)導者應(yīng)當注意的是,這 一過程不可過長,時間太長便會使其消極退化乃至枯萎,須知不給陽光不給關(guān)愛不僅是任其自生自滅,而且更是對其成長的抑制。如何讓他們成功地走過生命中的這 一段,盡快吸取經(jīng)驗、成熟起來,這才是領(lǐng)導者所應(yīng)當考慮的。

                十二、錢的問題

                當某人告訴你:“不是錢,而是原則問題”時,十有八九就是錢的問題。
            照一般的說法,金錢是價值的尺度,交換的媒介,財富的貯藏。但是這種說法忽略了它的另一面,它令人陶醉、令人瘋狂、令人激動的一面,也撇開了愛錢的心理不談。馬克思說,金錢是“人情的離心力”,就是指這一方面而言。
            關(guān)于金錢的本質(zhì)、作用和功過,從古到今,人們已經(jīng)留下了無數(shù)精辟深刻的格言和妙語。我們常會看到,人們?yōu)殄X而興奮,努力賺錢,用財富的畫面挑逗自己。 金錢對世界的秩序以及我們的生活產(chǎn)生的影響是巨大的、廣泛的,這種影響有時是潛在的,我們往往意識不到它的作用如此巨大,然而奇妙的是:它完全是人類自己 創(chuàng)造的。致富的驅(qū)動力并不是起源于生物學上的需要,動物生活中也找不到任何相同的現(xiàn)象。它不能順應(yīng)基本的目標,不能滿足根本的需求-的確,“致富”的定義 就是獲得超過自己需要的東西。然而這個看起來漫無目標的驅(qū)動力卻是人類最強大的力量,人類為金錢而互相傷害,遠超過其他原因。

                附:一街東頭那個乞丐去摸彩票。中了五等獎,得款50元。甚喜!這個冬天好過了,他擁有棉襖、棉褲、和棉鞋了。街西頭那個乞丐也去摸彩票。中了一等獎,得款50萬元。狂喜! 

             首先大宴賓客,熱鬧三天,煞是風光,耗款3千元,小意思。然后買西服、配手機、穿金戴銀,容光煥發(fā),一掃窮氣。再次,買房子,滿街轉(zhuǎn)悠,要帶車庫 的。第四,就是買車了。“夏利”太便宜,“奔馳”太貴,還是“桑塔納”吧!第五……第六……第七……過年的時候,街東頭那個乞丐還在到處晃悠,穿著那50 元買的“家當”;而街西頭那個乞丐卻在勞教所里,據(jù)說是因為賭博、嫖娼、吸毒、鬧事……擁有50元,街東頭的乞丐不再受凍,自得其樂;擁有50萬元,街西 頭乞丐成了個大富翁,卻也把自己送上了死路。不懂得善用錢財?shù)娜耍€是沒錢點才安全。

                十三、奧卡姆剃刀定律

                12世紀,英國奧卡姆的威廉主張唯名論,只承認確實存在的東西,認為那些空洞無物的普遍性概念都是無用的累贅,應(yīng)當被無情地“剃除”。他主張“如無必要, 勿增實體”。這就是常說的“奧卡姆剃刀”。這把剃刀曾使很多人感到威脅,被認為是異端邪說,威廉本人也因此受到迫害。然而,并未損害這把刀的鋒利,相反, 經(jīng)過數(shù)百年的歲月,奧卡姆剃刀已被歷史磨得越來越快,并早已超載原來狹窄的領(lǐng)域,而具有廣泛、豐富、深刻的意義。

              奧卡姆剃刀定律在企業(yè)管理中可進一步演化為簡單與復雜定律:把事情變復雜很簡單,把事情變簡單很復雜。這個定律要求,我們在處理事情時,要把握事情的主要實質(zhì),把握主流,解決最根本的問題,尤其要順應(yīng)自然,不要把事情人為地復雜化,這樣才能把事情處理好。

                美國政治學家威爾遜和犯罪學家凱林經(jīng)過觀察提出了“破窗理論”。

              如果有人打壞了一棟建筑上的一塊玻璃,又沒有及時修復,別人就可能受到某些暗示性的縱容,去打碎更多的玻璃。久而久之,這些窗戶就給人造成一種無序的感覺,在這種麻木不仁的氛圍中,犯罪就會滋生、蔓延。

              “破窗理論”更多的是從犯罪的心理去思考問題,但不管把“破窗理論”用在什么領(lǐng)域,角度不同,道理卻相似:環(huán)境具有強烈的暗示性和誘導性,必須及時修好“第一扇被打碎玻璃的窗戶”。

              推而廣之,從人與環(huán)境的關(guān)系這個角度去看,我們周圍生活中所發(fā)生的許多事情,不正是環(huán)境暗示和誘導作用的結(jié)果嗎?

              比如,在窗明幾凈、環(huán)境優(yōu)雅的場所,沒有人會大聲喧嘩,或“噗”地吐出一口痰來;相反,如果環(huán)境臟亂不堪,倒是時常可以看見吐痰、便溺、打鬧、互罵等不文明的舉止。

              又比如,在公交車站,如果大家都井然有序地排隊上車,又有多少人會不顧眾人的文明舉動和鄙夷眼光而貿(mào)然插隊?與這相反,車輛尚未停穩(wěn),猴急的人 們你推我擁,爭先恐后,后來的人如果想排隊上車,恐怕也沒有耐心了。因此,環(huán)境好,不文明之舉也會有所收斂;環(huán)境不好,文明的舉動也會受到影響。人是環(huán)境 的產(chǎn)物,同樣,人的行為也是環(huán)境的一部分,兩者之間是一種互動的關(guān)系。

              在公共場合,如果每個人都舉止優(yōu)雅、談吐文明、遵守公德,往往能夠營造出文明而富有教養(yǎng)的氛圍。千萬不要因為我們個人的粗魯、野蠻和低俗行為而形成“破窗效應(yīng)”,進而給公共場所帶來無序和失去規(guī)范的感覺。

              從這個意義上說,我們平時一直強調(diào)的“從我做起,從身邊做起”,就不僅僅是一個空洞的口號,它決定了我們自身的一言一行對環(huán)境造成什么樣的影響。

            帕金森定律

              英國著名歷史學家諾斯古德·帕金森通過長期調(diào)查研究,寫出一本名叫《帕金森定律》的書。他在書中闡述了機構(gòu)人員膨脹的原因及后果:一個不稱職的 官員,可能有三條出路,第一是申請退職,把位子讓給能干的人;第二是讓一位能干的人來協(xié)助自己工作;第三是任用兩個水平比自己更低的人當助手。這第一條路 是萬萬走不得的,因為那樣會喪失許多權(quán)利;第二條路也不能走,因為那個能干的人會成為自己的對手;看來只有第三條路最適宜。于是,兩個平庸的助手分擔了他 的工作,他自己則高高在上發(fā)號施令,他們不會對自己的權(quán)利構(gòu)成威脅。兩個助手既然無能,他們就上行下效,再為自己找兩個更加無能的助手。如此類推,就形成 了一個機構(gòu)臃腫,人浮于事,相互扯皮,效率低下的領(lǐng)導體系。

              苛希納定律

              西方管理學中有一條著名的苛希納定律:如果實際管理人員比最佳人數(shù)多兩倍,工作時間就要多兩倍,工作成本就要多4倍;如果實際管理人員比最佳人員多3倍,工作時間就要多3倍,工作成本就要多6倍。

              250定律

              美國著名推銷員拉德在商戰(zhàn)中總結(jié)出了“250定律”。他認為每一位顧客身后,大體有250名親朋好友。如果您贏得了一位顧客的好感,就意味著贏 得了250個人的好感;反之,如果你得罪了一名顧客,也就意味著得罪了250名顧客。這一定律有力地論證了“顧客就是上帝”的真諦。由此,我們可以得到如 下啟示:必須認真對待身邊的每一個人,因為每一個人的身后,都有一個相對穩(wěn)定的、數(shù)量不小的群體。善待一個人,就像撥亮一盞燈,照亮一大片。

              達維多定律

              達維多定律是以英特爾公司副總裁達維多的名字命名的。他認為,一個企業(yè)要想在市場上總是占據(jù)主導地位,那么就要做到第一個開發(fā)出新產(chǎn)品,又第一 個淘汰自己的老產(chǎn)品。這一定律的基點是著眼于市場開發(fā)和利益分割的成效。因為人們在市場競爭中無時無刻不在搶占先機,只有先入市場才能更容易獲取較大的份 額和較高的利潤。

              木桶定律

            一個有許多塊長短不同的木板箍成的木桶,決定其容量大小的并非其中最長的那塊木板,而是其中最短的那塊木板。同樣,在一個企業(yè)的營銷過程中,必然存在著許多相關(guān)的環(huán)節(jié),只有找出制約企業(yè)經(jīng)濟效益提高的某一關(guān)鍵環(huán)節(jié),把這一個矛盾解決了,其它矛盾就可以迎刃而解了。

            a、領(lǐng)導

            太長了!先看到這里去看看是誰發(fā)的這么火的帖子~~~

            一、 素養(yǎng)

            藍斯登原則

            在你往上爬的時候,一定要保持梯子的整潔,否則你下來時可能會滑倒。
            提出者:美國管理學家藍斯登
            點評:進退有度,才不至進退維谷;寵辱皆忘,方可以寵辱不驚。

            盧維斯定理

            謙虛不是把自己想得很糟,而是完全不想自己。
            提出者:美國心理學家h·盧維斯
            點評:如果把自己想得太好,就很容易將別人想得很糟。

            托利得定理

            測驗一個人的智力是否屬于上乘,只看腦子里能否同時容納兩種相反的思想,而無礙于其處世行事。
            提出者:法國社會心理學家h·m·托利得
            點評:思可相反,得須相成。

            二、統(tǒng)御

            刺猬理論

            刺猬在天冷時彼此靠攏取暖,但保持一定距離,以免互相刺傷。
            點評:保持親密的重要方法,乃是保持適當?shù)木嚯x。

            鰷魚效應(yīng)

            鰷魚因個體弱小而常常群居,并以強健者為自然首領(lǐng)。將一只稍強的鰷魚腦后控制行為的部分割除后,此魚便失去自制力,行動也發(fā)生紊亂,但其他鰷魚卻仍像從前一樣盲目追隨。
            提出者:德國動物學家霍斯特
            點評:1、下屬的悲劇總是領(lǐng)導一手造成的。2、下屬覺得最沒勁的事,是他們跟著一位最差勁的領(lǐng)導。

            雷鮑夫法則

            在你著手建立合作和信任時要牢記我們語言中:
            1、最重要的八個字是:我承認我犯過錯誤
            2、最重要的七個字是:你干了一件好事
            3、最重要的六個字是:你的看法如何
            4、最重要的五個字是:咱們一起干
            5、最重要的三個字是:謝謝您
            6、最重要的兩個字是:咱們
            提出者:美國管理學家雷鮑夫
            點評:1、最重要的四個字是:不妨試試;2、最重要的一個字是:您

            洛伯定理

            對于一個經(jīng)理人來說,最要緊的不是你在場時的情況,而是你不在場時發(fā)生了什么。
            提出者:美國管理學家r·洛伯
            點評:如果只想讓下屬聽你的,那么當你不在身邊時他們就不知道應(yīng)該聽誰的了。

            三、溝通

            斯坦納定理

            在哪里說得愈少,在哪里聽到的就愈多。
            提出者:美國心理學家s·t·斯坦納
            點評:只有很好聽取別人的,才能更好說出自己的。

            費斯諾定理

            人有兩只耳朵卻只有一張嘴巴,這意味著人應(yīng)該多聽少講。
            提出者:英國聯(lián)合航空公司總裁兼總經(jīng)理l·費斯諾
            點評:說得過多了,說的就會成為做的障礙。

            牢騷效應(yīng)

            凡是公司中有對工作發(fā)牢騷的人,那家公司或老板一定比沒有這種人或有這種人而把牢騷埋在肚子里的公司要成功得多。
            提出者:美國密歇根大學社會研究院
            點評:1、牢騷是改變不合理現(xiàn)狀的催化劑。2、牢騷雖不總是正確的,但認真對待牢騷卻總是正確的。

            避雷針效應(yīng)

            在高大建筑物頂端安裝一個金屬棒,用金屬線與埋在地下的一塊金屬板連接起來,利用金屬棒的尖端放電,使云層所帶的電和地上的電逐漸中和,從而保護建筑物等避免雷擊。
            點評:善疏則通,能導必安

            四、協(xié)調(diào)

            氨基酸組合效應(yīng)

            組成人體蛋白的八種氨基酸,只要有一種含量不足,其他七種就無法合成蛋白質(zhì)。
            點評:當缺一不可時,"一"就是一切。

            米格-25效應(yīng)

            前蘇聯(lián)研制的米格-25噴氣式戰(zhàn)斗機的許多零部件與美國的相比都落后,但因設(shè)計者考慮了整體性能,故能在升降、速度、應(yīng)急反應(yīng)等方面成為當時世界一流。
            點評:所謂最佳整體,乃是個體的最佳組合。

            磨合效應(yīng)

            新組裝的機器,通過一定時期的使用,把磨擦面上的加工痕跡磨光而變得更加密合。
            點評:要想達到完整的契合,須雙方都作出必要的割舍。

            五、指導

            波特定理

            當遭受許多批評時,下級往往只記住開頭的一些,其余就不聽了,因為他們忙于思索論據(jù)來反駁開頭的批評。
            提出者:英國行為科學家l·w·波特
            點評:總盯著下屬的失誤,是一個領(lǐng)導者的最大失誤。

            藍斯登定律

            跟一位朋友一起工作,遠較在"父親"之下工作有趣得多。
            提出者:美國管理學家藍斯登
            點評:可敬不可親,終難敬;有權(quán)沒有威,常失權(quán)。

            吉爾伯特法則

            工作危機最確鑿的信號,是沒有人跟你說該怎樣作。
            提出者:英國人力培訓專家b·吉爾伯特
            點評:真正危險的事,是沒人跟你談危險。

            權(quán)威暗示效應(yīng)

            一化學家稱,他將測驗一瓶臭氣的傳播速度,他打開瓶蓋15秒后,前排學生即舉手,稱自己聞到臭氣,而后排的人則陸續(xù)舉手,紛紛稱自己也已聞到,其實瓶中什么也沒有。
            點評:迷信則輕信,盲目必盲從。

            沒走過的路。2、特色不特,優(yōu)勢無優(yōu)。

            古特雷定理

            每一處出口都是另一處的入口。
            提出者:美國管理學家W·古特雷
            點評:上一個目標是下一個目標的基礎(chǔ),下一個目標是上一個目標的延續(xù)。

            十四、計劃

            列文定理

            那些猶豫著遲遲不能作出計劃的人,通常是因為對自己的能力沒有把握。
            提出者:法國管理學家P·列文
            點評:如果沒有能力去籌劃,就只有時間去后悔了。

            弗洛斯特法則

            在筑墻之前應(yīng)該知道把什么圈出去,把什么圈進來。
            提出者:美國思想家W·P·弗洛斯特
            點評:開始就明確了界限,最終就不會作出超越界限的事來。

            十五、參謀

            波克定理

            只有在爭辯中,才可能誕生最好的主意和最好的決定。
            提出者:美國莊臣公司總經(jīng)理詹姆士·波克
            點評:無磨擦便無磨合,有爭論才有高論。

            韋奇定理

            即使你已有了主見,但如果有十個朋友看法和你相反,你就很難不動搖。
            提出者:美國洛杉磯加州大學經(jīng)濟學家伊渥·韋奇
            點評:1、未聽之時不應(yīng)有成見,既聽之后不可無主見。2、不怕開始眾說紛紜,只怕最后莫衷一是。

            十六、決策

            福克蘭定律

            沒有必要作出決定時,就有必要不作決定。
            提出者:法國管理學家D·L·福克蘭
            點評:當不知如何行動時,最好的行動就是不采取任何行動。

            王安論斷

            猶豫不決固然可以免去一些作錯事的機會,但也失去了成功的機遇。
            提出者:美籍華裔企業(yè)家王安博士
            點評:寡斷能使好事由好變壞,果斷可將危機轉(zhuǎn)危為安。

            十七、執(zhí)行

            格瑞斯特定理

            杰出的策略必須加上杰出的執(zhí)行才能奏效。
            提出者:美國企業(yè)家H·格瑞斯特
            點評:好事干實更好,實事辦好愈實。

            吉德林法則

            把難題清清楚楚地寫出來,便已經(jīng)解決了一半。
            提出者:美國通用汽車公司管理顧問查爾斯·吉德林
            點評:雜亂無章的思維,不可能產(chǎn)生有條有理的行動

            d、調(diào)控

            十八、信息

            沃爾森法則

            把信息和情報放在第一位,金錢就會滾滾而來。
            提出者:美國企業(yè)家s·m·沃爾森
            點評:你能得到多少,往往取決于你能知道多少。

            塔馬拉效應(yīng)

            塔馬拉是捷克雷達專家弗·佩赫發(fā)明的一種雷達,它與其他雷達的最大不同是不發(fā)射信號而只接收信號,故不會被敵方反雷達裝置發(fā)現(xiàn)。
            點評:善藏者人不可知,能知者人無以藏。

            十九、監(jiān)督

            小池定理

            越是沉醉,就越是抓住眼前的東西不放。
            提出者:日本管理學家小池敬
            點評:自我陶醉不易清醒,自以為是不喜批評。

            赫勒法則

            當人們知道自己的工作成績有人檢查的時候會加倍努力。
            提出者:英國管理學家h·赫勒
            點評:只有在相互信任的情況下,監(jiān)督才會成為動力。

            二十、控制

            橫山法則

            最有效并持續(xù)不斷的控制不是強制,而是觸發(fā)個人內(nèi)在的自發(fā)控制。
            提出者:日本社會學家橫山寧夫
            點評:有自覺性才有積極性,無自決權(quán)便無主動權(quán)。

            蝴蝶效應(yīng)

            "紊亂學"研究者稱,南半球某地的一只蝴蝶偶爾扇動一下翅膀所引起的微弱氣流,幾星期后可變成席卷北半球某地的一場龍卷風。他們將這種由一個極小起因,經(jīng)過一定的時間,在其他因素的參與作用下,發(fā)展成極為巨大和復雜后果的現(xiàn)象稱為"蝴蝶效應(yīng)"。
            點評:善終者慎始,謹小者慎微。

            阿什法則

            承認問題是解決問題的第一步。
            提出者:美國企業(yè)家m·k·阿什
            點評:你愈是躲著問題,問題愈會揪住你不放。

            二十一、法紀

            洛克忠告

            規(guī)定應(yīng)該少定,一旦定下之后,便得嚴格遵守。
            提出者:英國教育家洛克
            點評:簡則易循,嚴則必行。

            熱爐法則

            當人用手去碰燒熱的火爐時,就會受到"燙"的懲罰,其有以下三個特點:即時性、預警性、平等性。
            點評:罪與罰能相符,法與治可相期。

            二十二、改革

            柯美雅定律

            世上沒有十全十美的東西,所以任何東西都有改革的余地。
            提出者:美國社會心理學家m·r·柯美雅
            點評:不拘于常規(guī),才能激發(fā)出創(chuàng)造力。

            達維多夫定律

            沒有創(chuàng)新精神的人永遠也只能是一個執(zhí)行者。
            提出者:前蘇聯(lián)心理學家達維多夫
            點評:只有敢為人先的人,才最有資格成為真正的先驅(qū)者。

            自吃幼崽效應(yīng)

            美國硅谷企業(yè)競爭十分激烈,以至于各公司都積極尋找自己的致命弱點,所有公司共同的生存之道是:拿出更好看產(chǎn)品來擊敗自己的原有產(chǎn)品。有人將這種行為戲稱為"自吃幼崽"。
            點評:1、自己不逼自己,別人遲早會逼你。2、敢于對過去告一個段落,才有信心掀開新的一章。

            二十三、創(chuàng)新

            舍恩定理

            新思想只有落到真正相信它,對它著迷的人手里才能開花結(jié)果。
            提出者:美國麻省理工學院教授舍恩
            點評:只有信之不疑,才能持之以恒。

            吉寧定理

            真正的錯誤是害怕犯錯誤。
            提出者:美國管理學家h·吉寧
            點評:不怕錯誤的人,錯誤往往也離他最遠。

            卡貝定理

            放棄是創(chuàng)新的鑰匙。
            提出者:美國電話電報公司前總經(jīng)理卡貝
            點評:在未學會放棄之前,你將很難懂得什么是爭取。


            史密斯原則

            如果你不能戰(zhàn)勝他們,你就加入到他們之中去。
            提出者:美國通用汽車公司前董事長r·史密斯
            點評:競爭使人進步最快,合作讓人得到最多。

            二十六、營銷

            阿爾巴德定理一個企業(yè)經(jīng)營成功與否,全靠對顧客的要求了解到什么程度。
            提出者:匈牙利全面質(zhì)量管理國際有限公司顧問波爾加·韋雷什·阿爾巴德
            點評:看到了別人的需要,你就成功了一半;滿足了別人的需求,你就成功了全部。

            冰淇淋哲學

            賣冰淇淋必須從冬天開始,因為冬天顧客少,會逼迫你降低成本,改善服務(wù)。如果能在冬天的逆境中生存,就再也不會害怕夏天的競爭。
            提出者:臺灣著名企業(yè)家王永慶
            點評:逆境不錯,順境更好。

            二十七、廣告

            布里特定理

            商品不作廣告,就像姑娘在暗處向小伙子遞送秋波,脈脈此情只有她自己知道。
            提出者:英國廣告學專家s·布里特
            點評:要推而廣之,先廣而告之。

            伯內(nèi)特定理

            只有占領(lǐng)頭腦,才會占有市場。
            提出者:美國廣告專家利奧·伯內(nèi)特
            點評:膾炙人口才會耐人尋味,深得人心方可引人入勝。

            拉圖爾定律

            一個好品名可能無助于劣質(zhì)產(chǎn)品的銷售,但是一個壞品名則會使好產(chǎn)品滯銷。
            提出者:法國諾門公司德國分公司負責人蘇珊·拉圖爾
            點評:取名的藝術(shù),亦是取得成功的藝術(shù)。

            赫斯定律

            廣告超過12個字,讀者的記憶力要降低50%。
            提出者:澳大利亞廣告家h·赫斯
            點評:忘卻即等于拋棄。

            二十八、公關(guān)

            瑪麗法則

            假如還沒有破,就不要去修它,免得弄巧成拙。
            提出者:美國著名企業(yè)家瑪麗·凱·阿什
            點評:弄巧之所以成拙,往往是因為本來就無巧可弄。

            弗里施定理

            沒有滿意的工作人員,就沒有滿意的顧客。
            提出者:德國慕尼黑企業(yè)咨詢顧問弗里施
            點評:協(xié)調(diào)內(nèi)外關(guān)系,從協(xié)調(diào)內(nèi)部關(guān)系開始。

            反哺效應(yīng)

            動物學家將某些動物長大后把覓到的食物給予其父母的行為稱為反哺。
            點評:給別人好處的人,往往也是得到好處最多的人。

            史崔維茲定理

            如果你為獲得好處而幫助他人,就不算幫助他人。
            提出者:美國社會心理學家g·史崔維茲
            點評:動機不純,行為失真。

            二十九、談判

            奧狄思法則

            在每一次談判中,你都應(yīng)準備向?qū)Ψ阶鞒鲎尣健?br>提出者:美國談判專家j·s·奧狄思
            點評:爭,丈不足;讓,寸有余。

            居家效應(yīng)

            一個人在家里或自己最熟悉的環(huán)境中,言談舉止表現(xiàn)得最為自信和從容。
            點評:沒有實力墊底,自信永遠是蒼白的。

            尼倫伯格原則

            一場圓滿的、成功的談判,每一方都應(yīng)是勝利者。
            提出者:美國著名談判學家尼倫伯格
            點評:總想自己得勢,必然勢不兩立。

            比林定律

            一生中的麻煩有一半是由于太快說"是",太慢說"不"造成的。
            提出者:美國幽默作家比林
            點評:1、沒有否決權(quán),發(fā)言權(quán)也很容易被剝奪。2、對不該讓步的事不讓步,別人反而更容易給你讓步。

            三十、交往

            克林納德法則

            與人相處得好壞,在很大程度上取決于我們用什么方式與人打交道。
            提出者:美國人際關(guān)系學家h·h·克林納德
            點評:交之有道,能打好交道;來而無往,難有常來往。

            忌諱效應(yīng)

            因風俗習慣或個人理由等,對某些言語或舉動有所顧忌,積久成為禁忌。
            點評:知道別人不喜歡什么,比知道別人喜歡什么更重要。

            弗里德曼定律

            當一個人的需要可以滿足另一個人的需要時,兩人就趨于互相喜歡。
            提出者:美國心理學家n·w·弗里德曼
            點評:有利益與利益的相互補充,才會有需要與需要的相互滿足。

            三十一、成果

            基利定理

            容忍失敗,這是人們可以學習并加以運用的極為積極的東西。
            提出者:美國多布林咨詢公司集團總經(jīng)理拉里·基利
            點評:1、成功者之所以成功,只不過是他不被失敗左右而已。2、不許失敗,無異于不許成功。

            沸騰效應(yīng)

            水溫升到99度,還不是開水,其價值有限;若再添一把火,在99度的基礎(chǔ)上再升高1度,就會使水沸騰,并產(chǎn)生大量水蒸氣來開動機器,從而獲得巨大的經(jīng)濟效益。
            點評:只差一點點,往往是導致最大差別的關(guān)鍵。

            王永慶法則

            節(jié)省一元錢等于凈賺一元錢。
            提出者:臺灣企業(yè)界"精神領(lǐng)袖"臺塑總裁王永慶
            點評:賺錢要依賴別人,節(jié)省只取決自己。

            posted @ 2009-03-17 19:48 Condor 閱讀(368) | 評論 (0)編輯 收藏

            算法的力量
            算法是計算機科學領(lǐng)域最重要的基石之一,但卻受到了國內(nèi)一些程序員的冷落。許多學生看到一些公司在招聘時要求的編程語言五花八門,就產(chǎn)生了一種誤解,認為 學計算機就是學各種編程語言,或者認為,學習最新的語言、技術(shù)、標準就是最好的鋪路方法。其實,大家被這些公司誤導了。編程語言雖然該學,但是學習計算機 算法和理論更重要,因為計算機語言和開發(fā)平臺日新月異,但萬變不離其宗的是那些算法和理論,例如數(shù)據(jù)結(jié)構(gòu)、算法、編譯原理、計算機體系結(jié)構(gòu)、關(guān)系型數(shù)據(jù)庫 原理等等。在“開復學生網(wǎng)”上,有位同學生動地把這些基礎(chǔ)課程比擬為“內(nèi)功”,把新的語言、技術(shù)、標準比擬為“外功”。整天趕時髦的人最后只懂得招式,沒 有功力,是不可能成為高手的。
            算法與我
            當我在1980年轉(zhuǎn)入計算機科學系時,還沒有多少人的專業(yè)方向是計算機科學。有許多其他系的人嘲笑我們說:“知道為什么只有你們系要加一個‘科學’,而沒 有‘物理科學系’或‘化學科學系’嗎?因為人家是真的科學,不需要畫蛇添足,而你們自己心虛,生怕不‘科學’,才這樣欲蓋彌彰。” 其實,這點他們徹底弄 錯了。真正學懂計算機的人(不只是“編程匠”)都對數(shù)學有相當?shù)脑煸劊饶苡每茖W家的嚴謹思維來求證,也能用工程師的務(wù)實手段來解決問題——而這種思維和 手段的最佳演繹就是“算法”。
            記得我讀博時寫的Othello對弈軟件獲得了世界冠軍。當時,得第二名的人認為我是靠僥幸才打贏他,不服氣地問我的程序平均每秒能搜索多少步棋,當他發(fā) 現(xiàn)我的軟件在搜索效率上比他快60多倍時,才徹底服輸。為什么在同樣的機器上,我可以多做60倍的工作呢?這是因為我用了一個最新的算法,能夠把一個指數(shù) 函數(shù)轉(zhuǎn)換成四個近似的表,只要用常數(shù)時間就可得到近似的答案。在這個例子中,是否用對算法才是能否贏得世界冠軍的關(guān)鍵。
            還記得1988年貝爾實驗室副總裁親自來訪問我的學校,目的就是為了想了解為什么他們的語音識別系統(tǒng)比我開發(fā)的慢幾十倍,而且,在擴大至大詞匯系統(tǒng)后,速 度差異更有幾百倍之多。他們雖然買了幾臺超級計算機,勉強讓系統(tǒng)跑了起來,但這么貴的計算資源讓他們的產(chǎn)品部門很反感,因為“昂貴”的技術(shù)是沒有應(yīng)用前景 的。在與他們探討的過程中,我驚訝地發(fā)現(xiàn)一個O(n*m)的動態(tài)規(guī)劃(dynamic programming)居然被他們做成了O(n*n*m)。更驚 訝的是,他們還為此發(fā)表了不少文章,甚至為自己的算法起了一個很特別的名字,并將算法提名到一個科學會議里,希望能得到大獎。當時,貝爾實驗室的研究員當 然絕頂聰明,但他們?nèi)际菍W數(shù)學、物理或電機出身,從未學過計算機科學或算法,才犯了這么基本的錯誤。我想那些人以后再也不會嘲笑學計算機科學的人了吧!
            網(wǎng)絡(luò)時代的算法
            有人也許會說:“今天計算機這么快,算法還重要嗎?”其實永遠不會有太快的計算機,因為我們總會想出新的應(yīng)用。雖然在摩爾定律的作用下,計算機的計算能力 每年都在飛快增長,價格也在不斷下降。可我們不要忘記,需要處理的信息量更是呈指數(shù)級的增長。現(xiàn)在每人每天都會創(chuàng)造出大量數(shù)據(jù)(照片,視頻,語音,文本等 等)。日益先進的記錄和存儲手段使我們每個人的信息量都在爆炸式的增長。互聯(lián)網(wǎng)的信息流量和日志容量也在飛快增長。在科學研究方面,隨著研究手段的進步, 數(shù)據(jù)量更是達到了前所未有的程度。無論是三維圖形、海量數(shù)據(jù)處理、機器學習、語音識別,都需要極大的計算量。在網(wǎng)絡(luò)時代,越來越多的挑戰(zhàn)需要靠卓越的算法 來解決。
            再舉另一個網(wǎng)絡(luò)時代的例子。在互聯(lián)網(wǎng)和手機搜索上,如果要找附近的咖啡店,那么搜索引擎該怎么處理這個請求呢?
            最簡單的辦法就是把整個城市的咖啡館都找出來,然后計算出它們的所在位置與你之間的距離,再進行排序,然后返回最近的結(jié)果。但該如何計算距離呢?圖論里有不少算法可以解決這個問題。
            這么做也許是最直觀的,但絕對不是最迅速的。如果一個城市只有為數(shù)不多的咖啡館,那這么做應(yīng)該沒什么問題,反正計算量不大。但如果一個城市里有很多咖啡館,又有很多用戶都需要類似的搜索,那么服務(wù)器所承受的壓力就大多了。在這種情況下,我們該怎樣優(yōu)化算法呢?
            首先,我們可以把整個城市的咖啡館做一次“預處理”。比如,把一個城市分成若干個“格子(grid)”,然后根據(jù)用戶所在的位置把他放到某一個格子里,只對格子里的咖啡館進行距離排序。
            問題又來了,如果格子大小一樣,那么絕大多數(shù)結(jié)果都可能出現(xiàn)在市中心的一個格子里,而郊區(qū)的格子里只有極少的結(jié)果。在這種情況下,我們應(yīng)該把市中心多分出 幾個格子。更進一步,格子應(yīng)該是一個“樹結(jié)構(gòu)”,最頂層是一個大格——整個城市,然后逐層下降,格子越來越小,這樣有利于用戶進行精確搜索——如果在最底 層的格子里搜索結(jié)果不多,用戶可以逐級上升,放大搜索范圍。
            上述算法對咖啡館的例子很實用,但是它具有通用性嗎?答案是否定的。把咖啡館抽象一下,它是一個“點”,如果要搜索一個“面”該怎么辦呢?比如,用戶想去 一個水庫玩,而一個水庫有好幾個入口,那么哪一個離用戶最近呢?這個時候,上述“樹結(jié)構(gòu)”就要改成“r-tree”,因為樹中間的每一個節(jié)點都是一個范 圍,一個有邊界的范圍(參考:http://www.cs.umd.edu/~hjs/rtrees/index.html)。
            通過這個小例子,我們看到,應(yīng)用程序的要求千變?nèi)f化,很多時候需要把一個復雜的問題分解成若干簡單的小問題,然后再選用合適的算法和數(shù)據(jù)結(jié)構(gòu)。
            并行算法:Google的核心優(yōu)勢
            上面的例子在Google里就要算是小case了!每天Google的網(wǎng)站要處理十億個以上的搜索,GMail要儲存幾千萬用戶的2G郵箱, Google Earth要讓數(shù)十萬用戶同時在整個地球上遨游,并將合適的圖片經(jīng)過互聯(lián)網(wǎng)提交給每個用戶。如果沒有好的算法,這些應(yīng)用都無法成為現(xiàn)實。
            在這些的應(yīng)用中,哪怕是最基本的問題都會給傳統(tǒng)的計算帶來很大的挑戰(zhàn)。例如,每天都有十億以上的用戶訪問Google的網(wǎng)站,使用Google的服務(wù),也 產(chǎn)生很多很多的日志(Log)。因為Log每分每秒都在飛速增加,我們必須有聰明的辦法來進行處理。我曾經(jīng)在面試中問過關(guān)于如何對log進行一些分析處理 的問題,有很多面試者的回答雖然在邏輯上正確,但在實際應(yīng)用中是幾乎不可行的。按照他們的算法,即便用上幾萬臺機器,我們的處理速度都跟不上數(shù)據(jù)產(chǎn)生的速 度。
            那么Google是如何解決這些問題的呢?
            首先,在網(wǎng)絡(luò)時代,就算有最好的算法,也要能在并行計算的環(huán)境下執(zhí)行。在Google的數(shù)據(jù)中心,我們使用的是超大的并行計算機。但傳統(tǒng)的并行算法運行 時,效率會在增加機器數(shù)量后迅速降低,也就是說,十臺機器如果有五倍的效果,增加到一千臺時也許就只有幾十倍的效果。這種事倍功半的代價是沒有哪家公司可 以負擔得起的。而且,在許多并行算法中,只要一個結(jié)點犯錯誤,所有計算都會前功盡棄。
            那么Google是如何開發(fā)出既有效率又能容錯的并行計算的呢?
            Google最資深的計算機科學家Jeff Dean認識到, Google 所需的絕大部分數(shù)據(jù)處理都可以歸結(jié)為一個簡單的并行算法: Map and Reduce(http://labs.google.com/papers/mapreduce.html)。 這個算法能夠在很多種 計算中達到相當高的效率,而且是可擴展的(也就是說,一千臺機器就算不能達到一千倍的效果,至少也可以達到幾百倍的效果)。Map and Reduce 的另外一大特色是它可以利用大批廉價的機器組成功能強大的server farm。最后,它的容錯性能異常出色,就算一個server farm里面的機 器down掉一半,整個farm依然能夠運行。正是因為這個天才的認識,才有了Map and Reduce算法。借助該算法,Google幾乎能無限地 增加計算量,與日新月異的互聯(lián)網(wǎng)應(yīng)用一同成長。
            算法并不局限于計算機和網(wǎng)絡(luò)
            舉一個計算機領(lǐng)域外的例子:在高能物理研究方面,很多實驗每秒鐘都產(chǎn)生幾個TB的數(shù)據(jù)量。但因為處理能力和存儲能力的不足,科學家不得不把絕大部分未經(jīng)處 理的數(shù)據(jù)丟棄掉。可大家要知道,新元素的信息很有可能就藏在我們來不及處理的數(shù)據(jù)里面。同樣的,在其他任何領(lǐng)域里,算法都可以改變?nèi)祟惖纳睢@缛祟惢?因的研究,就可能因為算法而發(fā)明新的醫(yī)療方式。在國家安全領(lǐng)域,有效的算法可能避免下一個911的發(fā)生。在氣象方面,算法可以更好地預測未來天災(zāi)的發(fā)生, 以拯救生命。
            所以,如果你把計算機的發(fā)展放到應(yīng)用和數(shù)據(jù)飛速增長的大環(huán)境下,你一定會發(fā)現(xiàn),算法的重要性不是在日益減小,而是在日益加強。
            給程序員的七個建議
            (1)練內(nèi)功。不要只花功夫?qū)W習各種流行的編程語言和工具,以及某些公司招聘廣告上要求的科目。要把數(shù)據(jù)結(jié)構(gòu)、算法、數(shù)據(jù)庫、操作系統(tǒng)原理、計算機體系結(jié) 構(gòu)、計算機網(wǎng)絡(luò),離散數(shù)學等基礎(chǔ)課程學好。大家不妨試試高德納所著The Art of Computer Programming里的題目,如果你能夠 解決其中的大部分題目,就說明你在算法方面有一定的功力了。
            (2)多實戰(zhàn)。通過編程的實戰(zhàn)積累經(jīng)驗、鞏固知識。很多中國大學畢業(yè)生缺乏編程和調(diào)試經(jīng)驗;學習C語言,考試過關(guān)就算學會了;課題項目中,只要程序能夠編 譯,運行,并且輸入輸出滿足要求就算了事。這些做法是不行的。寫程序的時候,大家必須多想想如何把程序?qū)懙酶泳珶挕⒏咝А⒏哔|(zhì)量。建議大家爭取在大學四 年中積累編寫十萬行代碼的經(jīng)驗。我們必須明白的是:好程序員是寫出來的,不是學出來的。
            (3)求實干。不要輕視任何實際工作,比如一些看似簡單的編碼或測試。要不懈追求對細節(jié)一絲不茍的實干作風與敬業(yè)精神。我發(fā)現(xiàn)不少程序員對于知識的掌握很 膚淺,不求甚解,沒有好奇心,不會刨根問底。比如,學會了C++,是否了解一個對象在編譯后,在匯編代碼中是如何被初始化的?這個對象的各個成員在內(nèi)存中 是如何存放的?當一個成員函數(shù)被調(diào)用時,編譯器在匯編代碼中加入了哪些額外的動作?虛函數(shù)的調(diào)用是如何實現(xiàn)的? 這些東西恐怕在編程語言或編譯原理中都沒 有詳細提到,只有通過踏實的實干才能真正掌握。
            (4)重視數(shù)學學習。數(shù)學是思維的體操,數(shù)學無處不在。學計算機至少要學習離散數(shù)學、概率論、布爾代數(shù)、集合論和數(shù)理邏輯。這些知識并不難,但是對你未來 的工作幫助會很大。 尤其當你對一些“數(shù)學密集型”的領(lǐng)域如視頻、圖像處理等有興趣時,這些知識將成為你手中的利器。
            (5)培養(yǎng)團隊精神,學會與人合作。今天的軟件工程早已經(jīng)不是一個人可以單獨操作的,而必須靠團隊合作才能成功。不懂得合作的人是不能成大器的。大家要多去尋找可以與人一起做項目的機會。
            (6)激勵創(chuàng)新意識,培養(yǎng)好奇心,不要死記硬背。沒有掌握某種算法技術(shù)的根本原理,就不會有應(yīng)變和創(chuàng)新的能力。想成為一位好程序員(其實從事任何一個行業(yè) 都是如此),重要的是要養(yǎng)成鉆研,好奇,創(chuàng)新,動手,合作的優(yōu)秀習慣,不滿足于填鴨,不滿足于考試交差,不滿足于表象。這不是學幾門課能夠一蹴而就的。
            (7)有策略地“打工”。在不影響學業(yè)的前提下,尋找真正有意義的暑期工作或兼職。去找一個重視技術(shù)的公司,在一個好的“老板”指導下完成真正會被用戶使 用的程序。不要急于去一個要你做“頭”而獨擋一面的地方,因為向別人學習才是你的目的。找工作也是一樣,不要只看待遇和職銜,要挑一個你能夠?qū)W習的環(huán)境, 一個愿意培養(yǎng)員工的企業(yè),一個重視你的專業(yè)的公司。最后,還要挑一個好老板。
            希望大家都能把握機會,養(yǎng)成好的學習習慣,把算法學精學透;希望大家都能有一個美好的未來!

            posted @ 2009-03-17 19:37 Condor 閱讀(282) | 評論 (0)編輯 收藏

            僅列出標題
            共10頁: 1 2 3 4 5 6 7 8 9 Last 
            一本色道久久HEZYO无码| 婷婷久久五月天| 秋霞久久国产精品电影院| 国产精品热久久无码av| 久久伊人亚洲AV无码网站| 亚洲精品乱码久久久久久蜜桃图片| 日韩人妻无码精品久久免费一| 国内精品伊人久久久久| 午夜精品久久久久久| 69久久夜色精品国产69| 一本色道久久88综合日韩精品 | 精品久久人人妻人人做精品 | 久久综合狠狠色综合伊人| 青草久久久国产线免观| 波多野结衣中文字幕久久| 亚洲国产精品无码久久九九| 国内精品伊人久久久久av一坑| 久久艹国产| 国产一区二区三区久久| 国产精品久久久久免费a∨| 一本久久a久久精品综合夜夜| 久久国产精品无| 久久国产成人午夜aⅴ影院 | 久久香综合精品久久伊人| 精品久久人人做人人爽综合| 国产精品一久久香蕉国产线看| 亚洲综合久久久| 精品免费久久久久国产一区 | 欧美性大战久久久久久| 一级做a爰片久久毛片16| 久久久久亚洲AV无码麻豆| 人妻无码αv中文字幕久久琪琪布| 国产激情久久久久影院老熟女| 99精品久久精品| 国产91色综合久久免费| 久久精品九九亚洲精品| 久久综合香蕉国产蜜臀AV| 午夜天堂av天堂久久久| 久久久久国产精品人妻| 77777亚洲午夜久久多喷| 亚洲国产精品无码久久一区二区 |