資工女孩轉職中 — 如何開始刷題

Laurice
Oct 28, 2023

--

FB粉專:L’s 碎碎念

看到這個標題,一定有人覺得我人設崩壞,說好的討厭刷題呢?

對,我還是很討厭刷題這件事,更討厭上機考,但更難過的是,我依舊沒有找到不刷題但又可以讓我在求職上面有更多元選擇的方法😭,所以對不起大家,我終究還是開始刷題了。

這篇會分享,在這麼討厭刷題的狀況下,我如何克服自己心裡的不願意,並且最終有勇氣去面試那些充滿演算法題目的公司。

Photo by Markus Spiske on Unsplash

為什麼不想開始刷題 — 分析是什麼阻擋了自己

如果我想要換工作,先決條件就是要能找得到下份工作,而我考慮的幾間公司面試都一定會考演算法題,也就是說,刷題勢在必行。然而這明擺著的事實,我卻遲遲不想去刷,這是為什麼呢?

  • 害怕失敗
    這是我最不想開始刷題的原因,如果開始刷了發現自己就是個廢物,那該怎麼辦?如果不刷的話,還可以騙自己自己只是不想刷而已,但開始刷就是定局了。
  • 看不懂題解
    大家在使用的刷題網站Leetcode上,會有使用者留下的討論與解法,但往往我都看不太懂,也導致我會害怕就算我花了時間去研究,依舊搞不清楚題目要怎麼解。
  • 不知道該怎麼下手
    那麼多題目可以做、那麼多領域可以刷,我該從何下手?會不會開啟方式不對就萬劫不復?會不會我寫了半天結果一點用都沒有?
  • 討厭時間限制給的壓力
    我一直覺得刷題面試跟工作是兩回事,在工作時,我可以比較自由的安排我的時間,不用在短短幾十分鐘就想出一個完美的解答,但coding面試需要在特定時間內想出來,而那很死的時間限制帶給我非常大的壓力。

怎麼樣才會想開始刷題 — 分析阻擋自己的原因是否有辦法解決或淡化

洋洋灑灑列了一堆原因出來之後,還是得想辦法解決或是努力無視這些原因,不然我永遠都在原地踏步,不會有開始刷題的一天,除非現有的面試方式換了,不然我還是沒辦法面上我的目標。

接下來我會簡單分享一下我後來怎麼說服自己克服上面這些心魔跟阻礙的。

  • 害怕失敗
    冷靜下來想想,我現在有兩個選擇,刷題或是不刷題。
    如果刷題的話,我可能面對的結果是發現我真的就是練不起來,或是刷一刷發現其實還是有辦法做到一定水準的;不刷題的話,我永遠無法在這條路上往前一步,成功或是面對自己的無能其實根本沒差了,反正短期內是無法達成我要的目標的。這麼一對照下來,會發現不刷題其實對於現況沒有任何幫助,除了留一個未來可能還是需要面對的炸彈以外,不如就開始刷了,失敗就失敗,目前也不是沒有工作。
  • 看不懂題解
    這部分其實網路上非常多資源,深入探討,比起看不懂題解,我更多是討厭再花更多時間去尋找資料。這部分要非常感謝我的朋友,我在刷題之前跟他約好如果不會的話能不能跟他討論,而答案是可以,如此一來,我在卡關時,可以先跟朋友拿到部分的提示,自己再多想想看,而不是直接開了題解然後被整題破梗。
  • 不知道該怎麼下手
    有時候太多資料反而比沒有資料還糟,現在網路上面有太多刷題指南,該從哪裡開始刷、該刷什麼、要計時、該刷幾題、easy/medium/hard該刷多少比例……太多太多的指示反而讓人無所適從,所以我最終決定無視這些資料,我愛寫什麼就寫什麼。Leetcode本身有一些study plan,我後來決定直接按我看得順眼的開始寫,不要管效果、不要管效率,我願意點開來寫就已經很好了。
  • 討厭時間限制給的壓力
    這在面試時無法避免,但平常寫題目的時候我可以先無視這件事。所以我一樣討厭時間限制,但在平時練習的時候,我讓自己是悠閒的去寫題目,沒有計時、沒有一定要什麼時候寫出來的壓力,累了就吃點東西,卡住了就找人問點線索。我需要的是練習及熟練度,這部分先搞定了,自然寫題目就不會那麼卡,自然所需要的時間就會變少了。

終於「要」開始刷題 — 無計劃、無壓力、如何開始?

