受限于經驗與知識,本來不想寫這個話題,不過今天突然想到,用時間思考了這個問題,權將自己的觀點寫出來和大家交流,歡迎討論“代碼民工”這個詞可能是程序員的無奈的自嘲,也可能是自謙,反正來源已無法可考。
“代碼民工”即是指那些編寫程序、敲打代碼的底層程序開發人員,是IT行業中干得最多、干得最累、卻掙得最少的那一群人。
這其中可能有公司的原因,也可能有個人的原因,但我認為最根本的原因可能是技術的限制——技術的水平限制了程序員們的生產力。我們很多人都在重復的做很多的事情。這里說的重復是指宏觀上的重復,比如很多做通信產品的公司,他們的程序員往往要實現很多相似甚至相同功能的基礎模塊。
做個對比,現在很多城市的工地上都可以看到建筑工人——相對于他們,我感覺我們的生產力遠沒有他們強。如果那建筑工人來做比喻,那我們現在所處的階段可能機械化時代之前,應該是剛剛脫離手工制作磚頭,要用手用一些低級的工具來制作磚頭,然后在將這些磚頭改成房子——注意,是房子,不是大廈,我們現在的生產力還沒有到達那種程度。不同的是,他們進行的體力勞動,而我們進行的腦力勞動。
我們現在的優勢是,從代碼民工向更高層的發展相對比較容易。只要你對編程充滿興趣,并且有成為優秀程序員的目標,努力學習,善于學習,你肯定能夠成為一個有含量的程序員。當然,如果你選擇編程只是為了獲得一份薪水,感覺編程的過程枯燥無味,要獲得發展可能會比較困難。
低生產力時代也有偉大的建筑——比如萬里長城,金字塔,就好像我們現在有google,微軟。
技術的原因,使代碼民工的存在成為必然,因為底層的勞動總要有人來完成。要想解放他們的生產力,技術的革新是唯一的途徑。這個過程是漫長的,而且也充滿 了陣痛,就像機械化時代很多人面臨失業一樣——但總的趨勢是好的。
如何提高生產力?工人需要強大的工具和大粒度的模塊——也許蓋一座大廈就像用使用工具將機械制造好的一層層的樓玩積木一樣堆在一起就可以了。
程序員需要更強大的工具和更大顆粒度的封裝。以后程序的開發可能會兩極分化——底層程序員專注于構建強大的工具和更大顆粒度的封裝,而高層的程序員專注于用戶的業務需求,這個時候,他其實可以不被叫做程序員,或許叫產品設計師更合適——因為他們更多的是設計產品,而不是編程。
在一個領域工作多年后,會慢慢的發現,其實我們可以工作在更高的抽象之上,更粗粒度的封裝之上,也許效率會更高。更高的生產力基于更加完善,更加強大的基礎設施之上。個人感覺,DSL(領域專用語言(Domain Specific Language/DSL))也許是其中的一部分。為此,我為自己選擇了一個模板,Martin Fowler,希望能夠在同樣的領域能夠有所建樹。
期待這一天的到來。