嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。
原本沒有預計要寫這個主題
只是最近寫 code 的時候好像發現自己有一個盲點
就趕緊把這個想法給記錄下來,好讓以後的自己笑笑現在的自己
平常我們在 coding 時,除了各種 API、SDK 的用法需要特地去查查
其他時候大部分的時間應該都是在做一件事情 -「事件邏輯拆解」
如上一篇所述,人腦很聰明,電腦也不差,但你不能把你想做的事直接跟它講
比如跟一個機器人電腦說:「去市場買豬肉,便宜就都買下來」
電腦可能會回你:你在攻三小
若是將上述的話拆分邏輯的話,就會變成:
故,大家才會說,程式開發最重要的是邏輯
將自己的想法層層拆分後,告訴電腦,它才能懂你想要做什麼
我把「因為不熟悉、不了解,所以沒有評估可行性」的這種盲點,命名為「幻想式開發」
常見於新手開發者(我 XD),那這是什麼意思呢
比方說假設我要做一個 TapCounter 的遊戲 且結合倒數計時
想要在觸碰 Tap 之後,同時也觸發了倒數計時的 function
故,笨笨的我一開始會這樣寫:
然後就會發現
我每按一次 Tap,就觸發一次 倒數計時的 function
太可惡了,那有沒有辦法是可以「鎖定這個 function」 只觸發一次呢(到這個時候就想偏了,鎖住這個 function 只觸發一次,在邏輯中好像怪怪的,可能也會浪費一些時間找到不必要的資料)
若是老手開發者的話,可能很快就可以想到利用 -「狀態管理」:
我想說的,其實就是這種,因為不熟悉,所產生的盲點而卡關很久(以前常常、現在也常常)
為什麼會有這種「幻想式開發」產生呢?主要就是因為對語言不夠熟悉,不知道各種應用的方式,所以對跨領域轉職者來說,常常會有這種直覺式的思考及直覺式的去想解決辦法
那該怎麼辦呢,除了熟悉該語言以外,就是大家常說的,鍛鍊「工程師腦袋」
試著以電腦及工程的角度去思考問題,用更多元、更多面向去思考看看解決的方法
講到這裡,突然靈光一現,這種「幻想式思考」,好像在哪裡見過
原來就是老闆(或PM或客戶)的想法,如果他們並非「工程師」,可能常常就會提出一些:
故,如何和非「工程師腦袋」的人解釋實作的困難及時間,又是工程師上班中遇到的另一個困難了。