❶ 名校計算機專業出來的只能當苦逼的程序員嗎
計算機專業畢業並不是只能做程序員,可以做的事情很多,在以後的生活中,專業給你帶來的思維方式會給你很大的幫助。
我就介紹幾個與計算機相關,但不需要編程的非技術崗位:
1: 產品經理
產品經理負責整個產品從0到1的規劃,設計,產品後期的營銷策略,依據大數據分析對產品功能不斷迭代完善等產品全生命周期的活動,是產品的最重要負責人。雖然產品經理不需要編程,但是對於產品經理的綜合素質要求還是很高的,除了完成大學計算機基礎和專業課外,還要自己補充如下知識: 管理類: 計算機信息系統項目管理,敏捷開發,表達與溝通類的課程 市場營銷類: 產品文案設計,傳播學基礎,市場營銷,尤其是互聯網營銷等 認知與心理學類: 社會心理學,產品設計心理學,消費心理學,互聯網思維系列,大數據思維系列,邏輯學基礎,版權法律等法律通識課等等
2 銷售
需要不斷拜訪客戶,維護客戶關系,有時還需要挖掘出客戶的需求和痛點,反饋給技術部門,不斷完善公司軟體產品。
3 運營
可分為: 用戶運營,市場運營,數據運營,內容運營等。運營工作在互聯網公司尤其重要,大家熟知的淘寶,在互聯網屆公認的是靠運營不斷發展壯大的公司。
❷ 程序員三觀不正怎麼辦
程序員三觀不正,
就需要提出,提醒,督促改正。
❸ 有關程序員的經典名言都有哪些
程序員是IT專業人才的代名詞,他們往往沉迷電腦包不可自拔,甚至很多時候造成了忽視生活「返還原始社會"的現象,因此也被戲稱」程序猿「很多時候,人們對於程序員的世界充滿了好奇,那麼,對於程序員來說有那些經典語錄呢?
關於程序員的有關話題和程序員的段子還有更多呢,對於程序員而言他們更是出色的段子手啊!
❹ 美國程序員把工作外包給中國程序員,為什麼啥也不幹年入 20 萬美元
近日,有這樣一則新聞,一位美國程序員把工作包給中國程序員,自己什麼也沒干就年收入20萬美元,為什麼會出現這種現象?我們一起來了解一下。
總體經濟不太發達,但人口稠密地區的勞動力非常適合外包,想要改變這種現象,要加上地方政府的政策,這個行業的快速發展將很快得到促進。例如,印度班加羅爾是印度典型的所謂小矽谷,幾乎所有跨國公司的技術巨頭都在那裡設立了分支機構,用低勞動力成本做高質量的事情。
❺ 做程序員8年了感覺好累,有沒有其他好的行業推薦
上周做了幾次咨詢,來訪都是三十多歲的程序員,每個人對年齡都表露出深深的焦慮。這周一和知乎一個話題的策劃者電話聊選題,選的也是35+的互聯網人何去何從。這不由又喚起了我對年齡焦慮的思考,索性來談談大齡程序員的未來吧,獻給所有找我做咨詢的程序員們,也獻給所有為年齡而焦慮的互聯網人。
首先我會講下年齡焦慮的本質,然後會談談大齡程序員的8種出路,最後會聊聊如何選擇自己的方向。
年齡焦慮的本質是競爭力不足
所有和我聊年齡的程序員,聊到最後,都會確認這個事實:所謂年齡焦慮,焦慮的根本不是年齡,而是競爭力相較於年輕人,逐年下降。
這才是年齡焦慮的本質——競爭力不足。
介紹兩個簡單的方法。
第一個方法是以終為始,面向未來做決策。
也就是說,你先設想你想要的目標,想過的生活,想成為的樣子,然後來倒推,自己現在該怎麼去做。
有的人可能想不清楚未來會怎樣,介紹一個小技巧——找榜樣。通過榜樣的工作和生活狀態,來明確自己想要的,然後你再來倒推。
第二個方法是貪婪演算法,不管未來會怎樣,總是基於現在,做出在當前看來是最好的選擇。
比如現在你覺得自己要是在技術上多投入時間,可能快速提升技術水準,還可能拿到更高薪水,那就傾盡全力去鑽研技術,先不管別的,幹上兩年再看。
比如在你現在的公司里,管理者有更大的權力和回報,這深深的吸引著你,那你就想盡辦法去搶管理的坑,先搶到再說,不管別的。
所有的方法,都是紙上談兵,最重要的,是你結合自己的情況,落地執行。
❻ 關於程序員
那編程能力實在是太強了,而且開發經驗豐富。你要想成為程序員就一定要做好吃苦的准備,還有一點要說明,做這個行業不是早結婚,就是晚結婚,這是不爭的事實。
學好某一門語言或學好多門語言只是成為一名合格的程序員必備的條件之一,重要的是軟體工程所要走的一個流程,看一下CMMi方面的資料會對你有一些好處.
(Capability Maturity Model Integration,能力成熟度模式整合)
CMMI( Capability Maturity Model Integration)的本質是軟體管理工程的一個部分。軟體過程改善是當前軟體管理工程的核心問題, 50多年來計算的發展使人們認識到要高效率、高質量和低成本地開發軟體,必須改善軟體生產過程。基於模型的過程改進是指用採用能力模型來指導組織的過程改進,使之過程能力穩定的進行改善,該組織也能變得更加成熟。
然而,軟體組織形成一套完整而成熟的軟體過程不是一蹴而就的事情,需要經歷一系列的成熟度。軟體組織首先要進行差異分析,評定自己比較接近哪一個成熟度,然後再根據自身的情況來決定要採取哪些改進活動,來更有效地改進自己的軟體過程。這就對軟體過程的評定提出了一個客觀的標准。美國卡內基梅隆大學軟體工程學院於1987年研究成功的SW-CMM(Capability Maturity Model for Software)就是這樣的一個理論模型,其目的在於幫助軟體組織改善軟體生產流程,以探索一個保證軟體產品質量、縮短開發周期、提高工作效率的軟體工程模式與標准規范。
CMMI是一個可以改進系統工程和軟體工程的整合模式。1997年10月SEI停止對CMM的研究,改而致力於CMMI,以解決使用多個過程改進模型的問題。SEI同時宣布CMMI將取代CMM,與2000年8月11日頒布了CMMI-SE/SW 1.0版本,2001年12月頒布了1.1版本,這次發布標志著CMMI正式啟用,並准備今年內完成CMM到CMMI的過渡。說到CMMI就不能不提CMM。
CMM
CMM框架用5個不斷進化的層次來評定軟體生產的歷史與現狀:初始級描述了不成熟,或者說是未定義的過程的組織,是混沌的過程以不可預測結果為特徵;可重復級是經過訓練的軟體過程;已定義級是標准一致的軟體過程,以組織內改進項目執行為特徵;已管理級是可預測的軟體過程,以改進組織性能為特徵;優化級是能持續改善的軟體過程,以可快速進行重新配置的組織性能,和定量的、持續的過程改進為特徵。任何單位所實施的軟體過程,都可能在某一方面比較成熟,在另一方面不夠成熟,但總體上必然屬於這5個層次中的某一個層次。
CMM包括兩部分"軟體能力成熟度模型"和"能力成熟度模型的關鍵過程域"。"軟體能力成熟度模型"主要是描述此模型的結構,並且給出該模型的基本構件的定義。"能力成熟度模型的關鍵過程域"詳細描述了每個關鍵過程方面涉及的過程域。
可重復級關鍵過程域:需求管理,軟體項目計劃,軟體項目跟蹤和監控,軟體子合同管理,軟體質量保證,軟體配置管理。
已定義級關鍵過程域:組織級過程焦點,組織級過程定義,培訓大綱,集成軟體管理,軟體產品工程,組間協調,同行評審。
已管理級關鍵過程域:定量過程管理,軟體質量管理。
優化級關鍵過程域:缺陷預防,技術更新管理,過程更改管理。
多數組織的基本目標是達到成熟度3級。評估組織當前的成熟度級別的手段之一是軟體能力評估(SCE)。SCE通過評估軟體過程(一般以方針陳述的形式)和項目實踐來確定該組織是否言行一致。組織的過程體現了如實記錄所做的工作,項目實施(對該過程的特定剪裁和解釋)應該證明說到做到。
現在全球許多不同的組織以CMM為協助企業作全面的過程改進活動,除了肯定其軟體成熟度外,更像征具有跨足國際市場的能力。現在通過CMM5級認證的組織達到了一百多家。
CMMI
CMM的成功促使其他學科也相繼開發類似的過程改進模型,例如系統工程、需求工程、人力資源、集成產品開發、軟體采購等等,從CMM衍生出了一些改善模型,比如:SW-CMM,SE-CMM,IPD-CMM等。不過,在同一個組織中多個過程改進模型的存在可能會引起沖突和混淆。CMMI就是為了解決怎麼保持這些模式之間的協調。
由業界、美國政府和卡內基·梅隆大學軟體工程研究所率先倡導的能力成熟度模型集成(CMMI)項目致力於幫助企業緩解這種困境。CMMI為改進一個組織的各種過程提供了一個單一的集成化框架,新的集成模型框架消除了各個模型的不一致性,減少了模型間的重復,增加透明度和理解,建立了一個自動的、可擴展的框架。因而能夠從總體上改進組織的質量和效率。CMMI主要關注點就是成本效益、明確重點、過程集中和靈活性四個方面。
與原有的能力成熟度模型類似,CMMI也包括了在不同領域建立有效過程的必要元素,反映了業界普遍認可的"最佳"實踐;專業領域覆蓋軟體工程、系統工程、集成產品開發和系統采購。在此前提下,CMMI為企業的過程構建和改進提供了指導和框架作用;同時為企業評審自己的過程提供了可參照的行業基準。
CMMI的源模型:軟體能力成熟度模型2.0版,C稿;電子行業協會臨時標准(EIA/IS)731;集成產品開發能力成熟度模型(IPD- CMM)。
CMMI的原則:
1. 強調高層管理者的支持。過程改進往往也是由高層管理者認識和提出的,大力度的、一致的支持是過程改進的關鍵。
2. 仔細確定改進目標,首先應該對給定時間內的所能完成的改進目標進行正確的估計和定義並制定計劃。選擇能夠達到的目標和能夠看到對組織的效益。
3. 選擇最佳實踐,應該基於組織現有的軟體活動和過程財富,參考其他標准模型,取其精華去其糟粕,得到新的實踐活動模型。
4. 過程改進要與組織的商務目標一致,與發展戰略緊密結合。
CMMI目標:
1. 為提高組織過程和管理產品開發、發布和維護能力的提供保障。
2. 幫助組織客觀評價自身能力成熟度和過程域能力,為過程改進建立優先順序以及執行過程改進。
CMMI的方法:
1 決定哪個CMMI模型等級最適合組織過程改進需要。
2 選擇模型的表示法是連續式還是階段式。
3 決定組織需要用到的模型中的知識領域。
4 類似CMM提出的過程改進6步,集成化過程改進分成:開始集成過程改進,建造集成改善平台,集成傳統過程,啟動新過程,進行改 進評估。
CMMI內容
CMMI內容分為"要求"、"期望"和"提供信息"三個級別,來衡量模型包括的質量重要性和作用。最重要的是"要求"級別,是模型和過程改進的基礎。第二級別"期望"在過程改進中起到主要作用,但是某些情況不是必須的可能不會出現在成功的組織模型中。"提供的信息"構成了模型的主要部分,為過程改進提供了有用的指導,在許多情況下他們對需要和期望的構件做了進一步說明。
"要求"的模型構件是目標,代表了過程改進想要達到的最終狀態,它的實現表示了項目和過程式控制制已經達到了某種水平。當一個目標對應一個關鍵過程域,就稱為"特定目標";對應整個關鍵過程域就稱為"公用目標"。整個CMMI模型包括了54個特定目標,每個關鍵過程域都對應了一到四個特定目標。每個目標的描述都是非常簡捷的,為了充分理解要求的目標就是擴展"期望"的構件。
"期望"的構件是方法,代表了達到目標的實踐手段和補充認識。每個方法都能映射到一個目標上,當一個方法對一個目標是唯一就是"特定方法";而能適用於所有目標時就是"公用方法"。CMMI模型包括了186個特定方法,每個目標有兩到七個方法對應。
CMMI包括了10種"提供的信息":目的,概括和總結了關鍵過程域的特定目標;介紹說明,介紹關鍵過程域的范圍、性質和實際方法和影響等特徵;引用,關鍵過程域之間的指向是通過引用;名字,表示了關鍵過程域的構件;方法和目標關系,關鍵過程域中方法映射到目標的關系表;注釋,注釋關鍵過程域的其他模型構件的信息來源;典型工作產品集,定義關鍵過程域中執行方法時候產生的工作產品;子方法,通過方法活動的分解和詳細描述;學科擴充,CMMI對應學科是獨立的,這里提供了對應特定學科的擴展;公用方法的詳細描述,關鍵過程域中公用方法應用實踐的詳細描述。
CMMI提供了階段式和連續式兩種表示方法,但是這兩種表示法在邏輯上是等價的。我們熟悉的SW-CMM軟體能力成熟模型就是階段式的模型,SE-CMM系統工程模型是連續式模型,而IPD-CMM集成產品開發模型結合了階段式和連續式兩者的特點。
階段式方法將模型表示為一系列"成熟度等級"階段,每個階段都有一組KPA指出一個組織應集中於何處以改善其組織過程,每個KPA用滿足其目標的方法來描述,過程改進通過在一個特定的成熟度等級中滿足所有KPA的目標而實現的。
連續式模型沒有像階段式那樣的分散階段,模型的KPA中的方法是當KPA的外部形式,並可應用於所有的KAP中,通過實現公用方法來改進過程。它不專門指出目標,而是強調方法。組織可以根據自身情況適當裁剪連續模型並以確定的KPA為改進目標。
兩種表示法的差異反應了為每個能力和成熟度等級描述過程而使用的方法,他們雖然描述的機制可能不同,但是兩種表示方法通過採用公用的目標和方法作為需要的和期望的模型元素,而達到了相同的改善目的。
======================================================================
CMMI 模型的前身是 SW-CMM 和 SE-CMM,前者就是我們指的CMM。CMMI與SW-CMM的主要區別就是覆蓋了許多領域;到目前為止包括四個下面領域:
1.軟體工程(SW-CMM)
軟體工程的對象是軟體系統的開發活動,要求實現軟體開發、運行、維護活動系統化、制度化、量化。
2.系統工程(SE-CMM)
系統工程的對象是全套系統的開發活動,可能包括也可能不包括軟體。系統工程的核心是將客戶的需求、期望和約束條件轉化為產品解決方案,並對解決方案的實現提供全程的支持。
3.集成的產品和過程開發(IPPD-CMM)
集成的產品和過程開發是指在產品生命周期中,通過所有相關人員的通力合作,採用系統化的進程來更好地滿足客戶的需求、期望和要求。如果項目或企業選擇IPPD進程,則需要選用模型中所有與IPPD相關的實踐。
4.采購(SS-CMM)
采購的內容適用於那些供應商的行為對項目的成功與否起到關鍵作用的項目。主要內容包括:識別並評價產品的潛在來源、確定需要采購的產品的目標供應商、監控並分析供應商的實施過程、評價供應商提供的工作產品以及對供應協議和供應關系進行適當的調整。
在以上模塊中,企業可以選擇軟體工程,或系統工程,也可以都選擇。集成的產品和過程開發和采購主要是配合軟體工程和系統工程的內容使用。例如,純軟體企業可以選擇CMMI中的軟體工程的內容;設備製造企業可以選擇系統工程和采購;集成的企業可以選擇軟體工程、系統工程和集成的產品和過程開發。CMMI中的大部分內容是適用各不同領域的,但是實施中會有顯著的差別,因此模型中提供了"不同領域應用詳解"。
CMM的基於活動的度量方法和瀑布過程的有次序的、基於活動的管理規范有非常密切的聯系,更適合瀑布型的開發過程。而CMMI相對CMM更一步支持迭代開發過程和經濟動機推動組織採用基於結果的方法:開發業務案例、構想和原型方案;細化後納入基線結構、可用發布,最後定為現場版本的發布。雖然CMMI保留了基於活動的方法,它的確集成了軟體產業內很多現代的最好的實踐,因此它很大程度上淡化了和瀑布思想的聯系。
在 CMMI 模型中在保留了CMM階段式模式的基礎上,出現了連續式模型,這樣可以幫助一個組織以及這個組織的客戶更加客觀和全面的了解它的過程成熟度。同時,連續模型的採用可以給一個組織在進行過程改進的時候帶來更大的自主性,不用再像CMM 中 一樣,受到等級的嚴格限制。這種改進的好處是靈活性和客觀性強,弱點在於由於缺乏指導,一個組織可能缺乏對關鍵過程域之間依賴關系的正確理解而片面的實施過程,造成一些過程成為空中樓閣,缺少其他過程的支撐。兩種表現方式(連續的和階段的)從他們所涵蓋的過程區域上來說並沒有不同,不同的是過程區域的組織方式以及對成熟度(能力)級別的判斷方式。
CMMI 模型中比 CMM 進一步強化了對需求的重視。在 CMM 中,關於需求只有需求管理這一個關鍵過程域,也就是說,強調對有質量的需求進行管理,而如何獲取需求則沒有提出明確的要求。在CMMI的階段模型中,3 級有一個獨立的關鍵過程域叫做需求開發,提出了對如何獲取優秀的需求的要求和方法。CMMI 模型對工程活動進行了一定的強化。在CMM中,只有3級中的軟體產品工程和同行評審兩個關鍵過程域是與工程過程密切相關的,而在CMMI中,則將需求開發,驗證,確認,技術解決方案,產品集成這些工程過程活動都作為單獨的關鍵過程域進行了要求,從而在實踐上提出了對工程的更高要求和更具體的指導。CMMI中還強調了風險管理。不像在CMM 中把風險的管理分散在項目計劃和項目跟蹤與監控中進行要求,CMMI3級里單獨提出了一個獨立的關鍵過程域叫做風險管理。
❼ 程序員如何擺脫「碼農」的稱謂
首先,程序員和這些民工、礦工一樣,都是使用非常簡單的工具,典型的就是vim/emacs加make,典型的活動就是使用這些工具一個字元一個字元地敲代碼,這和使用榔頭的農民沒有本質的區別。要擺脫碼農的命運,就需要使用更加先進的工具,比如DSM(Domain Specific Modeling,這里有一篇中文的簡介 ),使用模型(領域知識)構建產品。 其次,程序員的產品一般都是一個蘿卜一個坑,為一個產品寫的代碼下一次還需要再寫一次,也就是同樣的價值需要差不多同樣工作量的重復勞動才可以創造,有人據此稱軟體開發為一個勞動密集型的產業。其實程序員在一個產品開發過程中,創造的財富不僅僅是代碼,還包括領域知識、需求工程、架構、設計決定、文檔(有興趣的可以看一下,SEI的 發掘現有產品中的財富 ),可以說在軟體開發的整個生命周期中,程序員的勞動成果都是寶貴的財富。就我個人的工作經驗來說,一個月用於編寫代碼的時間不會超過25%,所以帶著重用的思想做每一件事情就顯得非常的重要。 第三,如果我們比較一個工人和農民的區別,就會發現,有形形色色的工人(環衛工人、機械工人、紡織工人等數百個工種),但是農民只有非常有限的幾種(糧農,菜農,花農,還有嗎?)。從分工的力度和專業化的程度來看,寫代碼的都叫程序員,程序員也是什麼都干,寫腳本、裝機器、寫代碼、寫文檔、做測試。套用某培訓機構的廣告語只有正規,才有機會!,只有分工明確、專業化程度增加,程序員才能從民工跨越到工人。 順著工人這條路子,我們就走進了軟體工廠 。軟體工廠的概念其實很簡單,為了更加的專業化,它把軟體工程分成了兩部分,領域工程和應用工程。領域工程根據領域支持提取公共的知識,構建可以重用、定製的軟體資產;應用工程使用這些資產為客戶定製出產品。領域工作者就可以根據領域通用規則、知識、需求進行工作,當然還是要把應用程序的需要放在比較重要的位置,程序員在這里可以發展成為領域分析專家,企業在這里就類似於零件提供商。應用工作者可以專注於客戶商業需求分析和產品構建,程序員在這里可以發展成一個產品專家,企業在這里就類似於產品裝配商。 從個人的角度來講,軟體工廠並不意味著程序員從一個碼農成為一個組件生產員或者一個組件裝配工,那些還是重復勞動,每個領域都有產業鏈的上游,還是要有意識、有計劃地力爭上游。
❽ 為什麼會有這么多調侃「程序員」這一職業的段子呢
因為網路都是程序員搞出來的,所以程序員是最早接觸網路的人群,在自家的後花園里開點小玩笑,挨著你了。
❾ 什麼是程序員什麼是代碼
程序員所寫的代碼,是為某一特定程序或某一個應用程序所制定的編碼和內部測試的組織實施,使此應用或程序應能夠在程序員編寫的代碼中,實現各種功能。程序員(英文Programmer)是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。代碼又臭又長
我見過最長的方法是5000多行,那段代碼沒人敢動,只敢往下加 if else,每次需要改這段代碼的開發都戰戰兢兢,生怕出現什麼莫名其妙的bug。java 可是一門面向對象的語言,一個方法裡面有5000多行可以說是很可惡的事情了。我想一開始代碼長度可能沒這么誇張,是什麼導致這種結果的?一個是當初寫這段代碼的人本身寫的是直來直去的方法,一堆if else ;後面迭代的開發,面對這么長的代碼瞬間失去了從頭讀到尾的耐心,直接繼續在後面加 if else 迭代,最後這個方法就變成了一個縫合怪一樣的玩意。
好的 sql 可以很大程度上簡化代碼的復雜程度,但是太過復雜sql 本身就會給後來的開發人員造成閱讀困難,結果又是變成一條無人敢動的祖傳代碼,我想這應該是不少公司極度抵制存儲過程的原因之一。當然不少銀行應用開發還是大量使用存儲過程,存儲過程有用武之地的,但是一個又臭又長的存儲過程就等著變成祖傳代碼吧。當年我見到一個60多個join的sql,看到第一眼就驚為天人從此難以忘懷,當然那段sql也成了沒人敢去動的代碼了。
代碼邏輯不明
代碼邏輯不明所以是我們開發很容易去犯的毛病,是一個不致命卻煩人的毛病。在代碼上的體現是,邏輯判斷寫的比較反人類各種雙重否定是肯定,不把你繞暈不罷休。或者是寫起代碼來東一榔頭西一棒槌,讓人不知道你想幹嘛。導致這個的原因有可能是開發人員在需求理解上出現偏差,做到後面發現不對勁,再回去改又不大可能了,只能硬著頭皮往下寫,結果就是代碼彎彎繞繞;還有很重要的鍋是在產品經理,任意變更需求,想一出是一出,開發人員無奈只能跟著想一出寫一出。還用可能是開發人員方法或者類命名太藝術了,什麼四川方言拼音這種沒有十年腦血栓想不出的命名咱就不說了。就說那種國產凌凌漆式的無厘頭命名——這看上去是個刮鬍刀實際上是個吹風機,就這種不知道讓人說什麼好。
規劃代碼的核心思想
吐槽了一堆代碼規范問題,接下來我們說說如何去規范我們的代碼以及如何做到就算開發人員更換了,或者項目轉手給他人了,仍然可以讓後面的開發可以無礙的去閱讀代碼修改代碼。當然各個公司/團隊都有自己的一套代碼規范,比如項目的結構、代碼命名風格、代碼格式等等。不同團隊有不同的風格,但核心思想是大同小異的。接下來我就我個人的開發經驗來分享一下一些代碼規范的思想。
❿ 普通的程序員和大神級的程序員有什麼區別
你好,普通程序員只能做一些重復簡單的事情,大神級程序員可以解決普通程序員解決不了的難題,還可以給普通程序員建框架。