時至今日,創建屬于自己的定制化應用程序從未變得如此便捷。在網絡、桌面以及移動開發智能框架的廣泛普及之下,任何心態良好、認真專注且目的明確的用戶都能夠在幾乎任何平臺上建立起極具時代感且由數據驅動的應用程序。然而,一旦將話題轉向編程領域,問題就會變得更復雜、更難以打理。在今天的文章中,我們就來一起探討如何從零開始創始應用程序。
首先,先提幾點注意事項:編程并不適合每個人。盡管如今編程工作已經變得比較容易上手,但大家仍然不能指望隨便找幾個人就能開發出世界一流、具備專業品質的應用程序。因此,在樹立遠大的技術抱負之前,大家需要先花幾個月來深入學習一門語言及框架,這樣才能踏踏實實地為未來的工作打好基礎。
另外,我們創建的第一款應用程序不太可能既復雜又高效,事實上這樣的成果只會出自經驗豐富的開發老鳥的精心雕琢。不過只要經過嚴密規劃與認真投入,大家仍然可以拿出一套對企業及客戶切實有益的應用產品。正如我們在后文中將繼續討論的,開發是一個不斷循環往復的過程,只要下決心走上這條道路、我們永遠有機會對自己的應用加以改進與完善。
我們該對代碼做出怎樣的預期
軟件開發的核心在于流程,而在代碼及應用創建方面,我們的學習流程應該包含以下幾個步驟:
1.選擇一種語言及框架。
2.接受相關培訓。
3.規劃自己的應用程序。
4.開發出一套MVP(即小型可用產品)。
5.重復以上過程!
挺簡單的,對吧?其實事實并不復雜。下面我們來看第一步。
選擇一種編程語言
也許應用程序開發過程中最讓人難以決定的,就是到底選擇哪一種編程語言以及與之相對應的框架。每種語言都有自己的優勢與缺點,而更讓初學者感到頭痛的是,根據特定語言特征實現對應編程目的的舊觀念現在已經不再起效。總而言之,如今我們很難根據明確的開發目的為自己選擇最合適的語言類型。舉例來說,JavaScript原本是一款專門作用于瀏覽器的前端語言,但目前它卻被廣泛用于瀏覽器后端。
由于篇幅所限,我們無法在本文中充分評述各種語言與框架的細節信息,但希望下面這份簡明扼要的清單能為大家提供一點指導:
JavaScript – 一種針對前端/UI開發的基本腳本語言,但目前正作為后端語言而日益普及。
Python – 一種針對桌面與Web應用的多功能語言,在腳本方面的表現也同樣出色。
PHP – 一種人氣很高的Web應用服務器端語言,對以WordPress為代表的博客平臺來說至關重要。
Ruby – 一種易于學習的Web應用程序常用語言。
Java – 專門用于Android應用程序開發的常用多功能語言。
Objective-C – 一種以C語言為基礎的通用型語言,也是iOS應用程序的核心語言。
需要強調的是,基本接受一種給定語言并不代表我們無法在開發過程中涉及其它實現方案。由于目前切實可用的多平臺框架越來越多,大家完全可以利用任何一種流行語言為iPhone或者Android設備開發應用程序。在這一領域,最顯著的例子就是PhoneGap——它能夠將我們的HTML、CSS以及JavaScript代碼編譯成可以為iOS、Android或者Windows Phone所接受的本地應用。
在真正決定應用程序的主要語言之前,先要對各類不同編程語言擁有一定程度的了解。
目前,大多數應用程序開發流程存在于開發框架當中——所謂框架是指一套軟件平臺,用于組織代碼并為應用程序提供結構,并以自動化方式處理大部分日常任務。當下比較常見的例子包括Ruby編程語言的Rails框架、JavaScript的Ember框架以及Python語言的Django框架。由于框架會從著眼于全局的角度、以實際設計原則為基礎進行應用創建,因此我們必須首先掌握一定程度的腳本語言知識。也就是說,即使大家決定專注于Ruby或者Python等核心編程語言,也必須要對HTML、CSS以及JavaScript或者CoffeeScript有所了解(CoffeeScript是一種獨立且比較簡單的語言,能夠以極佳效果將代碼編譯為JavaScript形式)。(通常情況下,無論實際使用的是哪種語言及框架,大家都必須掌握HTML及CSS的基礎技能。)
在接觸主要語言之前、先以練手的方式嘗試幾種其它編程語言也是不錯的辦法。我建議大家在Codecademy之類的學習網站上先認真閱讀幾篇教程文章,看看自己對哪種語言的設計思路最感興趣。
積累一些開發經驗
一旦確定了自己的學習目標,接下來就是著手進行實踐培訓。目前我們已經擁有不計其數的開發培訓課程可供選擇,形式從現場課堂到在線課程乃至指導性書籍無所不包。如果大家不知道如何選擇,那么三種全用也是沒問題的。
我們最好在選擇老師并投入時間與金錢之前,先花點精力觀看在線教學視頻。Code School、Codecademy以及Treehouse等網站都提供大量關于編程語言及開發框架的資料,而且收費非常低廉。Codecademy的免費課程是我們初次接觸編程而又無需花費培訓預算的最佳起點。作為我個人最喜愛的網站,Treehouse為編碼初學者帶來極為精彩的課程與指南信息,從最基礎的高級項目創建到頗為復雜的社交媒體功能應有盡有。
在面對面的教學課程方面,位于舊金山的Marakana以及位于丹佛的Pragmatic Studio都是大家學習開發技能的好選擇,這兩家機構提供的一周入門課程要價2500美元,具體金額取決于課程類型。一周入門課程主要專注一種編程語言或者框架,例如iOS或者Android移動平臺以及Web領域的HTML 5或者Ruby on Rails。一般說來,我們會在為時一周的課程中初步積累到關于某些簡單項目的開發經驗,例如如何創建博客、Twitter或者待辦事項應用。
相對于在線授課,現場課堂最大的優勢在于允許我們提出問題并與經驗豐富的開發者進行直接互動,老師們能夠為大家解決入門編碼者們可能面臨的最大挑戰。不過這里需要強調一點:這類課堂上的大部分學生都是從業已久的開發人員,他們參與課程的目的是為了提升自己的專業技能——也就是說后來者很可能跟不上這種過快的學習節奏。因此,請在正式開始學習之前花點時間,幫助自己熟悉關于語言或者框架的基礎知識。
當然,更為全面的新兵訓練課程也是存在的,例如Dev Bootcamp,其中每組學生都將獲得長達九周的開發主題培訓。不過相對較長的課時安排、有限的招生名額以及高達12000美元以上的要價讓小型企業的DIY愛好者們感到有些難以承受。
大家最好能在新手程序員們實際進行生產開發之前,為他們準備一個月左右的學習時間。但即使是這樣,我們也不能指望短短三十天就培養出能夠“指哪打哪”的真正開發人員。相反,大家可能會在掌握了基本編程技能后,仍然弄不清楚要如何把自己的知識儲備成功轉化為切實可用的應用程序。
進行應用程序規劃
在完成了為期數周的培訓之后,大家應該已經在語言及框架的基礎知識方面擁有一定程度的了解,現在就結合自己的知識進行應用程序開發規劃。根據我們在課堂上、書本里以及實踐指導中學到的內容,大家可以將概念與實際需求、底層數據結構以及界面設計等工作進行一一對應。
開發方法本身就是個完整的主題,而且很多專業開發人員都會以狂熱的精神對其加以研究。(舉例來說,我們網站的CTO就對敏捷開發概念很有話說……)但這并非毫無道理,因為錯誤的開發流程很可能毀掉一個本來極具潛力的好點子。在本文中,我將開發流程中的重點總結為敏捷宣言(專注于快速開發業務軟件)以及針對現有業務的改進與迭代機制。不過在剛剛接觸DIY編程領域時,大家沒必要過分注重開發方法。先將著眼點放在建立一款切實可用的應用程序上,并依靠開發成果解決自己的實際問題,這就已經初步達到目的了。