1. 程式人生 > >一個技術總監的內心獨白(3)

一個技術總監的內心獨白(3)

確定未來的目標


  人是從歷練中成長的,古人云:三十而立,形容的不是一個人的社會地位,經濟來源,而是形容一個人對未來的目標,對人生的意向。要成為一個成功人,就應該早日為自己定下長期的發展目標,作為一個開發者也當如此。隨著人的性格,取向各有不同,大家為自己所選擇的路也有不同:


  1. 自立門戶,勇敢創業


  快30歲了,很多人會認為要想真正賺得了錢,就應該自立門戶,為自己創業建立一個基礎。像北京、上海、廣州這些一級城市,要買房子,一手樓基本要在2萬~4萬元/平方米左右,而在一家普通的IT公司當上一個專案經理,基本收入一般都在1.5萬~3萬之間(除非在大型的跨國企業內工作,那另當別論),要買一間100平方米左右的房子,就算不吃不喝也幾乎要10年的年薪,所以選擇自主創業,是很多IT開發人員的一個未來目標,想要達到這個目標,就應該更多地把業務作為重點。不可否認的一件事,在中國社會裡很多時候講的是“關係”,即使這30年的改革開放使中國的經濟蓬勃地發展起來,但幾千年來留下的歪風還是不能完全的磨滅。所以想要創業的人事建議你要多跟客戶打好關係,與合作伙伴保持互利互動的模式,這將有利於日後事業的發展。



  2. 急流勇退,退居二線


  這也是不少人的選擇。很多人在有了家庭以後,感覺到壓力太大,人的一生並非只有事業,他們想把更多時間用於對親人的照顧,對孩子的關心上。所以很多人會選擇一份像系統分析、系統維護、高校教師、專業學院講師這一類的工作。收入穩定,而且往往沒有一線開發人員那麼大的壓力。


  3. 不懈努力,更進一步


  無論你是一個Project Manager或者是Team Leader,如果你想繼續晉升一級,那還是會兩極分化的。從一個PM到一間公司的管理層,那所面對的事件會有很多變化。一個公司的總經理,要管理的不再是一到兩個專案的成本,而是整個部門的運作,整間公司的業務流程,所以要肩負的任務會更重。在下曾經有一位上司彭博士,他是企業的最高領導人,年薪超過三百萬,而且在報紙雜誌上也曾經亮過相。平常只會在某些會議上輕輕地亮下相,說兩句講詞,平常的公司運作與業務管理都不需要他直接執行。這並不是說一個作為管理層很清閒,因為他們要面對的是更多的社會關係,與公司合作企業的聯絡上。這跟一個PM的工作有很大的區別,所以要從一個PM晉升到管理層,那可是要付出更多的努力與汗水。



  如果要從Team Leader上升為一個技術總監,那工作的方向也有所改變。像之前所說:一個TL可能更重視的是技術層面,講求與團隊之間的互動合作性,更注重的是開發的完善。而一個技術總監就無需要直接參加某個專案的開發,而注意的是開發的效率與成果,如何合理使用有限的開發資源,控制開發的風險和可能帶來的效果。


  發展感受


  經歷了8年多時間,在下從一個程式設計師到一個專案經理,之間經過很多的曲折,但因為每一個人的際遇都有所不同,所走的路也有不同,正所謂條條大路通羅馬,成功的路不止一條,在下也不想令各位誤解,而只想為大家說一下我的發展方向。如果您是一位開發人員,“程式設計師->架構師->Team Leader(Project Manager)->技術總監”是一條不錯路,這也是在下選擇的路。在我國,想要進一步提升自己,無論你想是以技術為重點還是以業務為重點,都離不開管理二字。在一些大型的企業,一個團隊往往會配備一個PM與一個架構師,儘管兩個人負責的任務各有不同,但你會看到一個架構師的收入往往不如一個PM,PM往往是這個團隊的核心領導者,是關鍵人物。因為公司能否賺錢,PM有著重要的作用。PM與TL並沒有絕對的區別,而且在一些中小型企業,一個開發團隊只有3~5人,一個TL往往會兼備業務處理、成本控制元件、架構設計、開發管理等多項任務。所以在下會把Team Leader與Project Manager定於同一層次,一個公司的老闆往往不會知道團隊的架構師、程式設計師是何人,而只會向PM詢問專案的進度,所以只有晉升到這個層次,才有機會進一步提升管理能力,讓自己有上升的空間。至於要成為一個技術總監,那要求就不再單單是對單個專案的管理,而應該更則重於新興技術的引用,開發資源的合理利用,對開發專案敏捷性的處理等等,對此在下也在試探當中,未敢多言。



