精華區beta CSSE 關於我們 聯絡資訊
※ [本文轉錄自 Programming 看板] 作者: reader (讀者) 看板: Programming 標題: Re: 請問各家資工的特色 時間: Sun Jul 3 19:38:19 2005 ※ 引述《michaelz (michaelz)》之銘言: : 我覺得algorithm遠比coding重要多了 : coding強的人或許能把程式的效率提昇50%甚至100%.. : 但是好的algorithm常可以將效度提升10到100倍.. : 這已經不是在爭那幾%的效率了.. 我沒聽過有哪個演算法有這麼大的效能差距,而沒有寫在教科書上的。 這年頭連在軟體公司當最基層的助理軟體工程師的,也往往都是研究所 畢業了,最好是以研究所畢業會學到的演算法為基準,來考量 coding 較強的人的電腦科學常識才對。 所以麻煩不要把會 coding 的人當做是連一點電腦科學常識也沒有,而 可以讓學生們大談好的演算法如何如何,把程式設計者當做理論白痴。 甚至,如何寫出好程式,是電腦科學中最為艱深的研究之一,像是型別 理論的發展,物件導向語言的運算基礎是什麼,程式碼重構的計算理論 等等,哪一個不是抽象化到近乎哲學,是純粹理論研究者關心的議題, 是電腦科學的最前線之一,其中的議題,只怕學生們是聽都沒有聽過, 更別提我一心嚮往的 cyberspace dynamics 境界,將電腦科學的各個 學術領域統整起來。 而一般人所知道的電腦科學,其實是很應用層面的東西,演算法效能的 推進,多數已到了瓶頸,一個領域之內成千上萬的學者加起來,一年能 有一個重要發展就很了不起了,根本不如外界所想像的那麼神奇,投資 報酬率之低,更是只有巨型企業和先進國家才養得起。 我是寫程式的,只怕我平日看的學術論文都比研究生多,還是自己掏錢 買期刊和線上論文,不靠學校資源的,而我從大一就開始看學術期刊, 但我還是更為重視寫程式這件事。 好的程式設計者如庖丁解牛,乃是格物致知,由技進於道,不斷學習和 內省而探求世界的本質,在日復一日的操作中窺視人類智慧的奧秘,才 不是沒有專業和思想的機器操作員。 所以程式設計者中會有天生奇才,會有數理精微哲學淵通的強者,也有 更多各式各樣的人,他們都在用自己的方式,在程式寫作中尋求自身的 大道,若沒有認識這樣的人,也不要以為他們並不存在。 : 另外以google為例..他搜尋為什麼快又有效.. : 演算法的優勢絕對是最重要的因素... : 雖然說好的programmer能減少server的loading或是增加使用者人數 : 但好的algorithm的效用遠比鑽研那些code要inline或是那些語法效率要高來 : 得效用大得多...而單純的programmer往往在意的是這些問題 : 把一個專案當成是一顆樹..那algorithm及上層的規劃就是樹幹 : coding是枝葉..有粗壯的主幹才有可能有茂密的枝葉.. : 一個有規模的專案絕對都是從使用者需求,市場分析, use case,界面設計, 演算法選擇 : 開始的..單純只顧著coding的大概到老也還是只會coding... : 這些能力不會因為程式寫久了就自己產生的.. : 而對於最重要的上層的分析等工作,寫程式的能力絕不是必要的 : 不過我不否認熟悉coding的人對這些關鍵的能力會有較多的感覺.. : 但是沉迷於coding是很容易走火入魔的... 講那麼多演算法的好處,請問你能自己研發新的演算法嗎? 能在指定的 時間內研發出來嗎? 如果不能,那麼演算法不過就是運算類的程式片段 型錄而已,懂得看型錄的人有什麼了不起呢。 當然很多人連型錄都不知道,就可以吹捧演算法了。沒看過演算法型錄 嗎? 沒關係,我舉個例子: http://www.users.zetnet.co.uk/hopwood/crypto/scan/index.html 連演算法好不好、有沒有問題,都已經標註出來了,類似的東西很多, 你自己若不能比這些專家厲害,就請不要鼓吹每個人都該去搞研發,而 不是多去找找這類型錄來應用,台灣需要的是對先進科研成果的吸收和 應用,而不是在貧瘠的研究土壤上犧牲人才。 若不討論要花大力氣研究的高等演算法,真正的程式設計高手隨手就是 自製的一般演算法,它們不過就是比較麻煩的程式碼,然後等行銷部門 需要酷炫一點的名詞時,才在說用了什麼什麼技術,能夠提昇多少多少 效能。 軟體技術的世界中,重要的就是創新、品質和標準,若不懂這些東西, 根本就不用談成功立業,而它們背後的東西是什麼? 那就是程式設計的 能力,沒能力不用談創新,不用想符合標準甚至創造標準,更別提什麼 是品質了。 軟體製作就像是下圍棋一樣,明著可見的特定演算法,只是類似定石的 東西,沒有人能說它不重要,但背會全部定石能算得了什麼? 這裡真正的問題,其實是學界和業界的詮釋權爭鬥,演算法是學界最能 插手業界的一個地方,所以總是被說得天大地大,好像在業界就不懂得 設計演算法了,還宣傳得像是非專業的電腦科學家就做不出來,而真正 軟體製作中的其他無以數計工作,卻總被當作是無足輕重的事情。 你知道程式設計工作中,最需要外部協助的地方是什麼嗎? 當然,不是 演算法,而是配置管理 (configuration management), 聽過嗎? 曾經 把它當一回事嗎? 在中大型的軟體製作中,它才能稱主幹,配置管理的 好壞,影響軟體開發方法的選擇,再影響軟體要怎麼分析要怎麼設計, 能不能趕工,能不能在時間內完成,軟體品質能不能有效控管。 而你又知道現代軟體團隊中的領導者,應該要做什麼事嗎? 較為正確的 答案是什麼都做,特別是要幫其他人收爛攤子打雜工,所有問題都要能 扛起來,而不是去做一個高貴的不沾鍋,能為人下才能為人上,而其他 有特定專業的人,其實都是平等的,其中能力愈廣者愈為重要,若只有 單一專長,例如能做理論卻不能做別的事情,往往是公司頭痛的對象, 也只有大公司才養得起。 這是一個整合的時代,擁有專業只是最起碼的能力,而能夠整合,才是 關鍵所在,如何才能有效整合,才是軟體產業當中最重要的課題,無論 那是個人能力的廣度、公司制度的規範、軟體標準的符合、上下游業者 之間的溝通合作、客戶需求的有效理解,無一不是「整合」。 一位好的程式設計者,所需要在意的豈止是程式碼的細節? 那根本就是 你們自己的錯誤認知和錯誤想像,又或者你們所知道的軟體世界,只是 軟體產業的底層悲慘世界,然後用這種觀點,認定其他世界的狀況就是 如何如何。再不然就是把自己公司的體制當成真理的乖順員工。 簡單來說,就是不要班門弄斧,以為程式設計者都是純靠勞力賺錢的, 在這個電腦碩博士多得跟野狗一樣的年代,在軟體事業經營如此艱困的 時候,還能在這位置上堅持下來的人,所靠的就是不息的熱情、夢想與 專業。至於那些不在軟體產業中的企業資訊人員,他們怎麼不專業,就 不關軟體業的事情,他們是我們的客戶和肥羊,不和我們一國的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.173.29 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.173.29
AssistantR:推~~~板大見解令人佩服!!! 220.139.146.36 07/03
ykjiang:哈!又收錄了一篇 ^_______^ 61.59.10.38 07/03
godfat:大推最後一句話 XDD 61.224.46.3 07/03
godfat:真的該出書 XD 文摘集也好 XD 61.224.46.3 07/03
taiwancat:光發收費電子報都能賺吧~ 218.170.79.158 07/03