2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

崗位決定視角...

 FERRY 2006-01-16

崗位決定視角

Eric Liu 200626

從正式離開雜志社到新公司上班也已經(jīng)1周多的時間,加上春節(jié)這個空隙的折騰,,離開媒體也接近一個月,在此之前,很少去考慮過有關(guān)不同崗位之間考慮問題的視角,在雜志社一年的時間也沒有真正靜心下來去寫一些技術(shù)架構(gòu)或者管理方面的文章,我想更多的是因為沉淀不夠的原因。

有些主題注定會找罵,其實理由很簡單,因為無知和觸碰一些本來不應(yīng)該屬于自己的視角。所以寫本文的開始我就做好了被打擊的準(zhǔn)備。從2002年大學(xué)畢業(yè)到現(xiàn)在也快接近上年,加上大學(xué)畢業(yè)之前2年多的工作經(jīng)驗,在這個浮躁的IT也算不老不少的人了。從CoderTechnical Leader再到Architect到《MSDN開發(fā)精選》的Editor,再到如今另外一個方向的工作,雖然層次始終不高,但是依舊覺得比較幸運,因為嘗試了大多人希望的職位。

如果將我自己從事過的崗位簡單的歸納,應(yīng)該可以描述成下面的崗位

Coder:完成Technical Leader指定的模塊功能,擁有良好的編碼風(fēng)格和一些細節(jié)實現(xiàn)技巧

Technical Leader:根據(jù)項目經(jīng)理或者產(chǎn)品經(jīng)理(國內(nèi)大多比較少區(qū)分這兩個角色)指定的任務(wù),協(xié)助Architect或者Analyst實現(xiàn)系統(tǒng)設(shè)計,指導(dǎo)和監(jiān)督Coder完成開發(fā)任務(wù),同時承擔(dān)一些技術(shù)難題的解決。

Architect:從技術(shù)和業(yè)務(wù)的角度對應(yīng)用系統(tǒng)或者產(chǎn)品進行抽象,進而設(shè)計一個適用于解決方案的模式。簡要地說是抽象和分離軟件產(chǎn)品中的共性問題,提供一個解決這些共性問題的方法論(不是某一個方法)。從這個角度來講,系統(tǒng)架構(gòu)師可以分成兩種類型:一是提供解決方案的技術(shù)實現(xiàn),一個是提供業(yè)務(wù)的抽象(這是我個人的理解)。與此同時,可擴展性、可伸縮性、安全性、性能等等這些東西成為Architect關(guān)注的重點,他們不再具體關(guān)注某一個業(yè)務(wù)功能的具體代碼實現(xiàn),而是在一個更高層次上考慮系統(tǒng)的總體結(jié)構(gòu),諸如子系統(tǒng)劃分、組件分布、消息通信等等方面的東西。

Editor:恰當(dāng)?shù)恼f是技術(shù)編輯,而不是純粹意義的編輯,所以它的第一要素是技術(shù)性,而非文字。這里我要感謝我在雜志社的搭檔孟巖先生,在短短的一年時間內(nèi)他教會了我許多東西,也知道了許多事情可以從Non-Technical ViewPoint去看待。很多大學(xué)同學(xué)和朋友問過我做編輯和作程序有什么區(qū)別,我想最大的不同依舊是視角,作為一個合格的技術(shù)編輯,首先要求有比較扎實的技術(shù)功底,然后有開拓的視角和接納新知識的能力,最后才是其文字表達功底(就我個人認(rèn)為,在這幾個方面孟巖和熊節(jié)先生做得非常出色,所以也就理所當(dāng)然地稱為國內(nèi)頂尖級的技術(shù)編輯)。作為一個編輯最重要的使命就是傳播,那么如何在這種信息爆炸的時代將最有用的信息通過最有效的途徑傳播給需要接受新知識的人,除了傳統(tǒng)的平面媒體和大家所熟知的論壇,Blog是一個非常有效的形式,它能夠讓讀者和身份為技術(shù)編輯的Bloger在第一時間得到最好的交流。所以技術(shù)編輯應(yīng)該更多的是能夠?qū)⒆约簩τ诩夹g(shù)的理解和對于說了解的東西盡快地讓更多人了解,雖然很多IT雜志社比較傾向編輯不用寫稿,而是掌握大量的作者資源,然后有效地利用這些作者資源。對,本身沒有錯,但是在IT卻不是行的很通,所有做技術(shù)的都佩服Orielly的技術(shù)編輯,原因無它,因為那幫人拋開編輯的生活,每個都是技術(shù)上的大佬。獨立技術(shù)評論或者產(chǎn)業(yè)評論在許多時候成為一個技術(shù)編輯可以和他人溝通的基本條件,“英雄惺惺相惜”的局面在開發(fā)人員中出現(xiàn)的概率遠遠高于其他人群。因此在這個崗位上對于技術(shù)和文字的要求是并行的,或者前者重一點,只是相對于Coder,關(guān)注的層次和方向已經(jīng)截然不同。也正是因為如此,在雜志社一年的時間雖然給朋友的公司做過一些技術(shù)咨詢,卻發(fā)現(xiàn)自己寫代碼的能力正在退化(寫代碼明顯比較慢)。

