這篇文章詮釋了所有我對于 我心目中的碼農(nóng) 的理解皿哨。如果非要我成為一名碼農(nóng)滥比,我希望成為這樣的人盗扇。
以下是正文:
做這樣一個(gè)簡單的 app:
一個(gè)天氣應(yīng)用早直,干凈清爽的界面寥假,天氣信息一目了然。它不僅可以精確預(yù)測未來 10 天的天氣霞扬,還可以顯示某地的歷史天氣信息糕韧。它具有自定義提醒功能,支持 web 版本喻圃, iOS 版萤彩, Android 版。
為什么想要做這樣一個(gè) App 斧拍?因?yàn)槟阆矚g旅行雀扶,但沒找到一個(gè)天氣 App 可以提供你下個(gè)月或者某個(gè)特定月份的天氣信息;因?yàn)槟銘心銢]有每天看天氣預(yù)報(bào)的習(xí)慣,你想要在第二天溫度達(dá)到 30 度以上或者溫差有 +/-7 度的時(shí)候愚墓,獲得溫馨提示予权;因?yàn)槟阋蔀橐粋€(gè) Full Stack Engineer ,你必須不斷訓(xùn)練每個(gè) stack 的能力浪册。
Web版
你決定用 MySql 來存儲用戶數(shù)據(jù)扫腺,用 NoSql 存儲歷史天氣數(shù)據(jù)。你用 Redis 作為 cache 村象,緩存一些最常請求的天氣數(shù)據(jù)笆环。你用 Python 寫后臺,功能簡單厚者,后臺不復(fù)雜躁劣,用戶注冊登錄,抓取返回某城市的天氣數(shù)據(jù)籍救,某地的歷史天氣數(shù)據(jù)习绢,很快便搞定。
后臺開發(fā)并測試好了蝙昙,接下來是 Web 前端闪萄。你十分清楚一個(gè)好的 UI 設(shè)計(jì)對一個(gè) App 的重要性,你也明白 UI 的設(shè)計(jì)不只是為了美觀奇颠,更重要的是提高信息的可讀性和程序的可用性败去。幸好你平日的積累這次派上用場了。你把之前保存下來的上百個(gè)優(yōu)秀的UI設(shè)計(jì)作品拿來研究烈拒,你從書架上拿出Norman 的那本經(jīng)典 - The Design of Everyday Things 重新細(xì)讀圆裕。最終你用白紙黑筆敲定了第一個(gè)版本的 UI,簡潔直觀荆几,沒有任何多余的設(shè)計(jì)吓妆,所有元素的排列間距 大小顏色都恰到好處。你相信即使天氣不好吨铸,但用戶只要使用這個(gè) App 都會有著愉悅的心情行拢。
那么開始寫前端吧。啊诞吱,別急舟奠,都忘了還有 Icon 和 Logo ,可是不會 PS 房维,不會 AI 沼瘫,不會 Sketch 怎么辦呢,學(xué)吧咙俩。你平日喜歡結(jié)交不同領(lǐng)域的朋友耿戚,正好幾周前在一個(gè)活動上你認(rèn)識一位朋友做設(shè)計(jì)的。她花一個(gè)下午的時(shí)間教你基本的 Sketch 的使用,并對你的 UI 設(shè)計(jì)給出了一些意見溅话。你請她吃了頓晚飯表示感謝晓锻,然后立即回家根據(jù)她的一些建議重新調(diào)整了 UI 歌焦,這次你在 PS 里把 UI 畫了出來飞几,Icons 和 Logo 也順道一起做了。
接下來的一周独撇,你學(xué)習(xí) HTML屑墨,CSS,以及 Javascript纷铣,并漂亮地把前端搞定卵史。
發(fā)布 App
在朋友圈發(fā)了個(gè)狀態(tài),找人幫你做 Beta 測試搜立。他們都首先問你是什么 App以躯,一開始你簡單回答一個(gè)天氣的 App。但你發(fā)現(xiàn)啄踊,這不能提起他們的興趣忧设。你覺得你需要用語言,用故事包裝一下颠通。不光是作為別人「是什么 App」提問的回答址晕,也是成為 Full stack Engineer 道路上的一個(gè)重要技能。
你去看了所有你喜歡的產(chǎn)品的主頁顿锰,從他們的文案上獲得一些靈感啟發(fā)谨垃;你讀了經(jīng)典的 On Writing Well ,發(fā)現(xiàn)好的文案硼控,好的設(shè)計(jì)刘陶,其實(shí)和好的代碼很相似,都是重在交流牢撼,如何讓他人毫不費(fèi)勁地明白你要表達(dá)的內(nèi)容匙隔。你的故事要吸引人,你的產(chǎn)品介紹要在1分鐘內(nèi)解釋清楚浪默,并確保你的父母可以毫無壓力聽明白牡直。
一切就緒,產(chǎn)品上線了纳决。反響不錯碰逸,用戶持續(xù)增加。很多用戶希望有移動版本阔加,于是你立即投入到iOS 版本的開發(fā)上饵史。
iOS 版 及 后臺優(yōu)化
你花一周不到時(shí)間學(xué)習(xí)了基本的語法和工具使用便投入到 App 的開發(fā)中。你知道 Learn by Doing 是最好也是最快的。由于之前學(xué)習(xí)了設(shè)計(jì)的基礎(chǔ)胳喷,UI 湃番,Icons 很快搞定,不久 iOS 版本便發(fā)布了吭露。iOS 的發(fā)布帶來了更多的用戶增長吠撮,后臺服務(wù)器的壓力頗大,你知道是時(shí)候優(yōu)化后臺了讲竿。
你在 AWS 上多開了 2 臺服務(wù)器泥兰,并寫了一個(gè) Script 來自動化部署過程。
你改用 uWSGi 協(xié)議题禀,用 uwsgi 作為 Application Server鞋诗。
你使用 Nginx 來做并發(fā),負(fù)載均衡 迈嘹。削彬。。
成立公司
用戶持續(xù)增長秀仲,每天你都會收到十幾二十封用戶的郵件融痛。你很感激這些愿意花時(shí)間給你寫郵件的用戶,你相信他們是你最重要的用戶啄育,是潛在的付費(fèi)用戶酌心。如果你把他們像上帝一樣對待,他們同樣也會把你看作是上帝挑豌。所以除了睡覺時(shí)間的發(fā)來的郵件安券,每一封郵件,你都會在2小時(shí)內(nèi)給予回復(fù)氓英。
果然這樣的付出是收獲巨大的侯勉,他們不僅驚訝且非常感謝你的快速回復(fù),他們會在app store里給你五星的評價(jià)铝阐,他們在社交網(wǎng)站上分享你的app址貌,他們甚至?xí)鲃犹岢鼍杩罱o你。
你從快速的用戶增長中嗅到了商機(jī)徘键,你開始思考如何賺錢练对。廣告你是堅(jiān)決不能允許的,你認(rèn)為再精確的廣告也會影響用戶體驗(yàn)吹害。你設(shè)計(jì)了 2 個(gè)不同的付費(fèi)方案螟凭,你打算用 A/B 測試看哪個(gè)方案更好。你分別給 200 個(gè)用戶發(fā)去邀請嘗試付費(fèi)的郵件它呀,郵件內(nèi)容你精心打磨過螺男,并在最后寫上:CEO & Founder. 通過分析 2 種方案的用戶行為棒厘,你決定將使用第一種方案。
接下來下隧,你相信差不多是時(shí)候成立個(gè)公司了奢人。為了省時(shí)間,你花 2000 塊錢找了個(gè)園區(qū)掛靠并幫你注冊公司淆院。公司的名字讓你頭疼了很久何乎,你不想只是簡單的用這個(gè) App 的名字作為公司名字,你知道公司將來還會做出其他優(yōu)秀的產(chǎn)品迫筑。你希望這個(gè)名字簡單易記宪赶,同時(shí)其含義也是你公司文化的象征。
公司注冊下來了脯燃,但銀行那邊得自己跑。你聯(lián)系了一些媒體編輯蒙保,邀請他們來試用你的產(chǎn)品辕棚;你重新設(shè)計(jì)了產(chǎn)品主頁,并開始寫產(chǎn)品的 Blog 邓厕;你在各大社交網(wǎng)絡(luò)都給 App 注冊了賬號逝嚎,即做社區(qū)客服也為宣傳... 這些事大大壓縮你寫代碼的時(shí)間。以往你都是以代碼量作為衡量自己當(dāng)天工作效率的指標(biāo)详恼,所以這些天你總感覺沒做啥工作补君。
這樣的發(fā)展早已超過你的預(yù)期,這個(gè) App 從一個(gè) Side Project 幾乎變成了你生活的全部昧互。你跟你女朋友半個(gè)月才出去約會一次挽铁,她抱怨不斷;你1個(gè)月沒跟朋友出去玩耍喝酒了敞掘;你 2 個(gè)月都沒鍛煉過身體... 你意識到, YOU CAN NOT DO THIS ALONE叽掘,你需要幫手,你需要找人一起把這個(gè)做下去玖雁。
但你不是要成為 Full Stack Engineer 么更扁?你現(xiàn)在是了么?
Full Stack Engineer
設(shè)計(jì)赫冬,后臺開發(fā)浓镜,前端開發(fā),移動開發(fā)劲厌,運(yùn)營維護(hù)膛薛,PS,文案... 好像都會了脊僚,這算 Full Stack Engineer 了么相叁?
不遵绰,這只是踏上成為 Full Stack Engineer 的第一步。你知道目前只是每個(gè) stack 都懂一點(diǎn)增淹,離senior 或者 expert 還差得遠(yuǎn)椿访,而要每個(gè) stack 都做到極致,需要大量的時(shí)間和精力虑润。精力有限成玫,產(chǎn)品開發(fā)緊迫,力不從心啊拳喻,這條道路也太孤獨(dú)哭当,因?yàn)槟悴恍枰c任何人進(jìn)行協(xié)作。難道要把一些stack的任務(wù)交給別人做么冗澈?這樣算是放棄成為 Full Stack Engineer 么钦勘?
不!這不是亚亲。
什么是 Engineer彻采?「Engineers are versatile minds who create links between science, technology, and society」。
Engineer 的本質(zhì)工作是設(shè)計(jì)捌归,開發(fā)出應(yīng)用于大眾的產(chǎn)品肛响。
一個(gè)真正的 Full Stack Engineer ,他從生活中發(fā)現(xiàn)問題惜索,洞察需求特笋,他設(shè)計(jì)解決方案,并開發(fā)出初始版本的產(chǎn)品巾兆。為了達(dá)到目標(biāo)猎物,他愿意去學(xué)習(xí)任何領(lǐng)域的技能和知識。同時(shí)他不追求一個(gè)人完成所有工作臼寄,如果有人可以比他在某方面做得更出色霸奕,便會十分熱情的邀請他們加入。
最終他的職位也許不再是 Engineer 吉拳,他不再設(shè)計(jì) UI 质帅,不再寫代碼 ... 他的工作不再是 design and building an app or product,因?yàn)樗懈蟾匾娜蝿?wù)要做 - design and building a team or a company which builds great products.
而這時(shí)留攒,社會給了他們另一個(gè)稱呼 - 創(chuàng)業(yè)者煤惩。盡管眾人已忘記他們 Engineer 的身份,但在他們骨子里炼邀,內(nèi)心深處魄揉,自己始終都是一個(gè) Engineer 。當(dāng)他們需要從頭再來時(shí)拭宁,他們毫不猶豫從設(shè)計(jì)開發(fā)產(chǎn)品做起洛退。Nikola Tesla瓣俯,F(xiàn)erdinand Porsche,Henry Ford兵怯,Jack Dorsey彩匕,Mark zuckerberg,Elon Musk ... 細(xì)數(shù)那些改變了或正改變世界的創(chuàng)業(yè)者媒区,他們大多數(shù)是 Engineer 背景驼仪,熱衷于設(shè)計(jì)創(chuàng)造。他們學(xué)習(xí)技能和知識袜漩,不是為了成為某個(gè)領(lǐng)域的專家绪爸;而是因?yàn)槟切?是完成自己目標(biāo)所需要的。
作者:顧鵬
鏈接:https://www.zhihu.com/question/22420900/answer/21770992/
來源:知乎
著作權(quán)歸作者所有宙攻。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)奠货,非商業(yè)轉(zhuǎn)載請注明出處。