統整以上我各種跟自己以及刷題這件事的心理攻防,以及我沒有急切換公司的需求,我得到了以下的刷題計畫:沒有進度(一天愛寫多少寫多少)、沒有順序性(愛寫什麼類型就什麼類型)、沒有時間限制(愛想多久想多久,卡住或不想想了就去問人),其實也不是計畫,就是個讓自己在悠閒的狀況下開始寫題目的方法。

我是個最大靜摩擦力比動摩擦力大很多的人,做事起頭很難、但持續下去簡單很多,因此我花了很多力氣在說服自己「開始」。就算有了以上的心理建設,我還是很不想點開Leetcode的頁面,還是只有在我要去做而沒有做的階段。於是東摸摸西摸摸,我發現如果是每天看一點演算法相關的書,我會比直接hands-on寫題目比較有意願開始。剛好當時得知了培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享這本書,決定買來看看,自己會不會更願意開始。

於是我的刷題從看書開始了,比起直接面對題目,剛開始的我算是用看書在逃避這件事,因為這樣連寫題目都不用。但書裡面一樣有例題,看一看還是會手癢想寫寫看,漸漸地,我發現自己好像可以動手去寫題目了。於是,終於開了Leetcode並且開始每天隨便寫幾題。一樣沒有計畫、沒有壓力、沒有時間限制。

Leetcode中有一個Study plan的功能,裡面是按照不同的主題整理起來的題目集,我瀏覽了一下,想說我的DP(Dynamic Programming)真的是爛得有剩,就決定先從這個主題的Study plan開始,而我也的確貫徹了不讓自己有壓力不想刷題的原則,一個Study plan不知道寫了多久才好不容易寫完,中間各種分心去寫比較熟練的題目,或是直接偷懶寫點簡單的讓自己有信心。

終於開始了刷題了,如何持續?

好不容易突破了我的最大靜摩擦力了,接下來就是如何克服動摩擦力,讓自己每天都有一點點的進度。

Leetcode這個網站其實可以很清楚的看到自己的成就,不管是每天刷了多少題、連續幾天刷題、完成了某些主題的Study plan,他都有相應的介面,讓人看了覺得自己真的有在累積些什麼。同時,我發現如果有人稱讚自己的努力的話是一件很開心的事,所以我三不五時就會去跟朋友說:「我今天有寫題目,我很棒!」而朋友也總是很開心的稱讚我,就算只是寫一題簡單題,可以得到回饋也讓我更願意隔天繼續保持。

於是在Leetcode巧妙的設計下(每天寫Daily problem可以有累積天數、完成study plan有漂亮badge、累積夠多coins可以換T shirt)、朋友無條件的稱讚我很棒的狀況下,還有我實在是在家太無聊的狀況下,我默默地開始每天寫題目,寫不拿手的可能寫完一題就覺得今天的腦袋用夠了,寫拿手的就ㄧ連串的相關題一口氣通通寫完,就這樣100題、200題……一路刷了半年,寫了800題左右,回頭看去,這絕對不是過去的我有辦法料到的事,我居然,願意刷題,甚至刷了幾百題!!而那時的我,也終於覺得自己似乎可以去挑戰看看,那間曾經因為我寫題目寫太慢而直接拒絕我的公司了。

當時的我真的就這樣跌跌撞撞的練習著題目

回顧從極力抗拒、心理攻防、開始刷題到持續刷題,自己的決心與努力固然重要,但朋友及家人的支持也非常的重要,需要有人一起跟我慶祝每天小小的成就,就算是很簡單的一句「你很棒」也是非常有效的。

這篇沒有什麼很有規劃、教人怎麼按部就班刷題的步驟,我僅僅是與大家分享,在極討厭刷題的狀況下,怎麼讓自己慢慢的練習一些題目,最終以這些為手段,得到自己想要的成果。如果是需要嚴謹計畫的讀者,網路上有非常多文章分享怎麼規劃刷題進度,但如果是跟我一樣覺得多查反而壓力大,想照著自己的步調走的話,可以看看我的方法對你們有沒有幫助。

講了這麼多,我這毫無章法的刷題到底有沒有用呢?沒有買Leetcode Premium、沒有查其他人的刷題心法,有的只有Leetcode規劃好的Study plan、相關題目以及願意花時間跟我討論的朋友。

結果來說,還蠻有用的!下一篇會分享,在刷了這麼多題後,我的各種面試過程以及結果。

最後的最後,您的按讚是對我的鼓勵,歡迎按讚分享我的FB粉專 L’s 碎碎念

沒事也幫我拍個手吧,鼓勵是很重要的!

--

--