最近在思考一些關於軟體的問題,除了軟體開發本身,軟體工程師的養成過程到底有什麼良好的途徑呢?
在我的生活中遇過數十位學習軟體開發的同學與學弟,要怎麼幫助一個程式設計的初心者學會開發軟體,這其中有什麼因素會影響他的學習呢?
- 學習者本身
- 引導方式
軟體開發的能力差異不小,從可以實做目的、解決問題、至架構設計、掌控抽象、收斂混亂。目前想到上述這幾點,有可能會影響最終這位軟體工程師的定位。
會看到這幾個角度是因為,我所處得環境跟我的眼光大概就只看的到這幾點,或許學習者本身是最重要的,光學習者本身的學習方式、態度、熱誠,就有很多大大小小的影響了,但是我比較想知道的是,如果身為一個引導者,要怎麼幫助一個學習者發掘自我,邁步向前…走到他獨立無法走到的高度。
不覺得天份有什麼太大差異,但最終的結果都可以被歸納到這個結論,所以其實這個評估方式很不準確,有那麼多影響的因素,為什麼最終可以歸納說霉天份哩,其實應該不只在說軟體工程師啦~
假設一個初學者在一片白紙的情況下,要怎麼引導他學習呢?
- 制定目標:參考自我的學習方式,固定的動手做,能夠增進對自己學習的掌握。
- 定期檢驗:如同上述,掌握後就要實際檢討是否有更佳的方式,或更有用的資源。定期是重要的,耗費許多時間以後才發現是很不有效的。
- 檢討學習方式:如果學習方式不好,要怎麼改進,每次的改進與改進的方式與過程是否能成為未來的借鏡。
- 增強概念:軟體有很多內力需要增進,提高自己對抽象的掌控,確保自己這方面的基礎知識紮實,才能無後顧之憂的持續向前,否者根基不穩學習容易搖晃…
在想如果按照我自己歸納的學習方式(上述),輔助學習者用這些方法來學軟體開發,並從旁協助觀察是否有穩定的進度,是否就能夠比自主學習更有效率,或至少不會造成比自己學還要糟的情況呢?
且有引導者跟無引導者,能在學習的過程中,需要補足哪些容易忽略的細節,讓成長有比自學有絕對性的優勢,否則這些引導也只是純粹的監督而已。
因為有些人需要被監督,有些不需要,在需要監督的人身上容易看到成果,但如果其已經有足夠的熱誠,那又該如何幫忙裝上噴射火箭…呢…。
我在解釋的引導不是只是訂幾本書,出幾個作業,因為這樣做還是在靠學習者本身的方式,而是觀察每個人其學習的方式,並給予建議。因此有很大的彈性會造成不同的結果,而這個結果是不是引導者造成的呢…可能永遠都不能知道吧,最終其成為了業務…還是很強的軟體工程師,是誰的責任呢~?