Manager:請記住永遠不要用Business-Card上面的Title去看待一個人的崗位或者說職位,這點在外企尤為明顯,做商務(wù)或者市場的沒有一個不是經(jīng)理:),不過仔細的看他們英文的Title就能夠比較準(zhǔn)確的反映出這個人在公司的崗位。在我經(jīng)歷中,名片上很早就出現(xiàn)經(jīng)理的字樣,但是客觀的說,那只是公司的商業(yè)因素決定的,大多時候所謂的項目經(jīng)理等等是等同于Team Leader,是一個工作過程的臨時角色,而不是在公司行政體系中的崗位劃分。在做Coder的時候,我更多的是關(guān)心某個API的使用,能夠?qū)懗鲆欢钨p心悅目的代碼是一件非常有成就感的事情,在做技術(shù)負責(zé)人的時候依舊關(guān)心的是技術(shù),這個時候需要考慮針對人的分工,根據(jù)每個人不同的技術(shù)特點進行分工,然后再上級領(lǐng)導(dǎo)指定的時間內(nèi)完成工作。而Architect從大多人來說,應(yīng)該是相對不錯的崗位,它更多的是關(guān)心技術(shù)或者特定領(lǐng)域行業(yè)業(yè)務(wù)的抽象,我們可以簡單的認(rèn)為ArchitectConsultant的工作和比較接近的,不同的是Architect給公司干,Consultant給別的公司干,當(dāng)然了,我這里提及的是技術(shù)顧問,而非大多咨詢公司的泛意義上的顧問。Architect總體上來說是一個和事情打交道居多的職位,是Non-Leadership,因為沒有涉及到太多人的因素。

當(dāng)我第一天上班,家里的老大就提醒我需要注意一個Technical LeaderManager是兩個差距比較大的角色,前者更多的是對事情而言的,而后者更多的是針對人。比如團隊建設(shè),人才組織結(jié)構(gòu),員工培養(yǎng)計劃,激勵和考評機制和資源調(diào)度安排等等。在此之前,對于工作大多考慮的是如何爭取資源,而作為一個管理人員,更多的是考慮利用將有限資源最大化(嘿嘿,資本家和資本家走狗的本質(zhì))。

 

我不是職業(yè)IT經(jīng)理,也沒有太多的管理經(jīng)驗,雖然之前做過或多或少的管理工作,但是和一個崗位本身真正所從事的事情差距甚遠,因為如下只是我個人的一些理解,也請各位看官原諒我的無知和賣弄。一個小型公司的開發(fā)部門負責(zé)人需要做以下事情(至少吧,雖然還有其他許多事情)

1)  規(guī)劃化軟件開發(fā)過程

