從編程小白到完成第一款 Web 應(yīng)用,我只用了 90 天,而且大多數(shù)時(shí)間都是在苦惱自己是否能成為開(kāi)發(fā)人員,真正寫(xiě)代碼的時(shí)候只有 30 天。
通過(guò)這場(chǎng)充滿(mǎn)自我懷疑的旅程,我總結(jié)出了一些令人難忘的教訓(xùn):
學(xué)習(xí)編程之路充滿(mǎn)坎坷,直到有一天我做出了一項(xiàng)改變。
為什么使用無(wú)代碼工具就是浪費(fèi)時(shí)間?
為什么充滿(mǎn)靈活性的產(chǎn)品往往最沒(méi)有用?
何時(shí)學(xué)習(xí)編程最合理,以及如何在沒(méi)有正式培訓(xùn)的情況下學(xué)習(xí)編程?
一連串的失敗
當(dāng)計(jì)算機(jī)科學(xué)流行的時(shí)候,當(dāng)我認(rèn)為學(xué)習(xí)編程可以幫助我成為一名項(xiàng)目經(jīng)理的時(shí)候,當(dāng)我想證明自己可以“成為技術(shù)人員”時(shí),我曾嘗試過(guò)編程,但都失敗了。
每一次,我都在不知不覺(jué)中犯了同樣的錯(cuò)誤:我更喜歡編程的想法,而不是動(dòng)手實(shí)踐。所以,每當(dāng)課程很無(wú)聊或遇到困難時(shí),我都會(huì)放棄。放棄的次數(shù)太多了,部分原因是:我不是當(dāng)程序員的料。
教訓(xùn):除非實(shí)際嘗試過(guò),否則就不要否定自己。
如果真的想嘗試編程,就找一個(gè)自己喜歡的項(xiàng)目。當(dāng)你充滿(mǎn)動(dòng)力想要實(shí)現(xiàn)某個(gè)應(yīng)用時(shí),一切都會(huì)有所不同。
在(虛擬)教室中學(xué)習(xí)編程的風(fēng)險(xiǎn)太低,即使編寫(xiě)的功能現(xiàn)故障,我也不會(huì)擔(dān)心。但是如果我的網(wǎng)站上的過(guò)濾器出現(xiàn)故障,我就會(huì)感到難為情,并在互聯(lián)網(wǎng)的每個(gè)角落尋找修復(fù)方法。建立一個(gè)項(xiàng)目會(huì)強(qiáng)迫自己把代碼寫(xiě)好。
我犯的另一個(gè)大錯(cuò)誤是等待無(wú)代碼工具來(lái)拯救我。
無(wú)代碼工具的真相
圍繞無(wú)代碼或低代碼的炒作有很多,以至于你會(huì)誤以為學(xué)習(xí)編程不是必須的。
如果你想構(gòu)建一個(gè)博客網(wǎng)站或登錄頁(yè)面,那自然沒(méi)問(wèn)題。你有很多選擇,比如Typedream、Carrd、Webflow(難學(xué),但百分百可定制)。你可以通過(guò)拖拽的方式制作精美的產(chǎn)品,從而產(chǎn)生一種“如今一切皆有可能”的錯(cuò)覺(jué)。
實(shí)際上,這些工具非常好用的原因就在于它們非常不靈活,只能創(chuàng)建靜態(tài)網(wǎng)站。
如果你想制作一個(gè)簡(jiǎn)單的 Web 應(yīng)用,例如根據(jù)用戶(hù)的輸入從數(shù)據(jù)庫(kù)檢索信息,那么不動(dòng)手寫(xiě)代碼幾乎是不可能的。我前后嘗試了5~6個(gè)糟糕的無(wú)代碼原型,才意識(shí)到這種方式根本行不通。忽視產(chǎn)品開(kāi)發(fā)的萬(wàn)有引力定律是很愚蠢的想法……
易用性與靈活性
每一款易于使用的產(chǎn)品背后,都有人付出了艱辛的工作。首先,需要深入理解特定用例,然后再下一番功夫盡可能簡(jiǎn)化常用操作。這意味著減少操作步驟,或者一目了然,通常兩者兼而有之。
問(wèn)題在于,可以簡(jiǎn)化的功能是有限的,屏幕空間就是天然的限制??纯聪旅孢@個(gè)導(dǎo)航欄:
如果不限制靈活性,就無(wú)法保證易用性。你需要在二者之間權(quán)衡利弊,這也解釋了為什么無(wú)代碼工具吹噓的“完整的功能”和“完全自由的設(shè)計(jì)”根本無(wú)法實(shí)現(xiàn)。
Bubble是一款被人看好的產(chǎn)品,但結(jié)果卻不盡如人意。盡管籌集了 1 億美元的資金,卻充斥著漏洞和劣質(zhì)流量。說(shuō)到這里,如果你在嘗試無(wú)代碼構(gòu)建器的過(guò)程中發(fā)現(xiàn)了一些 bug,則請(qǐng)遠(yuǎn)離,永遠(yuǎn)不要回頭。
繼承功能和bug
選擇無(wú)代碼工具就相當(dāng)于以低廉的成本雇傭了他們的產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)。在此,我有兩個(gè)重要的警告:
你也繼承了他們的 bug 和響應(yīng)能力:如果他們是二流團(tuán)隊(duì),則你的產(chǎn)品最多只能達(dá)到二流質(zhì)量;
你不僅需要支付費(fèi)用,還要承擔(dān)學(xué)習(xí)其系統(tǒng)規(guī)則和怪癖的時(shí)間。
靈活性從來(lái)都不是免費(fèi)的。代價(jià)是易用性降低,以及更有可能出 bug,因?yàn)榭赡艹鲥e(cuò)的地方更多。
盡管無(wú)代碼工具有著種種看不見(jiàn)的缺陷,但在下列情況,這些工具仍然可以節(jié)省你的時(shí)間:
找到適合的解決方案(例如,Soft:出色的可視化前端;Retool:可用于內(nèi)部工具的出色前端);
學(xué)習(xí)速度很快,而且還提供了能夠滿(mǎn)足最低可行產(chǎn)品的功能。
然而,如果想獲得面向客戶(hù)的 Web 應(yīng)用的全面控制權(quán),最大的捷徑就是挑戰(zhàn)最大的難題:學(xué)習(xí)編程。
編程才是捷徑
我以為學(xué)習(xí)編程需要花費(fèi)幾年的時(shí)間,我以為我會(huì)無(wú)聊死,而且還無(wú)法獲得任何好處。然而,事實(shí)證明,編寫(xiě)自己的項(xiàng)目情況完全不同。一旦掌握基礎(chǔ)知識(shí),編寫(xiě)程序的速度就會(huì)很快,而且利用基礎(chǔ)知識(shí)就能完成很多功能。
整體的感受:
不能馬虎:思考馬虎的想法很容易,但記錄馬虎的想法很難,而將馬虎的想法編寫(xiě)成代碼則更難。
深刻地體會(huì)到了工程師的不易。
通過(guò)一行又一行的代碼構(gòu)建產(chǎn)品能產(chǎn)生巨大的滿(mǎn)足感。
擺脫無(wú)代碼的約束。
學(xué)習(xí)如何使用無(wú)代碼工具是創(chuàng)業(yè)需要付出的代價(jià),但學(xué)習(xí)如何編程是對(duì)自己的投資。如果你擁有一些想要構(gòu)建的想法,并計(jì)劃一遍又一遍地使用學(xué)習(xí)到的編程技術(shù),那么投資回報(bào)率是巨大的。
為了尋找合適的無(wú)代碼工具,我浪費(fèi)了大量時(shí)間,最后反而是自學(xué)編程救了我。如果你也想擁有靈活性和易用性,那么就自己動(dòng)手吧。
最后是一些學(xué)習(xí)編程的注意事項(xiàng):
選擇一種流行的編程語(yǔ)言,最好與英語(yǔ)很接近。我選擇了 Python Django,因?yàn)楹?jiǎn)單易學(xué),還擁有一個(gè)龐大的在線(xiàn)社區(qū),這很重要,因?yàn)閷?duì)于你遇到的問(wèn)題,網(wǎng)上都提供了常用的解決方案。
編寫(xiě)代碼=主要是修改別人的代碼。我所有的代碼都受到 Stack Overflow、JSFiddle 和 YouTube 上的解決方案的啟發(fā)。
如果你不知道如何修改別人的代碼,請(qǐng)參加短期課程,但不要在理論上停留太久,只有能夠應(yīng)用到自己的項(xiàng)目中的概念才能真正發(fā)揮作用。
在學(xué)習(xí)教程時(shí),請(qǐng)確保下載最新的軟件包。一些優(yōu)秀的視頻很老,而且使用的是過(guò)時(shí)的軟件包,編寫(xiě)代碼后升級(jí)可能會(huì)破壞功能。
95%的時(shí)間都會(huì)浪費(fèi)在5% 的問(wèn)題上,這 5% 的問(wèn)題會(huì)讓你欲哭無(wú)淚,但不要害怕,告訴自己這樣的問(wèn)題只有 5%!你可以在這些問(wèn)題上發(fā)揮創(chuàng)造力。
如有疑問(wèn),請(qǐng)盡管?chē)L試!嘗試每一種變化;隨著時(shí)間的推移,你的預(yù)感會(huì)變得敏銳起來(lái)。
最后,我想向 Python Django 的開(kāi)發(fā)人員致敬!
責(zé)任編輯:haq
-
Web
+關(guān)注
關(guān)注
2文章
1286瀏覽量
71178 -
編程
+關(guān)注
關(guān)注
88文章
3687瀏覽量
95101 -
代碼
+關(guān)注
關(guān)注
30文章
4895瀏覽量
70538
原文標(biāo)題:我只用了 30 天的時(shí)間就學(xué)會(huì)了編程
文章出處:【微信號(hào):coder_life,微信公眾號(hào):程序人生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論