導航:首頁 > 程序命令 > 程序員編碼定律

程序員編碼定律

發布時間:2025-05-22 12:39:54

1. 程序員也難逃的二八定律,成為頂級程序員真的有那麼難嗎

程序員也是分為等級的,因為每個人的實力水平不同,成為頂級的程序員肯定是要付出很多努力的,有時候寫程序就可以看得出來,有的程序員寫出來的程序經常會有漏洞,導致系統運行不穩定,但是有的程序員人家寫的程序不但佔用的內存少,沒有漏洞,而且也運行流暢,這就是頂級程序員的最基本工作,因為大部分的程序員根本就沒有自己寫的程序,都是復制粘貼別人的,所以說現在的程序員就是搬運工而已。

生活中的程序員看著很辛苦,實際那是他們把他當作掙錢的工具,當你的內心太急功近利的時候就會感到疲憊,也做不出太大成果的事情,因為你的心思沒有在開發程序上下功夫,總是漂浮不定的,所以說二八定律永遠的存在。

2. 電腦怎麼編程序程序員如何在電腦上編程的

❶ 電腦程序編制怎麼弄啊

編寫程序需要用軟體,一般的軟體有VB,還有C語言等很多類型。如果你只是編寫一些簡單的啟動程序,你可以打開記事本輸入代碼,然後保存,再修改一下文件的格式就可以了,可以改成BAT等。不如說移動磁碟里的autorun.inf
文件就是一個簡單的程序文件,你可以用記事本
打卡
裡面的文件看看

❷ 電腦怎麼寫程序

以在 Windows 操作系統下,編寫一個 C 語言源程序為例,首先必須要在電腦上安裝一個 C語言編譯器(例如:Microsoft Visual Studio C++),然後進入該編譯環境,在該環境中編寫 C 語言源程序、編譯 C 語言源程序、調試該程序、直到最後生成可執行的二進制文件(*.EXE)。

❸ 電腦怎麼編寫簡單程序

這是最簡單的了~~

❹ 程序員如何在電腦上編程的

說到如何在電腦上編程。首先需要知道下面這個問題的答案:「程序到底是什麼?」計算機程序是指令集,它告訴計算機如何執行特殊的任務。VB~VC~VF~C~C#~C++~java~.NET~這些都是編程 ASP~CGI~PHP~JSP這些是WEB編程。。 雖然都是編程,但編出來的程序可是不一樣的。 目標是什麼?開發?創業?還是去公司上班?還是業余愛好? 如果想業余編小程序,推薦VB~VC~容易上手。簡單。也蠻強大。 如果想學好了去企業上班,推薦C++~~~.net~~~JAVA之類的大型項目開發。 如果想做網站,就學ASP~CGI~PHP~JSP,這4個就JSP最最最難,先學ASP。現在是人工智慧時代,國家出台了很多政策鼓勵人工智慧發展,無人超市、無人駕駛、無人銀行、AI人臉識別層出不窮,我覺得以後人工智慧滲透的領域肯定也會越來越多,所以我推薦讓孩子學習python語言,python語言適合做人工智慧的開發。簡單容易上手,學好了以後對學習、出國留學、就業什麼的也會有好處。首先,工程師根據你的需求給你一個合適的方案,這個方案包括硬體搭建、軟體架構。 然後,在你滿意的方案下為你選用設備 最後,程序員按照你的要求編寫軟體 各種設備有自己的命令解釋器,程序員寫出來的軟體是可以按照機器能解讀的編碼編寫的,這些不需要用戶知道,用戶只要知道怎麼使用,怎麼維護就可以了,如果知道的更多,那就可以成了開發者

❺ 電腦怎麼打開編程

編輯程序讓電腦執行的過程就叫編程。
編程語言很多,具有代表性的計算機語言有Java,BASICC,C++,VB,VF,SQL,網頁編程JSP,ASP,PHP。Java是目前應用最廣泛的編程語言之一,大學中則常常以C語言作為編程的入門語言。
很多軟體都可以編程,主要有eclipse,MicrosoftVisualStudio,MicrosoftVisualBasic,MicrosoftSQLServer等等。

❻ 怎麼去報電腦編程序