我不是一個軟件工程專家,甚至對于目前的大多軟件工程方法學(xué)不是特別感冒,但是我從來不去拒絕規(guī)范化的軟件開發(fā)過程,就如許多人問過我是否要采用CMM/CMMI或者RUP進行軟件開發(fā)時,我首先會去確認(rèn)他們的團隊規(guī)模,通常來說,不超過15個人的開發(fā)團隊采用這些軟件工程的方法學(xué)并不能夠帶來明顯的好處,因為CMM/CMMI或者RUP對于角色的定義太明晰,雖然提供了定制的可能,但是對于國內(nèi)大多的軟件公司而言,15個人的開發(fā)團隊?wèi)?yīng)對的不僅僅是一個項目,更多時候被分離成了3個孤立的團隊,這個時候5個人的開發(fā)團隊在項目實施過程中很多角色注定是重合的,相信大家應(yīng)該知道太多角色重合的結(jié)果是帶來崗位職責(zé)的沖突,對于大多數(shù)人而言,處理好這些沖突不是那么容易的。

        里程碑和迭代總是被忽視,因為大多小公司的開發(fā)人員沒有經(jīng)歷過相對系統(tǒng)的培訓(xùn),也就不是特別理解軟件開發(fā)過程,他們更多的是按照上級分配的任務(wù)去完成工作,稍有經(jīng)驗的開發(fā)人員都會知道,這些東西的欠缺是非常致命的。最直接的結(jié)果就是無法控制項目進度和成本核算,更多的是依賴于個人的感覺“大約、估計、差不多”在現(xiàn)有資源的情況下完成指定工作。于是加班就成為了家常便飯,大多是為了在指定的時間之前完成任務(wù)。

        通過一些輔助工具能夠能夠幫助小型開發(fā)團隊明顯的提高工作效率和里程碑的界定。比如建模工具Visio,Rational XDE,數(shù)據(jù)庫建模工具Power Designer,代代碼生成工具如CodeSmith,文檔和測試工具(NDoc,NUnit/NMock)及其批處理工具(NAnt)等等,這些工具能夠很大程度的幫助開發(fā)人員完成一些枯燥無味的重復(fù)性開發(fā)工作,從而將精力集中在核心業(yè)務(wù)的實現(xiàn)。

        我們可以簡單的描述一個軟件開發(fā)過程能夠使用到的工具,當(dāng)然這里提到的沒有太多的軟件工程方法學(xué),只是從實用的角度來看利用一些已有的工具能夠較少軟件開發(fā)中的重復(fù),同時提供相對明晰的里程碑界定:

(1)    定義需求。對于小型軟件開發(fā),建議不用引入太復(fù)雜的開發(fā)工具(不知道大家的感覺如何,使用UML來進行業(yè)務(wù)建模對于大多開發(fā)人員是存在困難的),因為大多人習(xí)慣用代碼去表述業(yè)務(wù)邏輯,諸如Use Case,時序圖、活動圖等等,對于非專業(yè)技術(shù)人員而言太抽象,UML的提出是為了建立一種統(tǒng)一標(biāo)準(zhǔn)的溝通語言,讓所與參與者能夠統(tǒng)一種符號去表達思想,可是在國內(nèi)目前的實際情況而言,這些UML恰恰讓許多人無法理解。對于大多軟件開發(fā)而言,我們需要的僅僅是一份開發(fā)人員的文檔,簡單來說文檔必須包含業(yè)務(wù)要求和技術(shù)要求兩部分。業(yè)務(wù)部分包含核心的業(yè)務(wù)流程圖和列表形式的業(yè)務(wù)描述,技術(shù)要求具備一些基本的要求如整合現(xiàn)有IT系統(tǒng)、技術(shù)模型等等就足夠了,對于大多數(shù)開發(fā)出生的系統(tǒng)分析員而言,有這個文檔就可以開始做設(shè)計了,那么有了這個文檔是不是全部足夠了呢?顯然不是,如果我告訴你是又多了一次被鄙視的機會了。

