拒絕996,有哪些方法可以提高開發效率的奇技淫巧

2021-10-07 07:45:51 字數 4480 閱讀 7764

積極主動,行動起來改變自己

相信你也跟我有過相同的經歷。成為乙個高效程式設計師,最大的阻力不是來自於不知道方法,而是自己的消極心態。遇到進度延遲、效率低下之類的問題,你就會下意識覺得:

時間進度太緊了;

我已經盡力了;

最近加班太多了沒精神;

產品經理太不靠譜了,需求沒想清楚,害的我瞎忙活。

是的,你也知道這些答案都很消極負面,可是怎麼控制自己不這麼想呢?首先你要知道,無論這些事情的本質責任在於環境還是個人,抱怨排斥的心態對於實際工作的改進是沒有任何幫助的。

當然,很多人也知道抱怨沒用,但具體怎樣才能做到不抱怨,並且積極主動呢?史蒂芬・柯維寫在他的《高效能人士的七個習慣》書中,對這個問題提到了兩個行之有效的建議,我們可以結合著軟體開發來分析一下。

想想再回應

我還記得第一次有人給我介紹單元測試很好用,能讓你效率更高、**質量更好時,我的第一反應是不可能,這樣明明要多寫很多**,怎麼可能會高效?

於是我有一段時間是很排斥的,直到後來參與乙個已經有單元測試的專案,尤其是在重構**的時候,我發現修改了大量**後,程式還是很穩定,當時便覺得應了網友的那句話,「真香」!

每個人對於外界的刺激都會做出反應,本能的或者習慣性的,就像我前面舉的例子,遇到事情會本能的覺得都是外部原因。如果一直這樣,那就會進入惡性迴圈,變得更加消極麻木。

但如果在回應之前,給自己一點時間想想,站在積極的方面理性思考一下,就可以去控制你的本能反應。

所以很多次,就在我脫口而出「不可能」或者「不行」的時候,我提醒自己再想想。於是我會改口說:「我試試」、「我再想想」。這樣很多次提醒自己以後,會一點點由「不可能」的本能變成「我想想」的習慣。

後來有人跟我說 ci(持續整合)很好,我思考過了之後進行了嘗試,在 github 上建了乙個專案,把 ci 搭起來試了一下,覺得真的是很好。如果我還是秉持著以前的消極心態,不知道又要晚多久才能去嘗試。

減少關注圈,擴大影響圈

我關注很多事情,比如程式語言、明星八卦、國家大事,這些都是「關注圈」。而這其中,要區分哪些事,是我可以影響和掌控的,這些事則是「影響圈」。

不要總盯著自己無法改變的部分,你需要要多花時間精力在影響圈上。

比如說,我不能改變 996,至少我可以利用這時間多學習一點,找機會換乙個更好的環境;我不能要求每個人都寫單元測試,但是我自己的**寫了單元測試,這樣專案質量更好了我也更有價值;我不能決定跟什麼樣的人一起共事,但是我願意跟他們分享我的經驗,他們成長了我也受益。

工作一段時間後,你也可以嘗試去擴大自己的影響圈。

比如說,很多程式設計師像我一樣,有過不少因為產品經理需求沒想清楚導致返工的經歷,後來我就格外關注產品設計相關的知識,業餘時間自己學習了不少,這就相當於擴大了我的影響圈。

所以後來產品經理給我乙個需求,我不需要在開發完成後才抱怨他不靠譜,而是在給我需求的時候就去跟他討論,是不是有可能沒想清楚。

當你不僅僅侷限於程式設計師的角色思維,擴大了影響圈之後,你就可以試著向產品經理提出很多有價值的建議,比如:

這個布局在文字很長的情況下會有什麼變化?

如果網路很慢,載入資料的時候應該顯示什麼?載入失敗顯示什麼?

如果資料為空的時候這個列表應該顯示什麼?

其實「減少關注圈,擴大影響圈」這個道理也很簡單:接受不能改變的,改變能改變的,盡量擴大可改變項的範圍。

以終為始,想清楚再開工

