回覆列表
  • 1 # 南宮十二少

    線上遇到問題,排查並解決之後。這時候對自己而言應該是進步最大的了。

    因為你待在大公司的話,線上的問題一般很少是邏輯錯誤,而是效能問題,流量問題居多,能在一次線上問題中分析並解決問題,對個人而言會進步很快。

  • 2 # 研發一條狗

    有一個概念,死磕技術在中國99.9%的企業是沒有前途的。瞭解一下行業情況,公司運營等等,從更高一層視角考慮問題,會升職加薪比較快。

  • 3 # 阿斌之夢

    我是一個甲方的ERP程式設計師。公司剛引進ERP系統的時候,大家覺得神一樣的存在,太複雜了。

    上線以後,各種問題層出不窮,專案已經驗收,乙方只要一聽我們提問題,就兩招:1)這個問題不在需求範圍內,要解決需要付費;2)這個問題不在這個版本解決,下個版本可以解決。

    明明是一個小問題,為什麼就解決不了呢?最核心的原因:沒有原始碼,不知道從哪裡下手。ERP說到底,就是資料庫的增刪改查,直到我明白這兩點,ERP的“九字真言”,終於跨過了最前面的三個字。(所謂ERP九字真言,是:先僵化,後固化,再最佳化)。

    我明白的這兩點是:

    1)真正懂ERP邏輯的人,其實在企業內部,不是搞計算機的,而是那幫業務骨幹。ERP內建了最通用,最核心的業務邏輯,這些業務邏輯表現在操作流程和功能介面上,只有業務骨幹,才會真正理解這麼設計的必要性。

    2)程式設計人員只要和業務骨幹結合起來,雖然沒有原始碼,但有辦法看到那些增刪改查程式碼是如何操作資料庫的,這就是SQL Profiler 跟蹤器。

    一旦這二者結合起來,ERP的維護就會變得非常簡單了。畢竟,一個在市面上混了幾十年的ERP產品,穩定性和繼承性是非常好的。然後,各種個性化報表的開發就很簡單了。

    隨著越用越熟,業務+程式設計這個團隊會非常透徹的理解ERP產品,終於有一天。乙方要求增加維護費,我們想了想,不用了,我們自己維護吧。接著,我們把ERP的生產功能剝離出來,自己定製開發了,慢慢的改進,越來越有模樣。這就到了九字真言最後一個階段:最佳化。

    當然,這個過程所以能實現,也要感謝大廠ERP產品的開發平臺支援性和自身的發展邏輯。大廠ERP(包括國外的SAP),都是從財務模組開始的,然後供應鏈,然後生產製造,然後商業智慧。這就決定了每個模組是松耦合的,演化過程中搞了各種介面方式,從硬寫資料庫,到採用xml交換資料,再到COM元件介面,API,乃至於提出整體開發平臺,用開發平臺重寫業務單據。這些資料,基本上在網上都能找到,如果參加大廠組織的幾次開發培訓,更容易上手了。

  • 4 # jinesc

    我編ERP 我覺得 學財務 讓我入門 搞ISO質量體系建設 學學企業管理 進步最大。

    而程式設計技術多麼高明並不是特別重要。

  • 5 # 仁見人愛

    全面理解作業系統、網路、資料結構、演算法、C語言(摻雜一些硬體知識)、數學在計算機中的應用、軟體本質、軟體工程本質。

    但方面會上面知識,比較單一。就如某一段時期,我只會java,眼睛看到的也只是java。就如java網路程式設計,涉及底層網路程式設計。我自修過一本java網路程式設計方面的書。有一次用用底層網路元件調SGIP(聯通簡訊閘道器協議),出現一個問題connection Reset,很長時間沒想明白為什麼?看過的java網路程式設計也找不到答案。如TCP訊息流這概念該怎麼理解,流無邊界,無邊界會怎樣?所有種種引發的一序列問題,如果多TCP/IP理解不到位,不遵循一些規律,的確很難處理。再如java網路底層程式設計有一個選項,可以控制TCP層往應用層投遞的資料閥值,好多小夥伴應該都不知道。網路理解清楚,對高併發系統的一些設計理念順理成章能理解。當然,好處還有很多。很多TCP/IP僅僅是基礎,瞭解一些就行。我對TCP/IP瞭解,包括它通訊的細節,各層協議,各層資料封裝,都完整理解。寫過底層網路程式設計方法技巧。TCP/IP來龍去脈絡瞭解得相對清楚。

    資料結構與演算法,任何程式語言,都已經實現了大部分常用資料結構與演算法。java普通容器類、併發容器類,Collections與Arrays工具類;js陣列物件,物件;C++的STL模板等等,無不與資料結構與演算法相關。不說去寫演算法,瞭解該只是塊最低限度可以正確選擇要使用容器。看容器原始碼至少也少一些障礙。當然精進,可以看看演算法導論,程式設計藝術。如大資料分析,就需要自行設計算法。演算法導論中講的一個例子,最大子陣列問題,重新整理我對演算法設計的認知(至少兩個有效演算法可以解決)。計算機程式設計藝術,難度稍高,有能力可以看。看完怎麼設計一個作業系統可能都會有思路的一本書。

    C語言,為什麼重要?與硬體靠得更近,作業系統API,網路裝置API均是C語言做的。更深入理解作業系統,TCP/IP離不開它。作業系統、TCP/IP理念搞清楚的時候,留了很多疑問,老師也沒講清楚過(聽自學視屏,講課的老師)。如程式究竟怎麼跑起來的?TCP/IP究竟怎麼封裝資料併發送的?答案在UNIX系統高階程式設計與UNIX網路程式設計中,部分涉及通訊原理(我學通訊的,自學,老師講課有講過物理層,能聽懂)。程式執行起來,尤其執行緒執行與編譯器有關,再深也不理解,我類比main函式的執行機制(懂C應該知道C語言的main究竟是怎麼被執行的)。

    C語言涉及到對硬體理解(其實要結合作業系統理解較好)。對IO,多執行緒程式設計,併發程式設計的理解會上一個臺階。如java中說的併發理念,很多我覺得莫名其妙就出來了。如監視器鎖那來的?java IO模型,不理解底層概念莫名其妙出來。事件通知模型,瞭解作業系統的同學,應該悟性得出事件/通知模型,借鑑了作業系統理念。還有java Exception實際上是通知模型。扯遠了,這裡硬體主要設計CPU,記憶體,外部儲存的理解。其中CPU與記憶體與併發併發程式設計息息相關。

    數學與演算法息息相關,演算法導論中提到的演算法分析用到不少數學知識。我最震撼的是,傅立葉變化,積分等高數知識在計算機科學中有應用。以前傻傻認為計算機程式設計不會超過高中數學知識(淺薄)。數學與整個計算機體系設計也息息相關,見計算機程式設計藝術。更何況現在的人工智慧,工業網際網路,大資料數學應用會更廣泛。我最大體會,演算法分析與演算法設計數學是真真切切有用。

    軟體本質是開發出來解決某些問題,重在使用,有些時候必要太在於怎麼組織程式碼,實現功能優先。大道至簡,同時也中和一下我們團隊就是有人把程式碼組織不好,我想跟他們激辯的衝動。

    軟體工程,大多是方法論,主要目的解決軟體快速開發,快速部署,快速互動,迭代互動提高軟體質量,等一些問題。如設計模式、開發工具(比如maven)、部署工具(如docker)、程式碼質量掃描器、程式類、方法、變數命名規範,敏捷開發方法等等。我們團隊沒好的規範,也規範不我來,有時候沒話說。

    以上我說的僅僅是點,稍微帶了點線。如果把以上知識穿成面,當然需要充分理解。會產生1+1>2的效果。

    因為以前規劃架構路線,舉一些相關例子。

    java虛擬機器不好理解吧?用前面知識很泳衣理解。

    微服務的協議,理念不好理解吧,用上面內容來理解也沒那麼難,尤其是分散式鎖。

    瀏覽器的實現原理,不好理解吧,基礎好可以猜8/9不離10。

    nginx高併發配置,上面的知識也可以很好解釋。

    站內很多架構師,我問單機單程序如何實現高併發,號稱阿里PX、騰訊TX不理我。

    我平時寫程式從上面獲益更多,都是小技巧不好說。

    最牛的是,上面基礎搞好,比能連城面(融匯貫通),學新技能速度超快。因為有本質的理解,能不快嗎?看別人寫的元件原始碼也有很大幫助。

    我對比過清華計算機本科、碩士、博士教學計劃中專業課程設定,後續提升離不開上面本質,清華作為我國最牛計算機教學機構,他的教學計劃參考價值很高。

    最後,我的工作以java,java script,html,css,Lotus這些東西為主。計算機知識幾乎全是自學的,有不當或不足之處大家辯證看。

  • 6 # 青城視界

    程式設計師需要終身學習,這應該是程式設計師公認的事實。

    在技術領域中,計算機始終處於一個高速發展階段,新技術更新不斷,作為程式設計師,要始終保持自己技術儲備不斷更新。

    題主說“在做程式設計師的道路上,掌握什麼概念或技術會使自己感覺到自我提升突飛猛進?”,程式設計師的分工不一樣,使用的技術也不一樣,所以不會所有的程式設計師都一致。

    追根溯源程式=演算法+資料結構程式就是一系列有序執行的指令集合。

    程式設計師開發程式,不管用什麼語言都離不開演算法和資料結構,把基礎打好你會發現,不管學什麼語言都能夠很輕鬆的駕馭,所以只有弄懂程式的本質和具有程式設計思維,會讓自己有很大的提升。

  • 7 # lipbw

    我說一點我的感想吧,我是一個c/c++程式設計師。程式設計師的任督二脈=基礎+思想,當這兩點你都有了,那麼只要方案可行,你可以隨心所欲的借別人的輪子或者自己造輪子!

  • 8 # 小九鋅合金

    在程式設計師的道路上,其實你不管掌握的任何關於程式方面的技術,當你能夠自己獨立完成一個專案後,你會突然間覺得自己,這一方面的技術得到提升。都會感覺突飛猛進的。

    當上級要求你一個人完成一個很小的一個專案後,因為專案拿到時,你剛開始還不知道要從何從下手,剛開始都比較糾結的,感覺從任何地方都可以,所以剛開始你進行的專案有點慢,但是專案還是要完成的,你就會一直在考慮如何才能很好的完成這個專案,讓你的上級能夠看到你優秀的一面。但是可能在中間某個地方你可能會遇到問題,也有可能這個專案中間可能會有新的需求。就需要討論解決。當你很好的完成這個專案後,你會覺得自己對知識更多的理解,感覺以後碰到這個類似的專案,肯定很好就能完成了。

  • 9 # 御龍先生正在敲鍵盤

    在很多人眼裡,覺得做程式設計師都很牛,很厲害,其實這是事實。

    題主問掌握了什麼概念或技術使程式設計師的自我提升突飛猛進,怎麼說呢,就我目前而言,我所經歷的可能就是兩個階段吧!

    第一個提升的階段是思維的提升,我在大學裡面學習的是計算機技術與科學專業,大一剛開始的時候,專業課第一門是C語言,老實說當時學得很吃力,因為我的英語不行,看不懂程式碼的意思,上課也就不怎麼聽講了,學了兩個月也寫不出來什麼程式碼,但是有一次看書的時候,靈光一閃,突然找到了寫程式碼的點,從此之後,我的大學專業課那可是槓槓的,學起來如痴如醉,甚至熬夜寫程式碼到凌晨都不覺得累,最後用兩年時間學完了四年的專業課,那麼這個點是什麼呢?這個點就是寫程式碼的思維,按我自己的理解,程式設計其實就是把解決問題的辦法和步驟用程式碼呈現給電腦看,讓電腦按照我給出的辦法和步驟來解決問題。這裡用程式碼來具體說明一下:

    #include <stdio.h>

    int main()

    { //我們的目的是要判斷我們輸入一個年份,它是不是閏年,首先我要知道一個年份它是不是閏年的條件,這裡題主可以自己查詢一下

    int year;

    printf("輸入年份: ");

    scanf("%d",&year);//這裡是我們要把輸入的年份賦值給year這個變數

    if(year%4 == 0) //後面的所有if條件語句都是在做判斷

    {

    if( year%100 == 0)

    {

    // 這裡如果被 400 整數是閏年

    if ( year%400 == 0)

    printf("%d 是閏年", year);

    else printf("%d 不是閏年", year);

    }

    else printf("%d 是閏年", year );

    }

    else printf("%d 不是閏年", year);

    return 0;

    }

    起初,我看到程式碼也是一臉懵,但是在瞭解瞭如何把自己的解決方法和步驟交給電腦來執行或驗證之後,我覺得不管程式碼是幾百行幾千行或者幾萬行,它始終都是一個問題的解決方法,上面這段程式碼其實就是我們把我們自己想到的方法翻譯成程式設計軟體看得懂的語言和邏輯,最後交給電腦來執行,一段小程式就算給解決了。這是程式設計的核心思想,理解掌握這個思想之後,我們就能在程式設計這條路上得到第一次思維的昇華。

    第二階段就是掌握程式設計思想之後,透過做大量的專案,熟悉和學習更多的演算法,瞭解軟體行業,掌握新的技術,當做得足夠多的專案和學習得更多時,我們已經對頂層程式碼的實現不感興趣了,開始往底層探索時,也就是往架構師這塊發展,注意:寫程式碼是程式設計師這個世界裡最沒有難度和挑戰的,因為那是站在巨人的肩膀上幹活,而恰恰和很多行業相反,我們這個行業的底層才是程式世界裡真正大佬雲集的地方,軟體也是站在硬體上的,而要往底層前進,終究還是要接觸硬體的,架構師就是要根據硬體的效能來做軟體或系統。

    總的來說呢,做程式設計師首先掌握程式設計思想,其實也就是擁有解決一個問題的能力——方法和步驟;其次就是積累大量的程式設計和專案經驗,學習新的演算法和技術。

    有這麼一句話:“寫一千個小時成高手,寫一萬小時成大佬”,所有的快速提升都是透過量變達到質變,做程式設計師更沒有捷徑可以走,因為我們只認技術,你技術比我好,那你牛,技術比不上我就別講話。

  • 10 # lmzjh863

    深入到彙編之後 瞭解了編譯原理後 學習了數字訊號處理後 學習了數字通訊之後 每一次都感覺有較大的突破 之後又覺得還有很多需提高

  • 11 # 飛魚在浪嶼

    接觸些大廠成熟業務的後臺,多瞭解行業未來和國外最新的技術發展現狀。還有在你的領域多走得深一點,軟體設計與開發往往觸類旁通。比如說以空間換時間效率(redis當快取減少io讀、hash表桶、隨機讀用陣列而不是連結串列、跳躍表為啥讀效率高,tcp小包的合併傳送)。

  • 12 # 胖子隨感

    最開始的時候是基礎的程式設計的演算法,後來發現是一個工作的流程,最後發現是解決問題的方法。無論程式設計師在什麼行業,最終最值錢的還是能夠替企業解決問題,只有有本事把問題解決的人才是創造最大價值的人才。所以對於初級程式設計師或者剛入門的人來說,不要怕錯,要多幹事兒,因為但凡幹事就可能出錯,但是你不幹事的話,你的本事永遠不會長進

  • 13 # GeekFun

    最大的感悟就是要學會不同階段關注點不一樣。

    剛進入到這個行業的時候肯定是先練基本功加拓展視野。鑽研技術本身,多寫程式碼,理解不同的程式語言的用法,不同資料庫的對比,怎麼做最佳化。然後嘗試理解不同型別的技術。前端,後端,資料庫,快取,伺服器,資料流之類的,以及在自己的日常工作中多嘗試使用這些技術。

    在摸爬滾打了一段時間後,關注點就可能要從技術本身轉向理解需求然後用所掌握的技術或者學習新技術來很好地實現需求。加深自己在某個領域的理解跟耕耘,以及多跟別人交流。你會發現這個階段原來所認為的程式語言其實沒那麼重要了,它們不過是為了實現某些需求的工具而已,而且不用語言之間都有共通的地方 學習起來也沒那麼困難。

    再之後就是架構了,能實現會實現要向怎麼更好地實現以及如何提供更好的方法來適應未來的需要轉變。這個時候系統地理解不同的解決方案如何協同工作就成了重點。經驗很重要了這個時候。而且需要關注新技術的發展。

    再之後就是自己想需求了...

  • 14 # 小程式開發小張

    程式設計師需要學習的新技術太多,經常在更新,固守一種技能也不行,但是學太多也用處不大,選擇自己從業方向根據自己的工作情況來進行學習,並且要掌握某些技術後找個合適的工作然後再工作中不斷晉升,這樣保證收益的情況下學習提升才是最好的!

  • 15 # 一粒釐米

    從事晶片韌體開發將近三年的時間,程式設計主用C/C++語言,偶爾做應用層開發

    從最開始的一無所知,到現在上手開發,中間過程說容易不算容易,但也並非難如上青天 。

    單論程式設計,個人有以下幾個原則性的認知和改變:

    1) 一定要學會模組化的程式設計,程式碼一定要遵循高內聚,低耦合的原則

    這個理論我至今奉若經典,對於程式設計小白來說,剛開始能有這樣的信念,能讓你的程式設計之路順利很多。

    畢竟這是多少前人的經驗總結

    2)好的程式碼不一定極度簡潔,好的程式碼更不是一味炫技

    我想大多數程式設計師剛開始時,一定特別崇尚各種奇淫巧技,筆者當年也不例外。C指標不知道勸退了多少程式猿,但是C的靈魂就是指標,一個簡單的指標能被程式設計者玩出各種花樣。

    好的程式碼應該是自己能看懂,也讓別人能看懂。

    這裡推薦一本書日本前橋和彌寫的《征服C指標》,對指標的講解簡單透徹,值得一看

    3)做一個有原則的程式設計師,對自己的程式碼負責。低階錯誤千萬別犯哦

    最後,願可愛的程式猿們在技術大牛的路上,都能越走越遠

    一起共勉啦!

  • 16 # 程式猿視角

    形式化軟體工程理論,使我擺脫了軟體設計和工程管理的噩夢,使得成功不再靠運氣。我向所有崇尚工匠精神的程式設計師推薦《零缺陷程式設計》和《淨室軟體工程》這兩本書做形式化軟體工程理論的入門教材。工匠精神不是一句口號,而是一套行之有效的方法。

  • 17 # kGavin

    github提交一些開放的原始碼

    貢獻過程中與地球上的其他程式設計師交流

    熟悉linux kernel,注意linux kernel不止是個作業系統核心 它是個生態 生態

  • 18 # new電動車快快來

    matlab中的狀態機(state flow)概念,非常好。在做工控時,用state flow描述幾個狀態、狀態跳轉的條件,可以清晰表達裝置工作流程、以及相應的軟體模組,確保程式清晰有序、不多餘、不缺項、不死迴圈。

  • 19 # 靈魂的力量

    「克服內心恐懼,學習更快速,接受能力更強

    當然必須要具備開發基礎,如計算機語言,資料庫,搭建環境平臺。

    突飛猛進,有個導師,不懂就問,很快就解決問題,沒有導師,找開源學習,基礎好,一看就懂……

  • 20 # 因特理臻

    以前學各種技術,學會了一個就覺得的有點成就,但要說掌握哪個技術就能自我提升突飛猛進,我感覺是掌握了深度學習方法後覺得突飛猛進,迅速掌握了各種深度學習演算法,最後可以用演算法寫程式或者參加比賽,只是這個深度學習花了太多時間,我覺得花了三年才掌握這個技術,因為以前學一門技術只要幾個月或者半年,沒有想到深度學習要花這麼長時間,而且也堅持下來了。這個三年相當於讀一個碩士或者博士了,唯一好處是上班學習能有工資,博士沒有。

  • 中秋節和大豐收的關聯?
  • 趙麗穎的額頭飽滿少女感滿滿,怎樣能讓額頭更好看?