寫代碼上癮是一種什麼樣的體驗?


這裡回答的都是程序猿吧,我作為圈外人強答一下。

本是執業醫師,在社區基層工作很多事情就是醫務人員兼職做,我就做了單位ITer。

最早接觸的是資料庫,有時候難免出點問題,系統供應商遠程支援,看著看著,從一點不懂,到現在查查數據,自己做做視圖,普通應用完全沒問題。一般現在出點小問題要改點數據,對方如果忙,給我講下表和欄位的定義,都是我自己搞。很多年了,他們也信任我。

接觸代碼,最開始是想做個語音提示。類似於那邊病人一繳費,這邊檢驗放射之類的科室會有語音提示。其實很簡單的東西,但是一般讓人加點功能都要收費,一怒之下打算自己做,用的是pb。(一個大原則是自己做的東西,都只查,不插,不改。)

再後來碰到績效統計的問題,HIS里有各種報表的統計,單位考核就是在這些指標基礎上計算績效得分,每個月算起來都特煩。於是搞了幾個視圖,然後自己做個客戶端,各種kpi自定義,點兩下考核表格就生成了。這時已經不搞pb了,為了實現多線程(查表時界面會卡),改http://vb.net。

從此一發不可收拾。

oa沒有手機推送功能,自己做。

慢性病隨訪需要特定的數據採集客戶端,自己做。

體檢時需要自動提示歷年陽性結果,自己做。

職工食堂想實現聯網點餐,自己做。

財務說每次郵件發工資條很麻煩,自己做個全自動的。

kindle可以用郵件推書,還是嫌麻煩。自己做個小的懸浮圖標,書拖上去就自己推。

等等等等。

因為是野路數,基礎差,所以有時候碰到沒有接觸過的東西,就只能現學現賣,業餘畢竟是業餘,沒思路的時候,問題怎麼都解決不了,頭暈腦脹,乏力納差。

有時候突然有了思路,就不能被打斷,不會覺得渴,也不會覺得餓。

真口渴了,連去隔壁倒杯水都捨不得去。

有時候想想不知道為了什麼做這些,沒報酬,費時間,但就是喜歡。

http://vb.net應該在猿猿們鄙視鏈最末端吧,甚至連鄙視鏈都排不進去。但是真的很適合初學者或者業餘玩家,還有免費的官方中文資料庫。莫見笑。

可能,祖國的衛生事業耽誤了我。


沉浸在自我的世界中,感覺自己敲鍵盤如同在彈鋼琴,全世界就我最屌。


寫代碼上癮後的體驗就是:「沉浸」,以至「忘我」。主要表現為:

  • 不能有任何外在的打擾,比如死機、藍屏、電話、叫你起來吃飯、在你耳邊喋喋不休等等,你會忍無可忍、非常生氣,甚至暴跳如雷。人變得脆弱。
  • 沒有時間概念,沒有輕重緩急,不講規則道理,反正我就是要寫代碼。
  • 就算是停下來了,思路也沒停,有可能走路會碰壁。半夜夢中解題,洗澡解題等等是常事。

長久以往性情大變,寡言易怒狂躁,帶偏執狂癥狀,不能說你喜愛的編程語言、框架一句不是。在其他方面限制較大,沒什麼朋友,沒什麼社交,處世和處事能力有限,但一旦寫起自己拿手的程序就兩眼放光、手指翻飛。甚者兩眼目光獃滯,襯衣袖子垂下且不扣袖口扣子且胸前扣子掉了一個或扣錯胸前扣子。


昨天,項目里遇到一個bug,眼瞅就要下班了,就想著明天再解決吧。

然後晚上回家,心裡頭好像有個疙瘩,刷劇刷的不開心,打遊戲打的也不自在,一直在想著怎麼解決問題。

然後實在忍不了了,我就git pull,開始解決這個bug..

終於舒服了

我這算debug上癮還是有強迫症?


聽說我幾天早上半醒的時候說了一句夢話

「那還不如直接用數組了」

過度沉迷寫代碼,導致和父母吵架

意念編程寫 C 什麼的太麻煩了,但是咱有 Haskell 啊

但是語言關係並不大,聽別人提到一個 brainfxck 的字元排序題,也能無比激動地在紙上 sketch 出一個 brainfxck 程序

幫同學看一個程序怎麼寫會被 vectorize,dram 拿出了 http://glot.io 和 http://godbolt.org。在手機上。

其實感覺隨便找個網癮少年/網癮少女的「沉迷打遊戲」的體驗,替換一下就差不多了吧


坐電腦前不願意動,誰打擾我我跟誰急。

吃飯的時候想。

走路的時候想。

上廁所的時候想。

連 TM 做夢都在想。


跟老婆吵架說了一句:你這個bug,看我怎麼修理你!

(說完自覺跪鍵盤)