題主是想問怎麼去編寫電腦程序吧?編寫程序簡單步驟如下:
1、桌面空白處右擊2,新建3,文本文檔,4,新建文本文檔的圖標。
2、修改txt文件的擴展名,右鍵-重命名。將.txt改為.vbs,修改成.vbs後看到圖標變了,這就說明你的系統能夠識別他成一個vbs腳本程序。
3、根據需要在裡面寫代碼了,右鍵-編輯文件,直接就可以像編寫文本文件一樣在裡面寫代碼了。
4、然後在裡面輸入一句彈出簡單對話框的代碼。
5、之後關閉文件並且保存,可以在編輯的時候直接按CTRL+S保存再關閉,然後去直接雙擊剛才新建的文件,就會彈出一個對話框來了。這只是系統自帶的一個腳本語言。
6、這只是系統只帶的一個腳本語言,如果要編一些其他的程序就需要裝對應的代碼編輯器了。例如C#就得裝visualstudio,java的、、eclipse等等。

❼ 筆記本電腦如何編程

筆記本電腦要想編程,首先要先選擇編程語言,然後安裝上編程語言工具軟體就可以了,如果沒有學過編程,可以用中文的"易語言"。

❽ 如何在電腦編寫一個小程序,輸出字元串

在電腦編寫一個小程序,輸出字元串,就找相應的軟體開發工具。
例如:在這里我們藉助的軟體是Visual C++6、0。打開軟體,先新建一個工程,在新建一個C++源文件,這些你聽起來可能有點陌生,不要擔心,你只需要按照下面操作就好。在建好文件之後,在源文件處,輸入下列代碼#includeusing namespace std;voidmaincout<<"我的第一個程序!"<<endl;然後編譯這個程序,點擊右上角有紅色邊框的按鈕。最後運行這個程序,點擊右上角的紅色框里的按鈕,看看運行結果。

❾ 你怎麼在電腦上編程,而不用任何軟體

40267">

我從編程寫軟體學到的 7 件事,其實學習編程不難,寫軟體也不你那,就看我們如何看待了!

我正在一點一點的從一個工程師轉型為管理者。別弄錯了,雖然我在轉管理,但我仍然在每天寫代碼。不過我發現自己在會議和電話中會花越來越多的時間去分析討論,試著去組織團隊,並且為全局部署而不是具體戰術而煩惱。

當然這不是一件壞事。高層次的決策往往比單個的類和函數的細節更有影響。讓一個團隊更有效率,比僅僅讓自己更有生產力有更高的杠桿作用。但我想我已經從我多年來的編程中吸取到了一些經驗。我希望大部分經驗可以應用於管理方面。

1、沒有規定(rules),只有公案(koans)

譯註:公案(Koan)有五種重要的涵義: 作悟禪的工具; 作考驗的方法; 作權威的法范; 作印證的符信; 作究竟的指點。)

舉個例子:DRY,意思是「不要重復你自己」。作為軟體的基本規則這很好理解,因為很多話可以證明:「我做 X 是因為它沒有重復。」這說得通,不是嗎?如果你有兩個或者兩個以上部分的代碼在做相同的事情,說明你正在浪費。而且如果當你需要改變它們其中一個的時候,你可能也需要改變其他的,並且你很可能會忘記這么做。當它們不同步時,你會得到一個怪異的 bug。因此很顯然你不能重復你自己。

然而,在使用了幾年之後,人們開始懷疑它的普遍適用性。假如你的兩個方法中包含相同的代碼塊,所以你將其拿出來形成一個單獨的函數。通常那些方法會開始朝不同的方向發展…接著你發現自己要在函數中加入更多的參數,很可能為結果立了更多 flags……然後下一個接手的程序員會因為分離出來的函數以及它所帶的特定的參數和結果,而出現認知負載。你會意識到如果當初允許自己重復,並讓兩塊代碼自然的發展為不同的個體,你生成的代碼將會更簡單直觀。

這意味著 DRY 不好嗎?當然不是!通常在合適的環境下使用 DRY 是正確的…好吧,也許。我個人的經驗是:「重復一次是可以的,超過一次就不太好了…當然這取決於所處的環境。」因為所有事都取決於環境。DRY 的目的並不是為了 DRY。如果你迷信於此,小孩兒,那你還有太多要學。DRY 的目的為了讓你了解 DRY。那當然不是規定,僅僅是公案。

(讓我重申一遍:我在討論的是軟體。在我的經驗中,硬體規定的確更傾向於是我們所理解中的規定。這就是我為什麼要從電氣工程轉到軟體的原因)

細想我最喜歡的兩個計算機科學「定律」。第一:「計算機科學中沒有一個問題是不能通過添加另一層抽象來解決的!」這句話完全正確嗎?當然不。這在現象學上是正確的嗎?實際上,的確是。這是否意味著抽象是解決任何問題的正確途徑?不,不是。它是一個公案,可以啟發思想。

