導航:首頁 > 程序命令 > 程序員怎麼保持動力

程序員怎麼保持動力

發布時間:2022-05-26 13:05:41

程序員如何保持充沛的精力

你要有充足的精力,就得有充足的睡眠,很多程序員年紀輕輕就猝死在工作崗位是很令人痛心的,當你不能夠高效的工作時就要選擇休息,來緩解你的大腦,不然效率低下,又非常的累,充分的休息很重要

㈡ 我是學編程的,最近看到好多關於程序員累啊,老了沒人要啊,沒人愛啊之類的文章,基本上就沒學習動力了。

想工作輕松,還想掙錢,怎麼可能?所以什麼工作想要做好肯定要付出汗水。
如果年輕的時候多學習,多充實自己,也許有機會可以做你自己的事業,就算沒有,技術牛了,還怕沒有工作?
程序員還是很吃香的,因為工資高,花銷少,身邊異性也少。哈哈。
不過主要的還是看你自己心裡怎麼想的。不要總是讓別人的意見左右你的想法。

㈢ 本人程序員,上班就是盯著電腦看,冬天怎樣鍛煉

下面給大家分享一個程序員鍛煉身體和留住健康的幾個知識:

1.變換姿勢

如果你保持一個姿勢數個小時不活動,你的脖子在數天後疼痛是必然的。每15分鍾站起、坐下、跳、蹲下、活動一下手腳、放鬆一下眼睛;每小時變換一下姿勢;每天走一走,爬一些樓梯,保證你的健康會得到很大的改善,關節的僵硬和肌肉的疼痛都會得到緩解。

我個人擁有一個電動站立式辦公桌, 每個小時我都變換一下姿勢。而且我運行一個程序來提醒我每15分鍾做一個小休息,每個小時做時間較長的休息。對於蘋果X操作系統而言,有個「Time out」應用非常好,在windows上,我一般採用「Big Stretch Reminder」。

正確的方法鍛煉方式

不要跑步
跑步被廣泛當作一種鍛煉方式,其實並不適用於所有人。在決定通過跑步來鍛煉以前,你需要確認兩件事情:1 你的身體狀態足以滿足跑步鍛煉所需,一個嚴酷的事實是大部分程序員達不到跑步鍛煉所需的身體條件。(譯者註:對胖程序猿來說,跑步極有可能會損傷膝關節)2 跑步鍛煉需要掌握正確的跑步姿勢和跑步方法。

我曾經常跟隨在街道跑步的人們,緊跟他們的步伐和僵硬的背部(譯者註:作者可能指一部分跑步的人姿勢不對,背部僵硬),不正確的跑步姿勢極有可能損 傷背部和膝部。如果你想跑步鍛煉,請先確保體重不要過大,學習正確的姿勢和方法,以慢速跑和短距離跑開始練習。所有超過5公里的跑步練習都是過度的,最好 是不要以跑步來鍛煉(譯者註:對長期缺乏鍛煉的程序員而言?)

不要騎自行車
你都在電腦前坐了一天了,鍛煉的時候又坐在自行車上,哈哈。多麼有才的選擇啊,先生!如果你真的喜歡騎自行車,那麼去騎吧,但不要期望能從中得到什麼。

不要到健身房健身
高強度的健身方式適用於有意保持健美外形或有意取得某種特定目標的職業人士。通常,高強度訓練不適合程序員們。

我們都有自己的職業目標和適合自己的使命,所以就不要玩健身了嘛。

沒有效果,太多疼痛和受傷。健康的程序員不需要高強度健身。

應該步行健身

步行比跑步和其他的方式更好。步行簡單、安全而且有效。我每天步行5-10公里,這個習慣給我的健康帶來很大的改善。請買雙薄鞋底的好鞋子(仔細看好,不要買仿製經典籃球鞋)開始步行鍛煉吧!
如果感到太單調,跑步時可聽電子書或者播客。邊學習邊鍛煉,多麼充實!

更強壯 更靈活的健身方式

程序員們花了太多時間坐在電腦前,可能都忘記怎麼運動了。建議從頭開始,但不需要任何額外的器材,你只需要在視頻網站上搜索運動操視頻,然後跟著一起運動即可。

當你的移動變得自然平穩,當你走路柔軟得像老虎,當你採用腹式呼吸,你的身材正在變得優雅,而大部分疼痛都將離你而去。我建議以下簡單的輔助練習:
俯卧撐、下蹲、引體向上和橋式運動。使所有事情簡化而不是復雜化。設定小的目標,百分之百關注在動作技巧上。如果你有興趣,請閱讀《The Naked Warrior by Pavel Tsatsouline (裸體戰士)》 這本書有很多智慧技巧能幫助你進步。

睡眠
最後,我必須指出的是優質睡眠。大家知道,但卻實踐的少。使你自己在一個結實的床墊上度過一整晚。不要在晚上還盯著電腦或者手機和平板,至少保證睡前一小時不使用這些電子產品。10點上床,6點半起床,你就是個快樂程序員!

結論:
你已經知道了,獲得健康很容易。只需保持以下習慣:

變換姿勢
經常休息
不做蠢事,比如高強度器材健身
更多的步行
正確呼吸
訓練靈活性和力量
更多的睡眠

㈣ 程序員編程時心力交瘁,失去工作熱情怎麼辦

心力交瘁中

