<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò )與存儲 > 設計應用 > 程序員真正的價(jià)值是什么?

程序員真正的價(jià)值是什么?

作者: 時(shí)間:2017-10-31 來(lái)源:網(wǎng)絡(luò ) 收藏

  在科技浪潮澎湃、技術(shù)信息撲面而來(lái)的今天,一位剛畢業(yè)的大學(xué)生如果足夠勤奮,他可以在兩三個(gè)月之內掌握一門(mén)編程語(yǔ)言,并編寫(xiě)出像模像樣的軟件,他們的學(xué)習速度甚至超過(guò)了老一輩的程序員,但是解決問(wèn)題的能力是無(wú)法速成的,只能依靠時(shí)間、經(jīng)驗和慘痛的教訓歷練而成。有時(shí)候還需要靈感和運氣。

本文引用地址:http://dyxdggzs.com/article/201710/369443.htm

  “問(wèn):池老師,我是個(gè)不愛(ài)互動(dòng)的人,但是您所有的文章我都看了,非常感謝您的引導,我入手了人生第一臺MBP?,F在問(wèn)題來(lái)了,但是找不到更合適的人解答,只能求助于您了,如果您有時(shí)間的話(huà)。問(wèn)題是這樣的:我有個(gè)32bitunixfile(開(kāi)啟一個(gè)服務(wù)進(jìn)程),在Mac上執行時(shí)錯誤提示是:execformaterror,但是在服務(wù)器卻可以執行,為何?Mac上有可以運行的方案嗎?期待您的回復,不勝感激。

  答:和OSX是不同的操作系統,可以嘗試在OSX里重新編譯這個(gè)文件。

  問(wèn):非常感謝!如果沒(méi)有文件源碼是不是就只能認命了?

  答:可以在Mac上裝Docker,然后對服務(wù)進(jìn)行端口映射就可以了。

  答:茅塞頓開(kāi)。謝池老師。”

  以上是我和一位讀者的對話(huà),這位小伙子在拿到答案之后像一縷煙塵一樣消失無(wú)蹤,之后再也沒(méi)有出現過(guò)。

  在微信上加了很多MacTalk的讀者之后,經(jīng)常會(huì )收到一些奇奇怪怪的問(wèn)題,關(guān)于職場(chǎng)、關(guān)于選擇、關(guān)于朋友、關(guān)于Mac、關(guān)于技術(shù)等等,不一而足。但是我能回答的卻很少。問(wèn)題不好沒(méi)法回答,問(wèn)題太復雜沒(méi)法回答,問(wèn)題領(lǐng)域超出我的認知也沒(méi)法回答,耗時(shí)太長(cháng)的問(wèn)題我也沒(méi)時(shí)間回答,實(shí)在是慚愧的緊。好在偶爾也能夠幫助一些小伙伴解決一些實(shí)際問(wèn)題,心理上略感安慰,比如上面這個(gè)問(wèn)題。

  把這段程序員之間的對話(huà)翻譯一下,大致是這么個(gè)故事:

  一位讀者有一個(gè)32位的Unix可執行文件,可以在某種版本的服務(wù)器上正常運行,運行這個(gè)文件作用就是起個(gè)進(jìn)程,開(kāi)端口,然后與其他程序進(jìn)行交互。但是這個(gè)文件拿到Mac上完全沒(méi)辦法運行。就在他趴在Mac上愁腸百結萬(wàn)念俱灰的時(shí)候,突然想到了「池老師」。不就是這個(gè)老家伙把Mac夸的像一朵玫瑰一樣,讓每個(gè)程序員都去采摘么?現在扎手了,你不管誰(shuí)管?于是他給我發(fā)來(lái)消息,意思就是管也得管,不管也得管,您看著(zhù)辦。

  我拿到問(wèn)題一看,不難。Linux和OSX雖然師出同門(mén),都是從老前輩Unix那兒畢業(yè)的,但是后來(lái)畢竟各練各的,在Linux編譯好的程序不可能在OSX上用,但是在OSX上重新編譯一下可能就沒(méi)事了。我把這個(gè)想法告訴了這位程序員,得到的反饋是:對不起哥,沒(méi)有源代碼!

  我被這個(gè)冷酷的回復震驚了,立刻意識到剛才的想法并不是最優(yōu)解決方案,因為在重新編譯的過(guò)程中,各種包的依賴(lài)關(guān)系和編譯錯誤足以讓你焦頭爛額,我隨即提供了B計劃:在OSX上安裝Docker,輕量級的容器Docker可以運行各種版本的Linux,把文件扔到Docker里,然后通過(guò)主機和Docker之間的端口映射即可輕松解決這一問(wèn)題。

  雖然這里面會(huì )涉及很多技術(shù)細節,但是方向是沒(méi)有問(wèn)題的,所以這位程序員立刻表示「茅塞頓開(kāi)」,然后「biu」的一聲就在屏幕對面消失了,沒(méi)有留給我說(shuō)「不客氣」的機會(huì )。

  這個(gè)問(wèn)題裝個(gè)Linux虛擬機也可以解決,但是虛擬機過(guò)于耗費資源,而且不如Docker靈活,所以不是最佳解決方案。Docker是。

  做為一個(gè)程序員,我們除了要掌握多門(mén)程序語(yǔ)言和多種數據庫,了解前端技術(shù)、后端技術(shù),通曉網(wǎng)絡(luò )七層架構,知道TCP/IP三次握手和四次揮手,編寫(xiě)漂亮的代碼,設計優(yōu)美的架構……之外,我們還要解決研發(fā)、程序運行和產(chǎn)品上線(xiàn)過(guò)程中遇到的各種問(wèn)題,而且被要求以最小的代價(jià)來(lái)解決問(wèn)題……我們容易嗎?

  除了編程技巧和程序設計能力,解決問(wèn)題的穩準狠是衡量一個(gè)程序員是否優(yōu)秀的重要因素之一,也是資深技術(shù)人員真正的價(jià)值所在。在科技浪潮澎湃、技術(shù)信息撲面而來(lái)的今天,一位剛畢業(yè)的大學(xué)生如果足夠勤奮,他可以在兩三個(gè)月之內掌握一門(mén)編程語(yǔ)言,并編寫(xiě)出像模像樣的軟件,他們的學(xué)習速度甚至超過(guò)了我們這些老程序員,但是解決問(wèn)題的能力是無(wú)法速成的,只能依靠時(shí)間、經(jīng)驗和慘痛的教訓歷練而成。有時(shí)候還需要靈感和運氣。

  很多軍迷讀了大量的軍事著(zhù)作和歷史小說(shuō),常常羨慕那些名將的風(fēng)采,并浩嘆自己「生不逢時(shí)」。但是名將不是那么容易煉成的。歷史上叱詫風(fēng)云的名將鳳毛麟角,他們親自持刀上陣追擊敵人,見(jiàn)識戰場(chǎng)的慘烈,目睹敵人的尸體,看到戰友被殺,知道被刀看中會(huì )流血死去,他們冷酷無(wú)情,堅如磐石,在全軍即將崩潰的時(shí)候發(fā)現敵人的弱點(diǎn)并進(jìn)行攻擊,在瞬息萬(wàn)變的戰場(chǎng)進(jìn)行決斷,在多次失敗后從無(wú)數士兵的尸體里站起來(lái)重新出發(fā)去挑戰那個(gè)戰勝你的對手,在所有人對你說(shuō)「指導員,我們上吧」的時(shí)候,堅定的說(shuō)出那三個(gè)字:再等等!

  如果你做不到這些,那還是做個(gè)最終會(huì )被張飛槍挑的小兵吧。

  優(yōu)秀的程序員同樣如此,菜鳥(niǎo)常常羨慕高手在談笑之間讓難題灰飛煙滅,而自己卻苦苦思索而不得入門(mén)之法,殊不知這些高手同樣經(jīng)歷了名將的那些腥風(fēng)血雨。他們在清晨的微光里編寫(xiě)代碼,在轟鳴的機房中調試程序,他們徹夜不眠就是為了解決一個(gè)bug,他們要承受數據丟失或上線(xiàn)失敗的痛苦,默默吞下眼淚,準備下一次的戰斗。不停的學(xué)習、實(shí)踐和思索,成千上萬(wàn)個(gè)小時(shí)之后,高手始成。

  同樣的問(wèn)題,高手的解決思路和小球是截然不同的。一般來(lái)說(shuō),只要不是世界難題,給足時(shí)間、空間和人力,都能解決。如果你遇到問(wèn)題告訴上級,這個(gè)問(wèn)題交給我了,兩年之內搞的妥妥噠,那就不要怪項目組組團把你打出翔來(lái),因為大家要的是分分鐘解決,不是兩年。在這個(gè)唯快不破的年代,我們沒(méi)有這么多的時(shí)間,所以要通過(guò)逆向思維、經(jīng)驗教訓、輾轉騰挪、借力打力等方式以最小的代價(jià)快速解決問(wèn)題。這才是老程序員的價(jià)值。

  再舉個(gè)例子,一個(gè)運行良好的線(xiàn)上應用在你修改bug增加功能之后重新上線(xiàn)出現了一些莫名其妙的問(wèn)題,比如占用資源增加或運行一段時(shí)間宕機等等,怎么解決?

  常規的做法就是通過(guò)閱讀日志、模擬線(xiàn)上環(huán)境和調試程序來(lái)定位錯誤。容易的bug用這些方式基本就能搞定了,但是更隱蔽的bug會(huì )耗費大量的時(shí)間和人力。更好的方式是什么?

  首先,排查是程序問(wèn)題還是環(huán)境問(wèn)題,把線(xiàn)上程序恢復到運行正常時(shí)的老版本,如果出現了同樣的問(wèn)題,那就是生產(chǎn)環(huán)境發(fā)生了改變。如果運行正常,要么是你修改老bug時(shí)引入了新bug,要么是新增加的代碼出現了問(wèn)題。

  其次,閱讀產(chǎn)品的changelog,根據代碼提交的時(shí)間線(xiàn)構建系統,通過(guò)二分法排查,定位是哪部分代碼引起的問(wèn)題。

  第三,排除了所有的不可能,剩下的無(wú)論看起來(lái)如何不可能,就是它干的。

  以上只是一個(gè)簡(jiǎn)單的例子,實(shí)際的情況可能比這個(gè)例子復雜一百倍,需要我們綜合使用各種方式進(jìn)行交叉比對和錯誤排查才能解決。這僅僅是遇到問(wèn)題解決問(wèn)題,更多的時(shí)候是需要你提出問(wèn)題,并解決問(wèn)題,那是更高的境界。

  很多人學(xué)了那么多編程語(yǔ)言,寫(xiě)了十幾年程序,最終依然無(wú)法做到以最小的代價(jià)解決問(wèn)題,不禁讓人扼腕嘆息。

  程序員真正的價(jià)值是什么?以最小的代價(jià)解決問(wèn)題!知行合一,方可無(wú)敵于天下。



關(guān)鍵詞: Linux 電子工程師

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>