• <tbody id="24cmm"></tbody>
  • 您的位置:知識庫 ? 程序人生

    誰才是 Programmer

    作者: Terence Xie  來源: GeekArtT  發布時間: 2019-04-17 21:02  閱讀: 1133 次  推薦: 27   原文鏈接   [收藏]  

      很多的非程序員(如產品經理、運營、交互設計)并沒有意識到,他們同樣會參與代碼的寫作過程,并且,其影響力可能會遠遠大于程序員。技術人員都知道,歷史的發展注定了要逐步使用高級編程語言而不是底層編程語言去解決問題,這不僅意味著效率,還意味著清晰而正確地分解問題的形式。但很多技術人員可能沒有意識到的一點是,最高級的編程語言,就是人類的語言。所以,要說高屋建瓴、高級語言指導底層語言,產品經理和設計師無疑對代碼具有更高的影響力。

      代碼的寫作,其實無關乎編程語言,更多的是對信息流的邏輯把控。陳天大神說過:“寫代碼是一個非線性的過程,很多時候,想明白了,寫,只不過是把思路翻譯成某種具體的語言上的實現而已”。表面上,畫一張設計稿、提出一項產品功能或者用戶的行為路徑是一件極其簡單的事情,只需要一拍腦袋來上一句“我要這個”就可以了。但魔鬼藏于細節之中,稍微深究提出的整個行為過程,就會發現會自己不可避免地被各種邏輯所限制。

      很多人不太理解“寫代碼”這個事情為什么會被稱作信息工程學,不就是把圖片或者數字放到一塊屏幕上顯示么,這個和打印店的小哥做的事情有什么不同,怎么會有資格被稱作工程學?

      這其實很容易理解,任何事情只要不深究、不細細考察,都會覺得很容易(這就好比是很多人不理解,為什么像 Google 這樣的公司,不就提供了一個輸入框和按鈕么,怎么可以那么值錢,有沒有?!)。事實上,要體會到寫代碼的復雜性,你甚至根本不用掌握某種特定的編程語言,你只需要能夠系統而清晰地地描述出從一個頁面跳轉到另一個頁面的詳細過程就行了(事實上,這個活兒就是產品經理和設計師真正需要干的)。嘗試著對運行在PC、手機上的產品多做幾次這種不涉及代碼的描述性分析,你便可以感受到冰山之下的細節。

      事實上,UI 上的一個功能或者引導用戶的一種產品行為,其背后所隱藏的是對各種數據流、信息流的細密建設。某種意義上講,程序員被稱作碼農還是有些道理,因為他們就是一個個的建筑工人在構筑宏達而復雜的建筑。只不過,這個建筑是無形的由信息流所構成。這些信息流和數據流不能胡亂地放在一起,這就好比是不能把接入廁所的管道連通到洗手池是一個道理。

      之所以可以被稱作信息工程學,原因就在于你必須科學地、系統性地去把控信息流,在你的精心設計之下讓最終構筑起來的虛擬產品能夠按照自己的意圖流動起來。這有點像是偉大的南水北調工程,目標聽起來很簡單,不就是把南方多余的水資源調度到缺水的北方地區嗎?

      但如何設計運輸的管道,運輸管道所能承受的合理壓力是多少,在哪些地方應該安排水源的中轉地,中轉地的施工是否會影響正常的交通樞紐,運輸中的水資源是否會被污染或者盜取等一系列的問題,則不會被大多數人所考慮。

      同樣的,提出 App 上的一個功能似乎很容易,不就是在界面上多增加一個按鈕么,又或是不就是順便攜帶一點別的數據么,如同南水北調那般目標清晰。但是否真的容易,這取決于這個問題本身是由多少子問題構成、這些子問題本身的復雜度有多高、結合這些子問題有多大的復雜性所決定。

      而 programmer 的真正價值也就體現在:如何能夠看到一個事情背后隱藏的復雜信息過程,并恰如其分地將其分解為子問題,再以系統而清晰地方式將各種子問題的解決方案連接起來。如此種種的科學而細致的考慮,才能夠稱之為工程學。

      再回到一開始所提出的問題,誰才是 programmer ?按照我們上面的討論,所有對構筑這個信息流組成的建筑有所影響力的人都可以稱之為 programmer 。如此,產品經理和設計人員無疑都涉及其中。因為他們的每一句話,都決定了其背后所隱藏的工程細節是復雜還是簡單、是紛亂還是簡潔。甚至,如果不經細細考察,他們很可能不會意識到自己所提出的方案潛藏了矛盾。

      從這個角度來講,這才是 programmer 和產品經理/設計人員溝通和交流的價值所在。如果大家能夠僅僅使用人類的自然語言把問題的模糊性澄清、把不合理的問題砍掉、把復雜的意圖分解為清晰可見的優雅解決方案,那么接下來的代碼實現,不過是把已經成型的思維結果翻譯成具體的代碼罷了。

      但如果非得等到代碼已經成型時才發現細節中的矛盾,一切也就晚了。因為你很難像人類的自然語言那樣,只是輕飄飄地被忽略就可以另起爐灶地再說一句話,并不需要付出什么高昂的代價。從一種代碼實現的方案切換到另一種,很可能意味著要重新構建整個信息虛擬建筑的底層架構,要把所有的解決方式推倒重來,而這種代價高昂到難以想象:稀缺的時間、團隊的士氣以及戰斗人員的集中力。

      在這個意義上講,寫代碼的核心不在于掌握某種具體的編程語言,而是對問題的分解、信息流合理的邏輯構建。而這個事情,僅僅是用人類的自然語言書寫一遍,也可以完成。

    27
    2
    標簽:程序員

    程序人生熱門文章

      程序人生最新文章

        最新新聞

          熱門新聞

            黄色网_免费在线黄色电影_黄色成人快播电影_伦理电影_黄色片