還有我歷來最喜歡的:「第一優化定律:不要這樣做。第二優化定律(對專家而言):不要又這樣做。」這顯然是一個公案,卻稱自己為法規。是時候讓你的代碼運行的更快嗎?不。是時候讓你的代碼運行的更快嗎?還不是。什麼意思?意思是要考慮到時間,復雜性,認知負載,具體結果,生活意義,人類存在的意義。並且三思而後行,小孩兒。但不要花太長時間,我們還有工作要做。

2、要想得到他人的信任,先信任他人

這不僅僅針對於管理者。雖然它對管理者尤其重要。信任是你真正擁有的唯一價值。如果你的公正、判斷、理解、誠實不被信任。接下來你組織的成員將把你視為禍害並繞著你走。然而,如果你是個有能力但不被信賴的開發者,你可能還有一些價值。雖然你在每個決定上做的努力都會被大大消減。

不過更重要的一點是:一個團隊的成員需要互相信任。當 Natascia 說:「我來解決那個問題單(ticket)」,你必須相信她會去做。當你說:「Peter 能在截止時間前完成的。」,你必須相信那會實現。當某人說,「我有一個瘋狂的點子」,他們必須信任他們會被尊重和認真對待,盡管那點子的確很瘋狂。

你是如何建立和得到信任的?答案很簡單:你去信任他人。你相信那個說他可以學會這個新庫並且在周一前會整合完的人。你相信那個說他需要提前離開,因為家裡有事而會錯過明天工作的人。你相信那些想在截止日期前一個月休假的人,因為他們覺得自己已經開始筋疲力盡了。你相信說想要解決難題的初級程序員。

但你不總是正確的。有些時候人在工作上存了壞心。你需要揭露這些人的真面目,讓他們盡早離開。有時候你要信任那些真心想成功的人,雖然他們會失敗。但違反常識的是,長遠來看這通常是個勝利。因為那些人會記住你的信任,他們會盡一切努力來報答你。

3、簡單比優雅重要的多

我也喜歡緊湊優雅的代碼。我喜歡靈活的框架,有如此多抽象層次隨時待命,無論拋出什麼改變的需求都能解決。我喜歡使用位向量、位位移、略微復雜的數據結構和不太流行且古怪的小語言特性,但在特定環境下十分實用。

然而你並不只是為了你自己寫代碼。即使它只是個「原型」。(我已經記不清我有多少「原型」在多次對層操作和潤色的過程中出現問題。)而且你不僅僅是為了解決當前的問題編寫它。你正在為了下一個接手的開發者可以使用它來解決下一個問題而編寫。把你寫到那五行代碼擴充為十行可以增強其可讀性,你知道嗎,也許擴展為十五行效果會更好。

你可以提前嘗試並用靈活且充滿抽象的框架解決它們。但是也許預言不是你的強項,也許你關於下一個問題的概念的想法完全是錯誤的。也許僅僅編寫足夠簡單的代碼才是最佳選擇。有一個命名約定和一個編碼風格,讓它讀起來像英語一樣。也許不是添加一個類,而是下一個開發者在試圖跟隨你的控制流程時必須保持另一個文件的開放。你應該用愚蠢的方式,不雅的方式,簡單的方式。

4、動力比大多數事都重要

我們都曾見過這種情況。一周里每個人都在檢查代碼,構建顯而易見的雛形,每天不斷增加特性,測試覆蓋率越來越高。疏忽也隨著生產的想法和解決方案而出現。不知怎麼的下一周所有事都變得緩慢起來。關於 A 的決定,會影響到 B、C和 D。當人們可以運行D、E 和 F 時,它們不是邏輯序列發展上的一部分。於是需要做更多的假設,認知負載加重,你不得不模擬出一堆東西來寫出非模仿代碼。一些人需要做這個決定。

或許不是決定會癱瘓,是你上周所做的一切都在錯誤的基礎上,是一個「地震多發區」的技術負債。你需要停止所有事返回並重構它。而且你必須馬上開始,因為等的時間越長,事情會變得越糟糕。沒人想看到這種事發生 。但他們寧願現在面對也比下個月知道的好。讓暴風雨來的更猛烈些吧。

也許上周每個人都拼勁全力,現在實在撐不住了。你知道該怎樣嗎?得讓他們休息一下,每個人,休息一整天。我保證,這會給你接下來的「長跑」節省時間。

I我們很難定義、衡量以及說明動力。但它在軟體開發中是真實存在的東西。而且它的缺失會成為造成首要影響,導致我們需要去解決很多根本問題。別忽略它,也別期望或假裝它會神奇地回來。察覺警報並迅速採取行動。

5、與和你互補而不是像你一樣的人一起工作

