軟件工程師的自白:真希望自己從沒學(xué)過編碼
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
真正的軟件工程不僅僅是一門技術(shù),更是一種生活方式。我靠寫代碼謀生,連帽衫、乒乓球、隨處可見的零食和飲料,這就是我的真實生活。盡管從事這一領(lǐng)域會有回報,但我必須承認:有時真希望自己從沒學(xué)過編碼。
怪癖
自從我開始學(xué)習(xí)編寫代碼以來,瀏覽網(wǎng)頁就變得不一樣了。我再也不能忍受我在使用其他網(wǎng)站時遇到的錯誤。每當有什么奇怪的事情發(fā)生時,好奇心就占了上風(fēng),這時我必須打開瀏覽器的開發(fā)工具,開始調(diào)試。
試圖提交表單時出現(xiàn)神秘的錯誤消息?這時我會深入研究JavaScript控制臺、查找錯誤消息、挖掘源代碼,并通過網(wǎng)絡(luò)請求觀察它們。
用戶界面看起來有點過時,或者頁面布局非常華麗?不管怎樣,我都會調(diào)整瀏覽器窗口的大小,看看它處理屏幕大小的響應(yīng)能力如何。你選擇的字體是Comic Sans嗎?我可能再也不會相信你和你的公司了。
請停止使用ComicSans字體
職業(yè)生涯
總的來說,工程師們相當固執(zhí)己見,學(xué)究氣已深入骨髓。是否使用空格或制表符縮進代碼?更喜歡用Vim還是Emacs?Chrome還是Firefox?這些對話最終會導(dǎo)致有人問“這真的重要嗎?”,現(xiàn)實生活中經(jīng)常會有人浪費時間和精力討論這種意義不大的問題。
xkcd——《真正的程序員》
隨著越來越多的公司采用敏捷項目管理方法,有時不得不在使用Waterfall、Scrum、或者Kanban的開發(fā)周期之間進行比較取舍。我們都喜歡抨擊Waterfall,認為它是過時的、效率低下的公司所使用的老古董。然而,Scrum與Kanban的戰(zhàn)爭仍在繼續(xù)。
“你說你是Scrum的忠實粉絲?我敢打賭,你一定喜歡人工時間框,它能輕松發(fā)送匆忙的代碼,以便在sprint結(jié)束之前完成想象中的最后期限。”
Dilbert - Scott Adams
說到敏捷法,具體指哪方面?時間尺度?努力?復(fù)雜性?風(fēng)險?或者所有這些?可能會花上幾個小時討論每一個定義的優(yōu)點,但最終無法達成共識。在某種程度上,這可能會演變成一場無意義的討論,但能夠相互理解和有效溝通是至關(guān)重要的,這包括對我們一天中使用的術(shù)語有一個共同的理解。
前端開發(fā)打開了另一個話題世界,最引人注目的是:“什么時候才能最終放棄對InternetExplorer的支持?”我必須得拿捏好分寸,一邊對它深惡痛絕,時刻都想放棄它,同時也明白,對于那些已正在使用,深受其害的客戶來說,需要支持它。
Internet Explorer網(wǎng)絡(luò)熱圖
持續(xù)學(xué)習(xí)
隨著技術(shù)環(huán)境的不斷變化,持續(xù)學(xué)習(xí)是軟件工程的重要組成部分。每個月都有數(shù)百個新的庫和框架發(fā)布,JavaScript枯竭是真實存在的。當我告訴別人我花了一天時間配置Webpack、Rollup和Babel以使用最新的ES6+語法時,他們可能認為我是在胡編亂造。
Angular和Angular是兩個完全不同的東西;LitElement、Svelte和Stencil似乎是有前途的web組件解決方案;Deno可能是新的Node。
當有人問我工作時所使用的工具時,我只能直截了當?shù)卣f:“我通常使用前端技術(shù),像HTML、CSS和JS。有時我不得不使用PHP或SQL,但我更像是一個MEAN/MERN堆棧開發(fā)人員。有時使用Heroku之類的PaaS技術(shù),但有時使用的是像AWS或GCP這樣的IaaS提供商。”
有關(guān)“開發(fā)者”熱圖 | 圖源:漫畫《Poorly Drawn Lines》
業(yè)余生活
閑暇時,我會讀一些枯燥乏味的書,比如“干凈的代碼”、“重構(gòu)”和“領(lǐng)域驅(qū)動設(shè)計”。除了教科書,我還會在網(wǎng)上讀一些文章,這些文章里時常會有一些建設(shè)性的建議,或者看看別人的編碼教程。
我更喜歡聽關(guān)于編程的播客,在上班的路上,沒什么比聽別人談?wù)摯a更好的事情了。因為到達上班地點,我也要整天討論代碼了。
除了通過網(wǎng)絡(luò)獲取資源外,軟件工程師還將他們個人生活的大部分時間用于在線創(chuàng)建內(nèi)容。我的個人愛好是開發(fā)一些沒人見過的簡單應(yīng)用程序和游戲,比如 Crossy Block,它是 Flappy Bird knock-off的仿制品,還有corporate BSgenerator。這是在浪費時間嗎?也許吧。但是,當人們看到這些應(yīng)用程序時,是否也能讓他們在兩分鐘內(nèi)感到快樂呢?當然是。
Corporate BSGenerator app
編碼給了我一個機會,讓我可以去創(chuàng)造一些東西,并賦予了我創(chuàng)造力。它讓我對生活有了新的看法,甚至可以說是重塑了我的生活。軟件工程使我能夠解決困難但有趣的挑戰(zhàn),并希望能夠用自己微不足道的力量使人們的生活過得更輕松。軟件工程有助于我的職業(yè)發(fā)展,使人有機會不斷學(xué)習(xí),并從中受益匪淺!
好吧,我不得不承認,我熱愛編碼。