如果對比一下我在十幾年前作為乙個新手程式設計師,和現在作為乙個老手寫**有什麼不同的話,我認為在新手階段,我是拿到需求就開始寫,寫到一半發現好像不對,馬上修改,好像還不太對,就這樣反反覆覆,效率很低下。

而現在拿到乙個需求,我會先仔細的分析需求文件,反覆和產品經理確認各種細節,然後做個簡單的設計,考慮清楚模組怎麼設計,他們之間是什麼關係,然後再寫,寫完還要加上測試**。

你知道最大的區別是什麼嗎?我現在做一件事之前,會先想清楚「終」,然後才知道怎麼「始」。所以我先搞清楚需求這個「終」,然後再設計規劃出這個從「始」通向「終」的路線,最後從「始」出發寫**,一氣呵成,不僅快,而且***。這就是「以終為始」。

要做到「以終為始」,就是在做事情的時候注意三點:目標、原則和計畫。

經常停下來想想目標

我剛畢業參加工作的時候,要開發乙個內容管理系統,其中涉及有資料庫訪問,這就需要把資料表的字段和類對應起來,覺得太體力活了,於是我開始寫資料庫生成**工具。而要想寫**生成工具,我還得學習 winform 知識……就這樣幾個月過去了,關於這個系統的**還是最開始的幾行!

我的目標是寫乙個內容管理系統,結果卻跑去寫**生成工具,這樣怎麼能做到高效呢?正確的做法應該是手動完成這幾個類的生成,其實用不了幾分鐘,或者用乙個現成的工具。如果覺得**生成工具是個有意義的專案,應該另外立項,而不應該影響當前的專案。

這樣的事情在我身上還發生過幾次,所以我後來就逼著自己隔一段時間要停下來想想:我的原始目標是什麼?我正在做的事是我的目標嗎?如果不是,那麼馬上回到自己的原始目標去。

制定原則

其實大部分很好的程式設計方法都是需要堅持做才有效果的,比如說自動化測試**,有時候時間進度一緊,就會來不及寫,時間一長,就會欠下技術債務。

所以我給自己定了乙個原則:增加乙個功能,就要寫自動化測試,如果來不及寫,就給自己寫一條 ticket。

這條原則我堅持得很好,所以我的自動化測試**得以堅持,從而真正幫助我做到高效開發。

你也可以給自己定一些原則,比如:

「先執行再優化 (make it work make it right make it fast)」——也就是在優化**之前,先用簡單的方法實現,再考慮怎麼優化,這樣可以保證設計的簡單,也可以避免你陷入技術細節中而忽視了原始目標。

「不複製貼上** (don』t repeat yourself)」——複製貼上會導致**臃腫,不便於維護,提取抽象可以保持簡潔。

「每個 pull request 要盡可能小」——這有助於把複雜的任務分解成幾個簡單的任務,簡單的任務更容易高效完成。

有原則了,你才能不忘初心,有始有終。

公開自己的計畫

那麼有了原則就夠了嗎?顯然不是,有了原則,你還要堅定不移地去執行。如何執行呢?做計畫。

剛開始工作時,我是害怕做計畫的,怕計畫了完不成,問到我工作的時間安排時,我會給乙個模凌兩可的答覆,這其實導致了我在實際開發時,缺少進度壓力,從而迷失在細節中導致延誤進度。

後來我嘗試做出了一些改變,把任務細化,做個簡單計畫,主動給出乙個明確的時間點。有了計畫指引和時間點的壓力,會倒逼著自己時刻專注於目標是什麼,「終」在**,還有多少沒有完成,這樣下來工作效率自然而然就會高起來。

通過在做事時,圍繞著目標、原則和計畫這三個點,反覆地刻意地練習,也可以讓你慢慢養成「以終為始」的好習慣。

就這樣一天下去,感覺一直在忙忙碌碌,其實並沒有多少時間在寫程式。這時候怎麼辦呢,對手頭的事情進行優先順序管理。

時間四象限也許你不陌生,就是把事情分成重要緊急、重要不緊急、緊急不重要、不緊急不重要四個象限,不同的事情有不同的應對策略。