導讀:程序員在編程的時候因為心力交瘁,從而失去工作熱情的現象並不罕見。很多文章都可以成為這一方面的證據,證明這已經是IT行業一個普遍現象。因為我已經有處理過職業倦怠的經驗,所以我想要更深入地探索這個問題,幫助大家解決甚至預防它。

倦怠發生的原因

程序員比其他領域的專業人士更容易產生職業倦怠。至於為什麼會出現這種情況,我也沒有一個明確的答案,但我認為有四個主要原因

第一個是生理原因。每天坐在辦公桌前,面對著電腦,是不健康的,會讓人更加無精打采、昏昏欲睡。嗜睡還可能導致其他不良的生活習慣,如吃零食,抽煙,熬夜等。然後最終導致郁結於心,產生倦怠感。

第二個原因是,編程是認知高度密集並且壓力非常大的工作,會導致心理疲勞和損傷。

第三,有可能你現在已經精疲力竭了,因為正在做的工作耗盡了你的力量,並且收獲甚微。對此,唯一的解決辦法是離開一段時間,好好反省下――如果不考慮錢的因素,你希望做什麼樣的工作。

第四個原因不是我想出來的,是我在《Hacker News》的評論部分發現的。有一個人准確地描述了,「職業倦怠是由反復做大量犧牲,或努力完成高風險問題最後卻以失敗告終而導致的。這是伏隔核(nucleus accumbens)負面預測落差的結果。你的大腦需要理智地應對失敗。這一條說得真的太對了。在創建軟體的過程中,基本上沒有一天不是處在各種失敗和挫折中。

我本身也經歷過好幾次職業倦怠。雖然我沒有一次放棄編程,但偶爾我也會懷疑我選擇的職業是否正確。所以,從那時起,我開始注重策略化的工作方法,以保持長效的動力和生產力。我將在這篇文章中介紹我的一些開發習慣,以及一些可以預防或甚至消除倦怠的技術手段。

先從基本的開始。

吃好。不要以為做個素食主義者就萬事大吉了。試著逐漸用白開水代替蘇打,低糖飲食,多吃蔬菜,不要吃得過飽。還有最重要的是要持續下去。

睡好。這包括良好的睡眠質量和充足的睡眠時間。更好的睡眠環境,能夠讓我們一覺醒來倍感清爽。具體的一個技巧就是減少會讓人徹夜難眠的藍光照射。這可以通過安裝Flux,來調整計算機顯示器的色彩。

不要勞累過度。已經有很多證據表明,生產效率,即輸出,會在經過4個小時聚精會神的工作之後,急劇降低。像程序員這類認知高度密集的職業,要想長期保持高效,那是不可能的。

番茄工作法。這對於既要保持生產力,又要獲得一些必要休息的程序員,是一個既簡單又有效的方法。番茄工作法,即集中精神工作25分鍾,然後休息5分鍾,然後循環。如果在每次的工作時間都有一個特定目標,效果會更好。理想情況下,在休息時間里,應該去做一些遠離計算機的活動。如散步,俯卧撐等。當然你還可以在三次番茄工作法後,休息個30分鍾,效果也很好。

保持活性,保持前進。我本來想說的是――運動,但很多人有一種誤解就是,認為運動必須包括去健身房,或其他。但是在現實中,保持活性也可以通過用爬樓梯代替乘電梯,或者將汽車停放在一角,而選擇騎車上班,總之,其他在日常中就能運動的方式更易於實現,而不是讓人整天沉溺在電腦前。

更具體化的要點

實驗,玩,學,原型。這些事情能讓你在短期內獲益匪淺,並且迅速輸出。例如,以同樣的你慣用的方式,不斷地建立網站。但是,隨著時間的推移這會逐漸變得乏味,讓人提不起一點興趣。編程有部分也是工程,需要使用經過充分驗證的技術用於生產軟體。但它也可以讓你玩樂、實驗和嘗試新想法。將20%的時間消磨在技術上是避免職業倦怠最有效的策略之一。所謂消磨在技術上可以是嘗試新的庫,也可以是創造一些有趣的但與工作無關的東西,又或是學習一些自己以前不曾涉獵的內容,如函數式編程。

參加聚會,會議和收聽播客。編程會讓人感到孤單。和其他開發人員碰面,或在播客上聽他們的經驗,能讓你更在意和注重自己的工作。沒有人喜歡抱怨,但是分享或聆聽來自於其他程序員的奮斗經歷,以及他們如何克服困難的過程,能夠激勵你繼續前進。

打造良好的工作環境,千萬不要在工具上吝嗇。能快速編譯的PC,能讓你的時間不必浪費在沒有必要的等待上。確保有一個舒適的椅子、桌子和顯示器以及設置。如你在嘈雜的環境中工作,那麼買一個高品質的耳機,將噪音隔離開來。

掌握工具。良好的工具可以使得編程更加愉快,掌握這些工具能讓工作更加高效。這是眾所周知的一點,但我還是要再重復一遍。了解工具,如編輯器,操作系統,命令行中的所有快捷方式,可以為你節省很多時間。自動化日常任務可以加快進程,進一步遠離倦怠。

休息,涉獵其他方面。除了編程之外,還有許多有趣的活動。例如:體育運動,文化活動,sex,閱讀,樂高積木,社交活動,釣魚,烘焙,攝影等。如果你總是持續做一件事,如編程,那麼總有一天你會不可避免地心力交瘁。所以,做一些看似無關但實際可以重新點燃激情的工作,這些工作或許還能激發你新的想法和思路,就像那位傳奇的諾貝爾獎獲得者理查德費曼學習板擺動一樣。

