① 為什麼程序員的電腦只關屏幕,很少關機
程序員這個職業一直都是小夥伴們比較關注的,因為很多女生都表示自己的男朋友是程序員,雖然工資還可以,但是經常會加班,而且他們腦子非常講究邏輯思維。校長身邊也有不少的程序員朋友,我看他們平時上班也挺辛苦,不過有件事情也是我非常好奇的,那就是程序員們在休息的時候好像都只關屏幕,很少會關機,這到底是為什麼呢?答案或許內行人才知道,我們一起來了解下。
曾經有位程序員表示,自己已經一年沒關機了,電腦就那麼一直開著,第一是因為比較懶,第二就是開機開軟體太麻煩。最後校長認為,程序員很少關機其實就是他們的工資性質決定的,每一行都有自己工作方式和門道,我想他們不關機就是為了方便工作。
② 程序員是不是一般到了30歲以後乾的時間長一點一般都會被提升到管理層(內行懂的進,否則不給分謝謝)
其實,對於軟體開發人員來說,通常,他們職業發展有幾個選擇:專注於技術,成為技術專家;轉型到技術型銷售、技術支持等;所以要想走得遠一點,必須有一項本領是過人的。
隨著技術成長,從技術性管理到高級管理。這是大家都看得清楚的方向,也都在向這些方向的金字塔尖努力。
程序員要根據本身的基本素質、技術能力選擇開發層次,由低到高,逐步發展。 這也是一名程序員本身具備相應素質的循序漸進的發展軌跡,包括很強的技術背景和綜合管理才能等素養,這也就是所謂『兩條腿走路』的職業規劃發展路線。」如果這樣的話,我相信你也不至於到了35歲就是個坎兒過去不了。
希望可以幫到您,謝謝!
③ 有哪些關於程序員的心靈雞湯
1. 在你責怪別人之前,先檢查自己的代碼
先想一想自己的假設和其他人的假設。來自不同供應商的工具可能內置不同的假設,即便是相同的供應商對於不同的工具,其假設也可能不同。
當其他人正在報告一個你不能重復的問題的時候,去看看他們在做什麼。他們可能會做一些你從來沒有想到過的事情,或者他們的做事順序與你的截然不同。
我個人的原則是,如果我有一個不能確定的錯誤,那麼我會先考慮是不是編譯器的問題,然後再去檢查堆棧是否損壞。特別是當添加跟蹤代碼會使得問題移動的話就更要這么做了。多線程問題是 bug 的另一個來源,有時候令人焦躁得簡直想拔光頭發,或者直接想摔電腦。當系統是多線程的時候,最好傾向於簡單的代碼。我們不能依賴調試和單元測試來發現任何一致性的 bug,所以設計的簡單性是最重要的。
所以,在你不分青紅皂白地去責怪編譯器之前,先想一想福爾摩斯的這條建議,「一旦你排除了種種不可能,剩下的不管有多麼難以置信,一定就是真相」。
2. 不斷學習
我們生活在一個有趣的時代。隨著軟體開發逐漸遍布全球各地,你會發現有很多人都可以干你的工作。所以你需要不斷學習以保持競爭力。否則,你就會落伍,停滯不前,直到有一天,這份工作不再需要你,或外包給一些更廉價的勞動力。
那麼我們能做些什麼?有些僱主很慷慨,會提供培訓以拓寬你的技能。也有的人會說我沒時間或者沒這個資金去接受任何培訓。所以,關鍵是要擺正心態,學習是對自己的負責。
這里有一些學習的方法。而且許多資源都可以在互聯網上免費獲取:
•閱讀書籍、雜志、博客、Twitter feeds 和網站。如果你想更深入地了解對象,可以考慮添加到郵件列表或新聞組。點擊這里通過郵件訂閱《快樂碼農》雜志
•如果你真的很想學習某一種技術,那麼就親自動手寫代碼。
•盡量與導師一起工作。雖然你從任何人身上都可以學到一些東西,但是從那些比你更聰明或更有經驗的人身上,你能學到的更多。如果你實在找不到這樣的良師益友,那麼請繼續往下看。
•使用虛擬導師。在網路上找你真正喜歡的作者和開發人員,閱讀他們寫的內容。訂閱他們的博客。
•了解你使用的框架和庫。知道事物的工作原理,有助於你更好地應用它們。如果你使用的是開源資源,那麼你真的很幸運。使用調試器單步執行代碼,以查看內部究竟是怎麼回事。你也可以去看看那些確實比你聰明的人是如何編寫和審查代碼的。
•當你犯了錯誤,修復 bug,或者遇到問題的時候,試著去真正理解發生了什麼事情。很有可能其他人已經遇到過同樣的問題,並且發布在了網上。谷歌搜索真的很有用。
•學習東西還有一個好方法就是所謂的「教學相長」。當別人在傾聽你的言語,並問你問題的同時,你也會學到東西。可以建立用戶組或本地會議。
•為自己感興趣語言和技術加入或啟動一個研究小組(模式社區),也可以創建本地的用戶組。
•參加會議。如果去不了的話,也可以在網上看,許多會議會將其談話免費發布到網上。
•收聽播客。
•曾經對代碼庫運行過靜態分析工具,又或者查看下你的 IDE 警告?了解它們報告了什麼,以及其原因。
當然如果你有《黑客帝國》中 Neo 那樣的超能力,自然這一切對你而言不過是小菜一碟。但很可惜,我們都是普通人,我們需要時間和精力,以及不斷的努力才能促使自己不斷的學習。不過,你不必成天學習。只要你能有意識地花點時間去學習就可以了,哪怕每天一小時,有總比沒有好。人活著不是為了工作,你還應該有自己的生活。
3. 不要害怕破壞東西
每個具備行業經驗的程序員肯定參與過代碼庫岌岌可危的項目。系統很糟糕,並且改變這邊總是會破壞另一邊不相關的功能。每次添加模塊,程序員只能想著盡可能少地改變代碼,每次發布都膽戰心驚。這座軟體的摩天大樓隨時有坍塌的可能。之所以改動代碼會如此傷腦筋是因為系統太糟糕了。但是即使你知道系統出了問題,卻又因為投鼠忌器,而不得不聽之任之。任何一個外科醫生都懂得,傷口要想癒合就必須得切除腐肉。雖然手術會帶來痛苦,但絕對比任傷口發炎潰爛要好。
不要害怕你的代碼。沒有人會在乎當你搗鼓代碼的時候有沒有暫時破壞了什麼東西。只要你做的改變不會讓項目重新回到開始狀態,就不會令人崩潰。投入時間重構,能讓你受益於項目整個生命周期。這樣做還有一個額外的好處是,由於你有過這種處理病危系統的經驗,所以你對它應該如何工作非常內行。要善於應用這些知識,千萬不要反感這些寶貴的財富。重新定義內部介面,重構模塊,重構復制粘貼代碼,並通過減少依賴來簡化設計。你可以通過消除特殊情況顯著降低代碼的復雜性,因為特殊情況往往是因為錯誤的耦合特點導致的。慢慢地從舊結構過渡到新結構,測試一路同行。如果你想要一下子完成一個大的重構,那麼往往會因為各種頻出的問題而考慮中途放棄。
4. 專業程序員
專業程序員的一個最重要的特點是有責任心。專業程序員會為他們的職業生涯、預算、日程安排承諾、錯誤、技能技巧負責。一個專業的程序員不會將責任推卸給別人。
如果你是專業的,那麼你就需要為自己的職業生涯負責。你有責任去閱讀和學習。你有責任去時刻關注最新的產業和技術。但是許多程序員覺得這應該是他們僱主的工作。NO,大錯特錯。想一想醫生?想一想律師?他們都是靠自己來培養和訓練自己的。他們的下班時間多用在了閱讀雜志報刊上。他們時刻關注著最新的資訊動態。所以,我們也應該如此。你和你僱主之間的關系,已經在僱用合同上作了詳細的說明,簡而言之就是:你的僱主承諾支付你薪酬,而你承諾做好工作。
專業程序員會為他們編寫的代碼負責。除非他們知道這些代碼是有效的,否則就不會發布代碼。現在,好好思考這個問題:如果是你,你會不會在不透徹了解代碼的情況下就直接發布代碼?專業程序員不希望 QA 找到任何 bug,因為這些代碼都是經過他測試之後才發布的。當然,QA 依然會發現一些問題,因為沒有一個人是完美的。但作為專業程序員,我們的態度應該是讓 QA 找不到任何缺陷。
專業程序員也是好的團隊成員。他們負責地對待整個團隊的輸出,而不是只顧自己的工作。他們樂於助人,善於向彼此學習,在需要的時候甚至會鼎力相助,為了項目前仆後繼。
5. 充分利用代碼分析工具
測試的價值是編程早期階段就灌輸給軟體開發者的一個理念。近年來,單元測試,測試驅動開發和敏捷方法的興起,證實了我們開始注重於在開發周期的各個階段進行測試。但是,測試只是你可以用來提高代碼質量的許多工具之一。
回過頭去看,當C語言還是一個新事物的時候,CPU 時間和任何類型的存儲都是非常寶貴的。第一個C語言編譯器注意到了這一點,所以選擇了通過去掉一些語義分析,來減少代碼之間的傳遞次數。這意味著,在編譯時,編譯器檢查到的可能只是可被檢測到的 bug 中的一小部分。為了彌補這個缺陷,Stephen Johnson 寫了一個名為 lint 的工具——它將從你的代碼中刪除一些沒有價值的東西——從而實現一些已被它的兄弟C語言編譯器撤掉的靜態分析功能。然而,靜態分析工具卻因為可以給出大范圍的誤報警告和一些沒有必要遵循的靜態文體慣例的警告而倍受贊譽。
現在的語言、編譯器和靜態分析工具的設計和以前已經大不相同。由於內存和 CPU 時間變得相對比較便宜,因此負擔得起編譯器檢查更多的錯誤。幾乎每一種語言都擁有至少一個工具,用來檢查風格指南的違規行為、常見問題以及一些狡猾的有時候可能很難捕捉到的錯誤,如潛在取消引用空指針。更高級的工具,如C的 Splint,以及 Python 的 pylint,是可配置的,這意味著你可以通過命令行開關或在 IDE 中,使用配置文件來讓工具選擇放過其中的哪些錯誤和警告。Splint 甚至還能讓你在注釋中註解你的代碼,以便於更好地提示你的程序是如何工作的。
6. 關心代碼
優秀程序員能寫出好代碼,這是毋庸置疑的。壞程序員……則不能(他們能寫出好代碼,就不是壞程序員了,哈哈)。他們總是在生產其他人不得不消滅的怪獸。你的目標是寫出好代碼,對不?那麼你應該成為好程序員。
好的代碼並不是憑空而來的,也不能靠運氣然後恰巧讓你瞎貓碰到死老鼠。為了獲得良好的代碼,你必須努力的改進。過程是艱難的。但是如果你確實關心代碼的話,那麼你一定能收獲好代碼。
僅靠技術並不能成就好的編程。我碰到過一些非常聰明的程序員,他們能夠產出令人印象深刻的演算法,能夠熟記語言標准,但卻寫出了最可怕的代碼。這種代碼,閱讀起來很痛苦,使用起來很痛苦,修改起來更是令人痛不欲生。我也碰到過一些非常謙遜的程序員,因為堅持簡單的代碼,所以寫出來的程序更優雅,更易於表達他的意思,和他們工作非常愉快。
基於我多年的軟體生產經驗,我得出的結論是,差強人意的程序員和偉大的程序員之間的真正區別是:態度。好的編程在於專業的方法,以及一種竭盡全力希望寫出最好軟體的期望。
要成為一個優秀的程序員,你必須對自己的代碼負責,真正關心代碼——養成積極向上的心態。偉大的代碼是由大師精心雕琢的,而不是由那些馬虎的程序員胡亂寫出來的。
④ 什麼是程序員
什麼是程序員
什麼是程序員?什麼人能稱得上是程序員?會編程序的人都是程序員嘛!這個問題看似簡單,但細想一下,也很難回答。其實在中國,有關程序員有很多種接近的叫法,例如“開發人員”,“編程人員”,“電腦人員”等等。只是現在分工越來越細,專業化程度不斷提高程序員這個詞才會逐漸地流行起來。
那麼什麼人才算是編程人員呢,現在看來凡是從計算機專業或相近專業畢業的、以編寫程序為職業的都可算得上程序員。但是在上世紀80年代到90年代,由於計算機還是個新生事物,整個社會對其有種神秘、高貴、不可觸及的印象。加之計算機人才少之又少,除了計算機專業從事開發工作之外,很多非計算機專業的同志,甚至初高中生也加入到開發隊伍之中,他們充滿激情,敢於學習,勇於探索,他們其中有許多人很快地就成為開發隊伍中的主力軍,成為編程人員中的佼佼者。有的時候,專業的程序員還不如業余的程序員,這種情況比比皆是。那個時候,開發環境、學習環境比現在差的很多,程序設計語言比較單調,技術書籍更是少之有少。記得當時只能把單位印製8086,Z80匯編程序設計當作教材,用debug把操作系統中代碼列印成厚厚書籍來閱讀。由於單位是生產電腦(組裝)的,因此,使用電腦還是比較方便,但是,絕不可能在家裡自己擁有電腦的。
由於那時程序員可以觸及電腦,可以看著別人不懂的代碼,可以讓電腦執行自己的指令,在許多外行甚至內行人看來,是非常敬仰的。
程序員一般只掌握單一的程序設計語言,比如編寫匯編程序的程序人員,編寫C語言的程序人員,編寫unix、xenix、aix、soc、hp-unix等unix類的shell程序人員,編寫與資料庫打交道的procc程序人員,編寫C++程序的程序語言,編寫面向對象的VFP、VB、Delphi,PB的程序人員,編寫web程序的HTML,CGI,ASP,php的程序人員、編寫C#、java的程序人員,這些程序語言有些被保留下來,有的則被時代無情淘汰了。同樣程序員如果不能適應語言的發展也避免不了被淘汰的命運。
我感到其實程序員和其他職業人員不同之處:
1)因為比爾蓋茨是編程序的,似乎每個程序設計人員都有一個“比爾蓋茨”夢想:比爾蓋茨能做的,我也許能做到,即使做不到,做一半也是不錯的。這個潛在的意識是程序員最大的財富,許多程序人成了有理想有抱負的人。我想很多人選擇IT大都與此有關吧。
2)工作成果完全由自己把握,隨編隨運行隨出結果。這種自我感覺是很多職業都不具備的。因此,程序員有很強的自信性。而且這種自信,往往可以使得程序員產生自己可以開公司念頭。
3)有很高的預期價值。
軟體通過使用創造了價值,程序員通過製作產生了軟體。因此,程序員往往把軟體的價值看作自己的價值,例如一個軟體賣了5萬元,程序員就會把自己的勞動價值故在5萬上,如果這個軟體有100個潛在的市場,那麼程序員就會把這個價值升值到5*100=500萬上。所以在程序員這個群體,很多人都相信自己未來能夠獲得更多的'收入。
當然,程序員也有其他一些特點,例如:有的程序員喜歡晚上幹活,白天睡覺;有的喜歡鑽研,連續加班;有的頭腦靈活,動手能力強;有的喜歡追逐最新技術,變成別人公司的代言人等等。
有一點我是注意到了,程序員在社會上的地位呈下降趨勢,以往給人以仰目而視的形象,逐步走下神壇。也許我們在中國的程序員中間再也發現不了比爾蓋茨的身影了。
這是程序員的悲哀還是社會的悲哀,還是正常不過的社會現象?
;
⑤ 有哪些外行看上去很高大上,但在內行眼裡 low 得不行的東西
有一句話是這樣說得「眼見為實,耳聽為虛」,其實,對於現在的社會來說,你眼見的也不一定為實,畢竟很多東西是可以欺騙嚴謹的。就比如說鍍金的東西,在外人眼中看起來很高大上,畢竟說是有「金子」的,但如果是懂行的人,就知道這個「鍍金」到底有多low。
這種東西是真的在價格和材質上就很low,而有些技術方面的東西,外行人覺得非常高大上,內行人卻知道這才是入門而已。就比如說計算機編程方面,對於普通人來說,如果利用語言編出一個計算器來,這都是一件非常高大上的事情。而對於程序員來說,計算器這樣的東西,可能連入門級別都不夠。
其實,如果你能更深入了解某些東西,就會發現這種東西可能你之前了解太過淺薄了。