『壹』 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的一本書的副標題,它也是極限編程和敏捷開發方法的基本信條之一。很多的其它原則都基於此觀念:面對變化,歡迎變化。事實上,一些經典的軟體工程原則,例如最小化耦合,就是為了讓程序更容易面對變化。不論你是否採用了極限編程方法,這個原則對你的程序開發都有重要意義。
其實都是一些老生常談的話,重要的是在於你怎麼去落實。你說呢?
『貳』 程序員需要學些什麼
程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。
程序員需要學習:
1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
2、理解計算機的組成以及各主要部件的性能指標;
3、掌握操作系統、程序設計語言的基礎知識;
4、熟練掌握計算機常用辦公軟體的基本操作方法;
5、熟練掌握基本數據結構和常用演算法;
6、熟練掌握C程序設計語言,以及C++、Java、Visual Basic中的一種程序設計語言;
7、熟悉資料庫、網路和多媒體的基礎知識;
8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
10、了解信息化、計算機應用的基礎知識;
11、正確閱讀和理解計算機領域的簡單英文資料。
程序員必備技能:
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。
另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。
要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。
從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員。
一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。
如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。
要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
就業方向:
1、網路開發
現在網路已經成為世界通訊的一座橋梁,好像Javascript、PHP、Ruby這幾類開發語言大部分是用作網路開發方面。
2、企業軟體開發
JAVA、C#、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。
3、系統軟體
C語言、C++、Object-C這些軟體更多是用在系統軟體開發,嵌入式開發的方面。
當然,這分類不是絕對,像JAVA、C#、VB很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。
但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。
會編程、會計算機語言就能加入互聯網發展大潮中,享受數字經濟發展的紅利,一時間社會上的程序員培訓機構都變得格外火爆。
但是現在,專家的數據分析結果告訴你:若想跟上數字經濟發展的步伐,光會編程可不行,這個行業現在緊缺高端的、綜合型人才。
11月22日下午,清華大學經管學院互聯網發展與治理研究中心與領英聯合發布《中國經濟的數字化轉型:人才與就業》,揭示我國數字人才現狀與趨勢。
報告顯示我國數字經濟發展面臨人才短缺的挑戰,但這種短缺主要體現在擁有中高級專業技能數字人才的比例不高,擁有人工智慧、智能製造等前沿技術的人才更是少之又少。
與美國、英國、加拿大等國家相比,中國的數字人才儲備尚有很大差距。
此外,報告根據對人才需求的數據分析,結果顯示我國數字人才的技能需求不再強調單一編程技能,更加看重技術、管理和領導力等綜合技能。
2015年,我國從事信息傳輸、軟體和信息技術服務相關工作的人數約350萬,但其中中高端人才,特別是前沿技術的數字人才並不多。根據領英中國智庫的研究,在人工智慧領域,美國的從業者數量在85萬人以上,印度15萬,英國14萬,中國只有5萬多人。
報告負責人、清華大學經濟管理學院副院長陳煜波教授表示,我國目前在大數據與人工智慧領域人才缺口明顯。
他解釋說,目前中國85%以上的數字人才分布在產品研發類,而深度分析、先進製造、數字營銷等職能的人才加起來只有不到5%,存在較大缺口,新興技術人才和創新型人才培養方面存在滯後和不足。
這份研究報告的基礎數據來自領英在中國的3600萬個人用戶,這些用戶畢業於1.5萬多所國內外院校,分布在36.4萬家企業,擁有超過2.3萬項技能。
陳煜波研究團隊從中篩選了72萬數字人才,多維度提取用戶畫像並跟蹤其職業軌跡,以此預測不同地區的人才流向、僱傭率、受僱主歡迎的技能等人才趨勢層面的信息。
陳煜波說,根據數據分析結果,整體來看,雖然編程技能和數據分析技能需求占據主導,然而隨著數字產業走向成熟,企業除了強調編程技能,也逐步更加看重人才的技術、管理和領導力等綜合技能。
近年間,項目管理、產品運營等「技術+管理」類技能的需求呈現出明顯的上升趨勢,懂技術、懂管理的人才被認為是「一將難求」。
領英中國代理總裁曾志恆也提醒,如果你有興趣向數字職能轉型,不能僅僅專注於自己的技術能力,溝通和領導力等軟性技能將成為你脫穎而出的關鍵。
陳煜波希望這些研究結果能為教育行業和政府部門提供借鑒。他說,教育行業可根據職位的供需趨勢更好地規劃人才培養的方向,政府也可更好地了解人才流動方向、技術缺口等,以此制定有針對性的引才策略。
程序員崗位職責:
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
相關書籍:
很多程序員響應,他們在推薦時也寫下自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。
其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。
下面就按照各本書的推薦數排列。
1、《代碼大全》 史蒂夫·邁克康奈爾
2、《程序員修煉之道》
3、《計算機程序的構造和解釋》
4、《演算法導論》
5、《重構:改善既有代碼的設計》
6、《設計模式》
7、《人月神話》
8、《計算機程序設計藝術》
9、《編譯原理》(龍書)
10、《活著》
『叄』 程序員工作壓力大,為什麼還有那麼多人想做程序員呢
程序員的工作壓力大,但是其他行業也有壓力,很多人想做程序員還因為程序員的工資比其他行業高,想要得到更多就必然要付出更多。一聽到程序員,大家的第一感覺就是加班多,忙的時候不分白天黑夜,還需要長時間坐著熬夜,程序員的工作確實比較辛苦。這個崗位還有很大的年齡限制,有可能三十五歲以後就被公司勸退,還有人四十歲以後辭職出來再也找不到工作的。按理說程序員的工作業力大,還有可能因此引發各類職業病,想入這個行業的人應該不多。然而事實恰恰相反,從統計的數據來看,想做程序員的人不在少數,很多高中生在選擇專業的時候也會針對性的選擇這類專業,以便畢業後能做一個程序員。
程序員是一個更新非常快的職業,所以為了趕上更新的速度,程序員需要不斷的學習。人就是這樣活到老學到老生命才有更大的意義,做程序員能不斷的為自己充電,讓自己得到提升,也是其他行業不能比的。
『肆』 什麼是程序員
程序員,從字面看就是寫程序的人員。
程序員(英文Programmer)是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。
初,中級程序員一般叫做碼農。
高級程序員和架構師一般叫做攻城獅
系統分析員是指做需求分析同時懂代碼的那群
測試攻城獅一般指黑盒測試,也就是點點點,所有功能按鈕全點,看看有沒有錯誤,常見錯誤404,500。
總結而言,一隻優秀的程序猿通常有以下特點:(以下來自於網路,詞條:程序猿)
【PMonkey】對技術充滿JI情(因為能夠得到香蕉)
將編程作為一種愛好(不一定,只有少數的程序猿有這一素質) 如果你允許會滔滔不絕地跟你談論技術(程序猿使用特殊的語言,別的人或猴子很難聽懂)
【PMonkey】有過個人的開發經歷(獨立的尋找過香蕉或追尋母猿)
堅持認為某種技術最好(程序猿都很固執)
如果讓他用他認為不好的技術他會非常別扭(同上)
聰明、健談、興趣廣泛(只限於NEET和有關宅話題)
在大學和工作前就開始接觸程序(程序猿從小就是程序猿了)
總而言之,程序猿和它的一些同種族(如網管猿,技術猿)一樣,都是人類用來幫助提高生產力的技術人員,由於許多程序猿的智力很高,所以經常自己去尋找香蕉或母猿而無心工作,但這只是個別現象,總體來說程序猿是一種對人類很有用的動物,它們工作時很勤勞,而且不像業務猿那樣喜歡跳奇怪的舞蹈(也叫增猿舞)吵的人們想鬼畜它,程序猿一般到了30歲左右就會進化成別的猿類(一般是管理猿),不過據報道,也有一些少數一生都是沒有母猿的悲劇程序猿。
程序猿是被詛咒的悲慘生物,它們受到的詛咒有:過度的勞作、永遠不足的睡眠、低廉的收入等等……
程序猿並不擅長戰斗,它們生活中最主要的活動是——在樹葉上打洞,然後將打洞的樹葉放進一個木盒子里念咒語,並聲稱那些是能夠提高族群的食物供給或提供其他神奇功能的偉大產品。但是,因為每個程序猿打洞的方式各不相同,他們之間也會經常爆發沖突,每個程序猿都聲稱自己所用的打洞方式是最好最先進,打出的洞是最美最華麗的,並不惜因此用打洞的樹葉互相投擲。根據一些冒險者收集到的程序猿族群的資料,所謂的打洞方式,有西珈岬式、爪哇式、希沙埔式等等。不過,令人驚異的是,雖然每個程序猿所用的打洞方式都不同,但它們能用幾乎所有的方式來給樹葉打洞,來表達「你好,世界」的意思……
因為長時間的不運動,程序猿的體力普遍低下,不擅長近戰。不過,它們的高超智力彌補了這個缺陷。投擲打洞樹葉是它們常用的攻擊方式,而且,一如它們所宣稱的一樣,那些樹葉有著一些神奇的功能——很多冒險者在受到樹葉攻擊後,雖然受傷並不嚴重,但都不同程度表現出反應遲緩、四肢不聽指揮、眼前一片藍色等症狀,甚至於昏迷不醒。不過,好在這些症狀都不致命,但是這足以保護程序猿遠離冒險者的侵擾。
程序猿只為了保護棲息地才會戰斗,因此,一般冒險者都會繞開它們的地界。而且,由於程序猿的智力達到了能和冒險者交流的程度,甚至有的冒險者和程序猿族群建立了良好的關系,並且得到了它們的打洞樹葉作為向族群提供食物的交換——只是這些禮物在冒險者手上遠不如在程序猿手上可靠……
『伍』 程序員一般的工作都是干什麼的
程序員的工作內容如下:
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
(5)什麼都讓程序員擴展閱讀:
數據顯示,近四成程序員處於單身狀態,明顯高於非互聯網從業者24%的比例。廣州、深圳、北京成為單身比例最高的三大城市。單身的程序員在擇偶方面也有區別於其他人的偏好,更注重對象的顏值、身材和家庭背景。
統計顯示,互聯網從業人員對買房有不小熱情。互聯網從業人員更勇於背負房貸,29%互聯網從業人員正背負房貸,這一比例兩倍於非互聯網從業人員。其中在各大城市排名中,杭州、北京、廣州位列前三大互聯網從業者背負房貸人數比例最高的城市。
在互聯網企業的一個特色是,沒有明確的上班時間和下班時間,靈活的工作時間和高強度的工作量,使得加班成了行業特色。在睡眠時間方面,程序員的睡眠時間集中在11點至凌晨1點之間,而非互聯網從業人員的睡眠高峰在10點至12點之間。
『陸』 現在很多年輕人都選擇當程序員,這是為什麼呢
現在的年輕人都選擇當程序員,主要有幾方面的原因:
1.程序員薪水高,吸引了很多年輕人。
2.市場需求旺盛,程序員很好找工作。
3.程序員職業發展前景好,受到了很多年輕人青睞。
隨著科技的不斷進步,人們越來越無法離開互聯網,雖然程序員工作非常累,但是高額的薪水讓很多年輕人心動不已,不少年輕人在選擇職業發展方向的時候,都把程序員當成首選。越來越多的年輕人進入了數字世界,成為建設互聯網的程序員。
隨著科技的發展,大數據、人工智慧等方面得到了很好的發展空間,程序員也成為了不可或缺的人員,未來科技的發展註定離不開程序員,因此程序員的職場發展空間會越來越大,不需要擔心會出現行業萎縮,因此程序員受到了很多年輕人青睞。
年輕人選擇當程序員是為了高薪,為了自己能夠有更好的職場發展。大家對此有什麼其他看法,歡迎留言討論。
『柒』 什麼人算是程序員
mod=viewthread&tid=314起因先聲明,只是談自己看法,和大家討論一下,沒有別的意思 我根據自己的經驗把程序員分為以下幾種 單純沒有腦子的 這種程序員是最讓經理氣的一種,因為大多是剛入門的,或是學生剛走出校門,不喜歡問,也不懂得分析,只是一味的很聽話,為什麼說他們單純呢?那是因為他們從來不會問,不會說也沒有自己的想法,你讓干什麼就干什麼,讓自己怎麼干就怎麼干,聽上去感覺特好的員工,很聽話,如果只是這樣就好了,可怕的是他們沒有腦子,比如你說讓他完成一個增加的功能吧,他們很聽話的給你做出來,但只是一個增加的功能,他根本不會在增加功能之後再給你處理一下刷新數據的問題,或是做一些必要的驗證,更說不上代碼的擴展性,那都是見不著邊的事,不可能。 你說讓做一個查詢功能,他完全有可能給你做出來一個查詢所有的功能,不會管你要不要根據時間,要不要分頁,或是其它的方式的查詢,人家還可有理,會告訴你,你需求上沒說啊,只說要有一個查詢的功能?然後你無語。 有腦子先斬後湊的 這類程序員大致是工作有一年或是兩年工作經驗的人,自認為自己有些經驗了,做了幾個項目,感覺自己NB的不得了了。分配一個功能總有一些自己的想法,其實他自己不知道這些想法還不成熟,只是個人主觀意向,你說讓人家做一個導航條吧,你清楚的告訴他是在頭部用的,要直排下拉類型的。 好了得到需求了,他根本不管你為什麼要這樣做,在做的過程中,他發現自己以前做一些項目里有導航條的,而且很好看,他們想,經理是怎麼想的,設計的還不如我設計的好看,我給他改一下說不定還能得到他的獎勵,於是自己把直排下拉的導航改成了,直排出面板那種的,因為好看,而且還不告訴經理,想給大家一個驚喜,誰知道經理一看,說怎麼改需求了,客戶不要這樣的,然後他就跟你講理,說這樣的好看,而且什麼擴展性還好,技術先進,流行,然後你會很無耐的告訴他,你做的確實很好看,但是客戶不付錢怎麼辦,於是沒辦法在你的強逼之下他不得不改,於是你對他的工作很不滿意,首先是這個人不好管,老自己做主,不把你當回事,怎麼辦,好點的經理會慢慢引導一下,脾氣大的經理會直接扔出兩字滾蛋 我們來分析一下他的心理, 第一種可能就是感覺自己做了很多項目,有一點自大,目中無人的心態,看不起別人設計的東西,總以為自己的技術和代碼很棒了,因為自己在程序界摸爬滾打一兩年了,也算是有所見識了。但他們確不明白,現在的自己正像當前的曹仁學曹操一樣,只是學得其形而為盡其神。大部分的軟體,網站,不能只看網站本身的價值,成功不成功,不是自己說了算,也不是經理說了算,還得看客戶,一句話客戶喜歡的就是好東西,客戶不懂技術啊,你寫的再好,客戶不懂哦,所以一定不要亂改需求,軟體要和市場結合才能真正體現出它的價值,做讓大家喜歡的軟體,而不是單純的技術堆積。 第三種可能是自己實現不了,而又不想學習,感覺浪費時間,所以直接改動一下得了。感覺自己如果寫的話,寫好了還好說,寫不好,耽誤時間,一個導航幾天能不完,會很丟人的。於是要加速。 有腦子,很聽話,很認真,但基礎不好,代碼有局限性 這類型的程序員大多是工作一到兩年的程序員,但和上面的不同,他們很有腦子思路很好,而且很聽經理的話,做東西很認真,做不完了自己會加班寫,學新的東西也很快,但是有一點不好的是,他們有很多理由說自己沒時間學習基礎,這些人一般是在學校沒有學好,出來之後後悔了,學起來很認真,由於學了些新的知識,起點高,看不起基礎的東西,從不想著沒事去看看編程基礎,看看演算法,看看數據結構,總是以為我都能做出這樣的項目了,還看那些小東西會很丟人的,於是在公司從不看回家更不想看,時間長了,技術會有很大的局限性,對某一塊技術很不錯,但是對其它技術不怎麼好,於是在接到一個項目時,總喜歡使用自己現有的,會的技術去實現,轉了一圈又一圈總算是把東西寫出來了,而且還是加班完成了,但是代碼的性能,穩定性,和效率上差的很遠,擴展性也談不上,時間一長,項目一多起來,就會出現多次反工,因為需求是會不斷變化的,於是自己的代碼也要變化,感覺很是理所當然,一個項目沒事,接手的多了就麻煩了,新項目剛到手,老項目就出問題了,不是這里有點小毛病就是那個功能要升級,於是新項目放下,著手改老項目,手上能有三四個項目時,就會忙個不停,改的多了,沒辦法再改了就得重新設計,或是直接說這個功能實現不了。 其實在這個階段的朋友很有潛力的,只要花點心思補習一下自己的技術缺陷,多看看高手的代碼,寫之前想一下,設計一下,自然事半功倍,千萬不要有眼高手低的心態。 不隨便改變需求 他們不會主觀的改變一些東西,不管是對還是錯,如果要改的話他們會在開會時,或是私下跟你提出來,通過後再改,否則會按需求辦事 2.不寫沒有思想的代碼 在寫功能時會加上一些人性化的功能,比果加個小圖標,加一些驗證,處理一些操作習慣,加加快捷鍵,處理好Tab順序,等這些,不用你說,他們自己會處理好。 3.不寫沒有遠見的代碼 4.不寫不負責任的代碼 我們寫代碼一是為客戶用,二是方便其他人看,不單單是自己維護,要對自己的代碼負責,從自己手上出去的代碼代表的就是自己的臉,代碼不好,人家會打臉的。他們不願意挨打所以他們負責。 高手在編程效率方面可能並不比普通程序員快多少,因為他們會吝嗇自己敲下的每一行代碼。這種吝嗇有兩方面的含義,一是項目的架構性和整體性考量,二是從性能和優化的角度進行Coding。其實,這里所映射的是一個開發者的技術視野。 有多位技術專家強調項目執行時的全局觀。面對一個項目,即使是團隊中的普通一員,也要力求從項目整體架構的角度審視開發需求,對各個模塊、介面和通信做最優化的預想和配置。這樣可以從全局審視整個項目的技術布局,預判可能出現的問題。 在確定了整體之後,落實到具體的模塊實現,每一行代碼不但有上下文的考量與規劃,還要具備模塊間的整體布局。這是模塊內的技術視野,比如介面的定義、注釋的可讀性、代碼的執行效率等。當你寫下一行代碼前,要考慮它是否會對整個系統造成影響,是否方便其他介面進行調用,這些都是一個開發高手的技術潛意識。 據一些經常帶領入門級開發者的技術經理介紹,多數人只考慮自己所負責的模塊進行開發,缺乏一個全局性的技術視野和對代碼性能苛刻的態度,這樣雖然能按交付日期完成項目,卻對項目質量和開發者的自我提高有很大阻礙。 開發高手是代碼閱讀者。大多數技術專家的代碼閱讀量是普通程序員的百倍,代碼閱讀的時間比寫代碼的時間要長得多。 多數程序員只把程序開發當成一份工作,他們在乎平台的前景、語言的優劣、報酬的高低;他們不願為一個技術點反復鑽研,不願為一個bug精心測試,不願為自身技術水平的提高多花時間。而開發高手往往具有單純的技術夢想,願意為技術付出自己全部的時間。這幾段話是來自
『捌』 程序員需要具備的基本技能,你都知道嗎
下面是程序員所應該具備的基本職業技能:
基本技能 技能描述
閱讀代碼 這個技能需要程序員能夠具備讀懂已經存在的代碼的能力,這樣的能力可以讓程序員分析程序的行為,了解程序,這樣才能和開發團隊一起工作,繼承維護或是改進現有的程序。
編寫程序 編寫程序並不包括程序設計。不要以為編程是一件很簡單的事情,很多程序員都認為編程只需要懂得程序語言的語法,並把設計實現就可以了。但是這離編寫程序還遠遠不夠,使用什麼樣的編碼風格成為編寫程序員最需要具備的基本技能。能否使用非常良好的編程風格直接決寫了程序員的級別。
軟體設計 這一能力直接決定了需要吏用什麼樣的代碼技術達到怎麼樣的功能,而系統架構設計直接決定了軟體的質量、性能和可維護性。並不是所有的程序在這一方面都非常優秀,但每個程序員都需要或多或少的明白和掌握這一基本技能。
熟悉軟體工程 每個程序員都應該明白軟體工程是什麼東西,都應該知道,需求分析 設計,編碼測試,Release和維護這幾個階段。當然,幾乎所有的人都知道這些東西,但並不是每個人都很清楚這些東西。現在很多高級程序員都會混淆「需求規格說明書FS」和「概要設計HLD」。另外,程序員還需要知道一些軟體開發的方法論,比如:敏捷開發或瀑布模型。
使用程序庫或框架 一個程序員需要學會使用已有的代碼,無論是標論的程序庫,或是第三方的,還是自己公司內部的,都需要學會做。比如:C++中,需要學會使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用這些東西,可以讓你的工作事半功倍。
程序調試 程序調試是分析BUG和解決問題最直接的能力。沒有人能夠保證程序寫出來不用調試就可以運行正常 也沒有人可以保證程序永遠不會出BUG。所以,熟練使用調試器是一個程序員需要具備的基本技能
使用IDE 學會使用IDE工具也會讓你的工作事半功倍。比如,VC++,Emacs Eclipse等等,並要知道這些IDE的長處和短處。
使用版本控制 一定要學會使用版本控制工具,什麼叫mainline/trunk,什麼叫tag,什麼叫branch,怎麼做patch,怎麼merge代碼,怎麼reverse,怎麼利用版本控制工具維護不同版本的軟體。這是程序員需要明的的軟體配置管理中最重要的一塊。
單元測試 單元測試是每個程序都需要做的。很多單元測試也是需要編碼的。一定要學會在xUnit框架下進行單元測試。比如JUnit, NUnit, CppUnit等等。
重構代碼 每個程序員都需要有最基本的能力去重構目前已有的代碼,使代碼達到最優但卻不能影響任何的已有的功能。有一本書叫《軟體的重構》 每個程序員都應該讀一下
自動化編譯 程序員需要使用一個腳本,其能自動化編程所有的工程和代碼,這樣整個開發團隊可以不停地集成代碼 自動化測試,自動化部署,以及使用一些工具進行靜態代碼分析或是自動化測試。
當然,還有很多的基本技術也是非常重要的,比如,與人的溝通能力,語言的表達能力,寫作能力,團隊協作能力,適應變化的能力,時間管理能力,多任務處理能力,自我學習能力,故障處理能力,等等,等等,這里只是列舉了和技術相關的能力,這些是程序最最最基本的能力,只要是程序員就必需要有的能力。
『玖』 什麼是程序員
程序員(英文Programmer)是從事程序開發、程序維護的基層工作人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚。
崗位職責
程序員小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究
希望能幫助您還請及時採納謝謝。
『拾』 程序員一般的工作都是干什麼
程序員一般的工作是讀別人的代碼、寫注釋文檔、了解需求寫代碼、開發中的其他各種溝通。
程序員的前景是毋庸置疑,看現在的新基建,人工智慧,大數據就知道,科幻片里的場景都將出現在現實世界,未來的世界,就是數字世界,憧憬一下吧,作為新基建的時代的工人,作為重構未來世界的主力軍,程序員的職業前景還是很不錯的。
JAVA人才社會需求量大,根據IDC的統計數字,在所有軟體開發類人才的需求中,對JAVA工程師的需求達到全部需求量的60%~70%。Java軟體工程師一般月薪范圍在6000-10000元,遠遠超過了應屆畢業生月薪3500元的平均水平。同時,JAVA工程師的薪水相對較高。通常來說,具有3~5年開發經驗的工程師,擁有年薪10萬元是很正常的一個薪酬水平。80%學員畢業後年薪都超過了5萬元。Java平台以其移動性、安全性和開放性受到追捧。
想了解更多有關程序員的詳情,推薦選擇【達內教育】。該機構已從事19年IT技術培訓,累計培養100萬學員,並且獨創TTS8.0教學系統,1v1督學,跟蹤式學習,有疑問隨時溝通。該機構26大課程體系緊跟企業需求,企業級項目,課程穿插大廠真實項目講解,對標企業人才標准,制定專業學習計劃,囊括主流熱點技術。→感興趣的話點擊此處,免費學習一下