考慮更換工作或啟動一個不同的項目。職業倦怠也有可能是因為你總是在做無趣,又耗費心力的工作,如整天微調現有的代碼庫。也有可能是因為你現在工作的項目已經不符合你的興趣,或你的價值標准。此外,如果你發現編碼再也激發不了你的激情,那麼也可以考慮相關領域,如信息架構,系統管理等,也許可以再次點燃你的激情。

將那些你可以順利完成的工作,整合為日常任務。這些工作包括測試代碼,寫注釋,改善變數命名等等,這些都可以釋放內啡肽,有助於恢復工作行為。這條技巧意在讓我們的大腦對我們做的工作更有積極性。

結論

世上並沒有治癒職業倦怠的仙丹妙葯,而且每個人的情況都不盡相同。所以,希望我上面列出來的這些我覺得有效的小貼士也能為你所用。

誠然,我們需要時間來培養新的習慣。但是吃得好,睡得好,鍛煉和好好照顧自己,能讓你感覺更好,從而幫助你在完成工作的時候做得更好,並保持對編程的熱愛。

㈤ 學習編程,如何度過迷茫期

1. 選擇一門好的編程語言,一門你自認為可以用它快速地做出一些有用東西的語言。建議你學習一種動態語言。選擇一種你覺得語法(文檔)讓你使用起來更舒服的編程。為此,你可能需要花費一些時間來在幾種不同的語言之間進行比較。這么做目的不是為了讓你感覺更好或者讓編程更容易。更快地完成自己的作品並且能夠看到成果,才是激勵你編程的源動力。不要選擇一門需要某種重量級的IDE(IDE是一種能夠幫助你編寫並運行代碼的工具)才能輕松編程的語言。你所需要的僅僅是一個文本編輯器。(註:原文並沒有標號,是我們加上的,請大家別忘記了哦,我們是從零開始數數的。)

2. 選擇一個好的編輯器。
編輯器對程序員而言,就是像是弓對弓箭手一樣重要。這里有一些推薦的編輯器:

SublimeText 2 – 如果你剛開始編程,推薦使用SublimeText 2

Emacs – 學習曲線陡峭,快捷鍵復雜。如果你想定製自己的使用習慣,需要學習Emacs Lisp.

Vim – 不僅操作簡潔而且它默認包含在linux的發行版中,所以深受大家歡迎。我開始使用了2年Emacs。由於Emacs的快捷鍵操作過於復雜,我的雙手開始經常疼痛,這迫使我轉向了Vim陣營。了解Vim的快捷鍵是非常有必要的。當你在遠程的伺服器上編輯代碼時,你唯一不需要安裝的編輯器就是Vim。

注意!Emacs和Vim可能已經成為成為古董了。但是,它們都具備一些現代編輯器多不具備的功能。

3. 選擇一個你可以從中學到東西的操作系統
Windows不會教會你任何東西。使用Windows你唯一學會的就是打開一個exe(可執行)文件來安裝軟體和使用它。可能剛開始的時候你會覺得很酷,但是長遠來看,如果你立志成為一個web開發人員,可能還是要具備基本的linux知識,尤其是當你要發布程序的時候。Linux也允許你根據自己的要求來定製程序。Macs也很酷,但是我認為你現在經濟上還負擔不起。

4. 不要通過復制粘貼來做備份
一個新手程序員通常會把文件復制粘貼到一個臨時目錄下面來進行備份。這也許也是他們唯一知道的方法。不要那麼做!你需要使用版本控制軟體。我強烈推薦使用Git,它是個目前很流行的版本控制工具,而且使用起來非常簡單。對一個Git新手,有一個良好的社區和很多參考資源來學習。(除了Git之外,還有mercurial, darcs, fossil等等。但是我還是建議從Git開始,我有很多的理由來支持Git,這里就不多費口舌了。)

5. 知道去哪裡尋求幫助
參加一個和你相關的(你使用編程工具相關的)程序員社區。比如StackOverflow就是程序員的Facebook。那裡沒有消息狀態和回復,取而代之的是問題和答案。除此之外還要學會使用IRC。IRC是一種老式的聊天室,現在還在被大多數開發人員用來分享技術信息和幫助解決問題。

6. 培養你的禮儀
知道什麼時候問問題。你遇到的大多數問題都是別人碰到過並且在Internet上能夠找到解答的。在IRC或者任何論壇里發問之前,先搜索一下google(或者blekko)來看看是不是有現成的答案。在IRC上問問題需要有耐心。永遠記住,人們只是處於好心來免費幫助你。有時你發問以後需要幾個小時才能有回復。所以,耐心等待。除此之外,記得問問題的時候要禮貌。世界很小,你怎麼對待別人,別人就會怎麼對待你。

7. 結交朋友,技術書籍只能教你解決常見的問題
當你在搗鼓一些程序或者從程序的作者那裡學習,你能學到一些書本上沒有的東西。當你散步的時候,請和遇到的朋友打招呼。你肯定不是唯一的程序員。和其他的程序員一起交朋友一起工作。你會注意到,當一群技術愛好者在一起的時候,不論話題是從什麼地方開始,最後總是以技術話題收尾。這是必然的現象。所以你可以盡情參與。在你的黃金年齡努力編程,我能告訴你的是,我在開始6年前尋找朋友並開始討論編程,從那時起才學到那些書本和文章不會我的東西。所以我總是說,我的編程經驗有6年,因為只有那個時候開始,我才開始與人交流並開始感覺真正地開始學習編程。

