⑴ 我是一個碼農,求高效學習方法
首先,明確自己的方向,一定要具體。比如當年俞敏洪要做中國背單詞的前100名。
其次,設立現實的目標,在一定時間達成什麼樣的結果。
最後,才是具體的工具和方法。
比如參考類似經歷的人的成長路徑,明確自己已有的知識基礎和所欠缺的部分,通過閱讀、培訓、實踐等方式補足。在這個過程中,更重要的是掌握學習的方法,才能舉一反三,可以參考KMC高效學習方法,它是在互聯網環境下,對學習的重新思考,尤其對填鴨式教育下成長起來的人,進行反思。
⑵ 程序員該如何規劃自己的人生
其實大大小小的文章討論程序員的人生規劃不計其數。本人還是堅持談談個人對於程序員日後規劃的看法,也是本人做事的一種風格跟對人生的態度吧。希望能給大家有點幫助。首先我們慶幸的是我們是軟體行業的一員,我們作為程序員從最基礎的「農民工」開始的,從反反復復的代碼中成長起來。我們要為我們的職業感到驕傲才對,他賦予了我們善於動腦的習慣,程序員每天要應對的問題多種多樣,我們要快速的思考,不知不覺我們鍛煉出了思考的習慣。[當思考成為習慣,成功將隨之而至]思考是前進的本質,我們在當初能進入程序員行業,就說明我們還是喜歡挑戰的。但是話說回來,程序員的最終是需要歸宿的,我們不可能一輩子這樣處於「基層」。所以我們需要思考,我們以後的歸宿在哪裡,等過了三十歲,我們的本錢是什麼。可能你會說我有的是編程的經驗,是項目經驗,我框架寫的很好。技術就好比水,「可載舟亦可覆舟」。當我們沉浸在技術的水潭裡,可能無法自拔。模式、框架等等太多了,我們是學不完的。多年的項目經驗固然是我們的核心競爭力,但是這樣的競爭力似乎顯的有點「滄桑」,已沒有當年的激情和霸氣。僅靠那些辛辛苦苦的血汗「架構」,已不能滿足我們所付出的回報。我們基本上都是來自小城市,到大城市上班工作,我們買不起房子。從二十齣頭就出來打拚,到了三十歲我想都該回家了;這短短的近十年的時間,對我們程序員來說真的很重要,我們不要企圖一步登天,我們需要慢慢的學習。學習做人、學習技術、學習與人交流、學習公司的運行原理、學習盈利模式、學習的東西太多。我們要抓緊這短短的時間好好學習,不僅要學技術,我們還需要學習更多的大智慧、大戰略。[沒有遠慮,必有近憂]所以我們程序員需要做長遠打算,在學習技術的過程中,我們更多接觸的是公司的業務。業務驅動公司日常運轉,我們應該善於總結一個公司是如何運轉的,包括管理、資金、營銷、廣告等等。我們是程序員,我們的資本是什麼,相比大家都知道,我們有技術我們有項目經驗。不錯,我們是有這些,但是我們不能總是停留在代碼的層次上,我們需要有產品的理念,代碼不值錢,產品值錢。在不斷的開發過程中,我們需要將自己提升到一個高度,看產品不是看代碼。這樣的理念對於日後的創業尤其重要。下面是本人抽象出來的人生規劃圖(程序員職業病改不了,喜歡分析):1。我大概將程序員的整個發展周期進行了基本四項的抽象。一:自身修養俗話說的好,先學會做人在學會做事。這是我們做人的根本,任何事情均是建立在與人交往上的。如果我們在三十歲之前還沒有改變自己身上的缺點,沒有讓自己進入一個備戰狀態,還是整天渾渾噩噩,那就真的太遲了。這是縱向分析,所有的東西離不了它,我們日常需要注意了。二:技術的學習這是我們天天都在做的,但是技術這個東西變化太快。所以我們必須抓住核心的東西,以不變應萬變。我們是.NET程序員,那麼我需要抓住框架本身的原理,C#語言的原理,任何新東西都是建立在這些基礎上的。就算哪天學起來也很快。如果有時間的話,可以學習一些底層知識。我們來看對技術的抽象圖:2。技術是我們的核心競爭力,我們必須話大功夫去學習。由於以後自主創業的可能性比較大,所以多學點技術不壞。三:榮譽,提高自己的身份其實這種身份不是貶義詞,而是我們的知名度,在技術的領域里,我們需要有一幫自己玩的好的朋友。比如一些技術的圈子如:MVP圈子,程序員俱樂部等等;在靠自己去跟人打交道的時候,往往真的很看重個人的榮譽,所以我們可以參加一些國內的或者國際的一些榮譽考試,MVP、Oracle、Java等等;證書在手還是有好處的。3.榮譽可以根據個人喜好自己去爭取努力。需要有一定含金量的證書,能證明自身能力的證書才重要。四:三十而立的准備這是至關重要,十年的時間,我們好好總結好好學習對於我們後期的創業也好,幹嘛都好,不只是一個簡簡單單的程序員了。我們有產品的理念,我們有與人交往的技巧等等。4。總結:這樣全面的學習,等我們到了三十歲。那就全身是寶,那個時候再做什麼決定可能60%意味著成功。
⑶ 如何成為一個牛逼的程序員
興趣
興趣是最好的老師
興趣對於牛逼的程序員來說,是非常重要的;
對於沒有興趣的人,代碼的世界往往是非常枯燥無味的,想要成功一名牛逼的程序員,毫無疑問需要投入大量的時間進行理論學習、代碼實操;
而如果你可以一直強迫自己做自己毫無興趣的事,且效率仍然很高,那請忽略這一點,你擁有成為任何一個領域大佬的潛質。
如何保持與維護興趣?答案就在下文的Peak-End Rule峰終定律中。
峰終定律
峰終定律是指如果在一段體驗的高峰和結尾,體驗是愉悅的,那麼對整個體驗的感受就是愉悅的。
我們在學習中總是會遇到很多「難啃的骨頭」,
我們又如何能在被這些困難阻攔之後,不磨滅對學習的熱情?
拿我自己舉例,我總是會在學習遇到難題或者是一天學習生活要結束的時候,到Leetcode上做一題我一眼能知道思路的演算法題,這可以讓我感覺到一天下來的學習都是快樂的,不至於磨滅對學習的激情。
所以大家可以在學習的過程中,穿插著學習自己最感興趣的部分;
在學習的最後時刻,千萬不要因為學習的困難而草草結束,一定再加一段自己最喜歡的部分。這樣我們就可以欺騙到自己大腦🧠了。
擁有計算思維
學會跟計算機一樣去思考
什麼是計算思維?
其實很多框架,工具,設計的原理,其實其思路不過就是我們身邊的一件一件小事的抽象應用。
應該多站在設計者的角度看待一個框架,一個設計,這樣你就不僅僅是一個工具的使用者,慢慢地也就擁有了和設計者一樣的思維。
將困難的問題簡單化,我覺得這是一個牛逼的程序員應該具備且熟練應用的能力。
當你一邊看書一邊聽歌,這就是並行處理。
比如:有一杯橙汁A和一杯蘋果汁B,如何把兩個杯子里的液體交換一下呢?我們可以用另一個空杯C,將橙汁A倒進空杯C,將蘋果汁倒進A,最後將C杯里的橙汁,倒進B杯中。就完成了。這就是題目中的a,b中的數值交換,c=a;a=b;b=c;藉助c 完成了兩個數據的交換。這是計算思維中的數據交換。
「古典兔子」問題:有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第一個月有一對剛出生的小兔子,問第n個月有多少... 這是計算思維中的遞歸方法。
當你把你明天需要帶的東西放進背包;這就是預置和緩存。
當你的東西丟了,你沿走過的路回尋;這就是回溯。
為什麼停電時你的電話仍然可用?這是失敗的無關性和設計的冗餘性。
如何去鍛煉?
沒有人天生就有編程思路,編程思路是經過一定訓練後,養成的。
學會獨立思考
這一點是非常重要的,如果當你一遇到問題就尋求他人的幫助,那自己又如何有機會去訓練自己的思維呢?
面向搜索引擎編程
這一項貌似與上一項有矛盾,其實不然,待我分析給你聽:
我們平時遇到的編程問題95%其實都是別人已經遇到過的問題了,且一般網上已經會有較為詳細的解決方案與具體的原因。
而想要通過搜索引擎編程找到答案,則就必須運用到將復雜問題簡單化的思維才能較好地描述自己的問題;
在這些回答中,我們又要進行不斷篩選,哪些方案是不可行的,而這個過程,我們又必須進一步地對這個問題的模型與其底層原理進行深挖。這就達到了鍛煉思維目的。
學會舉一反三
將新的問題轉化為舊的問題。
使用之前的解決問題的模版解決現有問題;
之前在某公司實習的時候,領導讓我設計一個高效且穩定的日誌記錄。
我就借用了Redis的持久化方式中的aof與rdb思想,
實時地記錄每一條日誌,保證日誌記錄的穩定;
再在空閑的時間,匯聚、整合過去的日誌信息,以達到高效讀取的目的。
付出時間與精力!
沒有付出就沒有收獲。
付出時間與精力
精力就像種子,想要在哪裡開花結果,就把他們撒在哪裡。
沒有真正的「天才少年」
其實每個被稱為「天才」、「大佬」的人,背後的付出的精力通常都是常人的幾倍。
所以,不要再抱怨為什麼自己這么弱了,行動起來,把游戲和抖音卸載了吧。
提高效率的方法
提高效率是非常有必要的,大家都不喜歡做費力不討好的事,這里推薦幾個我試過的且收益不錯的用於提高效率的學習方法。
番茄時鍾
將時間細粒度化;
強制自己保持一段時間的高度專注,然後再進行適當的休息,會讓自己進入更加投入的狀態,效率會更加地高效。
這個方法,適合剛進入學習階段的人使用,在專注力,自律性得到一定的鍛煉之後,往往就能形成自己的生物鍾,能夠很好地控制自己的專注力了。
費曼學習法
這是我用過收益最高的學習法,沒有之一!
費曼學習法的核心就是:將復雜的問題簡單化。
假設你身邊有一個8歲的小孩,你需要將你學的知識教授給他,且詞彙量和注意力剛好能夠理解基本概念和關系。
這時你就必須將你學的「高大上」的東西,將其類比成我們生活中常見的事物,用通俗易懂的語言讓他能夠理解。
這同時就在鍛煉我們將復雜的問題簡單化的能力,我們不得不去重新理清整個知識的脈絡體系,從而達到一個查缺補漏的目的。
但是其實並沒有人無聊到願意來聽你對這些知識的大白話解釋(還不如刷抖音快樂),所以你只能想像你真的在對一個小孩子教授這些知識。
或者用寫博客、畫腦圖的方式,將這些內容記錄下來。
想像著有人想要了解這部分知識,而又剛好看到了你的博客或腦圖,你該如何詳細地講述給他們聽。
建議大家在學習一部分知識之後都能夠寫篇博客、畫幅腦圖來理清知識的脈絡關系。既可以讓自己更好地將知識體系整理吸收,也可以讓自己更加直觀地感受到自己在這一段時間的學習中的確是有收獲的,增加了自己的成就感,達成良性循環♻️。
自我相信
當然這里的自信不是說盲目的自信,而是在擁有一定的基礎之後,敢於跳出自己的舒適區。
心理學認為人對於外部世界的認識可以分為三個區域:舒適區(comfort zone) ,學習區(learning zone),和恐慌區(panic zone)。
比如說我們看一本書,如果這本書所說的內容都是我們所熟悉的,完全符合我們已有的世界觀和人生觀,這本書就在我們的舒適區內。
但如果這本書說的內容與我們原有的世界觀和人生觀不符,但是我們思考之後仍然能夠理解接受,那麼這本書就在我們的學習區內。
如果這本書我們根本就理解不了,那麼就是在恐慌區。
只有在「學習區」內做事,人才會進步。
絕大多數人工作以後乾的事情都是他的舒適區內的某種意義上的重復勞動,這怎麼能進步呢?
隨著年齡的增長,一個人獲得挑戰自我的機會會越來越少。
這往往並不是年齡歧視,而更多的是市場合理調配的必然結果。只有那些有特殊機遇的人才能不斷嘗試新的生活。
所以我們需要怎麼做?
辦法無非就是盡量呆在自己的「學習區」里,並且隨時對「舒適區」保持警覺。
⑷ 怎樣做一名高效率程序員
很多人問我,你怎麼效率那麼高,工作很忙,又要帶娃,還寫博客,還有時間運動。今天就寫寫這個話題:程序員如何提高工作效率
保持高工作效率,我覺得主要有一下4個方面,希望能對大家有幫助。
集中目標
工作列表
不論是開發還是設計,還是其他職業,工作列表都很重要,工作目標很明確。工作的時候才能格外專注,才不會走神。
用自己最熟悉的工具(我用Evernote),把待辦工作列表(今天要做什麼)記錄下來,很重要的一點是記錄分解後的小目標(分解任務也是一個很重要的能力)。同時也保持工作中產生的新的問題(任務),經常性地調整當前工作任務列表,根據重要性對這些任務進行劃分,經常想著那些最重要的問題。
專注目標
專注目標不是那麼容易做到的,需要學會分離與當前無關的任務/問題,工作中經常會碰到的問題可以首先尋找簡單可用可靠的方案,並將心中的疑慮記錄下來,集中成一個列表,工作之外翻翻書,系統思考和學習,而不會因為這個問題而叉開思路對相關的內容研究一番。總之,專注當前的任務,把新問題記錄下來,回頭再專心攻克。
學會避繁就簡,在基本功的增強後,會發現很多問題可以簡單閱讀或查找文檔,或瀏覽問題相關的庫的源碼解決;
學會簡化問題
無論是在廣義的工作方法/工作態度上,還是在針對具體問題上,很重要的一個個人能力就是化繁為簡了。化繁為簡是所有工作方法/軟體設計的核心。將那些可以砍掉的工作砍掉,做到盡可能地簡單。
從工作方法和態度上來講,真正需要去做的工作才值得去做,大力砍掉那些不應該在當前工作中處理的事情。例如不必要的優化,不必要的擴展性,不必要的性能,不必要的功能,可以不要的技術,不必要的流程,不必要的文檔,統統砍掉,一切可以沒有的全都不能有。
工作中也可能遇到非關鍵的難題,通常繞過它們,使用更簡單的方案就是了。糾纏於這些不重要的難題,最容易浪費時間。
從設計/實現來講,最好的方案就是最簡單直接、一眼就能看懂的方案。而且通常最簡單直接的方式,通常性能也最好。
基本功
基本功的內容十分復雜。
第一項基本功是對整個計算機體系的理解,對操作系統/虛擬機/資料庫本質的理解,對語言基礎類和庫的理解,這些是核心基本功。
第二項基本功是學習能力。通過快速閱讀核心文檔理解核心思想,然後其他的東西總是能從文檔中查到就行。細枝末節的東西,即學即用,學過就忘可也。
第三項基本功是文檔、代碼、資料的搜索和收集,技術問題建議大家用Google搜索,有意識的整理出自己的代碼庫。
工具
選擇工具核心標准,就是簡單樸素可信賴,如果一個工具出幾次詭異現象,那就乾脆丟掉它。
熟悉工具,實際上我們工作中,就是和各種各樣工具打交道,各種IDE,編輯器,版本管理工具,命令行終端,TODO工具等等。要想在工作中如行雲流水,一定要熟悉工具,包括工具快捷鍵,命令,原理等等。
寫自己工具,很多時候,我們需要重復的做一件事情,當你做第2遍,第3遍的時候,就應該想一想,能不能自動化,很多簡單的幾句shell就可以搞定,麻煩的一點的,可以先記錄下來。比如,我就寫了非常多的腳本:一個命令反編譯APK並查看源碼、提取當前版本號打git tag並提交等等。很多時候幾分鍾到幾十分鍾的事情可以壓縮到幾秒鍾完成,也避免了對工作的打斷。
⑸ 如何規劃自己的程序員人生
每個人的人生中20歲到30歲這段時間,是在痛苦中摸索的時間,而且這段時間還有一個很奇特的現象,就是雖然是痛苦的但是大多數人還是有很多的快樂的事情來沖淡這種痛苦。孔子曾經給人的一生每個階段一個名稱二十弱冠、三十而立、四十不惑、五十知天命、六十花甲、七十古來希。20~30歲就處在弱冠這個時期,這時人最初嘗試酸甜苦辣的時期,因為在此之前的我們都好像是生活在伊甸園里。
這個時期我們剛剛成年,很多的思想都非常的不成熟,因此對於自己的了解也就少之又少。尤其是在大學剛剛畢業這個時期,十五六年的教育讓我們學到了一堆的理論,可是卻沒有學會任何一項關於如何適應社會,如何真正的了解自己的技能,所以在網上看到的大多數想尋求幫助的人以這個年齡段的人最多。
我在這個時期也是這樣,心比天高,眼比手高,目光短淺,只知道技術,所以工作中得罪了很多的人。在不斷的跳槽之後,我發現了一個問題——不管我的技術有多高,我周圍的人並不會因為我技術好而對我有任何的好感,反而技術好還有可能得罪到某些人。我的事業也不會真正的因為技術高而得到質的改善。而且我感覺如果一個人的人品以及素質不夠好的話,其技術也不會有多好。
到了如今,我已經進入而立之年,回頭看看發現了一個很有意思的規律。這個規律可以從我枕邊所放的書在這10年中的變化體現出一些事情。從開始身邊的書大多是什麼什麼精通、什麼什麼快速入門、什麼什麼寶典之類的厚重的書。然後逐漸變成暢銷的經典書籍,然後到了現在我身邊的技術書籍已經很少了,取而代之的變成了諸如《程序開發心理學》《人性的弱點》《道德經》之類的了。我到底怎麼了?
仔細分析一下,才知道,我已經開始對我的人品&人格有所考慮了。因為我感覺,我的技術已經很難提高的一個主要的原因就是我對於人生&自己了解的太少了。所以導致我在寫程序或者做設計的時候不能將技術發揮到更高的水平上。有一句話——「程序人生」,這句話隨著我的年齡的增長對其的理解也在不斷的改變。現在我感覺寫程序就好像是寫人生,一個人有什麼缺點,他的程序就會有一些相應的與其他程序員不同的缺點,而且不管怎麼學習和讀書都無法糾正。但是在我真正的從性格上改變了某些不好的東西後,才方發現這些錯誤以在逐漸的減少。
當我開始真正的理解了編程該如何做的時候,我也開始發現我的知識是多麼的貧乏。而且這時的我也不會去再問我的前途該如何規劃,某個技術是不是會落後之類的問題了。因為我已經找到了我該找到的東西。
上面的這段話,我想很多初如行的人會不理解。沒關系,這些話就算是說給10年前的我聽,我也不會理解的,而且還可能會反駁。我只是想說出我濃縮版的思想歷程,讓看到的年輕人知道,將來你也可能變成這樣。
至於上面這個問題的所問的程序員的人生該如何規劃,我的想法就是在有能力的情況下多多的深入技術——但不能太雜。在有條件的情況下多多的讀一些非技術性的書籍以豐富我們的知識面,凈化我們的心靈。只有這樣你才能創造出設計精良甚至完美的軟體。如果大家有心的話,可以看看那些歷史上的設計大師或者是科學家,這些人雖然可能是建築大師、物理大師、數學大師,可是他們有個共通的地方,那就是他們並不單純的在某個主要的領域是專家,他們大多數都還是一個哲學家、思想家。這是偶然嗎?明顯的不是!在積累了這些該有的知識之後,你就會發現不再迷茫,因為你已經了解了自己,知道自己從事什麼是適合的了。這樣你就會更加專著於你所選擇的東西。逐漸的變成了一個專家。等你到了專家的級別我想也不會在為人生的規劃有所困擾了。因為每個人都有屬於自己的規劃,而且每個的規劃都是不同的。
20~30歲是痛苦的發現自己的階段,在這個階段要充分的了解自己,根據這些了解找到一個適合自己的行業。另外就是要為而立之年准備足夠的知識,因為到了30歲以後我們真正的鑽研技術的時間就會逐漸變少,取而代之的是與人打交道。而與人打交道的看家法寶就是你的人品 要好。這也就是說為什麼要三十而立,立的並不是你的事業,其實是你的德、你的人品。
要做事,先做人!!
(抱歉,我的口氣有點說教的味道,真的不好意思!我只是想努力的表達出自己想說的東西。)
⑹ 如何提高碼農產量
一轉眼務農6年了,呆過大公司也去過小作坊,碼農的人生除了摳腚還是摳腚。在所有呆過的公司里,感覺項目沒有不延期的,真的是因為自己不努力嗎?也沒有呀!上班不怎麼聊QQ回家也很少看動作片,還搞過幾次通宵擼碼的。
以前總感覺是項目經理把工時估少了,後來自己也做過項目管理,按照以往的經歷估工時,做到最後還是會有些延期,要不就是加班拚命趕。我發現在項目中總是會遇到一些這樣那樣的問題,比如:客戶需求變了,基礎數據導入耗時太長,開發人員水平不高,以往的項目沒作積累,每次都是從頭開發... ...
感覺在開發過程中總是做一些重復的工作,比如許可權的控制,其實大部分系統都可以通用;還有數據導入,最開始的時候我真的是傻到一個個模塊的去寫,復制、粘貼、修改,還經常有欄位對錯了;還有數據介面,系統做好以後要花好長時間去做數據對接... ...
在此基礎上,我感覺到要提高開發效率一套高效的開發框架是極為重要的。加之MVC技術、Jquery技術大行其道我把這些技術也用到了自己的框架中,力求新的框架使今後的開發變得更加高效,達到事功倍的效果。
1、前端實現
以前我用過一段時間的ext感覺這個前端框架比較臃腫,載入速度慢,而且商用是收費的,所以沒有考慮,後來考慮過easyui,也需要收費,而且感覺也不是特別靈活,所以後來就直接用Jquery來實現前端,用iframe的方式實現多窗體,自己再把樣式調整得好看一些整個下來感覺一點都不比其它前端框架差,而且可以省去版權費用,降低了總體成本,我實現的前端界面效果如下:
2、通用模塊
在絕大部分系統中,都會用到許可權管理、基礎數據\業務數據導入導出、單據編碼、郵件發送等功能,所以這一塊框架上也是下了功夫,把這些功能做得很靈活,配置一下在任何一個系統都可以使用。
本答案來自於互聯網,僅供參考學習作用
如果您對我的回答有不滿意的地方,還請您繼續追問;
答題不易,互相理解,互相幫助!
⑺ 如何成為一名程序員
成為程序員的具體步驟:
第一步:
掌握一種編程語言。學習任意一種主流的編程語言,例如C++語言。熟練掌握一種語言的語法和基本的編程技巧。
學習時間:
3個月左右
注意事項:
編程語言和編程工具是兩回事情,編程語言是指C++、Basic、Object Pascal等。程序設計語言,它們是像漢語、英語一樣的抽象的語法規則,編程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代碼編輯器、程序編譯器 在內的集成化、可視化的軟體開發工具。C++源程序可以在Visual C++ 6.0里編寫,也可以在記事本里編寫,而同一個C++源程序可以用Visual C++ 6.0編譯、執行,也可以用C++ Builder 5.0
編譯、執行,所以: C++ 不等於 Visual C++ 6.0。
第二步:
掌握一種編程工具,學習任意一種主流的編程工具。注意編程工具要和第一階段學習的編程語言一致,例如你學習的編程語言是C++,那麼編程工具要選Visual C++ 6.0或者C++ Builder 5.0。熟練掌握這種編程工具基本用法,例如:菜單、組件、程序跟蹤調試、編寫Windows程序等。
學習時間:
3個月左右
注意事項:
這個階段側重編程工具的使用,同時進一步熟習編程語言,最後達到能熟練編寫各種基本的Windows程序。
第三步:
掌握「演算法與數據結構」這門課程,推薦許卓群的《數據結構》,熟練掌握各種常用的演算法與數據結構。
學習時間:
4個月左右
注意事項:
這是一門不可或缺的軟體開發課程,曾經有一本經典計算機專業書籍叫做《數據結構+演算法=程序》,這說明了數據結構和演算法的重要性。它能幫我們建立良好的程序分析與設計能力。
第四步:
實現一個模擬的小型軟體項目,掌握軟體項目的基本開發過程和方法。
學習時間:
4個月左右
注意事項:
自己完成一個模擬的小型軟體項目,強烈推薦做一個MIS(管理信息系統)軟體,參考用書推「中小型信息管理系統開發實例系列叢書」,人民郵電出版社,它的例子詳實有效, 以它為基礎再加以擴展,就可以做出實用的MIS軟體來。