每當我看到人們根據「文化契合度」來找人的時候,我就會拚命翻白眼。你知道大多單一栽培會發生什麼嗎?他們遭遇了他們不知如何解決的病原體,然後嗝屁死翹翹了。

你不會希望你的所有開發者、設計者、 QA人員、產品人員、銷售人員和執行官是彼此的克隆人。你肯定不想。每個人都有自己的長處和短處、優點和缺點。你想要僱傭的是他們的長處,讓其他人的長處彌補他們的短處。

比如說我,寫代碼非常快,擅於溝通,讀寫文章都奇快。我在任何時候都能熟悉很多編程語言和框架。我理解東西透徹且迅速,有豐富的經驗。然而我還是一個在特定領域、框架和語言缺乏深刻專研、精通掌握的全才。我是一個真正從別人身上獲益的建築師,跟蹤所有需要,在骨骼構建好之後添加肉體和潤色。我還是個 UX 盲(等一下,你說那些還沒對齊?),這一直被當作同事之間的玩笑。

像我這樣的人非常難找到也是及其被需要的。但一個由我和九個像我一樣的克隆人組成的公司是從一開始就註定要失敗的。唔,我們會把很多事情做好,但只需要一個集中的盲點,一個災難性的空隙就足以毀滅公司。大多數人承認有些事情他們做不好,另一些人可能需要照應。這些人往往是尋找「文化契合度」的人,並試圖僱傭和他們一樣的人。真令人哭笑不得。

6、任何決定都比沒決定強

別猶豫,當你拿不準主意時,去做就好了。當然,這可能不適用在生產代碼的時候。但它可以應用於除此之外在軟體開發里的任何方面。我們在歷史上發展最快的行業里工作。我們生活在以指數形式發展的世界裡。時間不等人,別浪費它。

這與低級決策的高級討論一樣真實。在高水平的討論里,比如「我們應該實現特性 A 還會說 B?我們要用哪種方式實現呢,X 還是 Y?「,常常會產生這樣的對話,」讓我們先跳過這個…下周再對它進行討論…「,或者更陰險的,」讓我們先研究一下其他人做了什麼再來討論一次。「這樣的問題極少情況下會有正確答案。大多時候,像這么說才是正確的,」我會在今天之前決定嘗試哪一個,這樣我們就可以明天開始行動了。

甚至 A 選項基本上是錯誤選擇,開始進行 A 大概也比啥都不做強。這和直覺是相悖的,但它通常也是正確的。以實際上手的方式去理解 A 的本質是一個更好的辦法,這個道理始終是正確的。這樣的理解可能會引導你做出更好的決定。

對於低級決策,那就更應該如此了。「規范沒有說明我們應該如何處理錯誤條件 X,或者錯誤信息應該是什麼。」(規范似乎是為一個有抱負的烏托邦寫的,在這種烏托邦中,錯誤條件和獨角獸一樣罕見。)「我知道,我只是想插一句,回去問問他們在這種情況下想做什麼!」

這非常誘人。如果你這么做,沒人能指責你哪裡做錯了。但這么做是錯誤的。寧願繼續自己做決定,盡管有些魯莽,也不要什麼都不做等著問別人。讓它們在你做已經寫好的程序和你學到的教訓里迭代,雖然你知道這並不完美,也好過從頭開始錯誤認知。它們和項目將會變得更好。快速嘗試,快速改變方向。

7、保持謙虛,但要自信

你不需要所有的答案。甚至是我也不得不勉強承認我不會有全部的答案。可惡,我甚至連它們的大多數也沒有,不過我有自信,只要給我足夠的時間和精力,我能弄清楚大部分。並且你也可以。

我們無法都成為 Jeff Dean(谷歌大牛)、中本聰(比特幣創始人) 或是 Margaret Hamilton(登月計劃中的女程序員)。我們在一個充斥著真正的天才和自稱天才的地方工作。沒人知道所有的事情,每個人都敏銳地意識到他們所不知道的一切。幸運的是,大多數情況下,我們不是科學家。我們的工作不是去尋找新突破。我們的工作是實踐他人的發現,使東西運轉,希望服務於人們真正想要的東西。也許你永遠不會發明任何東西,像是布隆過濾器或默克爾樹。不過大多與你共事的人們也不會。而且這不是重點,重點是使用布隆過濾器和默克爾樹,亦或是在它們之上建個抽象層,來實際的完成它們。

所以假設你懂的會比在座的人都多是錯誤的,就算你覺得他們違背直覺的想法很瘋狂,他們的語言選擇很糟糕。假設人家比你懂的多也是錯誤的,即使真是那樣,也沒關系。世界上多的是聰明人因為一些不可思議的原因什麼實際東西也沒做出來。(開個廉價的玩笑╮(╯▽╰)╭:這就是為什麼我們有學術界的原因。)

