成為一名硅谷的工程師可能是很多中國程序員的夢想。硅谷被公認(rèn)是目前世界上云集了最多優(yōu)秀工程師和知名科技公司、創(chuàng)業(yè)公司的地方,吸引了全球無數(shù)投資者、創(chuàng)業(yè)者和工程師的目光。在那里工作的工程師,有著令人羨慕的職業(yè)發(fā)展前景,薪酬待遇。此外,他們出眾的教育背景,扎實的專業(yè)能力,創(chuàng)新的思維,專注的敬業(yè)精神也成為了其他工程師們學(xué)習(xí)的標(biāo)桿。
下面總結(jié)的10條建議,來自一些有關(guān)編程的網(wǎng)站、社交平臺和博客,給出這些建議的人大多數(shù)也是工程師(當(dāng)中包括在硅谷工作的),以及一些專門研究計算機科學(xué)的學(xué)者。如果你有志成為一名出色的程序員,不妨借鑒一下這些寶貴的建議和他們在工作中的經(jīng)驗和心得,從而令自己在編程的學(xué)習(xí)和工作中不斷提高。雖然不是每個程序員都可以有機會在硅谷工作,但每個人都可以通過努力,讓自己變得更出色,甚至有一天,你會比在硅谷的工程師更加優(yōu)秀。
1. 精通一種編程語言
編程語言是一種用來對計算機進行操控的工具。精通一種編程語言要比對一堆編程語言都只是略懂皮毛要好。編程是一門專業(yè)性很強的工作,它對程序員的要求也是很嚴(yán)格的。優(yōu)秀的程序員必須精通至少一種編程語言,能夠輕松地解決所碰到的問題。
2. 成為一名系統(tǒng)的調(diào)試員
成為一名系統(tǒng)的調(diào)試員,這意味著當(dāng)你在進行調(diào)試的時候,你對你的代碼有一個很好的構(gòu)思模型。這就是說,當(dāng)你的程序出了問題時,你可以對一些出錯的程序作出假定,而不是盲目地進行修改直到你的程序正常為止。
3. 有一個出色的編程環(huán)境構(gòu)思模型和硬件構(gòu)思模型
大多數(shù)的程序員都需要與外界互動,因此了解你的編程環(huán)境是很重要的。這個包括了輸入/輸出,以及你的編程語言所提供的并發(fā)原語,你的程序獲得外界信息的方式(例如環(huán)境變量和命令行參數(shù)等),還有就是你的操作系統(tǒng)處理文件訪問,設(shè)備訪問,搜索路徑等等。
了解你所使用的硬件是如何工作的,這可以幫助你更有效地寫代碼。即使你正在使用一種更高級的編程語言,你仍然需要了解很多東西,例如調(diào)用堆、MMU、上下文切換的成本、記憶庫的層次結(jié)構(gòu),以及你所連接的網(wǎng)絡(luò)特性等等,這些將讓你在做出編程決定時得到預(yù)示。
4. 擁有很好的數(shù)學(xué)思維
雖然編程并不像行外人所想的那樣,需要很深奧的數(shù)學(xué)知識,但是當(dāng)你著手處理一些比較棘手的問題時,你會發(fā)現(xiàn)如果擁有很好的數(shù)學(xué)思維會讓你的工作方便很多。很多有趣的編程領(lǐng)域,例如計算機圖形、信號處理和密碼使用法都要求要有深厚的數(shù)學(xué)知識。即使你只是在評估代碼的性能,它同樣需要一些統(tǒng)計思維。
5. 能夠從零開始寫一個程序和快速寫代碼
從零開始寫一個程序是一個優(yōu)秀程序員必須具備的能力。很多時候,嘗試一些不同的解決方案并從中選擇最有效的,這樣比只是不停地思考一種解決方法更有效。優(yōu)秀的程序員還具有能夠快速寫代碼的能力。這種能力是通過不斷地學(xué)習(xí),思考和實踐積累而來的。
6. 擁有團隊合作精神
很多時候程序員要做的項目并不是從零開始的,而是要與其他人一起合作,共同開發(fā)一個項目,每個人負(fù)責(zé)部分工作,因此擁有團隊合作精神十分重要。和比自己優(yōu)秀的人一起工作,樹立一個共同的目標(biāo),盡力幫助別人,而不是害怕競爭,這不僅有利于項目的順利完成,也有助個人能力的提升。對于團隊工作經(jīng)驗不多的程序員,可以多參與一些社交平臺或社區(qū)的活動,看看那些大牛們?nèi)绾螌懘a,還可以通過參與討論,觀看編程直播,在線交流等方式來提高自己的能力和團隊精神。 Livecoding.tv 就是一個不錯的社交平臺,那里聚集了世界各地的程序員,大家可以在線交流,討論如何寫代碼,還可以全程直播寫碼。
7. 通過實用的工具提高效率
這不是說一個優(yōu)秀的程序員必須懂得使用所有工具,而是選擇適合自己和項目開發(fā)所需要的工具。很多程序員會在他們自己個人的社交帳號或社交平臺上推薦一些他們經(jīng)常使用的編程工具和編程實例,多瀏覽這些信息,從中你會得到很多啟發(fā)。筆者在livecoding.tv上,看到有應(yīng)用于各種程序設(shè)計語言的工具介紹。感興趣的朋友,可以瀏覽他們的博客空間。
8.通過開發(fā)實際的項目積累經(jīng)驗
進行實際的項目開發(fā)是最好的讓一個程序員變得更優(yōu)秀的方法。尤其是你要在壓力下開發(fā)一個項目,面對變化無常的客戶以及真實的多變的開發(fā)環(huán)境,還有很多真實發(fā)生的問題,這些困難會讓你快迅成長成為一個優(yōu)秀程序員。
每年開發(fā)一個自己喜愛的項目,直至它完成為止。這樣可以讓你突破自己的界限和讓你對開發(fā)項目保持興趣。這個項目可以是你有過體驗的并且是喜愛的,也可以是你不知道的一些事情。例如如果你已經(jīng)懂得了游戲開發(fā),但不懂Ruby,那么你可以嘗試用Ruby來開發(fā)一個游戲軟件。
9. 站在終端用戶的角度來看待你的應(yīng)用程序
優(yōu)秀的程序員并不會是在封閉的空間里編寫代碼就可以了,而是要站在終端用戶的角度去評估自己所編寫的軟件。終端用戶不是專業(yè)人員,他們通常會把軟件看作是一件神奇的工具,而在程序員的眼中,軟件是一個邏輯的步驟。也可以說,在程序員看來一件簡單而邏輯性的事情,在普通的用戶看來是很難理解的事情。因此,優(yōu)秀的程序員會擺脫程序員的身份,用普通用戶的角度去看待在軟件中可能存在的“令人討厭”的問題。這樣也有利程序員更好地進行測試。
10.永遠不要停止學(xué)習(xí)和閱讀
計算機世界變化的速度是驚人的。程序員被認(rèn)為是最接近計算機世界的職業(yè),幾乎所有的科技新產(chǎn)品都得由程序員來寫代碼。因此一個優(yōu)秀的程序員應(yīng)該具有淵博的知識,狹窄的知識面會讓你的技能停滯不前,跟不上技術(shù)發(fā)展的步伐而最終被淘汰。你今天還在引以為豪的技能,可能突然會成為一種“過時”的技能了。因此,在編程領(lǐng)域中那些知識淵博的工程師,無一不具有這樣的特質(zhì):不斷地學(xué)習(xí)新的技能,并且銘記在過往使用那些技能時得到的經(jīng)驗。
一個真正優(yōu)秀的程序員是從來不會停止學(xué)習(xí)的。在硅谷中的工程師也不例外。很多公司在招聘工程師的時候,也會很重視候選人對學(xué)習(xí)的態(tài)度。保持學(xué)習(xí)的態(tài)度可以體現(xiàn)在:閱讀大量的書籍,而不僅僅是瀏覽網(wǎng)站;以一種要提升自我的心態(tài)來閱讀,而不是只是為了最新的項目;同樣的,廣泛地閱讀,而不是只是關(guān)注最新的技術(shù)。此外,你還可以每年學(xué)習(xí)一種新的編程語言,了解這種語言的基本知識。這會有助你了解這種語言有哪些優(yōu)勢,讓你在編程時會有更多新的想法。
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68556 -
編程
+關(guān)注
關(guān)注
88文章
3627瀏覽量
93809 -
硅谷
+關(guān)注
關(guān)注
1文章
121瀏覽量
16556
發(fā)布評論請先 登錄
相關(guān)推薦
評論