8. 參加開源項目
為開源項目編寫代碼能帶來回報。這不僅僅是幫助別人,你留下的代碼會被其他人使用或(可能)改進。當別人給你的代碼添加功能或者提出修改意見時,也是在提高你的編程水平。開源軟體項目不一定要是一個大工程,編寫一個下載youtube視頻的小程序也是很有用的。更重要的是,你會驚奇地發現你編寫的代碼會成為與他人有效溝通的橋梁。

希望可以幫到您,謝謝!

㈥ 作為一個好的程序員,都需要具備哪些基本的素質和能力

我上班第一天我的老闆讓我做的第一件事
看兩篇文章:
程序員隨想
雷軍
我不是天生的程序員,也並非天生就喜歡電腦,上高中時也沒有想過將來會當程序員,接觸電腦純屬偶然--小時候的一個好朋友上大學時選擇了電腦專業,為了和這個朋友有更多的「共同語言」我便選擇了計算機系。在大學,我略窺電腦世界,開始為之「發燒」;畢業後,開始了一個程序員的職業生涯。
從開始寫程序到現在快十年了,寫過的程序不少。從這些年的風風雨雨中走過來,不能不有些體會。說到體會,最大的體會就是這條路太漫長。
一、一輩子有你 苦一點也願意
我沒有奢望大家把寫程序和文學創作相提並論,但其中的苦楚卻不是一個普通用戶能夠體味的。為了寫好一個程序,我們度過太多不眠之夜。有個朋友如此評價道,「寫程序簡直是在自殺,巨費精力巨費腦子巨累」。但還是有許多人不畏其苦,前仆後繼。
我剛接觸到電腦就發現電腦的妙處:電腦遠沒有人那麼復雜,如果你的程序寫得好,你就可以和電腦有著非常融洽的關系,就可以指揮電腦干你想乾的事,這個時候,你是十足的主宰。每每坐在電腦面前,你就如同在一個王國里巡行。
電腦里的世界很大,程序員是活在自己想像的王國里。你可以細微到電腦里的每一個位元組、每一個比特的東西。
這樣的日子簡直就是天堂般的日子,很多人都愛上了這樣的日子。
不少人認為程序員最多干到三十五歲就可以收山,腦子也差不多該歇歇了,並認為寫程序是年輕人的事情,到了一定年齡,估計沒什麼人再當程序員。
我剛畢業時,意氣風發,也想先吃點苦,到了三十歲就不幹了。年長一點後就發現了自己的無知。一個人大學畢業就二十一二歲,技術成熟一點後可能二十五,接著就是票子、妻子和房子等等諸多忙不完的事情。一切搞掂的時候,也許就是三十五歲。如果三十五歲就放棄的話,我們就不用選擇程序員的道路。
電腦進入我國時間不短,但真正大規模開始用,還是八五年PC登陸我國時候的事。因此國內真正寫電腦程序的人最長也就寫了十幾年(不知道是否還有這樣的人)。由於電腦應用在國內時間比較短,國內程序開發的主力以三十五歲以下的年輕人為主,但這並不表示程序員如同紅粉佳人般的容易衰老。美國和台灣地區的開發者以三四十歲的人為主。開始寫程序的時候,我們覺得沒有什麼不能做的(現在還能聽到這樣的豪言壯語),而且更要命的是,好象我們特別聰明,特別適合開發軟體,比老外強得多。當我們真正接觸那些傑出的國外開發人員的時候,發現他們太厲害了,都有十多年的開發經驗,絕對多數的產品出自這些有豐富開發經驗的程序員之手。
畢業後,編程不僅僅是愛好,而且成了一輩子的工作,可以肯定會干一輩子,雖然我沒有打算一生只干這一件事。用一生來編程是一件既容易又困難的事。如果碌碌無為,為交差寫點程序,這樣寫兩輩子的人都有。但如果想全身心地寫程序,寫十年都不是一件容易的事。現在我的不少朋友都洗手了,有時我也有這種想法,但一旦面對電腦,立刻頓悟:電腦還是自己最擅長乾的事,也是最順手的事。
二、我的未來不是夢
有的人刻苦學習編程技術,努力提高編程水平,並把高級程序員作為追求的目標,甚至是終身的奮斗目標。後來參與了真正的商品化軟體開發後,感到非常困惑和茫然。
當我上大學的時候,高級程序員也曾是我的目標。當時,我通過等級考試獲得了高級程序員證書,並在自己的名片上印上「高級程序員」的字樣。後來,我的水平提高了,似乎也成了大家認可的好程序員了。這個時候我卻開始茫然。我希望我的技術能得到別人的承認,當得到別人的承認後,我又能如何呢?後來我發現,無論成為多麼高級的程序員都沒用,關鍵是是否能夠出想法、出產品,你的勞動是否能被社會承認,是否能為社會創造財富。
我的未來是明確的,開發出高質量的適用社會的產品,為社會創造財富。
三、每一個程序都是藝術品
有人認為程序員沒有什麼了不起,不過是一種熟練工種而已;也有人把編程說成是藝術創作,捧上天。這兩種意見爭論比較激烈,甚至可以說針鋒相對。
我們換個工種來看,石匠應該是熟練工種,跟藝術似乎沾不上邊。;但正是這些石匠,給我們留下了數不勝數的文物古跡,如樂山大佛、莫高窟等等。應該說這此石匠給我們留下了無窮的文化財富。我認為編程的工作和石匠比較相似,是技術,也是藝術。
現代軟體工業已具相當規模,很多軟體的完成需要的是大兵團作戰。一名精通程序員接受編寫某一塊的任務後,往往只是寫代碼,發揮的餘地很小。在大項目中,很多程序員只能了解到和自己所編模塊相關的很局部的細節,另外還受到開發環境的限制,真的很難體會到自己在從事「藝術」創造,更多的時候是感到自己在從事重體力勞動。有的時候還擔心自己苦苦參與的這個項目究竟有沒有意義,是不是在同類產品中有競爭力,會不會開發出來以後就因為硬體的發展、操作系統的換代而過時......
編程是技術活,才有可能大規模進行,才會有軟體工程的理論。也正是編程具備藝術創作的特點,我們的生活才會有如此多的好軟體產品。寫一個程序需要付出腦力和體力,當我—我們—某個群體完成一個程序之後,在我們的眼裡,每一個程序就都是藝術品。