重要緊急的事情馬上處理

比如說,生產環境出故障了,測試環境部署失敗了,這些都是重要並且緊急的事情,只能是馬上處理。

重要不緊急的要事,要花最多的時間在上面

對**重構、寫自動化測試**、確認清楚需求文件,這些事情都屬於重要不緊急的事情,但是如果不及時處理,就有可能變成重要緊急的事情,比如不償還技術債務,就可能會變成生產環境故障。

所以這部分事情我會多花時間,重點做。通常我會每段時間只專注做一兩件重要的事,其他事情盡可能忽略,比如前乙個階段我主要的工作就是重構前端**,這個階段我就在忙排查效能隱患,至於其他事情,就先放一放。

緊急不重要的事湊一起集中做

所以我有些小技巧也許你可以參考。比如我在專注幹活時,會全螢幕、關掉所有訊息通知,保證沒有訊息干擾,忙完一段後再去集中處理。

還有如果有人找我時我正在忙,如果他的事情不是重要緊急的,我會禮貌地告訴他我正好手頭有點事情,大約多少時間後我主動去找他。相應的我也會尊重別人的時間,找別人的時候會先問一下:「你什麼時候有 10 分鐘左右時間,我想請教你乙個問題?」

不重要不緊急的事情能不做就不做

不緊急不重要的事也很多,比如說我的 mac 電腦突然提示我要更新系統了。我有點強迫症,以前系統一有要公升級,我就迫不及待要公升級到最新,結果一公升級系統,半天就不能幹活了。所以後來這種事情,就放在不重要的時間去做,比如週末、睡覺之前讓它慢慢公升級。

其實我在做開發的時候,覺得很多很雜的事情也不算太多,真正到後來轉型做管理的時候,才真正體會到什麼叫事情多而雜。但正是源於開發時期就形成的時間四象限方法的運用,讓我可以在繁忙的時候,保證時間用在有價值的事情上。

要事第一,就是要保證你有限的時間用在最有價值的事情上。

總結積極主動、 以終為始和要事第一,這三個原則以及其衍生出來的方法,正是幫助我逐步變成乙個高效程式設計師的關鍵所在,希望也能對你有所幫助。

如果你已經學習了很多類似的原則或者方法,而覺得沒什麼效果,那也許只是因為沒有嘗試把它們變成習慣。你可以像我一樣,把認同的好的原則或方法,通過反覆的刻意練習,反覆地提醒自己,訓練成習慣,然後用習慣指導你的日常開發。

當然,這樣的改變不會是一天兩天就能完成,但也不用著急,因為習慣的養成需要時間的積累,才能變成條件反射。當你把好的原則或方法變成了直覺反應,自然就會成為乙個高效的程式設計師。

js裡面可以提公升效能的有哪些方法

1.懶載入 常見的就是的懶載入效果,每次瀏覽網頁的時候,不是一次性將網頁中的都載入過來,而是將可見範圍內的載入過來,等到使用者瀏覽下面網頁的時候,再開始載入沒有載入出來的 2.事件委託 事件委託就是給當前要繫結事件的父元素繫結要繫結的事件,通過事件源來判定當前點選的是哪個元素。這樣做是為了減少事件的...

CSS優化 提高效能的方法有哪些?

優化主要還是朝網路傳輸方面和減少不必要的渲染考慮 1.發布前壓縮css,減少資料傳輸量。2.合併屬性,如margine left 5px margine top 10px 這個就可以合併成一條的。3.合理設計css 布局,注意復用樣式,減少渲染上花的時間。class和id的選擇,少用 這種全域性匹配...

CSS優化 提高效能的方法有哪些?

將樣式盡量寫在單獨的乙個css檔案中,然後在head元素中引用 好處 1.內容和樣式分離,易於管理和維護 2.減少頁面體積 3.css檔案可以被快取 重用,維護成本降低 不使用 import,import影響css檔案的載入速度 避免使用複雜的選擇器,層級越少越好,建議選擇器的巢狀最好不要超過三層簡...