(2)    數(shù)據(jù)建模。你可以簡單的理解成數(shù)據(jù)庫設(shè)計,在這個過程中建議使用Power Designer或者Microsoft Visio(最好是.NET自帶的那個版本,而非2002或者2003Professional),使用數(shù)據(jù)庫建模工具而非直接進行數(shù)據(jù)庫設(shè)計的理由有很多,我不想去夸夸其談的說可以提高……那樣的空話。最直接一點的好處就是可以圖形化的設(shè)計你的數(shù)據(jù)模型,同時這些建模工具都提供了很好的文檔生成。數(shù)據(jù)建模一個最基本的原則就是能夠滿足你在需求文檔定義的所有業(yè)務(wù)數(shù)據(jù)描述,你整個業(yè)務(wù)流程中的所有數(shù)據(jù)都能夠找到直接或者間接的存儲,同時數(shù)據(jù)之間的關(guān)系必須滿足業(yè)務(wù)的種種約束(比如生日不可以比當(dāng)前時間大,員工數(shù)不可以是負值等等一些要求),這些業(yè)務(wù)約束可以通過觸發(fā)器和約束來表達,同時根據(jù)你業(yè)務(wù)的需要,可以適當(dāng)?shù)木帉懸恍┐鎯^程用來實現(xiàn)你的業(yè)務(wù)邏輯。最重要的一點,請記住記得為所有設(shè)計元素寫注釋,因為這些注釋正式用來描述你設(shè)計的最重要依據(jù),也是你日后溝通的依據(jù)。

(3)    業(yè)務(wù)建模。可以理解為設(shè)計,按照推薦的做法,一個系統(tǒng)應(yīng)該是分層設(shè)計的。比如微軟的Petshop就分離了Model、DAL、BLLUI這樣的幾個層次。如果是基于.NET開發(fā)的,我建議使用Rational XDE Plus for VS.NET,從數(shù)據(jù)庫到商務(wù)對象的映射目前有兩種推薦的做法。一個是使用或者自行開發(fā)ORM框架用來完成數(shù)據(jù)到對象之間的映射,Java中可以使用Hibernate、JDOEJBEntity  Bean似乎不是推薦的做法等等,.NET也有一些ORM工具如NHibernate,ORMapper、OPF.NET等一些開源項目,但是總體不算特別成熟。另外一種做法就是一個一個的編寫你的Business Object了,但是你可以通過一些CodeGeneration工具讓簡化你的重復(fù)工作,如果熟悉ASP.NET,建議使用CodeSmith。生成基本的代碼骨架之后,可以將這些代碼通過反向工程生成你的模型圖,然后再通過對象建模反復(fù)的校驗?zāi)愕脑O(shè)計,當(dāng)然設(shè)計過程中良好的注釋是必要的,通過對象模型圖,你可以和團隊成員很好的交流,在出現(xiàn)問題的時候也能夠及時修正你的設(shè)計。TDD(測試驅(qū)動開發(fā))也得到越來越多的人接受,如果問我什么時候開始寫單元測試,那么我就建議從這個時候開始寫,原則也很簡單,就是你所有的測試用例合起來能夠完整覆蓋你的業(yè)務(wù)要求,一旦發(fā)現(xiàn)測試用例無法繼續(xù)編寫下去,那么存在問題的可能是你的業(yè)務(wù)建模部分(大多情況下,不應(yīng)該回溯到數(shù)據(jù)建模階段),這個時候去修正你的設(shè)計。反復(fù)之后就能夠得到一個比較好初步設(shè)計框架。在此基礎(chǔ)上可以進行部分的設(shè)計調(diào)整,使其更具擴展性和靈活性,當(dāng)然在一些特殊要求(如性能)的情況下可以在設(shè)計完畢的時候降解你的設(shè)計,雖然會破壞一些設(shè)計原則,但是在必要的時候還是可以接受的。