程序員應具備的素質
前言
程序員是一種技術工作,在IT的發展中有相當重要的地位,從底層硬體通訊協議的建立, 到數據傳輸層的處理,到操作系統的建設,到資料庫平台的建設,一直到應用層上各種數 據營銷平台的搭建,程序員在裡面都扮演著舉足輕重的角色並為IT事業的發展做出了巨大 的貢獻。

中國有很多精於編碼的人,但是中國軟體行業,尤其是網路應用開發方面誤區很大,很難形成有規模的軟體開發力量和產品能力,不但比美國差距甚遠,和印度相比也是頗有不 如。這些問題不是在於中國程序員的智商和工作努力狀況,也不是在於國家和民間對開發 的投入程度,而是很大程度上,有一些對技術,對程序開發,對項目設計方面的思想誤 區,這些誤區,導致了軟體行業的產品化能力不足,缺乏規模化和大型復用系統研發能 力,可以說,改變認識誤區,是解決軟體行業小作坊模式和個體英雄模式所帶來的局限性 的重要工作。

中國有很多小朋友,他們18,9歲或21,2歲,通過自學也寫了不少代碼,他們有的代碼寫的很漂亮,一些技術細節相當出眾,也很有鑽研精神,但是他們被一些錯誤的認識和觀點左右,缺乏對系統,對程序的整體理解能力,這些人,一個網上的朋友說得很好,他們實際 上只是一些Coding fans,壓根沒有資格稱為程序員,但是據我所知,不少小網路公司的 CTO就是這樣的coding fans,拿著嚇人的工資,做著嚇人的項目,項目的結局通常也很嚇人。

一、程序員基本素質
作一個真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應該具有的素質。
1:團隊精神和協作能力
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最 重要的安身立命之本。把高水平程序員說成獨行俠的都是在囈語,任何個人的力量都是有 限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球 的為linux寫核心的高手們,沒有協作精神是不可想像的。獨行俠可以作一些賺錢的小軟 件發點小財,但是一旦進入一些大系統的研發團隊,進入商業化和產品化的開發任務,缺 乏這種素質的人就完全不合格了。
2:文檔習慣
說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中 非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級 程序員和系統分析員,這個比例還要高很多。
缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇 到極大的麻煩。

3:規范化,標准化的代碼編寫習慣
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮 進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和 糾錯,也有助於不同技術人員之間的協作。
有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自 己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。
再看看整個linux的搭建,沒有規范化和標准化的代碼習慣,全球的研發協作是絕對不可 想像的。

4:需求理解能力
程序員需要理解一個模塊的需求,很多小朋友寫程序往往只關注一個功能需求,他們把性 能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考慮,有人曾 經放言說寫一個廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數量級的訪問情 況下的性能指標是如何實現的,對於這樣的程序員,你給他深藍那套系統,他也做不出太 極鏈的並訪能力。性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程 序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險 和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經 驗才有可能有心得。
5:復用性,模塊化思維能力
經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫 一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成 了熟練程序員的主要工作,而這些,其實是完全可以避免的。

復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一 些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在, 是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避 免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到 這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投 入到創新的代碼工作中去。

一些好的程序模塊代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模塊 都能適合的很好,而現在我看到的是,很多小公司軟體一升級或改進就動輒全部代碼重 寫,大部分重復性工作無謂的浪費了時間和精力。
6:測試習慣
作為一些商業化正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專 職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特 點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行 認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效 率和可靠性就有了最大的保證。

測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程序是否能在正常 調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務, 實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定性測試,用 戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模塊受影響狀況的測試,頻 發的異常請求阻塞資源時的模塊穩定測試等等。當然並不是程序員要對自己的每段代碼都 需要進行這種完整測試,但是程序員必須清醒認識自己的代碼任務在整體項目中的地位和 各種性能需求,有針對性的進行相關測試並盡早發現和解決問題,當然這需要上面提到的 需求理解能力。
7:學習和總結的能力
程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有 領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高 了。
但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一 會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目 的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂 中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提 高。
善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有 目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高, 一個程序員才可能成長起來。
一個不具備成長性的程序員,即便眼前看是個高手,建議也不要選用,因為他落伍的時候 馬上就到了。
具備以上全部素質的人,應當說是夠格的程序員了,請注意以上的各種素質都不是由IQ決 定的,也不是大學某些課本里可以學習到的,需要的僅僅是程序員對自己工作的認識,是一種意識上的問題。