作為一個用Python做評分卡的人,雖然不是專業IT,也特別喜歡造輪子。numpy,scipy,pandas,statsmodels,scikit-learn,xgboost雖然提供了各類計算或分析模塊,但是用起來總覺得直接調用很多時候不夠簡練,加之有些邏輯其實沒有現成的模塊,必須自己寫。所以筆者大致維護了一個自用的工具庫,裡面包含:內部資料庫讀寫,數據清洗,數據離散化(分箱),特徵選擇,非常方便的WOE、IV、GINI、KS計算,逐步回歸,常用模型訓練、驗證,某些模型自動調參手動調參,數據可視化等一大套代碼。

以上是背景,首先那些功能模塊並不是一蹴而就的,都是自己的調用開源的那些包的時候,覺得有點不夠爽,就不斷地添加新的功能,每一個新的功能調試完心裡都有種比玩遊戲還爽的感覺,似乎自己又在節省了自己很多不必要的生命消耗。

其次自己也不是CS科班出身,完全是自學,代碼功底確實不咋樣,所以每過一段時間回頭看自己的代碼都覺得是一坨屎啊,所以總在不停地重構,有些是優化代碼效率,有些是美化代碼形式。比如一開始都是一堆函數,後來全整合成幾個類;減少不必須要的for loop,儘可能使用map apply;增加必要的錯誤封裝,後面又把這些非核心的代碼用裝飾器的形式改寫。總而言之,每做這麼一次優化和改進都像自己騎行的時候翻過了一座座山,特別爽特別有滿足感。

當然,作為一個喜歡造輪子的人,面對一些重複的活,都希望用代碼來搞定,比如公司報銷通過某個平台發放,每次錢轉到這個平台需要自己轉出,總覺得每個月都要登錄然後填賬號特別麻煩,自己想了想可以寫個爬蟲,在手機上實現查詢記錄自動轉賬等,大概像下面這個樣子:

上面其實是在手機裝了一個termux,安裝上Python,ssh,git;同時安裝numpy,pandas,jupyter,requests等常用的模塊,每次用scp將電腦的代碼copy到手機,隨時可以調試,隨時可以在手機上寫代碼,在手機上運行代碼。

當然喜歡寫代碼的人怎麼能少了juicessh這個神器不介紹,在vps上部署了一大堆東西,有問題了隨時登進去改代碼,當然連上VPN之後,還可以進入公司集群,半夜醒來,還可以連上跳板機改spark代碼,然後提交代碼,處理那些資源佔用比較高的任務,不需要白天和人搶資源。

想想,這每一件事情,自己都是發自內心的喜歡,每次都能給自己正的激勵和反饋,這也算是一個良性循環吧。

人生苦短,快來搬磚!


我的程序好多重要突破都是在刷牙洗臉的時候,吃早飯的時候,蹲馬桶的時候,閑的無聊在床上打滾的時候,吹著口哨在澡堂里洗澡的時候想到的。

我有一個項目名為Mozart,原因就是我認為寫這個項目的時候敲鍵盤就像彈鋼琴一樣。


我是一個比較弱的省份里搞oi的一隻高中弱雞,就是五大競賽學科里搞計算機的那個。可能和大多數人想的不太一樣,我們是競賽不搞平台,軟體,網頁什麼的。只是在學一般寫軟體用不到的演算法一類的。此為背景……

有一次去長沙集訓,被打擊的體無完膚,在當時我剛剛學完比較基礎的動態規劃和離散數學,然後一群大佬就比較輕鬆地會了好多高級數據結構什麼主席樹,平衡樹,樹上莫隊什麼什麼的。可能不學這些的不知道這是什麼意思。舉個比較形象的栗子(手動滑稽)吧,就好比我剛剛學會1+1=2,就有和我同齡的人告訴我他已經會解方程組了。然後當時就覺得自己很鹹魚,雖然省一等只在我們弱省排名選人,但是全國賽要全國的各種妖孽一起考試。之後就很慌,感覺自己的前途一片昏暗,然後開始懊惱自己為啥要看那麼多番,自己為啥要打DOTA2……

之後回到我們的垃圾學校我就開始一個人在機房喪心病狂一般地寫題,班裡的課由於事先和班主任商量好了,除了正課以外都不用上,那幾天我吃住都在機房(機房旁有一個小屋子),真正體驗了一把寫代碼上癮的快感。

真的,在你AC一道你想了好久的題之後,你的快感和吸大麻一樣,比喝維他檸檬茶還爽。那時聽不到我茶軸鍵盤律動的聲音我都不舒服,就算在上課我的腦海里還是在想之前做的題為啥「WA」了3個點,是還有什麼數據結構,還是我思路不是最優的。看黑板都看不到老師寫的數列題,還在想怎麼證明自己題的最有子結構和無後效性……

當時作息時間也極其不規律,早上六點起,就在敲程序,七點滾回班上早讀,一有自習課飛奔回機房,晚上凌晨睡……我的數學草稿紙上一堆手推的數論公式,還手寫了好幾個想到的優化程序。