與程式設計牽手 和程式碼共眠 從程式設計師到技術總監


從業IT十年,從程式設計師成為技術總監,現在回頭看一看,這條路也伴隨國內的IT一起風雨兼程10年,對IT技術由其是IT的純軟體開發這一塊,向即將要從事軟體技術研發的朋友談一談我的看法:

    一.認清當前IT形勢,選擇合適的技術方向和技術起點

    估計大家都多多少少知道,這個IT行業知識的更新很快,競爭很急烈.

    如果你對自己以後發展的方向在從業前有一個清析的計劃或認識,相信你會比別人走得更好,走得更遠,賺的錢也更多...呵呵

    IT軟體從業的方向,一般都會有這些機會:產品售前(市場,業務),產品開發(編碼,設計,測試),產品售後(支援,實施),產品管理(專案管理等)

    A.產品售前(市場,業務)

    要從事這一塊的工作,主要是在軟體開發的前期(無產品),或者合同簽訂前期(有產品).
    一般要求對相關的業務和技術都要求很高,這可不僅僅是要求人際關係,交際能力.
    要想別人買你的產品,你得以專業的產品品質為後臺,以專業的談吐,專業的技術和專業的業務理解能力來取勝.

    從業者要求:
    要求從業者要有一定的社會經驗,技術經驗或業務經歷,或一定的社會圈子和交際能力.

    建議:
    剛剛從學校畢業的朋友或不符合上面條件的朋友最好要考慮清楚了.當然這世上沒有什麼絕對的東西,就看你自己了.

    現實情況:
    據我所瞭解的,作這一塊的都會是公司一些高層(有關係,有經驗)和業務專家或特殊背景的人員等.

    B.產品開發(編碼,設計,測試)

    這一塊的工作,當然是IT從業大軍的主力了,但也得要考慮清楚.
    如果你要作設計師,或測試,最好先作一段時間的編碼,
    一個好的設計師是不可能不精通相關技術平臺的!
    國外好的測試人員也幾乎是從開發人員中選出來的,基至是軟體開發高手.

    a.程式碼編寫
    在這一個職業選擇範圍內最好是從程式碼編寫開始.當然你也可以先作測試,看看人家是怎麼寫程式碼的是如何來作這個軟體的,
    借用人家的測試經驗也可以,以後有機會再來編一段時間的程式碼也行.
    有時自己去寫一個軟體也可以,所以作編碼和測試都是一個雙向互動的.而不是編碼在前測試在後的.

    作程式碼的編寫最好自己先看看別人的軟體,或由一些高手帶著指導一下,現在技術的學習都不成問題,關健是要連成一條線來學習和思考就會有一定的侷限了.
    所以要熟悉整個的專案流程或業務流程不是靠個人編碼或在培訓班學一下就能解決的,個人的技術學習和培訓班大部分只能解決技術的學習問題,但作軟體不僅是要技術呀
    三分技術七分業務說得不為過,業務的學習也是一個開發人員所要必備的,如果你在不熟悉業務細節之前建議你不要急著去寫程式碼,那樣肯定會是對以後軟體的影響很大.先要熟悉一下業務.

    所以軟體開發人員掌握一門技術平臺和語言是必備條件但同時也必須要有一定的業務知識,這樣才是一個合格的軟體開發人員.當然精通軟體編碼,懂設計,熟悉業務,熟悉軟體專案開發流程的軟體開發人員是優秀的,那是高階研發人員的必備條件.

    如果你才入門或轉行或剛畢業,建議從基礎的程式碼編寫開始,跟著高手或找一些成熟的專案多學習,

    b.軟體設計
    當然這個職業要求行業的經驗,技術經驗都要有一定的基礎,薪水一般也會高很多,所以也是一些開發人員熱烈追逐的目標.但一個好的設計師不是一二年所能練就的,精通編碼,熟練設計模式和公司所採用的技術平臺,熟練一些設計理論並實際多運用,熟練公司業務,其實這個層面的壓力也最大,一個好的軟體在設計上的比重幾乎要佔到七成.

    建議剛畢業的朋友或軟體初學者不要在這一塊來湊熱鬧,即使你作成了設計師,但在我眼中看來你也不是一個合格的設計師...當然你有這個能力來作設計師就要恭喜你了.



    c.軟體測試

    熟練軟體測試的各種理論或實際運用,也要熟悉編碼技術及相關的技術平臺,熟練掌握業務.
    軟體測試中一般都會有:
    單元測試,要求你熟練開發技術進行跟蹤除錯,也就是白盒測試了
    整合測試,對整個專案流程的測試,要求掌握業務知識,對設計的軟體能作功能上的測試或壓力測試等 ,屬黑盒測試
    確認測試,對業務要很熟悉,測試軟體是否完全滿足了客戶的業務需求.

    總體建議:
    1.熟練一種技術平臺,熟悉一種業務
    剛入門的朋友很容易犯的一個毛病是,熟練:VB,VC,.NET,JAVA,C++,C,Dephi,PB,幾乎市場上要用的他全部會,唉,如果我看到他的簡歷上有這麼一句話,這個人肯定不會在我考慮的範圍了.
    現在全球用得最廣最多的技術平臺體系也就三大體系:

    sun的J2EE技術體系(JAVA):在高安全性,高效能上更勝一步,中高階市場上用得多

    微軟體的技術體系(C++,.NET,c#,VB):在中,低端市場佔絕對優勢,也是全球個人電腦操作平臺使用者最多的.

    CORBA技術體系統(一種分散式技術體系和標準),
    全稱:Common Object Request Broker Architecture:公共物件請求代理結構,可以用不同的程式語言寫成,執行在不同的作業系統上,存在於不同的機器上。
    一般介於底層和上層管理軟體之間,


    其他的還會包括底層開發:C,彙編,屬純底層的開發,當然要求技術的起點和業務背景更強,最好是學的專業:電子電氣,嵌入式行業,機械製造,資料採集等...


    看中你想要從事的技術體系,選好一門語言工具,好好上路吧...:)
    永遠要記住:你什麼都想學,你什麼都學不精


    2.從基礎入手,不要好高鶩遠,眼高手低,要與實際結合


    B.產品售後(支援,實施)
    這一塊對於開發技術的要求來講不是那麼明顯,主要工作會在軟體開發後的工作,跟客戶打交道多,但更多要求體現在對業務的把握和客戶的交際上.
    有些軟體產品業務比較成熟,如果參與這一階段的工作,可以快速學習很多的業務知識,積累客戶交往的經驗

    建議:剛入門或剛畢業的朋友,可以在這個工作上多選擇,等待時機成熟,立馬殺入軟體的開發或設計階段,當然,這一塊的工作作得好也不容易,如果適合你作,
    工作環境或工資都不錯你就大可不必多想了...



    C.產品管理(專案管理等)

    這一塊的工作主要體現在管理上,當然適合有一定經驗或管理能力的人員來擔當,
最後的技術從業方向總結:

    技術型:先選擇好一種技術平臺,熟練一種開發語言和資料庫...專業專注的搞幾年再說

    技術+管理型:如果你有一定的技術經驗了,並且人際交往,管理能力不錯,你就可以向這個方向發展

    技術+業務型:精通一種技術平臺,精通一種業務,好好搞,這種人才最受歡迎...

    管理型: 如果你有一定的社會經驗,從業經驗,如果人際交往,管理能力還可以,老闆也喜歡,就搞這個

    業務型(市場):如果你對業務很感興趣,跟客戶的交往等也不錯,你可以選擇了,有適合的專業技術就更能錦上添花了

    技術+市場+管理:老大的位置....:)