二、高級程序員/項目設計者還需具備的素質
那麼作為高級程序員,以至於系統分析員,也就是對於一個程序項目的設計者而言,除了應該具備上述全部素質之外,還需要具備以下素質:
第一,需求分析能力
對於程序員而言,理解需求就可以完成合格的代碼,但是對於研發項目的組織和管理者, 他們不但要理解客戶需求,更多時候還要自行制定一些需求,為什麼這么說呢?
一般而言,進行研發任務,也許是客戶提出需求,也許是市場和營銷部門提出的需求,這 時候對於研發部門,他們看到的不是一個完整的需求,通常而言,該需求僅僅是一些功能 上的要求,或者更正規些,可能獲得一個完整的用戶視圖;但是這都不夠,因為客戶由於 非技術因素多一些,他們可能很難提出完整和清晰,或者說專業性的性能需求,但是對於 項目組織者和規劃者,他必須能夠清醒認識到這些需求的存在並在完成需求分析報告的時 候適當的提出,同時要完整和清晰的體現在設計說明書裡面,以便於程序員編碼時不會失 去這些准則。
程序設計者必須正確理解用戶需求所處的環境,並針對性做出需求的分析,舉例而言,同 樣一個軟體通過ASP租用方式發布和通過License方式發布,性能需求可能就是有區別的, 前者強調的是更好的支撐能力和穩定性,而後者則可能更強調在各種平台下的普適性和安 裝使用的簡捷性。
第二,項目設計方法和流程處理能力
程序設計者必須能夠掌握不少於兩到三種的項目設計方法(比如自頂至下的設計方法,比如快速原型法等等),並能夠根據項目需求和資源搭配來選擇合適的設計方法進行項目的 整體設計。
設計方法上選擇不當,就會耽誤研發周期,浪費研發資源,甚至影響研發效果。
一個程序設計者還需要把很多功夫用在流程圖的設計和處理上,他需要做數據流圖以確立 數據詞典;他需要加工邏輯流圖以形成整體的系統處理流程。
一個流程有問題的系統,就算代碼多漂亮,每個模塊多精緻,也不會成為一個好的系統。 當然,做好流程分析並選擇好項目設計方法,都需要在需求分析能力上具有足夠的把 握。
第三,復用設計和模塊化分解能力
這個似乎又是老調重談,前面基本素質上不是已經說明了這個問題嗎?
作為一個從事模塊任務的程序員,他需要對他所面對的特定功能模塊的復用性進行考慮, 而作為一個系統分析人員,他要面對的問題復雜的多,需要對整體系統按照一種模塊化的 分析能力分解為很多可復用的功能模塊和函數,並針對每一模塊形成一個獨立的設計需 求。舉個例子,好比是汽車生產,最早每輛汽車都是獨立安裝的,每個部件都是量身定做 的,但是後來不一樣了,機器化大生產了,一個汽車廠開始通過流水線來生產汽車,獨立 部件開始具有一定的復用性,在後來標准化成為大趨勢,不同型號,品牌甚至不同廠商的 汽車部件也可以進行方便的換裝和升級,這時候,汽車生產的效率達到最大化。軟體工程 也是同樣的道理,一個成熟的軟體行業,在一些相關項目和系統中,不同的部件是可以隨 意換裝的,比如微軟的許多桌面軟體,在很多操作模塊(如打開文件,保存文件等等)都 是復用的同一套功能模塊,而這些介面又通過一些類庫提供給了桌面應用程序開發者方便 掛接,這就是復用化的模塊設計明顯的一個佐證。

將一個大型的,錯綜復雜的應用系統分解成一些相對獨立的,具有高度復用性的,並能僅 僅依靠幾個參數完成數據聯系的模塊組合,是作為高級程序員和系統分析員一項最重要的 工作,合適的項目設計方法,清晰的流程圖,是實現這一目標的重要保證。
第四,整體項目評估能力
作為系統設計人員,必須能夠從全局出發,對項目又整體的清醒認識,比如公司的資源配 置是否合理和到位,比如工程進度安排是否能最大化體現效率又不至於無法按期完成。評 估項目整體和各個模塊的工作量,評估項目所需的資源,評估項目可能遇到的困難,都需 要大量的經驗積累,換言之,這是一種不斷總結的累計才能達到的境界。在西方一些軟體 系統設計的帶頭人都是很年長的,比如4,50歲,甚至更老,他們在編碼方面已經遠遠不 如年輕人那樣活絡,但是就項目評估而言,他們幾十年的經驗積累就是最重要和寶貴的財 富。中國缺這么一代程序員,主要還不是缺那種年紀的程序員,而是那種年紀的程序員基 本上都是研究單位作出來的,都不是從專業的產品化軟體研發作出來的,他們沒有能積累 那種產品化研發的經驗,這也是沒有辦法的事情。
第五,團隊組織管理能力
完成一個項目工程,需要團隊的齊心協力,作為項目設計者或研發的主管人,就應當有能 力最大化發揮團隊的整體力量,技術管理由於其專業性質,不大同於一般的人事管理,因為這裡面設計了一些技術性的指標和因素。
首先是工作的量化,沒有量化就很難做到合適的績效考核,而程序量化又不是簡單的代碼 行數可以計算的,因此要求技術管理人員需要能真正評估一個模塊的復雜性和工作量。
其次是對團隊協作模式的調整,一般而言,程序開發的協作通常分為小組進行,小組有主 程序員方式的,也有民主方式的,根據程序員之間的能力水平差距,以及根據項目研發的 需求,選擇合適的組隊方式,並能將責權和成員的工作任務緊密結合,這樣才能最大發揮 組隊的效率。
一個代碼水平高的人,未必能成為一個合格的項目研發主管,這方面的能力欠缺往往是容 易被忽視的。