如果你真的做出了一些東西,在面對那些令人眼花繚亂的理論知識,或是和你相似甚至比你做的更糟糕的人時大可不必謙虛。在一天結束之時,正是那些在戰壕中的開發者——構建、測試和開發了代碼的人,真正做了事情。話說那些發現自己遠離戰壕的人,那些沒有和你一起並肩作戰的逃兵,你有權利鄙視他們。並且向你的夥伴致敬,而不是上司。


原文標題:做好這7件事 讓你學編程寫軟體不在難

原文鏈接:http://www.epx365.cn/peixun/software/201840267.html

3. 如何成為一個程序員

想要從零開始成為程序員,先不要著急的去學習,而是先要去了解程序員。

1.隨便在招聘網站搜索就會發現程序員會分有很多類型,那你就需要確定自己將來想要發展的方向,自己的職業規劃是什麼?

2.通過搜索可以看到,剛剛起步的程序員工資並不是很高而且學習階段也會比較忙,那這個時候你是不是靠考慮一下如何兼顧生活和工作?工資如何支配合理等問題(沒有經驗限制的工作相對較低)

PHP程序員崗位要求

關於學習建議你這樣試試看:

學習的方式基本可分為兩個類型,一個是碎片化的學習,一個是系統進修

  1. 你可以從網路上各機構大量的視頻或者書籍得到相關的學習資料。從大量的資料中,發現真正的干貨,從而不斷學習,這屬於碎片化的自習。由於自學周期比較長,還有不少小夥伴選擇是一邊工作賺取生活費,一邊再利用閑暇時間學習,當然如果你的精力充沛,這也是一個好辦法。

  2. 如果要報培訓班, 一定要找正規的培訓機構學習,不然容易被坑。培訓機構裡面的課程都是現在工作中需要用到的,時間短,基本上是可以讓你快速上手工作的。但是要把所有的知識點都消化就沒那麼快了,所以需要自己私下更加的努力,鞏固學習。

注意事項:

1. 自學要注意的是:自學入門時會很枯燥,不要兩天打魚三天曬網!!!切記

2. 在培訓機構里學習要注意的是:勤加練習、主動自學、有問題提,不懂的盡管問老師(把交的錢發揮到極致),不然之後再有問題就沒有這么好的機會能夠直接得到老師的指點了。

最後,祝願想要成為程序員的小夥伴都能心想事成哦(*^▽^*)~

4. 敲了 10000 小時代碼,我也沒能成為一名高級程序員

【CSDN 編者按】 Malcolm Gladwell在《離群索居》( Outliers)一書中曾言 ,要真正掌握某件事情,需要10000小時的練習。 而本文作者Greg Bulmash擁有40多年的編程經驗 ,寫了10000個小時的代碼,卻沒能成為一名高級程序員。 為何一萬小時定律會失敗呢?他分享了自己的一些看法 或許他的經驗能夠對你有所幫助,一起來看看吧。

原文鏈接:

本文由CSDN翻譯,轉載需註明來源出處。

譯者 | 章雨銘 責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

Malcolm Gladwell在《離群索居》( Outliers )一書中說,要真正掌握某件事情,需要10000小時的練習。其實,10000隻是一個粗略的數字,而且這句話的含義也被過度簡化了。我已經斷斷續續進行了40多年的編程。可能已經寫了10000個小時的代碼,但我甚至還未能成為一個優秀的程序員,更別提成為大師級的程序員了。

我認為有以下幾個原因。首先,在這10000小時中,我主要學習了4種不同的編程語言,以及其他一些輔助語言。我從一種語言換到另一種語言時,發現它們有的概念可以互通,有的完全不同。而有趣的是,在這種語言中沒有意義的概念可能用來構建它。

例如,JavaScript沒有本地鏈接列表實現,但如果在V8 GitHub庫的src目錄下搜索 "鏈表",會發現有76個commit提到了它。即使它們在語言本身中沒有用C的鏈接列表,但會在引擎下使用C的鏈接列表。

每種語言都有自己的語法和特殊的實現方式,這些是必須要學習的,而不僅僅只是學習其概念。一種語言的最佳實踐方式對於另一種語言來說可能不是最好的。在編譯語言上我從來沒有花過很多時間,幾乎總是使用解釋型語言,如BASIC、PHP、JavaScript、Python。我學習過C#和Java,用Rust做過Hello World,但在Linux中從源碼編譯對我來說十分困難,所以我通常只是下載源碼,按照教程中的指示操作,然後祈禱代碼能夠運行。

