我學(xué)編程時(shí)最后悔的事!
畢業(yè)后我才懂得自救,希望大家引以為戒
大家好,我是魚皮。
之前給大家分享過(guò)我大學(xué)四年的編程學(xué)習(xí)經(jīng)歷:我學(xué)計(jì)算機(jī)的四年,共勉!
很多朋友看完這篇文章后,會(huì)感到好奇:我是如何在大學(xué)期間做了那么多事情、學(xué)了那么多編程知識(shí)的?
但其實(shí)我要說(shuō),只要大家按照路徑學(xué)習(xí),一定能夠比我學(xué)的更多更好 !
為什么呢?

因?yàn)槭紫?,大學(xué)期間,我并沒有 “死學(xué)習(xí)”,除了學(xué)習(xí)什么都不干,而是花了很多時(shí)間在學(xué)習(xí)無(wú)關(guān)的事情上。比如我作為班長(zhǎng)要管理班級(jí)事務(wù)、我也玩游戲(手游 + 端游)、我也參加學(xué)生會(huì)和社團(tuán)、也愛參加活動(dòng)等。
其次,就是我對(duì)編程本身沒有天賦,不是像大家說(shuō)的一看就會(huì),一下就能寫出代碼。之前也講過(guò),我在高考后自學(xué)編程讀了幾十頁(yè)書就放棄了,大一期間也是各種采坑,各種看不懂,甚至在 C 語(yǔ)言考試的時(shí)候鏈表題都做不出來(lái)。只不過(guò)后來(lái)憑借著我對(duì)編程強(qiáng)大的興趣和更多地熬夜砸時(shí)間,并且持續(xù)總結(jié)踩過(guò)的坑和學(xué)習(xí)方法,才幫助我學(xué)到了這么多編程知識(shí),才能找到一份大廠的工作。
但這些都不是關(guān)鍵原因,最最最最最重要的是,其實(shí)我在學(xué)編程的時(shí)候,有一個(gè) 壞習(xí)慣 ,直到畢業(yè)后才意識(shí)到真的因此 白白浪費(fèi)了太多太多的時(shí)間 。
這也是我學(xué)編程時(shí) 最后悔的事 ,如果我能早點(diǎn)醒悟,應(yīng)該能學(xué)到更多知識(shí),身體和頭發(fā)也會(huì)更好些。
下面把這件事以及我畢業(yè)后的 自救方法 分享給大家,希望幫助大家少走彎路,高效學(xué)編程。
最后悔的事
我學(xué)編程時(shí)最后悔的事就是:做事不分主次,花了太多時(shí)間在技術(shù)無(wú)關(guān)的糾結(jié)上。
舉個(gè)例子,我在大三學(xué)習(xí)微服務(wù)的時(shí)候,獨(dú)立開發(fā)了一個(gè)安卓 APP 叫 面試君主
。從產(chǎn)品功能、界面設(shè)計(jì)再到前后端開發(fā)和上線都是我一個(gè)人負(fù)責(zé),斷斷續(xù)續(xù)做了兩個(gè)多月。

聽起來(lái)好像還不錯(cuò)對(duì)吧。但是如果我說(shuō),這個(gè)項(xiàng)目其實(shí)我寫代碼的時(shí)間大概不到一半,大家會(huì)怎么想呢?
當(dāng)時(shí)完全沒有計(jì)劃這個(gè) APP 要做多久,所以直到我做完這個(gè)項(xiàng)目,在總結(jié)復(fù)盤時(shí)才發(fā)現(xiàn):我特么的竟然花了 60 - 70% 的時(shí)間在產(chǎn)品功能和設(shè)計(jì)上?!
產(chǎn)品功能倒還可以理解,畢竟你在寫代碼前要先明確要做什么、為什么做。但我竟然浪費(fèi)了大量的時(shí)間在設(shè)計(jì)上!
一方面是糾結(jié)項(xiàng)目的界面,比如字體大一點(diǎn)還是小一點(diǎn),框框?qū)捯稽c(diǎn)還是窄一點(diǎn)。另一方面是到網(wǎng)上找素材,比如圖標(biāo)和背景的選取,一會(huì)兒覺得這個(gè)好看,一會(huì)兒又覺得另外一個(gè)好看,猶豫不決。。。老強(qiáng)迫癥患者了。

哦,天吶!要知道,我是一個(gè)完全沒有審美的程序員,本來(lái)在變量命名上我就已經(jīng)很糾結(jié)了,為什么還要花了這么多時(shí)間在自己不專業(yè)的事情上!
大家肯定會(huì)問(wèn)了,你怎么知道浪費(fèi)了多少時(shí)間呢?
其實(shí)這只是粗略的估計(jì),我當(dāng)時(shí)每天晚上基本是在固定時(shí)間寫代碼,每天提交 1-2 次。通過(guò)分析兩次提交代碼的差異,我驚訝地發(fā)現(xiàn),經(jīng)常是間隔 2 個(gè)多小時(shí),我就只改了圖標(biāo)或者界面的代碼!

