程式設計師,為未來準備好了嗎?

2021-09-23 05:09:00 字數 3941 閱讀 4476

也許一直在一線的程式設計師們對這個標題呲之以鼻,特別是全棧工程師們。這篇文章主要是拋磚引玉,**一下以後的技術方向。如果只想看未來的部分,可從中間開始看。

計算機產生以後,這個行業的發展日新月異,不停地產生新的技術來解決新的問題。這裡不把計算機語言的更新換代看作技術的變化。計算機語言應該算做是規範,除了解決新問題外,有些語言的產生和流行也是有歷史原因的。

從計算機剛剛產生時,解決的是計算問題。其將很多人花費好幾個月的計算在幾天之內完成。這一代的工程師們更多的在解決硬 件問題。程式設計師(或者叫做軟體工程師)是將問題翻譯成計算機語言(其實程式設計師做的一直是這個),也就是卡片紙。程式設計師在當時的計算機系統中,應該不算乙個 核心角色。因為大部分問題和挑戰在硬體系統、演算法上。

隨著計算機成本的降低,世界大戰後戰爭需求減少,開始大力發展經濟。硬體解決方案的成本問題開始凸顯,於是開始產生了通 用計算機。通用計算機逐漸統一了硬體標準,把更多的靈活性放到了軟體上。基本模式就是:巨無霸的硬體廠商們負責提供計算資源,程式設計師們負責解決問題。這時 候,程式設計師的春天來了。在此同時,軟體開發的理論也在不停地發展。隨著各種語言的層出不窮,基本上大家認可了指令、資料,程式基本流程、庫函式等各種計算 機的概念。

再往後,隨著計算機的應用的範圍越來越大,挑戰也越來越多了。由於系統複雜性的增加,很多系統已經不是幾位,甚至是數十 位程式設計師就能完成的了。(當今的作業系統、搜尋引擎都是數千甚至數萬人幾十年辛苦工作的結晶)。新的挑戰也來了——軟體工程,如何更高效、可預期地開發、 維護複雜系統。這裡的挑戰包括:如何將傳統的專案管理經驗放到軟體專案管理中來;如何讓程式設計師們採用各種標準化的程式設計風格;如何構建合適的團隊結構等。這 時候,程式設計師的重要性就凸顯出來了,產業鏈中的地位也變高了。縱觀歷史,數萬人以前集中在一起都是進行體力勞動或者戰爭。人類從來沒有這麼大規模的將智力 集中在一起解決問題。

同時,解決的問題規模和型別也進一步增加。其中,人機互動是乙個熱門且有挑戰的方向。輸入上,除了從打字機來的鍵盤外,又發明了滑鼠,顯示,揚聲器 等各種人機互動的裝置。程式設計師們除了要實現底層的驅動**,在人機互動層面也要實現方便易用的互動體驗。這時候除了演算法和設計等挑戰,還有人體工學、文化 上的挑戰。比如,中國人花了很多年,也沒製造出廣泛應用的中文鍵盤和流行的輸入方式,最後還是英文鍵盤+拼音成了最主流的輸入方式。這是漢字本身的特點造 成的,而廣大程式設計師花了大量的人力物力才認識到了這些文化上的規律。另外,網路也是另乙個熱門。程式設計師們在底層將計算機連線在了一起,並依靠強大的網路能 力實現了人們的遠端溝通。

到了近幾年,又出現了大資料、物聯網等熱門的方向。程式設計師們從底層實現大資料的批處理、傳輸、儲存,解決了效能、可靠性等各種問題。由於大資料的精確性和完備性通常達不到100%,所以大資料也讓很多程式設計師開始去解決不確定的問題。

別人家的程式設計師們一直在解決不同領域、型別的問題。程式設計師的角色開始了分化(同時也有很多角色從程式設計師中分化出來了),從開發、測試,到架構設計、 體驗優化、前端開發、後端開發、驅動開發、資料庫開發、it等等數不勝數。縱觀不太長的程式設計師職業歷史,這些角色也在不停的產生和消失中。這代表著一代一 代的程式設計師要麼不停的學習,要麼從這個行業中離開(也沒什麼不好的,好多富翁都是程式設計師變的)。從歷史來看,程式設計師們解決的問題,使用的元件和思維模式都 在不停地變化。但也有一些不變的東西,比如程式基本流程、設計模式、軟體工程。所以很多程式設計師在不停的學習新東西,從而能夠解決新問題。

那麼,現在正在、未來會發生什麼變化呢?這裡只想討論乙個:人機互動的革命,包括人機互動方式,和人機互動層次兩方面的革命。(說人話!)好吧,就 是kinect, hololens、cortana帶來的新情況。這類新產品集中在一起,會對現有的人機互動產生顛覆性的革命。一句話概括:未來人們應該花更少的時間來學 習如何使用科技,程式設計師們要花更多時間讓科技來適應人,而不是人去適應科技。比如,單輪電單車不需要學習怎麼在乙個輪子上保持平衡,四軸飛行器不需要學習 怎麼轉彎、穩定,這都是很好的例子。