除了學習這些語言,我還學習了伺服器技術和系統架構的基本概念,不是從編程的角度,而是從網路管理員或者說系統管理員的角度。而且無論是建立一個大型網站,在Flash中創建矢量圖並將其渲染成點陣圖,還是學習通過AWS解決方案架構師助理認證,我都已經做了很多次。但是很多東西我已經忘記了。我已經學會了這些語言的框架和庫,如JavaScript的React和JQuery以及PHP的Laravel......然後也忘記了許多,因為我為完成一個項目學習了它們,然後就沒有再使用它們。

即使寫了10000小時的代碼,也不意味著你能夠輕易地在不同語言之間轉換。當你真的進行轉換的時候,你會發現10000小時沒有那樣神奇的魔力,因為另一個不可避免的原因:記憶衰退。正如我所說的,如果我停止使用一種語言,甚至只是停止使用它的一個功能一段時間,我就會像忘記 "高中西班牙語 "一樣忘記它。我在高中時讀完了西班牙語3級,在大學時考過了西班牙語4級,並獲得了A。而現在,我可能只記得不到10%的內容。

例如,我幾乎完全忘記了怎樣使用常規動詞連接過去式,更不用說不規則動詞了。但是因為我以前練習的足夠多,我知道自己的不足之處,所以我可能比剛開始學習的人更快地恢復以前的知識。但可能需要幾個月的強化練習才能全部恢復。

十年前,我精通PHP,在一個定製的MVC框架中工作(由其他人創建),使用Doxygen來映射類的繼承層次,並使用JQuery來構建前端的交互性。但我在7年前沒用過PHP了,轉而使用Node。現在,我需要花5分鍾並且改正了一些語法錯誤,才在剛才提到的PHP副本中正確地寫出一個Hello World。

去年12月時,我為freeCodeCamp的前端庫認證建立了五個React項目,但在那之後,我就沒有再編碼React項目了。過去了兩個月,當我開始准備面試的時候,我覺得我就像是React新手。如果我看到自己寫的代碼,能夠很快理解。但是因為很多東西都只是我准備的輔助工具,很多我都忘光了,所以我需要回到文檔中去開始一個新的React項目再開始工作。和新手相比,我只是走得更快。

這就是新手和已經入門了的區別。一萬個小時可以讓你成為一個小提琴大師。但是如果你每隔500小時就換一次樂器,並想要成為整個交響樂團的主角,那你不一定能夠更勝一籌。所以為了強化和拓展你的技能,練習不僅要廣泛,而且要持續。

10000小時是什麼樣的概念?是5年每周工作40小時,兩年休息1周(假期、病假和休假都在這2周內)。你會發現有的工作招聘時要求在一個3年的框架內有5年的經驗。5年似乎是成為專家所需的標准時間。因為對框架的無知和這種簡化的標准,就會產生邏輯上的矛盾,一言以蔽之。

一個專業的開發人員,有多少的工作時間是花在電子郵件和會議上的?又有多少時間在真正編碼和思考編碼問題?當我在微軟寫文檔的時候,我的經理說,不管怎麼算,你一天中大概只有一半的時間花在實際的生產工作上。其餘的時間會花在一些瑣事上,比如回復電子郵件、開會、進度/狀態報告、在IM上回答隨機問題或者和別人閑聊......

所以我只有20%的時間是在寫代碼,因為其他80%的時間是在寫文檔和教程,這意味著我平均每天只寫了一個小時的代碼。在使用瀏覽器中的開發工具進行調試方面,我曾經是個天才,因為我在這方面經驗豐富,還經常為新版本進行更新。但是,雖然當時所有的開發控制台的快捷鍵,我都爛熟於心,但在我離開微軟的7年後,我基本上已經把它們忘得一干二凈了。

事實上,自從我進入開發人員關系部後,我每天花了10-20%的時間寫代碼,其餘的時間寫教程,為會議講座和網路研討會製作文件,制定建立和培養開發人員社區的戰略,制定展示新功能的最佳方法,以及處理各種人——產品經理、內部工程師、外部開發人員、產品營銷經理、需求生成和社交媒體經理、律師、公關和公司政策執行者的問題。

最後要記住的是,你不會花整整一萬個小時學習新東西。如果你在學習小提琴,你可能會花上幾百個小時來學習一些初級的作品。在你學習新東西之前,你已經掌握了一些初級的東西,並且在反復練習直至完美的過程中,

學到很多,並且將你學到的這些用於學習新事物。所以這一萬個小時中的大部分時間都是強化的。

