大多數(shù)程序員都是被屏幕包圍的。
在家里,一臺(tái)筆記本電腦外加一塊34寸的顯示器是標(biāo)配;在公司,受限于辦公條件,程序員們也會(huì)想方設(shè)法用兩塊甚至更多顯示器來(lái)拓展視野。
即便如此,很多時(shí)候他們?nèi)匀挥X(jué)得屏幕不夠用,恨不得將所有信息都鋪開(kāi)來(lái)一覽無(wú)余。
這是為什么呢?有人曾經(jīng)問(wèn)我:“為什么沒(méi)有程序員用手機(jī)編程?”
這其實(shí)與程序員的工作性質(zhì)有關(guān)。
程序員如此“貪戀”屏幕,是因?yàn)樗麄冃枰瑫r(shí)處理的信息量實(shí)在太大了。
日常工作中,程序員往往需要打開(kāi)十多個(gè)應(yīng)用程序:多個(gè)IDE用來(lái)編程、命令行窗口執(zhí)行各種命令、ssh終端登錄到服務(wù)器查看日志和執(zhí)行操作、刷硬件、查看芯片串口終端、用記事本記錄臨時(shí)信息、用sftp上傳各種資料、用各種文檔閱讀器查看開(kāi)發(fā)手冊(cè)和廠(chǎng)家協(xié)議,當(dāng)然還有瀏覽器,用來(lái)查詢(xún)各種知識(shí)點(diǎn)。
而且,只要是支持多窗口的應(yīng)用,他們都會(huì)盡量多開(kāi)幾個(gè)窗口,以便在不同任務(wù)之間快速切換。
面對(duì)如此海量的信息,別說(shuō)手機(jī)了,即使是單屏,如果不停地切換應(yīng)用,也會(huì)讓人疲憊不堪,效率低下。
很多人以為程序員的主要工作是編程,其實(shí)不然。研究和分析才是占據(jù)他們大部分時(shí)間的工作內(nèi)容。
程序員需要了解、理解、學(xué)習(xí)、借鑒和掌握與需求相關(guān)的所有知識(shí)和技術(shù)細(xì)節(jié),然后梳理出三個(gè)關(guān)鍵要素:
● 業(yè)務(wù)邏輯
一個(gè)需求反應(yīng)到業(yè)務(wù)上,需要哪些功能模塊參與、它們是如何協(xié)作的、交互順序是什么樣的、各自都有什么樣的約束和資源需求。
● 系統(tǒng)架構(gòu)
前面鋪開(kāi)的業(yè)務(wù)邏輯,最終需要收攏到系統(tǒng)架構(gòu)中。程序員需要分析系統(tǒng)的構(gòu)成要素、運(yùn)作機(jī)制、資源需求和約束條件,即系統(tǒng)的動(dòng)態(tài)、靜態(tài)、開(kāi)銷(xiāo)和約束。
● 知識(shí)點(diǎn)和技術(shù)細(xì)節(jié)
程序員需要掌握所有參與者的知識(shí)點(diǎn)和技術(shù)細(xì)節(jié),尤其是涉及接口側(cè)的,必須完全掌握。
根據(jù)需求的復(fù)雜程度、對(duì)系統(tǒng)的了解程度以及對(duì)各知識(shí)點(diǎn)的掌握程度,這三者的完備程度自然有所不同。
如何平衡這三者來(lái)協(xié)調(diào)成本、時(shí)間、產(chǎn)出和風(fēng)險(xiǎn),就是開(kāi)發(fā)方法論的精髓所在。
所以說(shuō),程序員首先是工程師,而工程師的職責(zé)是解決問(wèn)題。
編程只是解決問(wèn)題的工具之一,而對(duì)問(wèn)題的認(rèn)識(shí)、研究和分析能力,才是解決問(wèn)題的關(guān)鍵,而這些能力與編程本身并沒(méi)有直接關(guān)系。
掌握了問(wèn)題的認(rèn)識(shí)、研究和分析能力,即使工具升級(jí)換代,也能很快學(xué)會(huì)并應(yīng)用;即使行業(yè)發(fā)展變化,也能換個(gè)行業(yè)繼續(xù)發(fā)光發(fā)熱,一直干到退休都沒(méi)有問(wèn)題。
反之,如果只關(guān)注編程技巧,而沒(méi)有掌握問(wèn)題的認(rèn)識(shí)、研究和分析能力,那就不能稱(chēng)之為工程師,只是一個(gè)熟練的技工罷了。
這樣的技工只能按照工程師給出的解決方案來(lái)施工,一旦新工具出現(xiàn)、解決方案變化、生產(chǎn)力跟不上,自然就會(huì)被淘汰,逃不過(guò)“35歲危機(jī)”。