綜上可以看到,作為一個主管研發的負責人,一個項目設計者,所需要具備的素質和能力 並不是程序代碼編寫的能力,當然一般情況下,一個程序員通過不斷的總結提高達到了這種素質的時候,他所具有的代碼編寫能力也已經相當不簡單了,但是請注意這裡面的因果 關系,一個高水平的項目設計者通常已經是代碼編寫相當優秀的人了,但是並不是一個代 碼相當優秀的程序員就可以勝任項目設計的工作,這裡面存在的也不是智商和課本的問 題,還是在於一個程序員在積累經驗,逐步提升的時候沒有意識到應當思考哪方面的東 西,沒有有意識的就項目的組織和復用設計進行揣摩,沒有經常性的文檔習慣和總結習 慣,不改變這些,我們的合格的項目設計者還是非常欠缺。

另外,為防止有無聊的人和我較真,補充一點,本文針對目標是作商業化的軟體項目和工程,那些科研機構的編程高手,比如演算法高手,比如圖象處理高手,他們的工作是研究課題而非直接完成商業軟體(當然最終間接成為商業產品,比如微軟研究院在作的研究課 題),因此他們強調的素質可能是另外的東西,這些人(專家),並不能說是程序員,不能用程序員的標准去衡量。

三、軟體項目研發的設計流程
最後補充一點東西,一個軟體項目研發的設計流程是怎樣的呢?以通常標準的設計方法為例,(不過筆者喜歡快速原型法)。
第一個步驟是市場調研
技術和市場要結合才能體現最大價值。

第二個步驟是需求分析
這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手冊。
用戶視圖是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裡麵包含了 很多操作方面的流程和條件。

數據詞典是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成 了一半多。
用戶操作手冊是指明了操作流程的說明書。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成 這些,就為程序研發提供了約束和准繩,很遺憾太多公司都不是這樣做的,因果顛倒,順 序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。
需求分析,除了以上工作,筆者以為作為項目設計者應當完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或 公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設計
將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。 作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為 涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是 並不是說詳細設計說明書不重要,事實上快速原型法在完成原型代碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。

第四個步驟是詳細設計
這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把 具體的模塊以最』干凈』的方式(黑箱結構)提供給編碼者,使得系統整體模塊化達到最 大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細 設計說明書應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分析到概要 設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行代碼工作。
那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。

第五個步驟是編碼
在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提 高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可 能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都 出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永 遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執行方,可以分為內部測試和外部測試
按照測試范圍,可以分為模塊測試和整體聯調
按照測試條件,可以分為正常操作情況測試和異常情況測試
按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。

總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外 部測試都是正常的,因為永遠都會又不可預料的問題存在。

完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目才算告一段落,當然日後少 不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,知道這個軟體被徹底淘汰為止。

寫這些步驟算不上賣弄什麼,因為實話講我手邊是一本《軟體工程》,在大學里這是計算 機專業的必修課程,但是我知道很多程序員似乎從來都只是熱衷於什麼《30天精通VC》之 類的,他們有些和我一樣游擊隊出身,沒有正規學過這個專業,還有一些則早就在混夠學 分後就把這些真正有用的東西還給了老師。
網上現在也很浮躁,一些coding fans亂嚷嚷,混淆視聽,實際上真正的技術專家很少在 網上亂發帖子的,如筆者這樣不知天高地厚的,其實實在是算不上什麼高手,只不過看不 慣這種對技術,對程序員的誤解和胡說,只好挺身而出,做撥亂反正之言,也希望那些還 沉迷於一些錯誤人士的coding fans們能認真想想,走到正途上,畢竟那些聰明的頭腦還 遠遠沒有發揮應有的價值。

㈦ 作為程序員,純靠技術究竟能不能一直生存下去

一、不要以為只有學習技術才可以換來穩定的生活和高的薪水待遇

做技術的沒有自己的時間,一定是個隨時叫隨時到的人。更可怕的是,會讓你接觸的人際關系非常單一,除了有限的技術人員之外你幾乎見不到做其他行業工作和職位的人,你的朋友圈子小且單一。

相反那些從事售前和市場開發的朋友,卻有更多的工作之外的時間,甚至他們工作的時間有的時候是和生活的時間是可以兼顧的,他們可以通過市場開發,認識各個行業的人士,可以認識各種各樣的朋友,只有接觸人,才能看到更多的商業機會和發展前景。

根據2018年中國程序員薪資生存現狀調查報告

㈧ 作為一個兩年的程序員,很迷茫,應該怎麼辦

鹽商總會經歷一段時間的迷茫,不知所措。

其實作為程序員做了兩年,那麼一定是技術很不錯的,也適應了這種生活和工作,就這個階段就需要在進一步的努力突破,現在的技術水平有新的提升,像我那個時候做程序員也有迷茫的時候,後來我又報了一個專業班,進行全方位的進行和學習,從而突破了自己,那麼就從這種迷茫期慢慢的走出來。