本來(lái)做這個(gè)項(xiàng)目的 主要目的 是為了學(xué)習(xí)后端微服務(wù),前端是 次要 的,只是為了方便看到效果。但沒想到,竟然在上面白白浪費(fèi)了那么多時(shí)間。所以對(duì)我來(lái)說(shuō),做這個(gè)項(xiàng)目的過(guò)程是極其失敗的。
當(dāng)然,這只是一個(gè)例子,我在學(xué)編程時(shí),做過(guò)的無(wú)意義的糾結(jié)實(shí)在太多了。
而且我不知道大家有沒有這種感覺,尤其是在夜深人靜的時(shí)候,思考會(huì)更遲緩,無(wú)論是改 Bug 還是調(diào)界面都更容易使人陷入糾結(jié),不知不覺時(shí)間就溜走了,有的時(shí)候我第二天醒來(lái)甚至都不知道昨天自己到底在熬夜做什么!

熬夜努力或許沒錯(cuò),但熬夜做無(wú)意義的事真的是罪過(guò)!
這個(gè)壞習(xí)慣一直陪伴我讀完大學(xué),直到工作后,我才意識(shí)到需要自救。
自救方法
上面說(shuō)的是我自己覺得很后悔的事,不知道大家有沒有同感。
接下來(lái)我要分享的 自救方法 ,不僅幫助我解決了糾結(jié)的毛病,還幫助我告別拖延、提高了做事的效率。
方法概括成一句話:將大的任務(wù)(目標(biāo))拆分為多個(gè)子任務(wù),并且給每個(gè)子任務(wù)設(shè)立一個(gè) deadline
(最后期限),按照計(jì)劃去完成。
為什么要這樣做呢?分別解釋一下。
任務(wù)拆解
我們總是本能地抗拒有難度的、或者較為龐大的任務(wù)。所以如果不對(duì)這些任務(wù)進(jìn)行拆分,我們就很容易出現(xiàn)以下 3 種情況:
不想做,不愿做,拖到最后
做的過(guò)程中發(fā)現(xiàn)問(wèn)題,中途放棄
直接放棄
而且大部分情況下,相信大家都是 直接放棄 對(duì)吧。

將大任務(wù)拆分為小任務(wù)后,我們就可以逐個(gè)擊破,通過(guò)完成一個(gè)個(gè)小目標(biāo)收獲成就感,保持熱血。
設(shè)立 deadline
很多時(shí)候,我們做事拖延、磨嘰、糾結(jié),就是因?yàn)闆]有事先給自己定下截止時(shí)間,所以總是不緊不慢,想些有的沒的,忽視了關(guān)鍵目標(biāo)。
像我上面講到的,因?yàn)闆]有 deadline,導(dǎo)致自己在開發(fā) APP 時(shí)很放松,才過(guò)分地糾結(jié)設(shè)計(jì)和界面。如果我當(dāng)時(shí)給自己設(shè)立一個(gè) deadline,就必須 1 個(gè)月內(nèi)完成,那我相信自己也是可以做到的,而且可能會(huì)更好。
deadline 的作用在我的日常工作中體現(xiàn)的更加明顯,以前在學(xué)校做項(xiàng)目的時(shí)候,除了課堂作業(yè),很少有人給我 deadline,或者說(shuō)比較寬松。但工作中,老板說(shuō)這個(gè)需求這周上線,那你就必須在這周完成,除非有合理的理由,否則根本沒得商量。因此,也是在工作后,我才意識(shí)到自己在學(xué)校的效率真的是太低了,才變得更加高效。

