我算是靠坑洞騙進了程式設計師的門,然後一路狂奔。 26歲前幾乎沒有任何寫代碼的經驗,研究生畢業卻意外選擇了一家不可能提供培訓的初創公司,在每日擔憂公司倒閉、害怕被炒魷魚以及同事冷落白眼的三重壓力下逆流而上,一年半後離職,已是擁有500萬用戶產品的後台主程。從前我對電腦科技心懷畏懼,認定技術高人一定有佛光籠罩,晝夜不息運鍵如飛日吐代碼上萬行。現在也算見過一些世面了,回首那段忐忑不安宛如初夜的過程,我卻不發覺有任何的勵志意味,而是視為一種理所當然。理想的程式設計師,和理想的建築師、理想的財務師、理想的按摩師沒有任何的差別,他們本質上都是一群手藝人。我相信理想的程式設計師人人皆可成為。
近三年總在網路圈廝混,我認識一些php程式設計師,共事過一些程式設計師,領導過一些程式設計師,又面試過一些程式設計師。他們學歷不同,有的來自北大,有的來自北大青鳥,有的是博士,有的是高中肄業;資歷也不同,有的來自BAT,有的來自某破產基金公司(還是一個銷售);年限也從0到15年不等。但我認為程式設計師只需分成三類:天才的程式設計師、理想的程式設計師、平庸的程式設計師。天才的程式設計師我只敢說接觸過3個,這是天命。 7分由你是顆精子的時候就已決定,擁有絕佳的數學天賦、冷靜緻密的邏輯、為解決難題寧願不眠不休而深以為樂的技術熱情;3分來自起步要早早早,恨不得同齡人玩泥巴的時候就得開始玩電腦,大學畢業前就突破一萬小時法則,後面的已是遊戲人生。
天才的程式設計師可遇不可求,更不能長有,我看到的90%仍是平庸的程式設計師。 IT時代的膨脹,已讓程式設計師如同文藝復興時的印刷匠一樣的普通,多數投入祖師爺門下的人,僅是為了更大的飯碗,更高的待遇,更好的生計。平庸的程式設計師寫腐爛的程式碼,沒有規範和一致性,固守舊世界的語言,還好談論大的架構和效能,說的比做的漂亮。而毫無例外的,他們認定技術沒有出路,做產品、行銷和管理的是更高大上的手藝,而他們當中的99%,又會自然的流露出自己恰巧具備了那方面的天賦,至於進程為什麼會崩潰這樣的小問題是不屑於去了解的。
而我最喜歡和理想的程式設計師相處,恨不得與他們同吃同住,如果允許,我希望我的隊伍能插滿他們的旗幟。理想的程式設計師心眼兒不壞(他們從來都不是辦公室政治的寵兒,是一群單純明亮快樂的手藝人),有天真爛漫的好奇心(他們的眼睛裡經常閃著“哇,這個是怎麼做的!是的,他們不需要被管理,只需要給一個大的方向,總是能回報以意想不到的結果。
理想的程式設計師與平庸的程式設計師只有一牆之隔。兩者的差距只有6個一點點,而人與人的差距,正是在這日積月累的一點點中,被永遠拉開了。有趣的是,我發現這6個一點點都和意識有關,也就是程式設計師和其他一切新興產業的工種一樣,只需要意識加上時間的錘煉,人人皆可達到理想的階段。理想的程式設計師必然也是一個優秀的problem-solver。
第1個一點點:專注眼下
看過太多心猿意馬的程式設計師,我只好把「專注眼下」當作天字第一條。他們往往有各式各樣的小夢想,例如做個小茶農、做個小鵝販、做產品、做銷售、做投資,卻被程式設計師的高薪或沒有轉行的魄力「耽誤」了,而因為不專注,他們不在意做好自己的本分,不在乎錘鍊自己的技能,不在乎學習新興的技術。不可否認,這世界上存在著偉大的產品(像喬老爺)、偉大的銷售(像艾里森)、偉大的投資客(像彼得菲),而他們毫無例外都是程式設計師出身。但你聽過巴菲特評價蓋茲的話麼,比爾蓋茲如果轉行去賣狗,那他一定是全世界最大的狗販。我堅信除了少數的天才外,冥冥眾生均可以在多個領域取得成功,只要保持足夠的專注。而即使你下一年就想賣狗去,程式設計師的經驗仍然能訓練你強大的邏輯、謹慎和耐心,放在哪個行業都是相當可觀的競爭力。
第2一點點:思考力與推動力
我認為處理bug、崩潰、調優、入侵等突發事件比程式設計本身更能體現平庸程式設計師與理想程式設計師的差距。當面對一個未知的問題時,如何定位複雜條件下的核心問題、如何抽絲剝繭地分析問題的潛在原因、如何排除乾擾還原一個最小的可驗證場景、如何抓住關鍵數據驗證自己的猜測與實驗,都是體現程式設計師思考力的最佳場景。是的,在衡量理想程式設計師的標準上,思考力比經驗更重要。
有時候小夥伴跑過來,問我「提交了一個任務被卡住了,怎麼辦」的時候,我總覺得他可以做得更好。例如,可以檢查試驗別的任務,以排除程式碼本身的原因;可以透過Web UI檢查異常(如果沒有帳號,可以讓我提供);可以排查主機日誌或刪除緩存,再不濟,總是應該提供任務ID和控制台日誌給我。理想的程式設計師永遠不會等事情前進,他們會用盡一切方法讓事情前進。
第3一點點:Never Say No
記得從前廠離職之前,找老闆談話,他說我最大的優點就是從來不跟他說這個做不到。後來我發現在很多團隊裡,都存在著一種技術和產品的對立,程式設計師往往以「技術上無法實現」來擋產品的需求,而產品也往往以「Facebook可以為什麼我們做不到」來奚落程式設計師.這兩句話應該屬於禁語,從根本上都不利於程序猿和產品狗的相親相愛。
一句「技術上無法實現」是容易出口,可有多少人在說出這句話的時候,心裡是100%肯定的?如果不肯定,為什麼不能回去谷歌一下再回答?原本我以為程式設計師是充滿想像力,在因為有想像力,才能誕生那麼多改變我們生活的軟體和網路產品。見識多了,才了解大部分程式設計師已經在與bug的對抗中變得保守而不願承擔風險,同時許多團隊也不願意寬容失敗。於是「Say No」變成一種習慣性的抵觸,還記得曾國藩為什麼解散湘軍麼?他說那支軍隊已「暮氣漸深」,不能打仗了。要做理想的程式設計師,就不能給自己滋生暮氣的機會,如果面對不合理的需求,可以把時間成本擺出來,把曲線救國方案亮出來,簡單粗暴“Say No”是不可取的。
第4個一點點:投資未來
程式設計師是個非常殘忍的職業。你所學所用的語言、框架、模式,很可能在數年內就成昨日黃花了;你現在嘲笑的另一群程式設計師,可能馬上就能轉身來嘲笑你了。所以理想的程式設計師除了做好自己的本分,還要花時間投資未來。什麼是“投資”?投資就是你現在投入的時間,在未來會以更多的時間或金錢(看看早幾年學習iOS的程式設計師現在的薪水!)回報你。舉我自己的領域-- 資料探勘為例,08年左右Hadoop開始興起,一時「大數據」概念火熱,Hadoop工程師萬金難求,各互聯網公司紛紛把數據統計、數據分析和數據挖掘的業務切換到分散式平台上。這幾年眼看Hadoop還在不斷迭代,Spark又異軍突起,一舉刷新了Hadoop保持的排序記錄,以內存存儲中間數據帶來的性能優勢和豐富的數據結構讓人愛個不停,各種奇異的小bug和陡峭的學習曲線又讓人打退堂鼓。那麼,明眼人都知道Spark是未來的趨勢(記憶體會越來越便宜),在主業務放在Hadoop的條件下,就可以適當把一些小模組切換到Spark上,同時留意Spark社群的發展。很快從Spark獲得的性能效益就能把之前投入的學習時間掙回來。
第5一點點:善用工具
善用工具可以分為4個層次:
1 搜尋引擎
2 不相信重複
3 程式碼片段
4 自動化
我剛入行那會,一個電腦專業卻當了公務員的朋友問我,你一點都沒學過編程,平時怎麼寫程式碼?我說,谷歌,於是遭到無情的恥笑,以至於我在哪裡的帳號都叫2shou,告誡自己是一個無恥的二手程式設計師。這是一個笑話,但如果現在問我,我還是要回答谷歌。程式設計師的成長就像膨脹的圓餅,外面是無邊無際的大海,圓餅越大,與大海接觸的面也越大,懂的越多,不懂的越多,而電腦科學又是一門更新換代異常迅速的學科,同時也是知識互聯網化最好的學科,很難利用傳統的科班式有教有學的方法,相反通過搜索引擎則很容易獲取到最新的知識。
不相信重複,大師的話叫DRY原則(Dont repeat yourself),代碼寫多了,會有人為的直覺判斷好的和爛的代碼,我的標準是簡潔和規範,簡潔並不是美感上的標準,重複越少,給自己出錯的機會也越少,後期維護的成本就越少。
如果你不幸丟了三週前的程式碼,也許你能憑著過人的記憶力把腦子裡殘餘的片段複寫出來,但如果丟的是三個月前的程式碼,恐怕就沒有那麼好的運氣了。理想的程式設計師會著力找出有效的資料保存方式,把工作裡靈光閃現寫下的程式碼、腳本、配置、經驗等短的片段保存起來,以便任何時候都能複查。
理想的程式設計師必須懶惰。對他們來說,重複的步驟和重複的程式碼一樣醜陋,如果意識到一項工作有可能長期要重複,那麼自動化的時間總是越早越好。
第6個一點點:管理時間
之所以管理時間會對程式設計師這個行當特別重要,是因為完成任務時你必須像荒野裡的狼一樣,「獨行」。沒有外界約束的情況下還能穩定控制自己,保證能高效率地工作和學習,那麼日積月累你肯定會變得比一般人厲害。
程式設計師幹的是高強度的腦力活,一般每天集中4-5個小時應對本職工作就足夠了,但工作之外,一定要安排時間用於學習。除了學習,留點時間放空自己也是必要的,利用泡茶或喝咖啡的間隙,把彌足珍貴的時間留給自己,往前想往後想,事半功倍。
說了這麼多,想必有人會問,費勁心思成為一個理想的程式設計師,又有什麼用處?會有高薪嗎?不。能升職嗎?也看不見。迎娶白富美呢?不如去賣狗。
稻盛和夫曾經說過一個故事,明治時期的手藝人被天皇召見,雖然都是不讀書的鄉下人,但一輩子兢兢業業地做一件事情,自然有一股高貴的氣質。理想的程式設計師,應該就是循著這種高貴的氣質而去的吧。
免費領取LAMP兄弟連原創PHP影片教學光碟/《細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.net
PHPCMS二次開發http ://yun.itxdl.cn/online/phpcms/index.php?u=5
微信發展 http://yun.itxdl.cn/online/weixin/index.php?u=5
行動網路伺服器端開發 http://yun.itxdl.cn/online/server/index.php?u=5
Javascript課程 http://yun.itxdl.//online /js/index.php?u=5
CTO訓練營 http://yun.itxdl.cn/online/cto/index.php?u=5
cn/online/cto/index.php?u=5 |
cn/online/cto/index.php?u=5 cn/online/cto/index.php?u=5

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具