人機互動方式。人是生活在三維空間裡的,程式設計師們也在不停地在各種輸入輸出方式模擬三維空間。首先,顯示屏是乙個二維的輸出,由此滑鼠和各種觸控 方式也設計成了二維的。這裡的二維性除了它們是平面輸入輸出外,它還真的只是個物理的平面……顯示器放在**就在**,觸控要在顯示器上完成,滑鼠也需要 在乙個平面上完成移動。鍵盤呢?可以說其維度都沒到一維。

什麼是未來的輸入裝置呢?它包括全息輸入輸出裝置和解放雙手的輸入方式。

對程式設計師的挑戰就來了:

人機互動層次。當前的人機互動方式上,雖然很多產品號稱體驗非常好,仍然需要人去適應裝置。不僅是輸入輸出的方式,還是思維的方式,當前的人機互動的體驗都有很大的提高空間。

例如,想出去旅遊時,要先研究到底去**,要麼上網,要麼聽人說,或者去旅行社直接預定。去旅行社當然最省事,但聽不到第一手的體驗,成本也會比較 高。如果要自己研究,選地方,確定日期,買機票、酒店,找攻略,過程中要用到很多次搜尋引擎,各種預訂**,發郵件等。從開始想到基本確定至少需要好幾 天,中間也得好幾個小時使用各種工具。而富豪們呢?也許只花5分鐘就完成了整個過程:告訴助手:想出去玩。助手可能就問問想去什麼樣的地方(也許不是某個 特定的地方)?玩幾天?大概什麼時候去?然後基本確定後再匯報一下安排就可以了。這兩個過程之間的核心區別就在於互動的層次。普通人是依靠計算機進行任務 層次的互動,而富豪是意圖層次的互動。這就是互動層次的不同對效率的影響。

cortana這樣的語音助手除了解放了雙手,它也是乙個非常自然的輸入方式。這讓程式設計師和科學家們開始更多的研究人們語言後面的意圖,從而提高計算機和人的互動層次。

project oxford和azure machine learning這 樣的開放的人工智慧元件真正把多年實驗室裡的玩具帶給了全世界。這就像當年siri的發布一樣,雖然它不是最好的,但沒有它,就不會有google now和cortana的迅速推出。好吧,又來一次:雖然project oxford只是個雛形,但是project oxford的推出給業界定義了人工智慧元件更高層的介面標準,降低了人工智慧的學習、應用門檻。特別是其中的語言模型。除了人工智慧元件的開放,可以預 見由各大公司基於大資料的各種資料模型也會很快共享。基於它們,人工智慧的應用很快就會遍地開花,所有程式設計師都能創造出更智慧型的應用,從而每個人都可以有 自己的個人助手。如果不能腦補個人助手的價值,請**電影《她》(《her》),看看人工智慧是怎樣幫忙處理**和郵件的。

另一方面,在這一輪人工智慧的熱潮下,硬體公司們也開始製造採用人工智慧演算法的處理器,這也代表著新一代的程式語言和理念的開始流行了。

互動層次方面對程式設計師就有更大的挑戰了:

總而言之,這裡描述的未來可能需要10年、20年或更長。也許我們這代程式設計師已經退出江湖了。熱點將不再是發明各種語言、發現各種工程管理方式和軟 件設計模式了,而是科技如何進一步的以人為本,促進生產力發展。對程式設計師的挑戰除了要學習和探索新的輸入輸出方式,還要學會人工智慧這樣的完全不同的程式設計 理念。

程式設計師,為未來準備好了嗎?

也許一直在一線的程式設計師們對這個標題呲之以鼻,特別是全棧工程師們。這篇文章主要是拋磚引玉,一下以後的技術方向。如果只想看未來的部分,可從中間開始看。計算機產生以後,這個行業的發展日新月異,不停地產生新的技術來解決新的問題。這裡不把計算機語言的更新換代看作技術的變化。計算機語言應該算做是規範,除了解...

程式設計師,為未來準備好了嗎?

也許一直在一線的程式設計師們對這個標題呲之以鼻,特別是全棧工程師們。這篇文章主要是拋磚引玉,一下以後的技術方向。如果只想看未來的部分,可從中間開始看。計算機產生以後,這個行業的發展日新月異,不停地產生新的技術來解決新的問題。這裡不把計算機語言的更新換代看作技術的變化。計算機語言應該算做是規範,除了解...

跳槽,你準備好了嗎?

前天有個同事想跳槽,給我溝通了一下,諮詢我的意見。該同事進公司兩年,從事qa工作,能力超群,責任心好,做事有魄力,但這裡不對她工作做評價,也不對她將要去的工作做評價,只對跳槽本身進行談一些自己的看法。本人來深六年有餘,經歷公司5家,其中第一家公司經歷1年半,目前在職的公司近三年,結合自己的情況,覺得...