首頁 後端開發 php教程 老碼農的技術理想

老碼農的技術理想

Jul 25, 2016 am 08:48 AM

小時候,老師問我,你的理想是什麼?我不假思索說是php工程師,於是長大後果然成了工程師。
工作這麼多年,一直在思考工程師這三個字的意義,終於有一天恍然大悟,原來就是:用技術手段改進世界。
那麼,在軟體方面,目前的世界有哪些問題需要解決呢?有這麼一些問題可以思考:
現在全世界資訊化的程度是偏高還是偏低?
程式設計師的人數夠用嗎?
軟體產業的生產力是偏高還是偏低?
大部分軟體系統都可靠嗎?
我想說說我對這幾個問題的理解。
雖然現在我們的生活與十年前相比,已經發生了巨大變化,例如智慧手持設備已經非常普及,可穿戴設備也在蓬勃發展。十年前我們用手機收發簡訊或郵件,瀏覽非常簡單又老套的wap頁面,但現在,絕大部分人的手機已經取代了電腦,成為日常生活中不可缺少的工具。
我們用手機交流,購物,欣賞影視,閱讀書籍,玩各類遊戲,尤其是飛速發展的移動購物和支付體系,使得我們能在任意場合購買心儀的物品,訂購旅遊服務和賓館,叫快餐,搭計程車等等,生活非常美好,那麼,整個世界的資訊化程度處於什麼層次呢?
我覺得,才剛相當於小學二年級,整個世界的資訊化程度仍然嚴重偏低。從現在算起,往前10年,往後10年,這20年時間中,面向個人的資訊化服務處於高速發展期,這個領域非常吸引眼球,因為它與每個人的生活息息相關。可是,另外還有一些領域,卻非常需要發展,那就是傳統產業的資訊化。
之前有不少傳統行業,進行了一定程度的資訊化,但這個資訊化僅僅能滿足自身運作的基本要求,當它與整個社會的潮流相對接的時候,就顯得非常落後,遲緩。比如說在網購這個大體系中,一般用戶所能看到的是商品展示,比價,下單的過程,但背後的核心環節卻是配貨與物流。
我還在上學的時候,有老師這麼說過,現在電腦業非常火熱,很可能要飽和了,你們不一定非要從事這方面的工作。現在回頭看這句話,覺得很有趣,人真的很難有眼光看到未來。去年我入職蘇寧訓練的時候,孫為民副總講了當年一個決策失誤的例子。 90年代末,公司統計發現全國空調的年銷售量達到數百萬台,覺得很可怕,這個行業可能要飽和,估計要再想辦法拓展別的商品經營了,但現在,全國空調的保有量為七億台,即使完全沒有新增,十年換一輪,每年也賣得出去七千萬台,當年憑什麼說這就飽和了?
所以我現在看程式設計師的狀況,仍然是供不應求,尤其是高端程式設計師,十分搶手。這個問題的背景就是全社會的資訊化進程在加速,之前的程式設計師人數遠遠跟不上需求量。
那麼,要如何解決這個問題呢?一方面是繼續培訓,促使更多新人來到這個行業,並且認真做下去,另外還有一些別的手段需要考慮。
我想追問一個問題:世界上懂業務的人多,還是懂技術的人多?很明顯,懂業務的人多很多,什麼叫業務?其實就是行業常識,生活經驗。
比如說,一個有經驗的倉庫保管員,可能文化程度不高,理解不了軟體的運作原理之類,但一定對產品出庫入庫的流程非常熟悉,包括各種審批過程和異常狀況,但這些,程式設計師是不懂的。那如果要促進這個領域的資訊化,必然要在兩者之間尋找一個結合點,程式設計師可以學業務,業務人員也可以嘗試參與軟體研發過程,目前來說,都是前者比較多,因為程序員相對來說還是比較年輕,學東西快些。但從整體社會效益來說,這其實是不利的,因為程式設計師是更稀缺資源,而傳統業務人員非常多。
之前見過一個問題:如何讓業務人員更好地參與軟體研發過程。這個問題的根本解決方法是DSL(Domain Specific Language),核心解決方案是二次開發平台。
什麼是DSL和二次開發平台呢,這兩個字聽起來很高端,但其實大家有很常用的東西就屬於這個範疇,比如Excel,它提供了各種各樣的公式,還有VBA,使用這些東西的人絕對大部分不是軟體產業的,Excel就是一個很成功的二次開發平台,公式和VBA就可以算DSL了。
很多時候這些東西還不夠直觀,我們可以看到一些圖形化的程式語言,例如Scratch,現在很多小學生的興趣班就會學,這些東西相對學起來就比較容易了,我們也可以做一些類似的抽象,以圖形化的方式讓業務人員能夠參與,例如流程配置等等。圖形化的東西,是最適合非技術人員理解的。
所以,要促進社會的資訊化程度,最好是能夠想辦法把各行業的業務人員都拖進來一起搞。具體的分工大致是:技術人員和業務人員一起定義DSL,技術人員負責DSL的底層平台實現,業務人員負責使用它來建立業務模型和業務流程,甚至業務介面。
那麼,軟體產業的生產力是偏高還是偏低呢?我認為嚴重偏低。什麼叫嚴重偏低?如果以機械力量的變革來對比,軟體產業目前的生產力水準處於蒸汽機發明之前。也就是說,生產力遠遠沒有被解放,大家做的大部分東西將來是會被機械化的,不再需要這麼多人來做這麼重複的勞動。或許很多人會對這段話不滿,怎麼就重複勞動了,你說說我做的什麼是可以被機器取代的?
換個角度看,為什麼幾乎所有外行人都覺得軟體貴呢?因為人力成本太高了,他們覺得,做出這麼多東西,應該是不需要這麼多時間。為什麼雙方的反差這麼大呢?
我覺得其中的關鍵點在於絕大部分工作的抽象程度嚴重不足,另外有很大一部分效率損失在程式設計平台或程式語言的不完善,例如web前端。
從第一代到第四代程式語言,每一代都是損失一定運作效率,而大幅提升編寫效率。隨著硬體技術的發展,軟體程式​​設計必然越來越粗放,大的趨勢是不特別重視細節效率,只要沒有數量級的效能損耗。
所以我們可以預期,會有越來越多的人使用一些運作效率相對不怎麼高的語言或框架,只是為了提高單位時間的生產力。從老闆們角度想,也會明白,提升運轉機器的效能,要比多僱用幾個程式設計師便宜多了。因此,從整體趨勢來看,追求細節績效的程式設計師們恐怕會離自己的理想越來越遠了,除非是在某些特定領域。
那麼,絕大部分軟體系統都可靠嗎?我換一句話來問:各位程式設計師朋友,如果你們住的房子品質跟你們正在做的軟體一樣,你敢住嗎?感覺大家都在笑,笑是什麼意思,我們都懂的。
那為什麼軟體系統的品質不容易高呢?我覺得主要原因是流程不完善。那為什麼不完善?需求容易變。為什麼容易變?是因為不論程式設計師自己,還是需求方,其實潛意識都認為自己做的東西是變更成本較低的。
試想一下,為什麼沒人在蓋高樓蓋一半變更需求?為什麼沒人脩大橋修一半變更需求?甚至做衣服做一半的時候變更需求,理髮到一半變更需求,都會被人認為是不講理。但是在軟體領域,好像這倒成了普遍現象。
因為整個軟體系統的實現,都是虛擬的,看不見摸不著,並不消耗什麼物料,所以從這個角度想,變起來當然是容易的。但軟體系統的架構,其實也跟實體的沒本質區別,變更時候要考慮很多關聯因素,並不是就那麼孤立的看一小塊地方,當然,也會有一些不影響全局的變更。打個比方說,如果你在蓋房子蓋到一半,那變更外牆顏色肯定是要比變更窗戶大小容易的。要是想變得太多,估計只好拆了重來。
我看過不少公司是透過加強測試的方式來試圖控製質量,但個人覺得這種方式不划算,而且收效不高。要好好應對需求變更,很重要的一點就是不要有這個軟體一定不會改的想法,然後,從架構上做拆分,隔離,組件化等等,力爭做到即使要改,也只改某一塊的內部,不影響別的地方。
很多軟體公司,一方面不注重架構的設計與宣貫,導致變更的時候問題多多,程式設計師也不能很好領會架構意圖,一方面忽視整個過程中對架構的管控,認為架構只是最初那張靜態圖。
任何一種架構方案,都需要一個好的管控機制。沒有哪一棟蓋大樓的只認真管設計圖紙,不控制施工過程。架構其實是跟施工過程嚴格相關的,架構並不是一張扁平的圖,而是立體的東西,作為整個系統工程的骨架。如果能在開發的時候看到這個骨架逐漸建立,血肉充盈的過程,對整個系統的成功把握一定會大
得多,這也就是開發過程中架構管控的理念,具體實現要依賴不同場景。
所以,未來的軟體開發方案,一定是會朝著幾個方向發展:
高生產力,單位時間生產效率更高,普通人員也可以參與
高可控性,整個生產過程更加完備可靠
有時候看現在的小孩子,會覺得他們很幸福,因為等他們這代長大,就不需要像我們現在這樣編寫程序了,那時候,程式設計已經成了一種令人習以為常的通用技能,就像現在的人用Office軟體一樣,所謂的編程,很可能已經不需要敲代碼了,而是圖形化,設定幾個參數就完事了。
免費領取LAMP兄弟連原創php教學光碟/《細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.net



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? Apr 17, 2025 am 12:25 AM

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

See all articles