① 普通程序員的工作生活是怎樣的
通常我們進入公司以後,不會是重頭開始一個項目,而是在已有代碼的基礎上進行維護或新功能的開發,所以必須「讀代碼」。
讀有「泛讀」,了解系統架構、功能模塊,對系統有一個大致的認識,各個功能能找到相應代碼實現的位置。
還有「精讀」,通常就是調試了,在fix bug的時候使用。此外還包括審核:一些規范一點的公司,都會有code review,也是精讀,但不用debug。
對於一個成熟的項目來說,讀代碼——而不是寫代碼——可能是最耗時間的工作了。
寫注釋文檔
為了減少「讀代碼」的時間,我們不得不花時間「寫注釋」「寫文檔」——這個程序員最深惡痛絕的工作。所以現在「爛代碼才需要注釋」的聲音變得越來越強,但無論如何,文檔還是要寫的。(注意:要能區分注釋和文檔)
了解需求
好了,終於到了「寫代碼」的時間了。
然而,在動手開始寫代碼之前,你必須花時間「了解需求」。和自己寫個小程序玩玩不同,在公司,你是為別人寫代碼,所以你一定要了解別人究竟想實現什麼功能。通常,這並沒有你想像的那麼簡單,需要反復的溝通。
當然,也有一些團隊和個人,不願意在這上面「浪費時間」,通常他們的下場就是不斷的寫代碼,然後不斷的改代碼,加班加點的做大量的無用功,整個公司怨氣沖天一地雞毛。
② 正在工作的程序員,生活狀態什麼樣
從上圖中我們可以看到,工作年限為 5-10 年成程序員佔了程序員群體的 43.4%,屬於資深程序員。剛參加工作的程序員占總體的 12%,工作 2-4年的程序員占總體的 33.1%,而工作十年以上的程序員占總體的 11.6%。
與去年的數據相比,剛工作的程序員數量顯著減少,工作兩年以上的程序員從73.4%上升到了88%。很大可能是受疫情影響,企業用人需求減少導致的。
在過去幾年與程序員這個群體的深度接觸以及交流中,發現很多程序員都對工作時間過長,導致沒有太多時間提升自己這一現狀頗有微詞。所以此次的問卷調查中,程序員客棧特意增加了關於工作時長以及學習時長的調查。
上圖是關於程序員每周花在工作上的時間,可以看到一個很有意思的現象,就是一共有66.9%的程序員過著理想的朝九晚五一周工作五天的工作生活,只有剩下33.1%的程序員都有不同程度的加班,這與我們日常聽到的程序員這一職業普遍加班嚴重的言論並不相符合。
在此基礎上,更是只有不到十分之一(8.6%)的程序員每周工作時長達到了996,甚至更長的工作時間。
③ 一般的程序員,工作一天平均有多長時間在寫程序
這個就是看個人的工作性質了
也看公司的項目情況
如果公司項目比較多時間比較緊,那麼一天到晚就是在看代碼,寫代碼了,而且很大可能需要加班
如果暫時公司沒有項目,那麼就比較輕松連,空間時間多,可以看看自己想學的知識
如果公司的性質是外包的話,那麼非常不幸就是一直在忙了
另外一般忙的時候都是在項目開始初期和項目要結束的時候,項目中間時間的話不是很緊張
④ 說一說作為一個程序員,作息時間是怎樣的
通常早上9點半左右起床,到公司10點半。早上沒什麼工作效率,上上網,折騰折騰就過去了,中午午休到1點半,幹活到6點,吃過晚飯繼續幹活,通常到9點下班,忙的話會到10點,下午和晚上的工作效率比較高。到家之後上上網,查查資料學習一下,12點半左右睡覺。每個月大概有兩個周六會加班,周日在家休息,有時帶娃出去玩玩。
⑤ 編譯程序大多數時間花在什麼上
編譯程序大多數時間花在目標代碼生成。
編譯程序把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。
它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
編譯程序的基本功能是把源程序(高級語言)翻譯成目標程序。但是,作為一個具有實際應用價值的編譯系統,除了基本功能之外,還應具備語法檢查、調試措施、修改手段、覆蓋處理、目標程序優化、不同語言合用以及人-機聯系等重要功能。
編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。
但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。
⑥ 為什麼程序員每天都要加班
我就是學游戲編程的,程序猿吧,很奇怪的一個職業,自由度低,精力低,時間低的一個職業。
所以奉勸沒有耐心的人就不要學編程了,你承受不了總是改正就不要學編程了,你承受不了日夜加班就不要學編程了,你承受不了英年脫發就不要學編程了。
⑦ 程序員一天都在寫代碼嗎程序員的一天除了敲代碼還有做什麼
程序員一天都在寫代碼嗎?
來自我個人的感嘆:如果能天天寫代碼,該有多幸福啊~
如果程序員的一天都在寫代碼,這就說明了公司的需求明確,老闆的戰略完美,產品經理也不會天天找人撕B,技術Leader已經把框架制定好了,大家都安心編碼,安心做有創造力的工作。在這種情況之下,程序員的成長也是飛快的,心無旁騖的馳騁在代碼王國。
然鵝。人生不如意事常八九。
那八九不如意的時間,大多數程序員要面臨以下問題:
會跟產品經理吵架會對著搜索引擎出來的結果說卧槽,需求不明確,隨意更改,架構頻繁更換,焦頭爛額。
測試頻繁告知你各種千分之幾的無法復現的bug。
各種低效會議,無形中浪費生命。
除了以上這些,可能還有:興奮的寫了半天發現編譯不過。
折騰就是半天,開心的上了線,各種線上bug弄得心跳加快,血壓升高。
日常情況下把每天狀態最好的2-3小時拿來敲代碼就可以搞定一切需求了。
因為其他時間都基本上是用來開會,跟產品經理互懟,然後就是debug整天。有bug必須趕緊找出來,如果今鍵穗凳天沒找出來,明天繼續一整天,如此族宏循環。
所以要提高水平。經常寫bug的人就很忙。或者說,瞎忙。而且代碼寫得太多了還需要花點時間稍微整理一下文檔之類的,免得以後自己都看不懂。有些東西可能也需要花時間重構一下。
但可惜,程序員的工作不是僅僅只有寫代碼。你得了解業務。了解功能需求。要知道代碼是為了讓人使用的,你需要和人打道。
真正用來寫代碼的時間佔全部工作時間的比例其實稿旅並不高,就算是沒有人打擾,也需要花很多時間去設計怎麼寫代碼,或者是花很多時間去讀懂別人的代碼來找到Bug產生的根本原因。
在這個過程中看似面對的是代碼,其實還是在面對人。
程序員並不是一天到晚都在寫代碼的,大部分程序員一般平均每天應該不超過3個小時吧,大部分時候在了解需求、各種開會、找bug、以及學習。大部分時候是在做寫代碼之外的事情,偶爾也會劃水。
總之程序員的工作遠不止寫代碼,花時間學習提高自己,總結沉澱一些東西來提高自己的影響力,都很重要!
最後還有句話是這么說的:栽一棵樹最好的時間是十年前,其次是現在。對於學習編程的小夥伴,如果你想更好地提升你的編程核心能力(內功),在未來成為一名有為的技術人員!筆者這里或許可以幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!
⑧ 初級程序員該如何逆襲
在程序員圈,一直流傳著這樣一個傳說,用發量來判斷程序員的級別,這明顯是種調侃。那麼,中級程序員,相對於初級程序員,有哪些不一樣的特質呢?
總得來說,比較於初級而言,中級程序員在執行層面屬於攻堅力量,他們不僅能獨立完成高檔難度的開發使命,並且在用戶體驗(質量提高)和功能優化(優化效率)都能作更全面的考量。
以下,是小編總結的關於中級程序員七大特點,各位可以對號入座。
(一)善於溝通
程序員內向的居多,喜歡交流的很少,但中級程序員往往能夠克服自己的內新的恐懼心理,多和同事交流。
甚至有管理者認為,程序員應該80%的時間,花在同事的交流上。不僅是部門內的同事,也還包括跨部門溝通,敲代碼的需要經常與產品經理、運營的同事溝通需求。
日本不少跨國公司,甚至有讓程序員去體驗幾個月銷售員的傳統。公司要求,程序員在敲代碼的同時,也要能夠理解一線用戶的需求。
交流對於初級程序員了解技術的發展,也相當有好處:讀讀博客、學學新語言和框架、討論討論話題、看看同行在做什麼。自掃門前雪,很難成為一個優秀的程序員。閉門造車型的程序員終將被時代的潮流所淘汰。
(二)對編程有激情
有些程序員干這一行只是為了掙錢,如果有更好的職業,他們會毫不猶豫的辭掉程序員的工作。
能夠順利晉升為中級程序員的人,往往熱愛編程,喜歡鑽研代碼中的問題,他們感到能指揮電腦來幫助人們和自己解決現實生活中的問題是一種神奇的能力。當遇到問題無法解決時,他們會茶不思、飯不想,無法入睡。
每個人都有心理上的舒適區,但是中級程序員,會不斷地突破自己心理上的舒適區。
他們很樂於經常去研究沒有接觸過的代碼,也正因為這樣,成長速度快的中級程序員會越來越熟悉不同的代碼結構和設計模式。
(三)精通代碼調試
幾乎所有的程序員寫代碼都不是一遍就能寫好的。精通代碼調試 ( debug )很多人在寫代碼的過程中,經常會有的一個問題就是:為什麼我寫出來的代碼不能運行?為什麼運行的結果不是我想要的?
中級程序員非常快的就明白自己代碼的問題可能是什麼。代碼調試是一個很重要的能力,但是偏偏學校里不教,面試的時候考官也不經常提及。那麼怎麼去調試代碼呢?
代碼調試是有一套方法論的。最簡單的就是在代碼里輸出日誌來判斷,復雜一點則需要去接觸一些高級的工具,或者直接帶有 Debug 功能的編輯器。
(四)主人翁精神
部分初級程序員剛入行,可能還沒有進入狀態,往往認為自己是打工者,以打工者的身份和心態工作。
中級程序員卻會把自己當成企業的主人,他們知道企業的利益和自己休戚相關。
成熟的程序員明白一點,作為一名優秀的企業員工,自己是生產者而非消費者。他們心中一直想得是自己能夠為公司,為顧客創造什麼價值,而不僅僅只想著待遇。
(五)工具型思維
中級程序員知道如何能更高效的完成任務,如何更能有效的解決問題。其原因是工具型思維,如同荀子所言,「君子生非異也,善假於物也。」
Facebook 前技術總監 Bobby Johnson 說,高效率的程序員都把時間花在製作工具上。很多人也認為工具是很重要的,但是他們並沒有花時間去製作、整合自己的工具。但是,Jonson 團隊最出色的員工耗費了他們 1/3 的時間在工具製作上,這些工具可以用來發布代碼,監控系統,以及能讓他們花更少的時間去做更多事情。
中級程序員遇到問題時,不鑽牛角尖,善於利用外部工具解決自己的問題,特別是能熟練應用搜索引擎。
(六)刻意練習迭代速度
魔鬼在細節上,如果一個程序員想要提高自己的工作效率,就需要他能夠不斷地在細節方面,進行微創新,提高效率。
舉一個例子,假設一個初級程序員,每次要花 12 秒鍾去搜索某個函數是在哪裡定義的。如果,他每天做這個動作 60 次,就要花 12 分鍾去搜索函數定義。
中級程序員會選擇用一個好一點的編輯器,每次找到函數定義只要 2 秒鍾,那麼他每天將節約 10 分鍾,每年節約 40 個小時。如果能夠找到 3 個這樣的場景去優化一下,那麼對於中級程序員來說,每年可以節約一個月的時間。
(七)系統學習
學習是要有方法的,尤其是在職場中,程序員的自我學習要符合兩點要求:一是有結果;二是高效。因此,系統性學習,非常重要。
高級程序員系統學習指南如下:
第一步,源碼分析。看看大牛是如何寫代碼的,提升技術審美,提升核心競爭力。
第二步,工程化。工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具,提升開發效率和團隊協作效率,讓自己有更多的時間來思考。
第三步,分布式。從深度到廣度的完善自己的知識體系,准備迎接高並發大數據的挑戰
第四步,微服務。繞微服務的通用模式,學習spring Cloud的常見用法及原理,讓微服務的開發更加方便 快捷,讓微服務應用更加穩定 可用。
第五步,性能優化。從JVM底層原理到內存優化 再到各個中間件的性能調優,做最科學和最嚴謹的性能調優。
第六步,並發編程。深入了解底層原理,不只是做一個開發者。
第七步,積極參加大牛的分享。
(八)總結
可以理解,對於初入職場的程序員來說,他們在內心也知道學習的重要性,但因為沒有時間,被老闆的需求給填滿,沒有精力去提升自我。
然而,根據人類的學習曲線來說,任何一門新的技藝,都是一條對數曲線。其分為兩個階段:緩慢期和高速發展期,即初期很慢,後期進展迅速。
如果,能夠讓程序員在剛進入職場的時候,便擺脫初級程序員的桎梏,直接擁有中級程序員的實力,是不是就能跨越學習曲線的緩慢期呢。
知名IT教育機構傳智播客已開通了中級程序員課程,發布了全新的項目,想學習的小夥伴抓緊