Ⅰ 18條法則讓程序員升職加薪!
好的編程原則跟好的系統設計原則和技術實施原則有著密切的聯系。下面的這些編程原則在過去的這些年裡讓我成為了一名優秀的程序員,我相信,這些原則對任何一個開發人員來說,都能讓他的編程能力大幅度的提高,能讓他開發出可維護性更強、缺陷更少的程序。
1.不要自我重復
這也許是在編程開發這最最基本的一個信條,就是要告訴你不要出現重復的代碼。我們很多的編程結構之所以存在,就是為了幫助我們消除重復(例如,循環語句,函數,類,等等)。一旦程序里開始有重復現象的出現(例如很長的表達式、一大堆的語句,但都是為了表達相同的概念),你就需要對代碼進行一次新的提煉,抽象。
2.提煉原則
跟「不要自我重復原則」相關,這一原則是說「程序中任何一段具有功能性的代碼在源代碼文件中應該唯一的存在。」
3.保持簡單
簡單化(避免復雜)永遠都應該是你的頭等目標。簡單的程序讓你寫起來容易,產生的bug更少,更容易維護修改。
4.不要開發你目前用不到的功能
除非你真正需要用到它,否則不要輕易加上那些亂七八糟用不到的功能。
5.用最簡單的方法讓程序跑起來
在開發時有個非常好的問題你需要問問自己,「怎樣才能最簡單的讓程序跑起來?」這能幫助我們在設計時讓程序保持簡單。
6.不要讓我動腦子
這實際上是SteveKrug
關於web界面操作的一本書的書名,但也適用於編程。主旨是,程序代碼應該讓人們花最小的努力就能讀懂和理解。如果一段程序對於閱讀者來說需要花費太多的努力才能理解,那它很可能需要進一步簡化。
7.開放/封閉原則
程序里的實體項(類,模塊,函數等)應該對擴展行為開放,對修改行為關閉。換句話說,不要寫允許別人修改的類,應該寫能讓人們擴展的類。
8.為維護者寫程序
任何值得你編寫的程序在將來都是值得你去維護的,也許由你維護,也許由他人。在將來,當你不得不維護這些程序時,你對這些代碼的記憶會基本上跟一個陌生人一樣,所以,你最好還是當成一直在給別人寫程序。一個有助於你記住這個原則的辦法是「寫程序時時刻記著,這個將來要維護你寫的程序的人是一個有嚴重暴力傾向,並且知道你住在哪裡的精神變態者」。
9.最少意外原則
最少意外原則通常是使用在用戶界面設計上,但這個原則同樣適用於編寫程序。程序代碼應盡可能的不要讓閱讀者感到意外。也就是說應該遵循編碼規范和常見習慣,按照公認的習慣方式進行組織和命名,不符常規的編程動作應該盡可能的避免。
10.單一職責原則
一個代碼組件(例如類或函數)應該只執行單一的預設的任務。
11.最小化耦合關系
一個代碼片段(代碼塊,函數,類等)應該最小化它對其它代碼的依賴。這個目標通過盡可能少的使用共享變數來實現。「低耦合是一個計算機系統結構合理、設計優秀的標志,把它與高聚合特徵聯合起來,會對可讀性和可維護性等重要目標的實現具有重要的意義。」
12.最大化內聚性
具有相似功能的代碼應該放在同一個代碼組件里。
13.隱藏實現細節
隱藏實現細節能最小化你在修改程序組件時產生的對那些使用這個組件的其它程序模塊的影響。
14.笛米特法則
程序組件應該只跟它的直系親屬有關系(例如繼承類,內包含的對象,通過參數入口傳入的對象等。)
15.避免過早優化
只有當你的程序沒有其它問題,只是比你預期的要慢時,你才能去考慮優化工作。只有當其它工作都做完後,你才能考慮優化問題,而且你只應該依據經驗做法來優化。「對於小幅度的性能改進都不該考慮,要優化就應該是97%的性能提升:過早優化是一切罪惡的根源」—Donald
Knuth。
16.代碼復用
這不是非常核心的原則,但它跟其它原則一樣非常有價值。代碼復用能提高程序的可靠性,節省你的開發時間。
17.職責分離
不同領域的功能應該由完全不同的代碼模塊來管理,盡量減少這樣的模塊之間的重疊。
18.擁抱變化
這是Kent
Beck的一本書的副標題,它也是極限編程和敏捷開發方法的基本信條之一。很多的其它原則都基於此觀念:面對變化,歡迎變化。事實上,一些經典的軟體工程原則,例如最小化耦合,就是為了讓程序更容易面對變化。不論你是否採用了極限編程方法,這個原則對你的程序開發都有重要意義。
其實都是一些老生常談的話,重要的是在於你怎麼去落實。你說呢?
Ⅱ 作為IT 程序員 怎麼可以升職加薪漲工資
程序員升職加薪當然是靠技術能力了。所以一定要有過硬的本領,將自己的技術強項做到最優。當然也跟你的綜合管理能力、所處平台是息息相關的,找一個適合自己的工作環境(感覺到輕松自在,利於成長的),多學習新知識新能力,包括專業知識和管理知識。大多數比較有能力的人要麼是技術出色,要麼是管理出彩,所以只需要讓一項發光,另一項輔助就可以了。
希望可以幫到您,願您早日升職加薪,謝謝!
Ⅲ 程序員怎麼升職
1.大公司:打下手---代碼工--- 程序員---項目組長---項目經理
2.小公司:代碼工---程序員---項目組長---項目經理
雖然小公司容易成骨幹,但項目組長拿的錢也行沒有大公司程序員的高
也許很多程序員都碰到過,自己的技術能力已經很棒了,可還是無法升職,其實程序員要晉升到管理層,不僅僅要技術好,溝通、應變力和為人處事也是非常重要的。
1. 大膽的說出自己的想法
大多數程序員都不善言辭,溝通能力不夠。而一個正常軟體項目開發,都是團隊合作模式,同時也是按照用戶的需求進行分析梳理。如何很好的獲取用戶的需求,並與用戶及團隊內部之間溝通,是工作能力突出的重要的一環。平時,多與周邊的同事溝通,周末多參加戶外活動,努力的將自己圈子打開。平時多發表自己的看法,不用擔心會受到批評,說出去才是關鍵。
2.要注重細節
公司團隊里很缺乏一個項目助理,然後不得已選了一個程序員小伙,讓他兼職管管樣機、發發通知,這個小伙絲毫沒有怨言,除了自己的代碼照常寫的非常穩妥之外,這些小事也處理的非常好,每天加班加點也要完成。後來沒多久他就當上了主管。一個有能力把小事做到極致的人,也必定有潛力把大事做好。
3.聽取別人意見,取別人長處
人都會犯錯,一般犯錯的時候領導會直接指出來,有些人每次聽完之後都會去反駁這些理由,而且還覺得這並沒有達到自己想要的,然後他交上來的東西依然沒有任何改變,而有些人都會說:我以後會注意「、我會按照您的要求去執行、這是我的想法不知道您覺得如何。然後接下來就看到他的改進。
一般領導在明確指出你的錯誤,不管是耐心的說教還是嚴厲的批評,你都應該抱著「有則改之無則加勉」的心態,如果你要反駁,就需要准備充分的理由和依據。
面對領導的意見,要弄清楚其准確意圖,然後實施針對性的改進措施。這就是團隊里的游戲規則和生存之道。即使不是領導,是平級和下屬,也應該採用類似的心態和應對方法。
4.不斷提高自己的技術
一般程序員都會有自己的職業規劃,在什麼樣的年齡達成什麼樣的成就或者技術水平的一個整體提升,目前從技術提高的曲線來看,新手的技術提高速度最快,無論從時間還是急迫性兩個方面對新手的壓力挺大的。而到了成熟階段,其編程時間也大大縮短了和學習技術的迫切性也降低了,所以技術提高速度就慢下來許多。所以,你需要時刻看看自己的技術發展之路,哪些走的比較踏實,哪些走的比較急促;哪些是自己的技術特長,哪些是自己的技術薄弱環節。反思後一定要抽出時間抓緊學習,把自己的技術上明顯不足的地方給補上,這樣程序員的技術水平加上豐富經驗和工作能力會使得自己更加具有實力,可以應付各種挑戰,為今後的發展鋪平道路。
Ⅳ 程序員怎麼升職
大公司
1,打下手(1-3月)-----代碼工(3-8月)----
程序員(1年到?)------項目組長(1年半以上 看機遇)
------項目經理(3年以上 看機遇)
小公司
1,代碼工(1-3月)----程序員(3月到8月)------
項目組長(1年左右 優秀的)-----項目經理(2年以上)
雖然小公司容易成骨幹 但項目組長拿的錢也行沒有大公司程序員的高
-------------------------------------------------------
以上是正常發展順序
以外:機遇好、跳槽可以打破上面的
PS:如果不是比較大的公司 在30歲還不是項目組長的話 建議轉行或做生意
-------------------------------------------------------------------
軟體測試師、軟體工程師、系統分析師、軟體架構師
前兩者那個好 目前不好說
後兩者級別高點。。。處於CTO級別
Ⅳ 對於女孩子來說,程序員這個工作可以嗎
不知道大家在念書的時候,有沒有留意到這樣一種現象,工科類的院校女生可以說是鳳毛麟角,有的專業幾乎是清一色的男生,就算是有女生,也只有一兩個。
難道女孩子都就讀於文科類的院校了嗎?其實不是,不少理科類的大學女生也不少的,譬如軟體開發的前端開發。
類似這樣的問題或許你也遇到過:
作為一名前端開發人員,其實跟性別關系不大,我們要做的就是在保持好奇的同時,努力深入挖掘自身的潛力。
按時交付能力隨著前後端的分離,前端開發崗位得到了不少女生的青睞。從事前端開發的女生也越來越多。
對於剛步入職場的前端開發人員,對技術深度要求一般都不高,要求不高並不代表安排給你的任務就可以延遲,還是需要保證按時按質地交付。
這就需要前端人員在團隊溝通協作方面,要建立好與對方的充分信任,並打造個人的靠譜標簽。可別小看這個標簽,這個標簽可能會影響你能否升職加薪。
這就是為什麼有的人工作很勤奮,暗地裡累死累活,加班加點,到頭來客戶和領導都不滿意。之所以出現這種情況,大多數情況下是因為我們忽略了溝通,沒有和對方建立好充分的信任。
Ⅵ 程序員晉升攻略
一個成熟的中大型組織中,專業人員會有不同序列技術級別上升通道,比如騰訊及網路的T系列,阿里的P系列等。一些公開介紹的騰訊職級情況如下。
騰訊的職級系統有26個職業通道,如果你是一個一張白紙,沒有任何職業能力的畢業生,可以從這個26個通道,比如行政、財務、設計、運維、開發、運營、產品.的任何一個1-1級開始,修煉,打怪升級,直到千萬年薪。如同一個完整的人生指引。橫軸是26個職業通道,專業技能各不相同,縱軸是4個大層級。
通過職級的設定,大部分員工不需要更換工作,就可以在已有的崗位上通過自己的技術提升及項目貢獻獲得更高的級別,從而得到薪資的提高、專業能力的肯定及個人的專業聲望。大公司的職級通常也得到業界大范圍的認可,事實上也可以在多個公司之間平移。因此程序員可以在不改變工作崗位的前提下獲得一個長期成長的通道。缺乏明確的成長通道也是大量小公司留不住人的一個困境,在小公司中,由於缺乏透明的、穩定的職級通道以及配套的薪酬體系,造成大量資深員工流失。
在公司有合適上升通道的情況下,工程師每年都有機會從當前職級晉升到更高的職級。在大部分公司里,對於高階的晉升,會由公司相關權威專家組成的評審小組(通常是公司的技術委員會)來進行;低階的晉升可以由員工的直接或者跨級上級決定。本文討論場景主要是需要評審小組審批、候選人需要答辯的晉升,它要求候選人有更高的綜合能力、專業影響力、展示能力及邏輯表達能力等。每年的年底也是大部分公司晉升評定的時間,因此本文談談對於晉升各種問題的看法。
本文主要是針對程序員的情況進行探討,但所有技術工種如測試、運維以及其他專業工作崗位的人員如產品經理也大多同理。
Q:晉升的申請材料怎麼寫?
當你思考晉升材料怎麼寫的時候,說明你已經獲得了晉升的機會,這在很多公司里不是一個容易的機會。管理層通常只從符合條件的人員列表中挑選部分優秀的人員進行晉升提名,因此當上級跟你溝通這次機會的時候,說明你半隻腳已經踏入了新的一個職級。
晉升無非是評估候選人的專業能力是否滿足高一個等級的技術要求,候選人需要通過自己的參與項目的貢獻,比如業務價值、技術成就、技術影響力等,來證明技術能力的提升達到更高級別的要求,項目貢獻及技術提升兩者缺一不可,因此晉升材料主要圍繞這兩個中心來展開。中級的晉升主要看崗位的成績及貢獻。高端的崗位可以歸納成公司級專家及行業專家。公司級專家指精通公司業務相關核心技術,在相關領域有較好積累,並且做出獨到的貢獻。行業專家則需要相關專業能力具有行業的領先能力,並且專業能力最好屬於公司的核心技術。
Q:每一級別的評估標準是什麼?
在大部分公司一樣中,每個技術等級會有相關的要求,比如技術能力、影響能力、協作能力等。在評審階段,評委會根據要求進行候選人評估。在實踐上,也有很多採用標桿人物對比的方法。評委集體選擇幾名處於相應級別最低能力、中等能力、和較高能力的在職員工,與申請人相對比,如果申請人處於這些標桿之中,正常應該處於中間能力人左右,則認為候選人符合條件,如果候選人處於最低能力以下,則認為候選人不符合申請相應的職級。
評估標准在人力資源領域比較知名的是Hay的評估方法,它對所有崗位的職級都適用,據說華為就是直接引入Hay的職級體系。
互聯網公司的級別,最容易理解的程序員職級可以按下列方法來區分(如騰訊、新浪等公司):
Level1:能在他人指導下完成工作;
Level2:能獨立完成業務所需常見工作;
Level3:能規劃及完成業務所需常見項目,並能指導他人完成;
Level4:公司及行業專家;
在操作層面上,每個級別會進一步繼續細分幾個子級別。當然這種劃分方法只是從某一個維度去劃分,實際要考慮的因素更多,大多也會落到Hay的體繫上去。
不少公司並沒有明文各個等級的詳細要求,候選人在不能確定更高職級的明確要求的情況下,可以自己借鑒上面標桿對比的做法,檢查自己與更高職級人員差別的方法來准備自己的晉升材料。
Q:晉升有什麼好處?
獲得薪資及其他福利提升。越是正規的公司,薪酬范圍跟職級是嚴格對應的,每個員工的薪酬會落到所在職級的薪酬范圍內。盡管也有個別人員由於崗位的特殊性或稀缺性,出現薪酬與職級范圍不匹配的情況。因此大部分人員,提升職級是獲得薪酬提升最自然的方法。另外,大部分公司中,股票期權等福利需要員工滿足一定職級的門檻才能獲得,比如符合上述分類的Level
3的條件。
晉升在公司裡面自然可以獲得更好的專業能力的肯定及個人的專業聲望;一些重要的項目,通常會由高級別的專業人員來帶領及指導,高級別的人員通常可以獲得更多歷練的機會。
晉升還可以獲得業界的聲望及認可,大公司的職級通常也得到業界大范圍的認可,在更換工作時候,至少可以在另外一家公司獲得平級的職級。
Q:技術晉升中技術能力與非技術業務能力的比重?
技術能力還是非技術的業務能力是評委以及管理層糾結的問題,有不少案例是候選人能非常好的完成崗位任務,工作積極主動,但是技術方面略遜一籌,而且進展較慢。通常管理層很希望這種人能得到晉升,畢竟這些人員是達成業務任務非常需要的人員。但從另外一個角度去看,技術晉升它不是項目貢獻排行,原則上需要候選人在技術上有明顯的提升,能夠利用對技術更深理解去提升效率或進行技術創新,更好的解決未來面臨的問題。而且放到業界,技術人員(非管理崗)也是按技術能力高低來決定薪資及等級的,所以評判是否有技術能力的提升是候選人能否得到晉級的一個剛性條件。
Q:怎麼看待某些人員專業能力與業務貢獻脫節的問題?
一些團隊可能會存在脫離業務研究技術的人,對參與項目漠不關心。純粹脫離公司環境的業務去研究技術在大部分組織裡面是比較有爭議的。在這些人員技術能力有明顯提高的情況下,如果繼續給這種人晉升會不會帶來一些負面的問題,比如會誘導其他工程師脫離業務去研究技術。因此比較好的方法是評判候選人是否通過項目貢獻體現了技術提升。這樣脫離公司環境去打怪的人員自然就沒有了生存土壤。另外,管理層從公平性的角度出發,可以設置晉升准入條件,比如績效需要達到某個優秀分以上。
Q:直接上級是否可以決定下屬是否晉升?
在大部分公司中,對於低階職級的候選人,直接上級及跨級上級能發揮較大影響力,大多可以由直接或者跨級上級來決定。而越高階的晉升,直接上級發揮的作用越小,通常由公司級別的專家小組來進行評審。因此高職級的同學在日常的工作中,需要更好的平衡上級的要求及合理的技術架構之間的關系,盡可能的多的具備獨立思考的能力,更多的利用技術驅動項目帶來貢獻,並進一步體現自己的技術成績。
Q:評審時時候評委喜歡提的問題?
項目的難點,評委主要通過這些問題來判斷候選人面對復雜問題的應對能力。由於是技術答辯,候選人應該盡量多的將問題放在重大技術問題的解決上。
項目的技術貢獻,候選人通常會通過項目進度的方式描述如何參與項目,但評委比較關注候選人的技術輸出以及技術含量。
項目中的個人貢獻,原理同上,不少候選人參與過一些大的公司明星項目,因此對晉升答辯比較自信,但如果只是在大項目中做一些輔助執行類的工作,通常也不會得到較大的認可,反而會造成材料假大空的印象。
Q:怎樣看待評委的刁難問題?
候選人用樸素的方法來介紹自己的項目,盡量客觀的方法來描述自己的成績。當被問及刁難及質疑性問題時候,盡量不要有防衛心態,不要將自己的項目中的不足設法合理化,心平氣和的接受評委看到的不足。
Q:評審時候選人容易忽略的問題
指導及影響他人的能力。在一個組織裡面,獨行俠未必能得到好評,幫助及帶領周圍技術人員一起成長會更容易得到認可及歡迎。
非崗位要求的貢獻。能夠按照崗位的要求完成工作只能滿足合格的水平,主動思考及完成超出崗位要求的工作更容易得到高分。
Q:我工作很努力,經常加班,是否必定會晉升?
沒有直接關系。評審主要看技術能力提升、技術貢獻及通過技術獲得的成就。與是否努力是否加班沒有必然關系。當然,工作努力的人員通常也通過更多時間投入在技術領域獲得了比較好的成長,因此有更大的晉升可能。
Q:我在我的team裡面公認是技術能力最強的,甚至別的部門一些職級能力高的能力不如我,是否必定會得到晉升?
這種案例失敗概率還是不低,關鍵點還是看候選人近期項目是否能充分體現出高級別所具備的能力,如果候選人近期做了很多零散工作,雖然具備很強的技術能力,也較難得到一個合格的分數。
Q:我剛畢業,怎麼才能獲得快速的職級晉升?
剛畢業的同學還是更多的學好基礎的知識,樂於學習,更多的參與實踐,在工作中發揮更大的價值,不要刻意追求晉升與否。晉升更多的是一個能力到達的伴隨物而不是追求的目標。如果你具備以上素質及習慣,即使在當前企業未得到認可,可以在一另外一個的環境得到實現,只是一個短暫的時間差問題。
Q:我公眾場合的展示及表達能力不強怎麼辦?
大多評委也是技術背景出身,因此對展示表達能力並不是特別在意,反而過於華麗的展示材料會引起評委反感。但在另外一個方面,展示材料的層次關系、論證問題的因果關系的邏輯需要得到清晰的表達。評委不會特別介意候選人念稿,但是會介意材料結構及邏輯混亂。
Q:應該以什麼樣的心態去看晉升?
晉升大多時候是個僧多粥少的游戲,而且評審的價值觀也存在單一的可能,在有限的評審時間,考慮到准備的充分與否,候選人對於評審重點的理解等,未必每一個候選人都能得到合適的展示。評委也很難在短時間對候選人進行充分了解,因此評審通過與否未必能完全體現候選人的能力。
候選人最重要的是調整好自己心態,「不以物喜,不以己悲」,明白自己核心價值所關注的事情(參看拙作選擇學習目標的方法與自然法則),將更多的精力投入到自己關注的事情上去,並產生相應的成果及影響,這個比一個晉升結果意義要大得多。晉升評審可以視為是一個職場游戲,不少得到晉升的人員後面無所成就的案例也是層出不窮。大部分情況下,晉升通過與否僅是薪資的一個損失,只要候選人明確及堅持自己的目標,其他包括個人能力,職業生涯、個人影響力基本沒有實質性的影響。
Ⅶ 在公司程序員的升職步奏
大公司
1,打下手(1-3月)-----代碼工(3-8月)----
程序員(1年到?)------項目組長(1年半以上 看機遇)
------項目經理(3年以上 看機遇)
小公司
1,代碼工(1-3月)----程序員(3月到8月)------
項目組長(1年左右 優秀的)-----項目經理(2年以上)
雖然小公司容易成骨幹 但項目組長拿的錢也行沒有大公司程序員的高
-------------------------------------------------------
以上是正常發展順序
以外:機遇好、跳槽可以打破上面的
PS:如果不是比較大的公司 在30歲還不是項目組長的話 建議轉行或做生意
-------------------------------------------------------------------
軟體測試師、軟體工程師、系統分析師、軟體架構師
前兩者那個好 目前不好說
後兩者級別高點。。。處於CTO級別
Ⅷ 做程序員多久能升職
在北京的話,一般堅持住第一年,就能漲點工資,一般3千-5千.工作3年,會漲到5千-一萬,5年以上,會到1萬到-1.5萬.5年以上就很難在上升了.
不過這都要看個人的努力和跟的項目,不是所有程序員都能達到
Ⅸ 程序員如何才能晉升為優秀的高薪架構師
晉升為優秀的高高興框架是程序員在工作的時候,一定要認真的工作,努力的學習,而且還要進一步的去深造自己,把自己的各項工作做的更好,這樣才能夠呃,今生為優秀的高興框架時,我以後的呃學習和工作更加有前途展望。