(4)    業(yè)務(wù)實現(xiàn)。好了,這個時候是開始編碼的階段了,這個時候開發(fā)人員需要一些文檔,如需求文檔(可能是Word形式)、數(shù)據(jù)庫設(shè)計文檔(Power Designer或者Visio的,也可以通過文檔工具直接生成相關(guān)文檔),設(shè)計文檔,單元測試用例,通過上述的迭代,這些文檔都是非常完整的。此時Team Leader對于開發(fā)人員的要求可以算比較簡單了,按照設(shè)計文檔提供的接口要求實現(xiàn),工作完成得第一原則是通過單元測試,因為代碼的骨架在設(shè)計階段已經(jīng)完成,同時對于各個接口提供了很好的文檔說明,就能夠在很大程度上去約束開發(fā)人員的散漫和隨意性,從而保證代碼的規(guī)范和可閱讀性。而規(guī)范的設(shè)計也保證了工作量的細化,從而能夠用相對量化的指標(biāo)去衡量一個開發(fā)人員的具體工作量。開發(fā)過程中有三方面工具推薦使用:NAnt實現(xiàn)編譯、測試、部署的自動化;版本控制工具如(Visual SourceSafe)實現(xiàn)代碼的版本管理;利用BugTrack工具,從而有效地跟蹤和解決問題。

(5)    測試和部署。大多軟件出現(xiàn)問題的原因是沒有測試和模擬部署,要求開發(fā)人員自行完成測試之后就開始投入應(yīng)用,這樣帶來的問題是顯而易見的,因為大多人對于自己的問題是一種逃避心理,而百盒(White Box)的測試如果沒有通過一些工具有效地保障,讓開發(fā)人員通過Code Review的方式是不切合實際的,對于目標(biāo)環(huán)境的模擬部署也是非常必要的,為了減少不必要的麻煩,建議大家可以使用VMWare或者微軟的Virtual Server 2005來進行目標(biāo)應(yīng)用環(huán)境的模擬。

 

以上提到的只是開發(fā)過程中的典型環(huán)節(jié),通過一些工具來規(guī)劃化和加速軟件開發(fā)過程是必要的,我上述提到的一些軟件是商業(yè)產(chǎn)品,在實際使用過程中建議購買商業(yè)軟件或者尋找替代的解決方案。但是這些過程對于小型開發(fā)團隊是行之有效的,我沒有大型團隊的應(yīng)用開發(fā),也許是另外一種場景,也不敢班門弄斧了。

2)  完善開發(fā)團隊的梯度建設(shè)

這個也是小公司存在的非常嚴(yán)重問題,整個開發(fā)團隊的成員結(jié)構(gòu)是不合理,甚至是畸形的。不知道大家是否同意我這樣的說法,大多公司都是一個所謂的技術(shù)牛人帶領(lǐng)一幫資歷比較淺的開發(fā)人員進行開發(fā)的,一些最核心的工作都是由1-2個人來完成的,其他人實際上來說只是輔助性的工作。不可否認(rèn),高水平的開發(fā)人員對于一個團隊的效果是明顯的,但是同時帶來一個問題,如果對于開發(fā)人員脫控,就會形成“老板怕員工”的現(xiàn)象,這樣的管理弊病導(dǎo)致的結(jié)果就是內(nèi)部斗爭嚴(yán)重。設(shè)計、編碼、測試、管理等等各個環(huán)節(jié)人員的平衡是一個相對良好的組織架構(gòu),同時盡量不要讓團隊的梯度出現(xiàn)脫節(jié),比如高水平的開發(fā)人員和其他員工出現(xiàn)無法溝通的障礙(兩者完全不是在一個水平線上),低、中、高金字塔式的人才結(jié)構(gòu)對于團隊的穩(wěn)定是至關(guān)重要的。這段最直接的是反映在人員招聘上,不是找便宜的或者找牛的,而是選擇合適公司自己定位的。

3)  注重技術(shù)資源的基礎(chǔ)積累

生存對于小公司是第一目標(biāo),但是很多時候就以為如此,忽略了團隊的基礎(chǔ)積累,在一些公共模塊的應(yīng)用上,在不同項目之間很多開發(fā)人員采用的是Copy/Paste來做的。在日常的開發(fā)過程中,應(yīng)該逐漸形成自己的代碼和組件甚至業(yè)務(wù)的積累。這些工作可以成為高級開發(fā)人員日常工作的一部分。

4)  并行開發(fā)

