自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

架構(gòu)師修煉課程:透過問題看本質(zhì)

原創(chuàng)
開發(fā) 架構(gòu)
架構(gòu)師的長處之一就是善于看到問題的本質(zhì)。不過,什么是看到問題的本質(zhì)?程序員應(yīng)該如何修煉這個能力?本文從一位菜鳥程序員的編程生涯開始說起,介紹透過問題看本質(zhì)這一能力的修煉過程。

【51CTO獨家特稿】一個剛剛從學(xué)校畢業(yè)的、致力于投身編程事業(yè)的年輕人,在投遞了n封簡歷之后,終于如愿以償?shù)玫搅?**份編程的工作。如果他在求學(xué)期間沒有積累過項目經(jīng)驗,那么可以說這就是他職業(yè)的起點,他青澀的編程之路開始了。

51CTO開發(fā)頻道年終巨獻:架構(gòu)師最怕程序員知道的十件事

可能他一開始會滿腔抱負(fù)、意氣風(fēng)發(fā)的按照自己的方式完成小頭目交給自己的一些練手任務(wù),然后懊惱的發(fā)現(xiàn)小頭目對這些看似能夠完成任務(wù)的代碼大搖其頭,指指點點;然后在真正進入項目之后,又會被各種不知道從哪里冒出來的bug和漏洞搞得暈頭轉(zhuǎn)向……

這些問題一方面和這位菜鳥程序員缺乏經(jīng)驗有關(guān),但是在過來者看來,造成這些問題的一個主要原因正是在于,這位程序員沒能看到問題的本質(zhì)。

而看到問題的本質(zhì),也是架構(gòu)師所必須具備的素質(zhì)。

所謂看到問題的本質(zhì),實際上是一個思考的層面問題。比如說,你現(xiàn)在看到的這篇文章,從表面上看,就是你的顯示屏顯示出來了一些文字,但這明顯不是它的本質(zhì)。從內(nèi)容而言,這篇文章是一篇有關(guān)架構(gòu)師技能的文章,它是對一個職業(yè)的某一項能力的描述;從技術(shù)而言,這篇文章是在世界上某臺服務(wù)器上的數(shù)據(jù)庫中提取出來的某些信息,經(jīng)過漫長光纜和層層協(xié)議的傳遞,經(jīng)過你的網(wǎng)線插口(或無線接收器)進入了你的機器,通過瀏覽器解讀并最終呈現(xiàn)出來。

聽起來,這個和另一篇文章介紹的同樣是架構(gòu)師所需要的“抽象思維”有點像,只是方向不同:抽象思維是往高層次的升華,透過問題看本質(zhì)則是往深層次的挖掘。

讓我們看看文章一開始的那位菜鳥程序員為什么總是失敗。如果你是一位PHP程序員,那么可以參考這篇文章,里面總結(jié)了一些常見的問題。最簡單的一個(有時被用作面試題)可能出現(xiàn)在這樣的情況下——小頭目說:“顯示用戶提交的ID名”,然后菜鳥程序員大筆一揮:

  1. echo $_GET['username'];  

小頭目閱畢自然抓狂不已,因為這是一個再明顯不過的安全隱患。菜鳥程序員被小頭目訓(xùn)了一頓,然后知道這樣做是有問題的。

這個事情如何與通過問題看本質(zhì)有關(guān)?這個就取決于這位菜鳥程序員是如何改正這個錯誤的。如果這位程序員只是把下面的那段“合格”代碼抄襲過來并死記硬背,那么,以后等待這位程序員的大概是比較悲慘的結(jié)局——因為漫長的代碼生涯中有極多類似的問題,而等到他進入真正的項目之后,犯錯誤是有成本的。他的學(xué)習(xí)方式表示他沒有主動避免這樣類似問題的能力,那么他可能將會造成極大的損失,從而最終失去在這個行業(yè)的競爭力。

但是,如果他了解到代碼之下,更深層次的那些機制,比如echo是如何執(zhí)行的?在什么時候執(zhí)行的?哪些字符可能導(dǎo)致安全問題?htmlspecialchars為什么能解決這個問題?它真的解決這個問題了么?那么他將會一點一點的進步,逐漸成為一個合格的程序員。