㈨ 工作一到五年的Java程序員遇到瓶頸應該如何提升

工作了5年的Java程序員,該如何提升,做了3~5年Java開發,你已經積累了不少項目經驗,擴寬了技術廣度,也許已發力成為團隊管理者。到了這個階段,大家卻常有這種感受:感覺自己卡在瓶頸進步緩慢,技術水平很難像早期一樣實現大幅突破?
其實大家往往忽略了這一點——提升自己的架構認知(工作5年左右程序員必須重視架構認知的提升,這會很大程度上推動你今後的成長)。架構的本質在於面對業務場景給出優雅的解決方案,使得業務能夠快速迭代和持續交付,從而達到降本增效的目標。提升架構認知高度,就像達克效應所描述的一樣,要敢於從愚昧之巔跳到絕望之谷,通過爬升開悟之坡,從而達到架構認知的巔峰時刻。到達巔峰時刻也就掌握了架構背後設計的哲學,面對具體業務場景在架構層面你便能夠輕松應對,以無招勝有招。
提升架構認知,要緊抓3個關鍵點:業務洞察力、技術視野、原創力(執行力)。
1.業務洞察力是技術戰略層面的問題,在當下能夠做出合理的判斷,清楚公司做什麼事情收益最大;

2. 技術視野即技術選型能力,是技術戰術層面的問題,在清楚做什麼事情後,需要進一步解決怎麼做的問題,也就是能夠給出合理的技術選型方案:是完全基於開源的方案,還是基於開源二次開發的方案,還是完全自研的方案;
3. 原創力(執行力)是技術落地執行層面的問題,一旦技術設計方案確定後,需要能夠快速Rush完成。
這3點層層遞進,最重要的是先把技術戰略問題思考清楚,然後再進一步解決技術戰術問題,最後是快速落地執行的問題。
工作5年左右的程序員,在原創力(執行力)層面比較有競爭力,往往欠缺技術視野以及業務洞察力。後面2點更加重要,這2點解決的是架構設計哲學問題,是架構師能夠持續擁有競爭力和影響力的立身之道。

舉個場景的例子來詳細說明:一提到分布式鎖問題,大多數人想到的方案是基於Redis的Master-Slave模式來實現。這個實現方案行不行?分布式鎖本質是一個CP需求,基於Redis的實現是一個AP需求,乍一看基於Redis的實現是無法滿足的。脫離業務場景來談架構都是耍流氓。
從技術戰略的需求層面來看,如果分布式鎖在極端情況下獲取鎖的不一致,社交業務場景能夠接受,那麼基於Redis的實現是完全可行的。如果業務是交易場景,分布式鎖在極端情況下獲取鎖的不一致性無法接受,那麼基於Redis的實現方案是不可行的。在鎖強一致性的場景下,需要採取基於CP模型的etcd等方案來實現。

㈩ 每個程序員都會遇到瓶頸期,你知道哪些度過瓶頸期的好辦法

我在工作中也遇到過瓶頸期,根據我的經歷給你說說,我是怎麼度過的!工作中的瓶頸期和減肥中的瓶頸期有一個共性就是,壓力導致大心情不好。

心情的好壞對一個人的狀態影響非常大,心情好的時候加班都是輕松愉快的,心情不好的時候簡直是度秒如年。一般心情不好都是家庭瑣事,人際關系,自我施壓等導致的。這就需要我們解決問題,釋放壓力。我來說說釋放壓力的方法。

1、運動

運動是最有效最直接的方法,有時間和條件就去健身房,沒時間就去小區公園或者學校的操場跑跑步。流汗的過程中,壓力就隨著汗水一並排出。就好比運動前你是一個裝滿沙子的木桶,沙子就是壓力,運動完之後沙子都流走了,身心都會放輕松。

4、親友

與親友分享自己的近況,讓他們開導自己,當你看到這里的時候,不妨找找自己的好朋友,家人傾訴一下工作中的不順,眾人拾柴火焰高,朋友家人給出的意見比你自己苦苦煩惱要好的多。或是約著他們下班以後散散步,偶爾找到兩三天空閑時間出去旅旅遊,要給自己放鬆的機會。

閱讀全文

與程序員怎麼保持動力相關的資料

熱點內容
配音秀app怎麼誦讀 瀏覽:748
sparkcore源碼 瀏覽:98
程序員中年生活 瀏覽:353
讀取加密信息失敗怎麼回事 瀏覽:508
編譯過程之後是預處理嗎 瀏覽:349
安卓是基於什麼做出來 瀏覽:598
視頻字幕提取APP怎麼使用 瀏覽:57
js通過ip地址連接伺服器嗎 瀏覽:846
java數字金額大寫金額 瀏覽:856
人人影視路由器固件編譯 瀏覽:965
照片通訊錄簡訊怎麼從安卓到蘋果 瀏覽:456
邏輯開發編譯環境 瀏覽:670
ce自己編譯 瀏覽:896
javaexe進程 瀏覽:478
電腦wechat是什麼文件夾 瀏覽:956
單片機moc3041 瀏覽:786
at命令串口助手 瀏覽:749
吸血app怎麼關閉 瀏覽:35
雲伺服器地圖不見了怎麼辦 瀏覽:240
mc伺服器應該叫什麼名字 瀏覽:607