在編程中,這就像多次編寫相同的To Do單頁應用程序。前幾次你可以參考教程,但最終你必須能夠在沒有任何參考的情況下寫出它。這就像一邊看著樂譜一邊慢慢演奏《歡樂頌》,然後記住如何演奏,然後准備在演奏會上演奏。

但是,當你需要在截止日期前交付一個項目時,你有多長時間來進行強化練習?在許多公司,不會給你提供擴展技能和強化編碼的時間,需要你利用額外的時間來完成。一些公司會給你10%的時間或20%的時間來做獨立的項目,但很少有公司希望你把這些時間花在單純的練習上。

新的框架、新的最佳實踐方法、新的語言、新的模式產生的速度不斷加快,在這種情況下,僅僅是在新的方面取得合格的成績,都會像和職業選手一樣演奏《歡樂頌》的困難。

你需要平衡強化和 探索 的時間,特別是當你每天編碼的時間少於50%的時候。你必須不斷地通過練習來進行強化,建立心理肌肉記憶,直到你能在睡夢中解決它們。小提琴幾百年來都沒有實質性的變化,但編程卻在不斷變化。成為一個特定語言的大師級程序員意味著要堅持更長的時間。你不得不在非工作時間進行強化練習,完成任務,努力成為一個優秀的程序員,或者跳槽到另一個能夠給你充足時間練習的公司。

哪怕你5年或者10年後都沒有成為大師級的程序員,也沒有關系,因為好好地做一萬個小時比看起來更難完成。

5. 耶克斯-多德森定律(Yerkes–Dodson law)

耶克斯-多德森定律(Yerkes–Dodson law)揭示了動機與表現之間的關系。由羅伯特·耶克斯(Robert M. Yerkes)和約翰·迪靈漢·多德森(John Dillingham Dodson)於1908年發現,這條定律指出,在一定范圍內,動機的強烈程度與表現的好壞呈正比,但會達到一個峰值。當動機過強時,表現反而會下降。這一過程通常被描述為一個浴缸曲線,呈現為倒U字形。

耶克斯-多德森定律在不同領域有著廣泛的應用。例如,在編程領域,有流傳程序員在血液酒精含量處於0.129%到0.138%區間時,能獲得最佳的代碼寫作狀態。在體育和音樂領域,該定律也得到了觀察和驗證,被稱為「鮑爾默效應」或「鮑爾默曲線」,被認為是現任CEO對人類文明的重要貢獻之一。

總的來說,耶克斯-多德森定律強調了動機與表現之間復雜而微妙的關系,提醒我們在追求目標時,需要找到一個適當的動機強度,以達到最佳表現。這一發現不僅為心理學研究提供了新的視角,也為教育、體育、音樂等多個領域提供了重要的理論基礎和實踐指導。

6. 為什麼有的程序員的代碼結構混亂

程序員都有一顆工程師的心,所以當他們到一片新的場地想做的第一件事就是,將舊的一切推倒重來。是的,他們決不會滿足於簡單的增量勞動。

或許這種微妙的心理定位可以解釋:為什麼程序員進入新項目組後寧願丟掉舊代碼重新寫,也不願意修修補補。他們認為舊代碼簡直一團糟。

但是,事實上真是這樣嗎?你之所以認為舊代碼一團糟,其實是由編程的一個基本定律決定的,那就是:寫代碼容易,讀代碼難。

為什麼你覺得舊代碼異常混亂?因為讀代碼更難。

這大概就是代碼Reuse難以實現的原因。 這就是你組里的每個人都喜歡用不同的功能將分割的字元串轉換成一個數組。比起猜測舊的功能是怎樣實現的,重新寫一個自己的功能要簡單和有趣多了。

作為這個公理的推論,你可以問問身邊的程序員他們正在奮戰的代碼怎麼樣?「簡直是一塌糊塗!」他們肯定會這樣說。「我簡直想推倒重來!」

為什麼認為代碼這么糟糕呢?「額,看看這個功能,竟然有兩頁長!完全不知道這些東西為什麼在這里!完全不知道這些API是干什麼的。」他們會這樣回答你。

漫畫:讀別人代碼是一種怎樣的體驗?

曾經,Borland的創始人 Philippe Kahn當初就是向記者們吹噓:Quattro Pro會比Microsoft Excel要好用得多,因為它是從頭開始編寫的,全部都是新的源代碼!

但是,認為新代碼比舊代碼好簡直就是荒謬。舊代碼是已經運行過的,測試過的。無數的bug在被發現前都上線運行過,發現之後程序員們可能在花了好些日子才修復了這些bug。這種修復可能是一行代碼,也可能是幾個字元,無數的時間和精力都花在了這些bug修復上。

