軟件開發(fā)的五個(gè)基礎(chǔ)要點(diǎn)
軟件開發(fā)是典型的知識(shí)密集型產(chǎn)業(yè), 同時(shí)也需要一些工資、辦公、設(shè)備和服務(wù)器成本。 軟件開發(fā)用錢不多,?適合我這種缺錢的創(chuàng)業(yè)者。 八年來(lái), 在打游戲之余, 我希望通過(guò)開發(fā)軟件建立自己的經(jīng)濟(jì)來(lái)源。?
成功需要內(nèi)因和外因, 其中內(nèi)因是主要的。 在嘗試軟件創(chuàng)業(yè)的過(guò)程中,?我總結(jié)出了五個(gè)關(guān)鍵點(diǎn)。?
第一, 交付高質(zhì)量代碼。 這主要涉及三個(gè)要素:?熟練運(yùn)用編程語(yǔ)言和IDE、?實(shí)踐測(cè)試驅(qū)動(dòng)開發(fā)、 和利用Git工具進(jìn)行項(xiàng)目管理。 條件允許的情況下應(yīng)該通過(guò)擴(kuò)大團(tuán)隊(duì)規(guī)模和結(jié)伴編程來(lái)避免長(zhǎng)時(shí)間工作和腦力透支。?
第二, 面向?qū)ο笤O(shè)計(jì)。 軟件設(shè)計(jì)有很多流派, 面向?qū)ο笤O(shè)計(jì)是被我信奉的一種。面向?qū)ο笤O(shè)計(jì)應(yīng)該采用需循漸進(jìn)的方式, 避免在項(xiàng)目早期給出全面細(xì)致的面向?qū)ο笤O(shè)計(jì)。 這是因?yàn)轫?xiàng)目早期, 程序員面臨的業(yè)務(wù)上、依賴性上、和算法上的不確定因素眾多, 而且程序員對(duì)項(xiàng)目的理解尚不成熟。?應(yīng)該針對(duì)相對(duì)容易的局部需求給出面向?qū)ο笤O(shè)計(jì), 然后逐步擴(kuò)大功能范圍并且逐步重構(gòu)設(shè)計(jì)。 經(jīng)典的面向?qū)ο笤O(shè)計(jì)模式需要在實(shí)踐中融會(huì)貫通。?
第三, 容器, kubernetes, 和微服務(wù)架構(gòu)。 對(duì)于一般項(xiàng)目來(lái)說(shuō), 只需要學(xué)會(huì)這幾件事: 簡(jiǎn)單的容器化操作、租用kubernetes和kubernetes的基本配置、 簡(jiǎn)單的微服務(wù)架構(gòu)設(shè)計(jì)、 和k8s部署文檔。 目前完全有可能做到自動(dòng)化部署k8s集群, 但是其中的關(guān)鍵工具被墻了。 對(duì)于我來(lái)說(shuō),手動(dòng)部署k8s集群是可以接受的。?
第四, 學(xué)會(huì)各種亂七八糟的工具。 這些工具包括操作系統(tǒng)、數(shù)據(jù)庫(kù)、消息隊(duì)列、PDF編輯器、無(wú)頭瀏覽器、前端圖表框架, 等等等等。 總得來(lái)講, 對(duì)于繞不過(guò)去的需求, 從競(jìng)品中選一個(gè)最流行、 教程最全、 文檔文筆最好的, 花上一兩個(gè)星期學(xué)會(huì)怎么用就行了。?
第五, 經(jīng)營(yíng)納稅。?一些互聯(lián)網(wǎng)服務(wù), 比如短信業(yè)務(wù)、電話業(yè)務(wù)、 少數(shù)云服務(wù)、申請(qǐng)成為某些平臺(tái)的第三方開發(fā)者等, 需要提供企業(yè)認(rèn)證信息。 這種需求不多, 而且大多數(shù)情況下豆可以繞過(guò)去。?因此只要不雇人, 就不需要注冊(cè)公司。 注冊(cè)公司之后每年要給記賬公司交錢, 這筆錢對(duì)經(jīng)營(yíng)幾乎一點(diǎn)好處也沒有。?