看板Soft_Job
: 1.重要基礎觀念沒建立好 似懂非懂 硬兜出來
: 2.拿一本書在那K得很開心(我不懂業界 我用舉例 實際不一定這樣)
: 3.重要技術卻沒下重點去學
: 4.會自學得通常一定是非本科 也沒環境 沒這種資訊朋友
: 以上就是我自學失敗的血淚史 門外漢想入行 請真的去找間補習班好好學
: 不然自己在家閉門造車 就會變成我的失敗血淚史
這 ID 有點眼熟,一看才發現我在這裡回的第一篇文章就是回你的文章
也是在講自學的事情,突然幾分惆悵上心頭又不知從何說起...
一個角度是,努力與天份的乘積必須足夠
先談努力的部份
自學寫程式絕對是需要投注大量努力的事情
例如我當初在寫 Java 的時候看到 thread,螞蟻書的範例看過之後正茫茫懂懂的時後
我會用 google 瘋狂的下關鍵字亂找相關的東西
- thread
- Java thread 用法
- Java thread api
- thread process (嗯,新的關鍵字跑出來了)
- 其他...
然後一直看吐出來什麼文章,如果文章整篇看不懂就換下一篇,如果都看不懂但是冒出
某些很常出現的關鍵字,就先去找這些關鍵字。然後要看的資訊量就會開始爆炸
例如看到 thread,然後是 process,然後是 contex switching,然後是 interrupt...
或許不是所有關鍵字我都能完全了解,但至少會有個模糊的概念
我直到現在都還在每天幹類似的事情,最近寫 PHP 所以下的關鍵字會不一樣
- PHP framework
- laravel vs sympony
- PHP 5.x change
- why PHP sucks
- PHP virtual machine
「可是我又不懂哪知道要看什麼」
「就把不懂的東西全部找來看」
現在一個禮拜花在這類事情的時間比較少,大概十幾二十小時
學生時代可以一天就爬個八小時..
一天兩個小時全年無修,長期累積起來的投入時間非常可怕
我不知道這種程度的投入對其他人來說這是不是一種難以長期忍受的苦行
畢竟我花這麼多時間的原因不是因為我比其他人願意拼,而是我以此為樂
如果現在要我一天花一個小時算微積分我大概會哭...
然後是天份的部份
[quote article='#1DMLv9wr']
對我來說,知道如何把想要做的事情一路拆解成看起來好像能做到的小部份
才是「會寫程式」跟「不會寫程式」的差別
[/quote]
我原本認為,要能操縱隨意組合的萬能機器(程式),理解事物的構造是基本能力
所以碰到問題的時候,一路把問題往下解構成基本組成,解構成能夠處理,或是能夠被
提問的最小單位,這是基本動作
但是我發現這件事情意外的困難,很多人真的是做不到...
或是有些時候,看到一堆完全看不懂的東西,可能會隱約的覺得
「重點似乎在哪邊」「看不懂,不過似乎是跟OOXX有關」
這種明明看不懂卻還是好像理解了什麼的...sense,會相當程度影響你看東西的效率
我相信這些能力能被訓練,我就看過我認為沒什麼 sense 的人突然開竅
但是我完全不知道怎麼讓別人訓練出這種東西
而且這件事情跟程式語法看的熟不熟一點關係都沒有
有 sense 的人,自學的效果可能就比補習班還好,因為有能力抓出重點
而補習班通常只會教你「寫程式」,事物的構造你還是得自己摸索
哀傷的是,初學者大概也不會知道自己到底是不是有 sense 的人...
另外一個方向是,必須大量閱讀,大量閱讀,要命的大量閱讀
前面講到的 google 蟻地獄只是一部分,另一個部份是,要跟蹤資訊圈子的各種新訊息
身邊的人不能塑造出這樣的環境,那就靠網路
一個好的(而且不太技術性的)入門渠道是
-
http://www.slashdot.org
-
http://www.solidot.org
兩個網站類似,一個英文一個簡中
除此之外我還會用 RSS 訂閱一大堆文章...
例如說,訂閱一堆台灣軟體相關名人的 blog,然後大概就能看到「業界最新動態」
不過這裡的業界其實跟你在的業界可能又不一樣...
--
http://www.nooooooooooooooo.com/
我認為「解決問題」這件事情,是從「搞清楚問題」開始的
如果連拆解問題都做不到,很容易進入「好像看得懂程式但完全不會寫」的狀態
寫習慣的人可能會對過程感到太過自然而不自知
但是白紙完全自學碰到這種問題很容易愣住..
例如「登入」,實際上可以拆解成幾個部份
1. 輸入帳號密碼
2. 檢查帳號密碼是否正確
3. 顯示登入是否成功
我猜把這題目剛學 Java 卻沒怎麼寫過程式的人會有幾種反應
a. 哩工啥,這三小怎麼做
- 完全無法拆解問題
b. 嗯,我可以輸入兩個字串輸入帳號密碼,然後呢?
- 拆解出一部分,但是一部分拆解不出來
c. 我沒學資料庫耶,帳號密碼寫死在 code 裡面可以嗎
- 成功拆解問題,而且有考慮到 2. 應該被拆解成撈資料跟比對資料兩個部份
然後嘗試確認撈資料的部份的 spec 是否明確
a 跟 b 跟 c 三個人的差別絕對不在「Java 語法熟不熟」這種東西上面
不是,重點在於大量閱讀新知,而且要看許多不同的來源
其實這部份跟原文提出的問題點 2/3/4 有關
如果能大量的看資訊程度領先的人以及技術網站最近在談論什麼
就能比較容易知道業界在流行什麼,知道有哪些新工具可能可以用或可以學
或是又是哪個軟體出了大包要快點更新(EX: OpenSSL heartbleed...)
而比起每天手動去看 108 個網站(這是我訂閱的網站/blog數量)
用 RSS 閱讀器訂閱文章有效率的多
但一開始不會知道有什麼可以看,slashdot 這種精心編輯過的文摘網站是很好的起點
另外,拿來 RSS reader 追網路漫畫跟天文消息也很方便...
「能夠習慣這樣拆」這件事情就是我講的有沒有 sense
而自學的效率會被這件事情影響
學習這個我認為比「學 JAVA」「學 PHP」「學 C++」更重要
只是我不知道怎麼有效的針對這個做學習
如果是初學者卻很確定自己早就習慣這個動作,那天份的部份應該無須擔心..
※ 批踢踢實業坊(ptt.cc), 來自: 114.27.51.16※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1404031519.A.42A.html
→ y3k:我一直在想 如果有一天搜尋引擎突然全部掛光 應該會非常有趣.. 06/29 16:52
推 linlin76:已存在自己的資料匣中 06/29 17:02
推 uranusjr:推 06/29 17:26
推 typepeter:推 06/29 17:28
推 No:我也搜尋過PHP sucks ... 06/29 17:41
→ MOONY135:所以這樣拆解到最小的拼裝車是OK的嗎? 06/29 18:19
→ MOONY135:因為我都是這樣拆 最後組起來的東西一點都不漂亮 06/29 18:19
→ MOONY135:後面那段是指 看完搜尋的東西 雖然目前還看不懂 06/29 18:21
→ MOONY135:但是覺得這篇文章是有用的就先收起來的行為嗎? 06/29 18:21
推 f1234518456:理解 分解 再構築 06/29 18:49
→ x000032001: 煉金術? 06/29 18:51
推 neo5277:所以解析能力相對重要 06/29 19:06
→ neo5277:1萬個小時法則 06/29 19:06
→ MOONY135:登入密碼的地方 習慣拆的人應該不會意識到自己有拆 而會 06/29 20:17
→ MOONY135:覺得本來就該這樣做? 06/29 20:18
推 Wishmaster:出社會要繼續快速成長,理解能力,閱讀速度,英文能力... 06/29 20:25
→ Wishmaster:都超重要的阿...有人說有門道(同產業的人)很重要, 06/29 20:26
→ Wishmaster:但是捫心自問,有可能一直去問別人問題嗎? 06/29 20:26
→ MOONY135:問問題我覺得還好 有人問我問題我還是會回答 06/29 21:45
→ MOONY135:應該是如何問關鍵的問題的能力比較重要 06/29 21:46
→ andymai:補習班要先挑老師啦...都花了錢了當然要挑... 06/30 04:59