寫在開始之前
一直以來卵贱,總是不間斷的有人問我:“我想學(xué)編程猴鲫,有什么好的資源可以推薦的嗎是趴?”
我也不知道具體應(yīng)該怎么回答,因?yàn)檫@一條路真的太長太長了潦刃,只言片語的推薦起不到什么作用侮措,而且每個(gè)方向的學(xué)習(xí)內(nèi)容也不同。所以我總是回復(fù):“這要看你想做什么乖杠?”
于是對方又會(huì)問編程有哪些方向,當(dāng)我一一回答之后澄成,他又會(huì)問每個(gè)方向的特點(diǎn)是什么胧洒、有什么注意的事項(xiàng)。類似的問題源源不斷墨状,而我在這種連續(xù)不斷的追問下卫漫,花了很多的時(shí)間,但也只是片段性的回答了他最初的問題肾砂。
于是想到了寫這樣一本書列赎,可以帶領(lǐng)毫無編程經(jīng)驗(yàn)的小白了解一下編程及項(xiàng)目的開發(fā),掌握一些編程的技巧镐确;亦或是給一些編程熟手們提供一些自己積累的個(gè)人經(jīng)驗(yàn)和干貨包吝,給未來的開發(fā)提供幫助。
本書的定位是一本系統(tǒng)的入門級的經(jīng)驗(yàn)分享手冊源葫,因?yàn)橹饕嫦虻倪€是毫無編程經(jīng)驗(yàn)的小白诗越,所以有一定開發(fā)經(jīng)驗(yàn)的讀者們在看的時(shí)候可以選擇快速翻閱,找到自己所需要的干貨閱讀即可息堂。
所以嚷狞,我把本書命名為《編程之前》(《Before Coding》)。
本書編排架構(gòu)
本書以項(xiàng)目為核心驅(qū)動(dòng)荣堰,在一個(gè)標(biāo)準(zhǔn)的項(xiàng)目流程中主要存在三種角色——開發(fā)者床未、設(shè)計(jì)師、產(chǎn)品經(jīng)理振坚。如果是項(xiàng)目中后期薇搁,還有市場運(yùn)營的角色。
Tip:其實(shí)屡拨,這也是“創(chuàng)業(yè)沙拉”中的角色分配——藍(lán)色衣服的程序員只酥、紅色衣服的設(shè)計(jì)師褥实、橙色衣服的產(chǎn)品經(jīng)理以及白色衣服的市場運(yùn)營。
基于此裂允,本書的架構(gòu)也是由“D-D-P”三個(gè)部分組成——開發(fā)(Develop)损离,設(shè)計(jì)(Design),產(chǎn)品(Product)绝编。
Part.1 開發(fā)(Develop)
開發(fā)部分主要從語言僻澎、平臺、工具這三個(gè)層面進(jìn)行講解十饥。
筆者非常建議初學(xué)者挑選第一門語言最好是簡單易懂窟勃、上手實(shí)用的編程語言,并且最好學(xué)一門強(qiáng)類型的語言和一門弱類型的語言逗堵,這樣學(xué)下來才更加系統(tǒng)秉氧,未來接觸其他語言也更容易上手。
Tip:強(qiáng)類型語言蜒秤,一種總是強(qiáng)制類型定義的語言汁咏,要求變量的使用要嚴(yán)格符合定義,所有變量都必須先定義后使用作媚。
與其相對應(yīng)的是弱類型語言攘滩,數(shù)據(jù)類型可以被忽略的語言。它與強(qiáng)類型定義語言相反, 一個(gè)變量可以賦不同數(shù)據(jù)類型的值纸泡。
弱類型的語言首推 JavaScript漂问。強(qiáng)類型的語言考慮從 Java、Swift 和 Python 這三門比較火熱的語言中選擇女揭,最終選擇了在本書中講解 Python蚤假,Java 是典型的 OOP,初學(xué)者學(xué)起來會(huì)更加系統(tǒng)且收益匪淺田绑,但是初學(xué)者學(xué)習(xí) Java 的成本略高勤哗,本書若重點(diǎn)講解 Java 篇幅肯定不夠。Swift 語法優(yōu)美掩驱,簡單易懂芒划,但是目前由于平臺限制,雖說現(xiàn)在已經(jīng)開源欧穴,但是應(yīng)用場景仍限于蘋果應(yīng)用的開發(fā)民逼,所以目前并不實(shí)用。而 Python 語法比 Swift 更加優(yōu)美簡潔涮帘,且應(yīng)用場景頗多拼苍,上到服務(wù)端開發(fā)、網(wǎng)絡(luò)應(yīng)用调缨、游戲開發(fā)疮鲫,下到科學(xué)計(jì)算吆你、數(shù)據(jù)處理、硬件開發(fā)俊犯,遍及多領(lǐng)域妇多,使用場景多樣化,所以第二門語言選擇講解 Python燕侠。
Tip:JavaScript 一種直譯式腳本語言者祖,是一種動(dòng)態(tài)類型、弱類型绢彤、基于原型的語言七问,內(nèi)置支持類型。它的解釋器是瀏覽器的一部分茫舶,是一個(gè)廣泛用于客戶端的腳本語言械巡,為網(wǎng)頁添加動(dòng)態(tài)功能。
Python 的設(shè)計(jì)哲學(xué)是“優(yōu)雅”奇适、“明確”坟比、“簡單”。Python 開發(fā)者的哲學(xué)是“用一種方法嚷往,最好是只有一種方法來做一件事”(There should be one-- and preferably only one --obvious way to do it.)。在設(shè)計(jì) Python 語言時(shí)柠衅,如果面臨多種選擇皮仁,Python 開發(fā)者一般會(huì)拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法菲宴。所以 Python 的程序更加簡單易讀贷祈。
平臺會(huì)講解時(shí)下比較火的四大平臺的開發(fā)流程——Android應(yīng)用、iOS應(yīng)用喝峦、Web開發(fā)(HTML5/Web App)势誊、微信開發(fā)。
工具會(huì)介紹一些IDE谣蠢、開發(fā)工具粟耻、代碼管理工具等,筆者是一個(gè)工具控眉踱,嘗試過數(shù)百軟件挤忙,所以提供的工具具有參考價(jià)值。所謂“工欲善其事必先利其器”谈喳,好的開發(fā)工具將會(huì)使開發(fā)之路一帆風(fēng)順且充滿樂趣册烈。
Part.2 設(shè)計(jì)(Design)
設(shè)計(jì)部分主要從規(guī)范、工具婿禽、技巧這三個(gè)層面進(jìn)行講解赏僧。
規(guī)范上大猛,將會(huì)講解不同平臺應(yīng)用的設(shè)計(jì)要求以及通用的注意事項(xiàng)。
工具上淀零,會(huì)講解 Photoshop挽绩、Sketch、Axure窑滞、illustrator 等一些UI設(shè)計(jì)及原型設(shè)計(jì)軟件的使用琼牧。
技巧上,會(huì)介紹正規(guī)的設(shè)計(jì)流程哀卫,包括設(shè)計(jì)巨坊、切圖、標(biāo)注這三個(gè)主要流程中存在的技巧和經(jīng)驗(yàn)此改。
Part.3 產(chǎn)品(Product)
產(chǎn)品部分主要從需求趾撵、部署、上線共啃、管理這四個(gè)層面進(jìn)行講解占调。
需求上,會(huì)介紹需求分析的主要環(huán)節(jié)移剪。
部署上究珊,會(huì)介紹一些實(shí)用的部署工具和平臺。
上線上纵苛,會(huì)介紹一些上線的流程剿涮。
管理上,著重講解項(xiàng)目管理上的經(jīng)驗(yàn)攻人,并介紹所需要用到的協(xié)同辦公工具取试、流程規(guī)劃工具、資源分配工具等怀吻。
另外瞬浓,每個(gè)小節(jié)開頭會(huì)有前瞻的基礎(chǔ)知識要求,每個(gè)小節(jié)后面會(huì)有練習(xí)供初學(xué)者練習(xí)蓬坡,在每個(gè)章節(jié)中也會(huì)穿插一些干貨和學(xué)習(xí)資料猿棉,希望這些都可以幫助到初學(xué)者們更好地掌握這本書中的知識。
寫在最后的序
筆者開發(fā)經(jīng)驗(yàn)較為豐富渣窜,在編程界摸爬滾打的四年間铺根,參與的各領(lǐng)域大小項(xiàng)目20余個(gè),且主要作為項(xiàng)目管理者或是開發(fā)者乔宿,本書的開發(fā)和產(chǎn)品部分由我來負(fù)責(zé)位迂。期間雖有幾個(gè)項(xiàng)目筆者是作為設(shè)計(jì)師參與的,且在比賽中也獲得了一些的設(shè)計(jì)獎(jiǎng)項(xiàng),所以有一定UE與UI設(shè)計(jì)經(jīng)驗(yàn)掂林,但畢竟筆者不是專業(yè)的設(shè)計(jì)師臣缀,所以在本書的設(shè)計(jì)部分,請到了專門做設(shè)計(jì)的UI設(shè)計(jì)師——梁志豪來主筆這部分的經(jīng)驗(yàn)分享泻帮。
自知開發(fā)經(jīng)驗(yàn)甚少精置,本書的內(nèi)容也只是談一談自己的開發(fā)經(jīng)驗(yàn)與見解,編寫時(shí)恐有疏漏之處锣杂,若有指教脂倦,不甚感激。
GitBook在線閱讀:https://www.gitbook.com/book/airingursb/before-coding/
作者博客:http://ursb.me
作者GitHub:http://github.com/airingursb
Airing
2016.6.30
原文:《Before》(From 《Before Coding》)