什么是本質(zhì)?將世界萬物理解為原子,將整個互聯(lián)網(wǎng)理解成0和1,這倒的確是非常本質(zhì)了,不過并不能解答任何問題。從問題看本質(zhì),實質(zhì)上是一個從表層逐步深入的過程。在架構(gòu)師面對一個用戶需求時,這個“用戶需求”是非常表層的——比如說,一個自動遠(yuǎn)程備份數(shù)據(jù)庫的功能。而架構(gòu)師的主要工作,就是把這樣的“業(yè)務(wù)需求”翻譯成“技術(shù)需求”。這個過程一方面需要通過抽象思維將用戶需求提煉為啟動、讀取、存儲、中斷處理等模塊,而另一方面則需要看到更深層次的網(wǎng)絡(luò)、操作系統(tǒng)、硬件等方面,以及其可靠性、穩(wěn)定性、適用性、安全性等問題。

#T#上面述說的是個小型需求,按照某些行業(yè)標(biāo)準(zhǔn),這頂多只能算是一個資深程序員的工作,而沒有達到“架構(gòu)”的規(guī)模——即,非大型項目中不存在真正的架構(gòu)師(按照王翔先生的描述,大型項目差不多是“100M(RMB)、B(RMB)、10B(RMB)”這些數(shù)量級)。那么,讓我們看看大型系統(tǒng)的情況。以eBay為例,按照其架構(gòu)師Randy Shoup的介紹,電子商務(wù)站這樣大型的系統(tǒng)有兩個層面的功能:“垂直功能,如買、賣、搜索、付款等。水平功能,如數(shù)據(jù)庫、事件與消息系統(tǒng)、服務(wù)基礎(chǔ)設(shè)施、展示框架等。”按照編者的理解,如果說垂直功能是抽象思維的產(chǎn)物,那么其中的水平功能的劃分則是一個架構(gòu)師“透過問題看本質(zhì)”能力的體現(xiàn)——這些劃分體現(xiàn)了架構(gòu)師看到了表層的功能是建造在哪些因素之上的。同時,架構(gòu)師要看到“電子商務(wù)站”這樣一個服務(wù)的本質(zhì),就是要提供一個多人同時在線進行交易的平臺,因此系統(tǒng)的本質(zhì)也必須包括“功能,性能,可伸縮性,可管理性,安全性,以及可用性”這些因素。否則,即使搭了個架子,沒有上述特性的系統(tǒng)是完全無法滿足客戶需求的。

看到這里我們應(yīng)該明白了,“透過問題看本質(zhì)”并不是什么神秘的能力,而是有一定經(jīng)驗?zāi)芰Φ某绦騿T都具備的能力。如果你在編寫Java代碼時考慮到了JVM的性能,在編寫PHP代碼時想到了潛在的安全問題,甚至于在編寫HTML+CSS頁面時考慮到了不同瀏覽器的兼容性,這些都體現(xiàn)了“透過問題看本質(zhì)”的素質(zhì)。只是,架構(gòu)師之所以為架構(gòu)師,是在于他們在面對龐大系統(tǒng)之時,仍然能夠敏銳的發(fā)現(xiàn)其底層之真實。這不僅需要此哲學(xué)層面的“內(nèi)功”,還需要架構(gòu)師具有多領(lǐng)域知識和經(jīng)驗的積淀。

“透過問題看本質(zhì)”,這也是程序員往往需要修煉十余年才有資格晉升為架構(gòu)師的主要原因之一。程序員們,好好努力吧!

[[7723]] 

本文為《架構(gòu)師害怕程序員知道的十項技能》中的透過問題看本質(zhì)篇。

責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2023-02-17 18:32:42

JavaAIOIO

2015-12-10 15:10:10

2025-02-20 08:10:00

神經(jīng)網(wǎng)絡(luò)模型AI

2013-02-26 09:34:10

服務(wù)器虛擬化云部署

2013-02-27 16:03:48

云部署服務(wù)器虛擬化

2012-06-20 13:54:44

架構(gòu)性能優(yōu)化

2009-02-19 16:19:48

SaaS開發(fā)SaaS安全SaaS

2011-03-25 10:23:51

架構(gòu)師

2014-07-11 09:35:26

架構(gòu)師

2021-02-02 15:23:20

Cloudera大數(shù)據(jù)

2012-05-01 21:32:39

蘋果

2018-07-04 13:41:17

架構(gòu)系統(tǒng)結(jié)構(gòu)數(shù)據(jù)庫

2009-12-08 15:37:39

2009-12-09 16:14:50

2013-04-19 15:12:17

架構(gòu)師WEB架構(gòu)師

2021-08-02 13:05:49

瀏覽器HTTP前端

2013-09-25 09:26:03

平臺軟件企業(yè)虛擬化云網(wǎng)絡(luò)

2010-08-26 14:40:55

隱私保護

2017-12-18 09:43:35

架構(gòu)師CTO秘籍

2009-12-18 10:22:50

Ray Ozzie架構(gòu)師
點贊
收藏

51CTO技術(shù)棧公眾號