結果一星期以後,我他喵的發燒了……在家休息了好幾天……然後我這種狂熱的心情才逐漸消退,看著我基本上一星期沒有洗而油光錚亮的頭髮和身上基本沒換過的皺巴巴的衣服……我感覺這就是我以後上班的狀態……怎麼辦現在棄掉計算機還來得及嗎?反正我現在想起這段經歷還有一種賊爽的感覺……

你們看我都這麼努力的打字了就給我一個贊吧QAQ……


我初中的時候,平時不能用電腦,就絞盡腦汁費盡心機找機會用一下。後來覺得課堂時間不能浪費啊,就買了個活頁本,手寫代碼,用腦子編譯,模擬結果。聽我某一任同桌說我魔怔了,上課嘴裡面念叨個不停,手一直都沒停,外加本人有抖腿的習慣,就顯得我有點像羊癲瘋了。。。。

我打算高中發揚這個優良傳統,畢竟高中要住校,機房也只有周六晚上開放。

大概就是熱愛吧,化腐朽為神奇,化複雜為簡單,這大概就是編程的魅力吧。

————8.14午 update————

上課回來看到評論區在勸我改抖腿的習慣啊,諸君真是貼心。。。。。。。話說我最開始抖腿是因為有人跟我說可以瘦腿,我一想,抖腿要做功,的確可以啊,於是就抖起來了。。。。然並卵。。。

至於手機編程,我倒也用過,但實在是難用啊,屏幕小,鍵盤又佔了一小半,有的輸入法軟體還巨坑。


1.

半夜做夢,跟後台聯調。

第二天到公司,跟後台說做夢也在聯調。

他說他也在夢中跟我聯調。

2.

還是做夢,在debug個問題。

然後怎麼調都找不到原因,一氣之下醒了。

3.

每周周末的必備活動之一就是寫代碼和寫技術博客。

如果有事情,連著幾周沒有動電腦,就會開始手癢惦記著。

4.

不開心又找不到發泄的方法的時候,就打開電腦開始敲代碼,敲著敲著就忘了難過。

開著音樂一邊聽一邊擼碼,心情十分之愉悅。

5.

手只要放在鍵盤上,就能快速進入寫碼模式,周圍的一切聲音和人群都遠去。

6.

曾經有很多的愛好,去旅遊,學吉他,看書,畫畫,聽歌,打籃球,等等等等。

然而最終斷斷續續堅持下來的,只有寫文和寫碼了。


一個很小的庫,寫完以後覺得,要不合併到一個文件並且優化一下?

合併完以後覺得,要不還是一個類放一個文件並且優化一下吧。

寫完又覺得還是合併的好,於是再次開始重構

。。。無限循環。。。

所以你看,其實並不是上癮,是中毒了。


(如果 (不寫 "括弧)

(就感覺 "(難受 不適應 分不清優先順序)))


作為機器學習狗,代碼量確實不大,很難上癮。

所以我講一下調參數上癮是一種怎麼樣的體驗,畢竟調參數也要該代碼!

隨時隨地用手機調!

自從有了teamviewer,媽媽再也不用擔心我不能在手機上調深度學習機器學習的參數了~

PS: 這個是在FPGA上運行的演算法。FPGA大法好,速度快,能耗低!


一句話:

雖然脖子酸痛,累得不行,但是仍然非常快樂。

(好啦,我去繼續快樂了~啦啦啦~)


之前大二做比賽寫項目,從早上開始,遊離在ubuntu各terminal之間,碼到中午,機油來我宿舍問我吃啥,我也不知道說了啥,好像是隨便 ,反正就是想快點讓他走,別打擾我 ,中午吃飯看著代碼嚼,不知不覺,晚飯都送來了 ,說出來你可能不信,那周我沒出宿舍買過一頓飯,感謝機油和蛇油帶飯,沒把我餓死( _ _)ノ|


有人叫我寫個微信文章爬蟲,本來很簡單一件事

最開始用的 Pyspider 一天大概1w條左右吧

客戶驗收了滿意了,我突然不知道怎麼抽風了為了提高效率,換了N次框架,走了無數的坑 最後為Scrapy-redis

期間耗時3天 有兩天都是早上六點到早上3點,走在路上都在想代碼,做夢也在想代碼

一天可以採集幾十萬條微信文章(帶圖片採集)= =

但是感覺學到了很多東西

----------------------------------------------------------------------------------------------------------------------

有興趣的可以關注我的博客 Lengyue『s Blog

不定時更新文章,主講各種爬


首先需要精通Vim。


估計沒時間上知乎,此問題無效,下一個。


推薦閱讀:

能推薦國外大學適合自學的CS課程(自帶源碼與資料)嗎?非coursera/edx
真·二本學校的計算機類專業尖子生的專業能力可能超過985名校的優秀學生嗎?
英特爾的CPU性能幾年內也沒什麼進步,蘋果CPU是如何每年獲得巨大進步的呢?
計算機科學學術界,和相關領域工業界的工作內容有什麼不同?
轉專業到計算機科學的學生怎麼趕上普通學生的進度?

TAG:編程 | 計算機科學 |