還有一個(gè)有趣的現(xiàn)象:在我自己維護(hù)工作室、以及跟其他小伙伴合作開發(fā)的時(shí)候發(fā)現(xiàn),同一個(gè)任務(wù),給他們 3 天的時(shí)間能按預(yù)期完成,給他們一周的時(shí)間反而完不成。
所以不僅要設(shè)置 deadline,而且要多設(shè)置,給每個(gè)子任務(wù)都設(shè)置 deadline,持續(xù)給自己壓迫感,更有助于幫助我們完成目標(biāo)。
實(shí)際應(yīng)用
方法介紹完后,結(jié)合編程舉幾個(gè)實(shí)際應(yīng)用的例子。
做項(xiàng)目
以前參加比賽做項(xiàng)目時(shí),我一般都是拖到最后才匆匆忙忙提交結(jié)果。
但如果現(xiàn)在讓我做一個(gè)完整的項(xiàng)目,比如編程導(dǎo)航,我先定個(gè)目標(biāo):1 個(gè)月內(nèi)上線。然后把任務(wù)拆解為:先用 3 天時(shí)間確定產(chǎn)品功能、再用 1 天時(shí)間參考同類產(chǎn)品的設(shè)計(jì)(花更多時(shí)間在開發(fā)上),用 1 天設(shè)計(jì)庫(kù)表、用 7 天開發(fā)前端、3 天開發(fā)后端(1 天開發(fā)登錄、2 天開發(fā)基礎(chǔ)增刪改查),剩余的時(shí)間拿來(lái)填充網(wǎng)頁(yè)內(nèi)容和優(yōu)化。
這樣一來(lái),當(dāng)我沒有按照預(yù)期完成小任務(wù)時(shí),我會(huì)反思原因,并且動(dòng)態(tài)調(diào)整剩余工作的時(shí)間,以保證整體目標(biāo)預(yù)期達(dá)成。
學(xué)編程
以前看書、看視頻學(xué)習(xí)某項(xiàng)技術(shù)時(shí),我可能就是想學(xué)什么、點(diǎn)進(jìn)視頻就開始學(xué)了。也沒有想過(guò)計(jì)劃用多少時(shí)間把它學(xué)完,結(jié)果就是導(dǎo)致學(xué)習(xí)節(jié)奏慢,每天看個(gè)幾節(jié)課。可能今天的還沒看,昨天的就忘了。

但假如現(xiàn)在讓我學(xué) Java,我會(huì)先掃一遍視頻(書籍)的目錄,根據(jù)視頻的時(shí)長(zhǎng)和章節(jié),定下總的學(xué)習(xí)目標(biāo),比如 1 個(gè)月學(xué)完 Java 基礎(chǔ)。然后將目標(biāo)拆分成:3 天搭建 Java 環(huán)境和跑起項(xiàng)目,5 天學(xué)完 Java 基礎(chǔ)語(yǔ)法、10 天學(xué)完 Java 面向?qū)ο蟆? 天做一個(gè) Java 實(shí)戰(zhàn)項(xiàng)目、再花 5 天學(xué)習(xí)高級(jí)特性和復(fù)習(xí)等。
刷算法
很多朋友跟我抱怨說(shuō)自己會(huì)在一道算法題上糾結(jié)很久,多達(dá)幾個(gè)小時(shí),結(jié)果到最后也沒做出來(lái),非常難受。
我大一做 ACM 練習(xí)題的時(shí)候也是這樣,想不通就硬想,生來(lái)倔強(qiáng),就以為自己能做出來(lái)?,F(xiàn)在想想,太虧了,雖然這道題自己想出來(lái)可能會(huì)很有意義,但不要忘了,你大學(xué)的時(shí)間是有限的??!想出來(lái)一道題的時(shí)間,說(shuō)不定別人都學(xué)了一個(gè)新技術(shù)了。
因此,我會(huì)給自己定下刷算法的目標(biāo):每天 2 - 3 道題,每道題限時(shí) 30 分鐘,想不出來(lái)就直接去看題解,有了思路再去想,再多復(fù)習(xí)鞏固。由此,最后我用了接近一年半的時(shí)間刷了 1000 多道算法題。
其他工具
最后也給大家分享一些幫助管理計(jì)劃、安排時(shí)間、高效工作、防止遺漏的實(shí)用工具吧~
滴答清單
我自己一直在用的任務(wù)管理工具,也是幫助我成為時(shí)間管理大師(狗頭)的必備神器,支持多端同步。

Forest 專注森林
我從高中就在用的 APP,每成功保持專注一段時(shí)間后,都能收獲一顆小樹,終有一日聚為森林。

番茄 todo
也是一款幫助你管理時(shí)間,保持專注的 APP,好評(píng)率很高。

Teambition
阿里巴巴旗下的工作學(xué)習(xí)套件,同時(shí)適用于團(tuán)隊(duì)和個(gè)人,團(tuán)隊(duì)協(xié)作、項(xiàng)目管理、個(gè)人安排、做筆記等功能一應(yīng)俱全,界面也很精簡(jiǎn)。

以上就是本期分享,最后再送大家一些 幫助我拿到大廠 offer 的學(xué)習(xí)資料:
指路:https://t.1yb.co/qOJG
歡迎閱讀 我從 0 自學(xué)進(jìn)入騰訊的編程學(xué)習(xí)、實(shí)習(xí)、求職、考證、寫書經(jīng)歷,不再迷茫!
指路:https://t.1yb.co/w66s
我是魚皮,致力編程學(xué)習(xí)經(jīng)驗(yàn)和技術(shù)知識(shí)分享,點(diǎn)贊 還是要求一下的,祝大家都能心想事成、發(fā)大財(cái)、行大運(yùn)。

本文視頻版:
