2016年7月29日 星期五

當程式設計師該有的覺悟

程式設計是很邪門的一門藝術,說他難,其實超級難,說他簡單,其實如果沒寫到Assembly Language,您會發現一個好的演算法,其實Code很少,並且易讀的,可能兩百行就達到您要的功能,並且超快,兩百行會很難打嗎,其實有寫好得Code就複製貼上就可以用了(笑)

當然如果是需要很多演算法的處理,也是數千行的程式碼拉,

就光學檢測這一塊,其實要找瑕疵就是二值化或Sobel然後Blob,找刮痕不外乎就是利用中值濾波找出背景,然後前景背景相減,剩下就是瑕疵了,上述演算法其實一般進去公司,公司都會有現成寫好的,就算沒有,其實有IPP(Intel的影像處理函式庫),您只要會呼叫他就可以了,而且速度超快,要寫的演算法通用的都有人幫您處理好了,不太需要自己寫過,

去哪間公司,其實到最後都一樣的,這邊提到IPP很快,那假設自己寫了5~6年某演算法處理速度已經到極限了,您知道有IPP這種東西比較快,您如果會使用的話,不會去用他嗎,怎麼可能?,最後就變成大家都用一樣的東西,每間公司有獨門的技術嗎?都是呼叫IPP,技術的不是技術了,

當然這裡只是指常用的演算法,會有一些函式庫可以呼叫,一些特殊的處理還是要自己寫的,不過就像提到的,其實很多東西都人家幫您寫好了,您只要拿的到並且會用,都不用自己寫的,所以說實在的也等於處理一下UI的東西,就可以賣了

其實就是因為很多東西被物件導向化(就被打包成一個函式),省下工程師的很多力氣,但是變成門檻太低了,因為大家都會做,導致薪水下降,要追求高薪必須越做越多,這裡是說有拿到一些現成的東西的,

那要是沒有一些現成函式呢,例如您學校剛畢業,什麼都沒有,那人家有現成函式的產品一下就做完了,您全部自己寫就會變成,累得要死,難易度超高,所以說寫程式也可以說非常難

看到這邊,通常我們都是屬於沒有自己東西的人,所以要自行創業的話,什麼東西都沒有,簡直是天方夜譚,不可能的任務

所以我們會遇到的狀況變成沒有資源,要花比人家多好幾倍的力氣,達到跟人家一樣的水平

總之就跳針一下,就是會有很多問題及工作量拉,所以要有以下覺悟

1. 寫Code通常是一翻兩瞪眼,通常一個地方出錯,整支程式就會一直當機,導致不能用,所以一定會遇到一直查問題的狀況,通常查問題會花很多時間,查不到或不會解決,就會一直卡在那裏,這種狀況是正常上下班不可能解決的,有時候沒查到Bug就只能沒日沒夜的查,所以如果您想做好,一定要有加班的心理準備

2. 如前面所提,我們是屬於沒有資源的那一群,所以如果真的要做程式設計師,最好學得差不多時,要開始累積自己的東西,例如寫一個函式要1個月,假設您是人家的員工,通常有簽一些條款,就是做出來的東西是公司的,這樣就變成,你做出來的程式您換公司不能拿來用,也就是就算您有能力再寫一份出來,您也要浪費一個月,

因此當覺得自己能力夠時,最好要開始累積自己的東西,一個函式也是東西,往往薪水和自己的東西比較起來,自己的東西比較重要,因為如果您想永續的發展,絕對要累積一些自己的東西,並在進入下一家公司時,做一些契約上的協調,也就是東西我在這家公司用完了,不管換公司還是自己創業,這些東西我必須可以直接拿來用,不然您會陷入一直打掉重練的狀況

3. 寫Code是很累的一件事,絕對不要想要偷懶,他有一套標準做法,例如class複製一定要寫Copy Constructor你如果偷懶沒寫,他在一些狀況下會出錯,這個以後我再做描述,總之不能為了省力,採取偷雞的作法,這樣您的東西會有問題,

4. 一些AOOP的東西是有用的,其實您只是沒看過人家怎麼用,它可以幫您省下很多Code,所以不要只停留在C語言的境界,您寫久了會操死,又寫不好

5. 一定要養成定期註解,通常趕案子不會一直註解,但是一段時間一定要註解一下,不然很容易忘記,也是不能為了省打字,就都不註解

6. 通常一個東西要賣錢,一定會有相關應用,像AOI程式就牽涉到做設備,通常要做軟體整合,工作量是很大的,而且往往您多想5分鐘做一些預先規劃,就像是模組預先規劃可以擴充,往後您修改時會比較好改,要是寫得太死,往後您要改等於是打掉重寫,一樣您會累死


總之看到這裡,結論就是不要懶,多想兩分鐘做規劃,往往比人家做事慢一點,但是往後您會省下很多力氣,真得要多想多練習,主管常常會亂追進度,寫Code不是賣東西,賣越快做越好,所以要按照自己步調來寫,不然通常往往會寫不好的(就是照主管的想法做事),並且不要太怕加班,因為有些東西每天只做8小時是做不好得,何況一般人上班會偷懶,可能一天扣掉開會,打雜,不知道花在寫Code上面有沒有4小時(這是真的喔,通常能持續寫6小時算很認真了)

沒有留言:

張貼留言