新聞中心
資深軟件開發(fā)人員分享他們在多年從業(yè)當(dāng)中學(xué)習(xí)到的,關(guān)于如何成功推進(jìn)專業(yè)編程工作的種種真知灼見。

創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為灌南企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),灌南網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
如果大家屬于剛剛涉足專業(yè)軟件開發(fā)世界的新人,各位可能會以為自己完全能夠憑借著多年來在計(jì)算機(jī)科學(xué)及編程領(lǐng)域獲得的教育及/或培訓(xùn)順利玩轉(zhuǎn)一切。不過在這一行業(yè)浸淫多年的老鳥開發(fā)者則希望提醒大家,單憑科班灌輸?shù)闹R還遠(yuǎn)遠(yuǎn)不夠,我們還需要從實(shí)踐當(dāng)中了解到更多***指導(dǎo)性的寶貴財(cái)富。
為了掌握這些真知灼見,我與多位經(jīng)驗(yàn)豐富的資深開發(fā)人員進(jìn)行了溝通——他們至少在軟件技術(shù)領(lǐng)域擁有十年乃至更長的從業(yè)經(jīng)歷(有幾位甚至已經(jīng)從業(yè)數(shù)十年)。提到他們希望自己在剛剛畢業(yè)并初次涉足編程行業(yè)時(shí)能夠了解到哪些箴言,他們都有著自己的答案。無論大家是剛步出校門的應(yīng)屆生還是已經(jīng)在編程領(lǐng)域有些心得的從業(yè)者,下面這些來自老鳥們的建議相信都能在未來的發(fā)展道路上幫助各位找到正確方向。
了解與底層系統(tǒng)相關(guān)的一切
當(dāng)然,軟件開發(fā)工作當(dāng)中的重要組成部分之一正是編程語言本身。不過正如各位前輩所分享的心得所言,開發(fā)人員同樣需要了解堆棧之下所發(fā)生的一切。
“很多語言會以抽象形式將系統(tǒng)級別的運(yùn)作機(jī)制剝離出去,而這種抽象性確實(shí)非常重要,因?yàn)樗试S開發(fā)人員在大部分時(shí)間內(nèi)保持更高的生產(chǎn)效率。”Acquia公司技術(shù)支持工程師Pete Bull指出?!安贿^當(dāng)大家遇到障礙或者說非常嚴(yán)重的錯(cuò)誤時(shí),則需要對引擎蓋之下運(yùn)作的一切擁有相當(dāng)程度的理解。我們需要有能力調(diào)試某項(xiàng)進(jìn)程,并查看系統(tǒng)調(diào)用以真正掌握特定代碼片段與系統(tǒng)其余部分之間的交互活動,”他在采訪郵件當(dāng)中寫道。
同樣的,Platform.sh公司客戶滿意度副總裁Robert Douglass告訴我們,“當(dāng)我剛開始上手編程工作時(shí),計(jì)算機(jī)本身還蘊(yùn)含著大量我無法理解甚至聞所未聞的奧秘。文件系統(tǒng)、網(wǎng)絡(luò)以及數(shù)據(jù)如何駐留在內(nèi)存當(dāng)中,這就是三個(gè)典型的實(shí)例。這部分知識的缺失,意味著我根本無法真正從編程角度出發(fā)了解開發(fā)項(xiàng)目中的某些目標(biāo)?!?/p>
熟悉命令行工具
作為一位開發(fā)人員,大家很可能會把大量時(shí)間用在使用IDE或者代碼編輯器身上。不過需要提醒大家,如果了解如何在命令行上實(shí)現(xiàn)同樣的操作,那么各位的日常生活絕對會變得更加輕松。
“有時(shí)候,大家會發(fā)現(xiàn)自己只能使用一臺配置一切就緒,但可用工具非常有限的設(shè)備,”一位已經(jīng)擁有二十年從業(yè)經(jīng)歷的資深程序員告訴我們?!耙袷煜ず粑菢邮炀氄莆誷hell,包括find、comm、diff、vi/vm、sed以及awk等等。有時(shí)候利用正確的合作行編寫小型腳本來查找必須馬上進(jìn)行修改的文件將非常重要——因?yàn)樯a(chǎn)體系很可能已經(jīng)受到了影響、而造成URL指向未知文件的那位技術(shù)人員還在斐濟(jì)度假呢?!?/p>
作為一位開發(fā)者,Bull最初使用的是微軟工具,但隨后逐步轉(zhuǎn)移到了Linux陣營。他表示“我已經(jīng)學(xué)習(xí)到大量與命令行相關(guān)的專業(yè)知識,并意識到Linux系統(tǒng)之上提供的這些功能的重要地位?,F(xiàn)在我能夠輕松地重新調(diào)用幾年前自己編寫完成的代碼,或者拿出幾天或者幾周時(shí)間對grep + awk作出進(jìn)一步改進(jìn)?!?/p>
調(diào)試器是我們的好朋友
要想顯著節(jié)約寶貴時(shí)間,非常重要的一點(diǎn)就是利用相關(guān)工具追蹤各類bug。Novartis公司生物信息學(xué)開發(fā)人員Dave Varon對于調(diào)試器的重要意義作出了強(qiáng)調(diào),并解釋了其如何幫助我們獲得遠(yuǎn)超過初始學(xué)習(xí)成本的收益?!皩W(xué)習(xí)使用調(diào)試器,快快快!”他在采訪當(dāng)中指出?!澳贸鲆?、兩天時(shí)間好好鉆研配置一番。在此之后,如果發(fā)現(xiàn)結(jié)果與預(yù)期不符,那么馬上調(diào)試:設(shè)置斷點(diǎn)、貫穿代碼,特別是第三方代碼。這不僅能夠幫助我們大大降低問題出現(xiàn)機(jī)率,同時(shí)也能夠讓大家在其間學(xué)習(xí)到很多原本只能通過閱讀他人代碼掌握的知識。”
學(xué)習(xí)編寫測試
一部分開發(fā)人員認(rèn)為單元測試——具體來講,就是編寫測試以驗(yàn)證小型代碼單元是否起到了其應(yīng)有的作用——非常關(guān)鍵。來自Strategic Power Systems公司的數(shù)據(jù)庫開發(fā)人員Richard Handloff就是其中之一。“我認(rèn)為我能給新人們提供的***建議,就是學(xué)習(xí)如何編寫出優(yōu)秀的測試機(jī)制,并在項(xiàng)目開發(fā)初期就制定出一套可行的測試方案,”他在采訪郵件當(dāng)中寫道。
制定改變規(guī)劃,了解新型系統(tǒng)
時(shí)至今日,每位從業(yè)者都清楚地意識到技術(shù)正在快速發(fā)展轉(zhuǎn)變。這種現(xiàn)象不僅影響著我們心愛的客戶的實(shí)際體驗(yàn),同時(shí)也改變著底層系統(tǒng)、語言乃至程序員們?nèi)粘9ぷ魉褂玫母黝惞ぞ摺?/p>
Milestone Made公司創(chuàng)始人兼移動開發(fā)者Adam Wulf建議稱,新晉程序員們應(yīng)當(dāng)準(zhǔn)備好——而且搶先一步——應(yīng)對技術(shù)變革?!熬湍壳皝碇v,我認(rèn)為大家應(yīng)該以四年為周期就學(xué)習(xí)全新技術(shù)堆棧作好規(guī)劃,”他表示。“良好的基礎(chǔ)知識當(dāng)然能夠始終發(fā)揮作用,不過我們每天所使用的工具乃至技術(shù)方案每過四年就會發(fā)生顛覆性的變更。”
“項(xiàng)目不應(yīng)再利用單一框架以單一語言編寫而成,”一位不愿透露姓名的開發(fā)者建議道。“大家千萬不要在某個(gè)項(xiàng)目當(dāng)中只使用一種開發(fā)方式,因此請盡快適應(yīng)在不同項(xiàng)目之間進(jìn)行語言/技術(shù)轉(zhuǎn)換的實(shí)際需求,”他在采訪郵件當(dāng)中寫道。
與他人保持良好關(guān)系
盡管常規(guī)概念下的程序員都會戴著耳機(jī)在自己的小世界里埋頭工作,但不可否認(rèn)的是,我們?nèi)匀恍枰瞬⒓鐓f(xié)作。Sinclair Digital Ventures公司CTO Ben Miller著重強(qiáng)調(diào)了作為團(tuán)隊(duì)成員角色工作對于實(shí)現(xiàn)職業(yè)生涯成功的重要意義。“大型項(xiàng)目往往是由眾多活動組件構(gòu)建而成,如果我們無法順利完成協(xié)作,那么組件的合并將成為一項(xiàng)不可能實(shí)現(xiàn)的任務(wù)?!彼诓稍L郵件當(dāng)中指出。“在嘗試對某種算法進(jìn)行優(yōu)化之前,請先與團(tuán)隊(duì)進(jìn)行溝通并確保任何能夠幫助團(tuán)隊(duì)成員減輕工作壓力的任務(wù)分配規(guī)劃都已經(jīng)部署到位。編程是一項(xiàng)團(tuán)隊(duì)競技項(xiàng)目,千萬別忽視了這一點(diǎn)!”
Varon還著重強(qiáng)調(diào)了人際交往能力的重要性,表示“如果大家無法自行完成API或者調(diào)試的審查工作,請借力于他人。我們自認(rèn)為編寫出了一段堪稱杰作的代碼,并不意味著它就一定出色或者沒有進(jìn)一步提升的空間。跟在大學(xué)里一樣,同處一室的其他同伴也面臨著同樣的問題,而且每個(gè)人都有可能找到了解決問題的***答案。與同事們建立起融洽的合作關(guān)系,有時(shí)候甚至單純向?qū)Ψ矫枋鰡栴}就足以幫助我們找到解決靈感?!?/p>
另一位不愿透露姓名的受方者也表達(dá)了類似的想法,即成為團(tuán)隊(duì)中一員對于順利完成任務(wù)所起到的積極作用?!凹词巩?dāng)前的工作比較繁重,我們也應(yīng)當(dāng)盡可能幫助其他成員解決各類難題,這將讓大家的職業(yè)生涯走得更加順暢,”他表示。不過在這種情況下,他也提醒大家“但請注意,要保證有理有節(jié)的幫助強(qiáng)度,否則我們很可能身陷其中而耽誤了自己的份內(nèi)職責(zé)?!?/p>
勇敢邁出自己的道路,以自由職業(yè)身份編寫代碼
Miller在這里提出了一項(xiàng)有趣的建議,而且乍看起來似乎難以理解。他在采訪中告訴我,“在工作之外編寫代碼更易于實(shí)現(xiàn)職業(yè)生涯提升。找到最簡單的問題解決辦法并對代碼進(jìn)行免費(fèi)的彈性設(shè)置與維護(hù),那么客戶自然會提供更多工作供我們完成。他們甚至?xí)埼覀円越處煹纳矸葜笇?dǎo)其內(nèi)部開發(fā)人員,”他解釋道?!昂喍灾?,過分擔(dān)心當(dāng)下這份工作是否穩(wěn)定反而會阻礙職業(yè)生涯的健康發(fā)展?!?/p>
網(wǎng)頁題目:每位新手程序員都應(yīng)當(dāng)了解的七條箴言
文章來源:http://m.5511xx.com/article/cdocdjh.html


咨詢
建站咨詢