當你決定拋棄這些舊代碼從零開始的時候,你也丟掉全部前任努力的結果。

新代碼一定比舊代買好?NO,重寫可能會帶來更大的風險。

對技術領導者來說,重寫項目的代碼也是一個異常艱難的決定。因為從公司層面說,重現代碼甚至會威脅產品的市場競爭力。一旦決定重寫代碼,那麼與競品相比,你可能落後了2~3年——在軟體行業,這時間可夠長的。

你理想中的新代碼會帶來產品功能的提升▼

但事實上,即便重寫的新代碼可以實現舊代碼的所有功能和需求,但是為產品帶來的市場競爭力只有邊際提升。因為重寫用的新技術、新語言、新框架並沒有給產品帶來質的飛躍。

更不用說在重寫的漫長過程中可能會遇到一些意外情況,比如:

1、缺錢:資金鏈的斷裂▼

2、缺人:核心程序員離職

最終導致效果不佳:達不到原產品應有的所有功能和需求,白白浪費了時間和金錢,也丟掉了市場競爭力。▼

所以重寫代碼意味著,你在把自己置身於非常危險的境地,可能幾年後你也寫不出比以前更好的代碼。你只是花了一大筆錢把已經存在的代碼又寫了一遍。

當你覺得眼前的舊代碼很爛時,該怎麼辦?

你覺得舊代碼寫的很爛,那又怎樣呢?它們已經上線,已經在實際運行中經受住了考驗。所以當你發現前任留下的代碼亂七八糟的時候,不妨冷靜下來,從以下三個方面入手理解代碼、改善代碼:

1、代碼的結構有問題

如果一段網路代碼突然彈出了自己的對話框,應該是UI代碼需要被處理。這些問題可以被解決掉,你要一次次小心地移動代碼,重構,改變介面。還需要一位細心的工程師立馬仔細地檢查這些改變是否有問題,從而不打擾到其他人。事實上,甚至比較大的結構變化也可以不扔掉代碼來完成。

大牛程序員Joel Spolsky回憶說,曾經在某個項目中,他和他的團隊花了好幾個月重新架構在一點上:把代碼動來動去、清理、創建有意義的基類,並創建了模塊之間的完美介面。但是他們始終非常小心翼翼,並沒有產生新的bug、也沒有丟掉任何舊代碼。

2、代碼的效率不高

曾經,Netscape的渲染代碼被傳非常緩慢。但事實上,這只會影響該項目的一小部分,這部分是你可以優化甚至重寫的。你完全不必重寫全部代碼。優化速度的1%工作量,會讓你獲得99%的爆炸性提高。

3、代碼寫得很醜

有些代碼真的寫的很醜,比如Joel曾參與一個項目,開始用下劃線做開始的成員變數約定,但後來改用更標準的「M_」。所以一半的功能用「_」開始,一半用「M」開始,這看起來真的很醜陋。但這個問題5分鍾就能解決,而不用從頭開始寫全部的代碼。

最後,你要記住,從頭開始再寫一遍並不意味著你會寫出比以前更好的代碼。因為你沒有參與到上一個版本的創建,所以你其實根本就不算有經驗。一旦你准備推倒重寫,你可能會再犯一遍版本一犯過的錯,甚至會產生更多的新問題。

一個總結:

面對糟糕的舊代碼,Keep Calm & Carry On !

在大型商業項目中,推倒重來是非常危險的行為。當然,如果你是在做實驗,想到新演算法可以隨時重寫。

閱讀全文

與程序員編碼定律相關的資料

熱點內容
app電腦怎麼傳另外一個手機 瀏覽:148
接收機單片機 瀏覽:125
伺服器和客戶端是如何交互的 瀏覽:307
c編字元加密教程視頻 瀏覽:109
安卓抖音直播怎麼才能不對焦 瀏覽:867
公司介紹源碼兼容手機 瀏覽:290
為什麼頁面會伺服器異常 瀏覽:369
兩個伺服器磁碟陣列如何用 瀏覽:411
葫蘆娃小y版不用解壓的 瀏覽:905
我的世界伺服器如何永久夜視 瀏覽:23
java獲取http文件 瀏覽:966
linux系統數據恢復 瀏覽:501
王者榮耀演算法技巧 瀏覽:941
命令與征服凱恩之怒打不開 瀏覽:194
多目標免疫優化演算法 瀏覽:131
加密證券數字化 瀏覽:53
相冊加密文件在哪裡找到 瀏覽:21
抖音獨立電商app是什麼意思 瀏覽:810
公司晨會解壓小游戲 瀏覽:343
怎麼加密成摩斯密碼 瀏覽:667