如果你不是一家貿(mào)易公司,那么請記得“人無我有,人有我優(yōu),人優(yōu)我絕”,至于“人絕我偷”就免了阿,要讓自己的公司保持長久的生命力,應(yīng)該永遠保持比競爭對手領(lǐng)先半步,那么這半步來自何處呢?除了保證為生存奮斗的商務(wù)開發(fā)之外,前瞻性的開發(fā)也是必要的,最好的做法就是根據(jù)公司實際情況,抽出部分人力并行下一代產(chǎn)品的開發(fā),在下一代的開發(fā)過程中產(chǎn)生的一些比較好的產(chǎn)品可以直接利用與現(xiàn)行系統(tǒng),因為時間周期相對允許的緣故,在下一個版本設(shè)計的時候來自時間的壓力會明顯比較少,這樣子帶來的好處是能夠設(shè)計更好的系統(tǒng)。因此研發(fā)和開發(fā)并行對于一個小公司也是必要的,至于多少權(quán)重,那就根據(jù)實際情況去衡量了。

5)  加強內(nèi)部外部的溝通

在社區(qū)和其它途徑總是可以看到一些開發(fā)人員在抱怨公司沒有給他們提供更好的交流技術(shù),他們不知道市場,不知道需求,總是和客戶存在非常大的溝通障礙,那么作為一個管理人員,盡量創(chuàng)造這種溝通的機會也是非常必要的。

6)  堅持員工培訓(xùn)

小公司員工跳槽的概率是遠遠大于規(guī)范的公司的,一個方面是待遇和福利跟不上,一個方面是無休止的加班,另外一個方面就是感覺公司沒有什么前景,學(xué)不到多少東西。第一個問題只有隨著公司業(yè)務(wù)的不斷發(fā)展才能夠根本性的得到解決,第二個問題通過規(guī)劃化的軟件開發(fā)過程能夠減少不必要的重復(fù)和錯誤,也能夠適度的得到解決(當(dāng)然了,碰見真的資本家,趕緊走人吧)。最后一個問題在小公司是普遍存在的,那么給員工創(chuàng)造一個積極向上的發(fā)展空間,擁有更多的學(xué)習(xí)機會,對于管理人員是一個很大的挑戰(zhàn),這些東西可以歸結(jié)為企業(yè)文化建設(shè)。對于小公司,因為資源方面的限制,很多管理人員會忽略這個環(huán)節(jié)。

目前所在的公司就堅持每周一次的技術(shù)培訓(xùn)和2周一次的職業(yè)規(guī)劃培訓(xùn)。我的做法比較簡單,相對于其他開發(fā)人員,我比較熟悉軟件開發(fā)過程多一點,所以在開始階段告訴他們在一個小型團隊中怎樣有效的進行協(xié)作開發(fā),如何定義軟件開發(fā)的各個過程,各個環(huán)節(jié)中有哪些工具可以提高開發(fā)效率,而這些工具具體是怎樣使用的。等到員工熟悉了大致的軟件開發(fā)過程,可以每周探討一個技術(shù)點如.NET Remoting、Enterprise ServicesWeb Services、Http管道化等等,通過交流的方式讓團隊成員了解更多開發(fā)技術(shù)的具體細節(jié),在適當(dāng)?shù)臅r候個人邀請一些技術(shù)上的朋友幫忙來公司做定期的交流。在職業(yè)規(guī)劃培訓(xùn)方面,則是由公司的兩位老大提供一些來自McKensinAccenture這樣公司的培訓(xùn)經(jīng)驗。

7)  明晰的崗位責(zé)任制

坦白說,這個方面我目前還是沒有非常清晰的思路,希望得到各位的指點

 

 

崗位決定視角,從編碼人員、技術(shù)負責(zé)人、系統(tǒng)架構(gòu)師、技術(shù)編輯到部門管理人員,這5個不同的崗位也決定了看待問題的不同方式,作為一個小公司的部門負責(zé)人,要做的事情很多很多,但是如何將最重要的事情做好呢,也希望和各位探討。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多