我經(jīng)常使用這三個幾乎可以互換的詞,是的,甚至包括計算機(jī)科學(xué)家。畢竟,我們中的大多數(shù)人都擁有計算機(jī)科學(xué)學(xué)位,那這三者有什么不同呢?然而,最近我發(fā)現(xiàn)這三者的特點在我腦海中愈發(fā)涇謂分明。當(dāng)我一想到那些我認(rèn)識或者從事這個行業(yè)的人時,便能馬上將他們歸為這三種之一。不是說一個人不能同時擁有這三者的全部特點,但無論如何,他們總會更傾向類一種,那么我便把他們歸屬到那一類,程序員、開發(fā)人員或者計算機(jī)科學(xué)家。 其實很難對這三者下定義(相比嚴(yán)格的描述,這更靠直覺而定)。雖然它們非常相似(確實如此),但我還是盡力分辨,因為我是個不怕吃苦的人。 計算機(jī)科學(xué)家 他們寫代碼(是的,我知道這有點讓人吃驚)。他們所寫的代碼,也許不是最漂亮或者構(gòu)造最好的代碼,但是能完成任務(wù)。這跟代碼設(shè)計或者“良好”習(xí)慣沒有關(guān)系,只是用來證明他們要去證明的東西。計算機(jī)科學(xué)家不僅是技術(shù)專家,而且還是數(shù)學(xué)家(他們有31337種數(shù)學(xué)技巧),他們不僅要知道代碼是有效的,還必須對其作出證明。溝通和人際交往能力是理想的品質(zhì),但不是必須的。這些人掌握了他們整個研究領(lǐng)域足夠的基礎(chǔ)知識,但他們會專攻其中一點或者幾個狹小的領(lǐng)域。在這些領(lǐng)域中,他們是世界級的專家。他們在私人時間里做著和他們研究相關(guān)的工作。 程序員 程序員編寫非常棒的代碼。代碼簡化,構(gòu)造優(yōu)良并且要沒有錯誤(error free),這些非常重要,但是他(她)們不能以無法完成任務(wù)為代價。在他們的領(lǐng)域中,全是關(guān)于了解“優(yōu)秀代碼”的含義。他們需要掌握一些數(shù)學(xué)技巧,但這不是最重要的。他們需要清楚好(最好)的問題解決方案,但不必加以證明該方案是最佳的。對他們而言,必須掌握足夠廣泛的算法,并且在專業(yè)知識方面掌握有熟練的技巧,在相關(guān)領(lǐng)域也具備相當(dāng)優(yōu)秀的知識。溝通和人際交往能力是理想的品質(zhì),但不是必須的。軟件開發(fā)過程和團(tuán)隊活力是理想的品質(zhì),也不是必須的。他們在不上班的時候,做個人軟件項目,以尋找樂趣。 開發(fā)人員 他們寫代碼。優(yōu)化和簡化代碼固然重要,但通常會優(yōu)先考慮其它因素。數(shù)學(xué)技能不是必須具備的,但有助于了解與他們所在領(lǐng)域相關(guān)的常見問題及解決方案。溝通和人際交往能力是最重要的。軟件開發(fā)過程和團(tuán)隊活力是賴以生存的技能。他們是不依賴任何真正專業(yè)技術(shù)的全才。他們擅長繞過問題,集成組件,從而滿足一系列要求。在個人時間里,他們不是在盡力構(gòu)建下一個Facebook,就是參加與編程、開發(fā)或者計算機(jī)科學(xué)無關(guān)的活動。
需要記住的是,這三者在任何方面中都不存在貶義或者不好的意思。他們體現(xiàn)的價值是相等的。他們只是我們所涉及的領(lǐng)域中不同的方面(有一些交叉點)。可能其中一個會有更多與眾不同的特點,但這并不意味著這三者不能相互滲透、相互融合。一名出色的開發(fā)人員完全有可能同時是一名杰出的程序員(雖然要關(guān)注于那么多重要的事情是很困難)。極少數(shù)情況下你會遇到甚至集三者于一身的情況,那也是我樂意從您那了解的情況。因為我們應(yīng)該一起開公司,那樣我就可以借著你這牛人一路順風(fēng)。不過不管你在哪兒失敗,只要你把握住三者之一,都完全有可能大獲成功。 什么是軟件工程師呢?他們只是開發(fā)人員的一個子集。 我相信我沒有完全表達(dá)清楚我的想法。不過沒關(guān)系,這個任務(wù)交給你了,親愛的讀者。您是否認(rèn)為程序員、開發(fā)人員和計算機(jī)科學(xué)家是有區(qū)別的?如果是,那您對它們的定位是否跟我的相似?如果不是,我很樂意傾聽你關(guān)于他們的想法。(編注:個人一直把“程序員”等同于“開發(fā)人員”,從未想過兩者之間的區(qū)別。正如 Alan所期待,如果你有其他想法,請在評論中和大家一起討論分享吧。) |