答疑解惑【程序員成長之道系列文章之3】

引言

人生來彷徨。每個人要走的道路都是不同的,在未走過的路上走着,一路都是陌生的風景,陌生的路人,還有許許多多陌生的坎橫在路中間,怎麼會不徘徊彷徨?作爲程序員,在我們職業成長的道路上,同樣也會迷茫。

一個朋友曾向我提出過3個問題,在思考這幾個問題的同時,我感覺到,這應該是所有程序員都可能會遇到的問題。這幾個普遍的問題,可以稱得上是我們“成長的煩惱”。

下面的篇幅中,會介紹我對於這幾個問題的看法,期望能解決掉大部分程序員都會有的幾個疑問。看後,大家如果有什麼問題,歡迎回復討論。

技術&業務

任何技術開發工作都離不開一定的業務場景。

很多程序員可能會有這樣的疑問:整天都忙着討論業務,真正能用來寫代碼的時間並不多,這會不會耽誤我的技術成長?我是否應該換個工作,我希望新工作能讓我專注在開發上,我能有足夠的時間研究技術。

對於這一類的疑問,我給大家的回答是:業務不會耽誤技術成長。這個問題很經典,可以說跟“先有蛋還是先有雞”有異曲同工之妙。技術第一還是業務第一?

我的看法是,技術和業務同樣重要,兩手都要抓,兩手都要硬。大家應該思考如何能在複雜的業務需求中實現技術成長,這纔是職業發展的關鍵因素。

技術離不開業務,沒了業務,誰會需要你的技術?就如同,沒有蛋,怎麼孵化小雞呢?同樣,沒有技術,你的業務永遠解決不了。如果只懂業務,不懂技術,頂多是個產品經理,不能稱爲程序員。這個道理就如同,沒有雞,誰來下蛋?

那爲什麼技術和業務都要抓呢?只搞好技術不可以嗎?不是不可以,但是這樣會限制你未來的發展。限制點是:1)不能深入瞭解業務,選擇的技術架構可能不能支持未來業務的發展;2)不能理解業務,就沒辦法將真實的業務建模轉化爲數據模型和相應的代碼結構。這些工作都是架構師應該乾的活。沒錯,沒有業務思維會限制你,讓你很難做一個合格的架構師。試想,如果你只懂技術,不關心業務,你是不是隻能幹別人給你分配好的需求和現成的工作?你理解你做的工作有什麼意義嗎?解決了哪些業務需求呢?

大家可能還有這樣一個疑問?難道我支持的業務這麼重要嗎?瞭解這些業務對我有用嗎?我該怎麼樣有業務思維,培養架構師思維呢?下面給大家說一下如何去評判業務的重要性的方法,以及如何培養架構師思維。

先說一個題外話,建議大家去閱讀一下王概凱的《架構漫談》,裏面系統的介紹瞭如何架構師思維。下面我說一下我對架構師工作的理解,架構師需要具備將業務需求落地爲技術架構,並能保證業務需求得到很好的支持。這些能力包括:1)理解業務,明白需求是什麼,要解決什麼問題;2)對業務需求建模,每個模型能夠用一定的技術工具去實現和支持相應的功能;3)工作統籌安排,落地整個技術架構;4)支持不斷演變的業務需求。是不是感覺頭大了?說的我自己都感覺很繞口。通俗點說就是,當業務上有了需求,架構師就負責分析這些需求,想明白如何能最好的支持這些需求,並帶着大家把技術落地,並且能夠運維和優化這些系統,以便能支持不斷變化的需求。

關於架構師的職責,就此打住吧,本文的中心在於強調業務對於我們職業發展的重要性。說了這麼多,大家應該理解我的觀點了 —-瞭解業務需求是設計架構的基礎。

這裏,我想提出我的觀點,一個價值連城的思維方式,模型思維。

每種技術都可以認爲是一個模型,多個小模型組合,又可以組合出一個大模型。我們都玩過積木,每一塊最小的積木都可以認爲是一個模型,把這些小模型按照一定的結構進行拼裝,可以組裝成一個大模型。以此類推,多個大模型按照一定的結構進行拼裝,可以組裝成一個更大的模型......技術的架構也是同樣的道理,每個架構都是由一個個的小工具、技術按照一定的結構組合得到的。

要想學習架構師思維,就要理解”模型思維”這種思維方式。

不同的架構如同一個個的模型,這些模型之間多多少少都會有一定的差異性,他們存在的意義在於解決業務的需求。所以,學習一種架構,首先要理解它要解決的業務需求。理解了需求,就學習到了這種架構的應用場景,以後遇到類似的場景,我們便能回憶起來這種架構的可用性。理解了一種架構不足以成爲架構師,我們需要不斷的積累,積累各種各種的需求場景的架構方案。然後在我們的大腦中,訓練出一個個的模型,遇到A這種業務場景,就用A的解決方案,遇到B的業務場景,就用B的解決方案......當我們積累了很多架構方案之後,便可以從這些業務場景和架構方案中提取共性,然後把這些共性加以理解,積澱成我們自己的理解和知識。

關於業務的理解和架構的積累,關於“模型思維”,上面的介紹有些抽象。後面,我會添加一些實例來形象描述這個模型思維。

如何評估我在當前的工作中是否還有成長空間呢?我是否該換工作呢?

依我看,這個評估標準是:

1)我是否充分掌握了目前的技術架構,評估是否掌握技術架構的方法可以是:如果讓我完整的從01的把這套技術架構實現,我能否在一定時間內做完?

2)如果第一點是肯定的,我們還可以看第二點:是否有機會接觸新的技術架構?

如果我們充分的掌握了現有的技術架構,而且沒有機會接觸新的技術架構。那就是時候考慮換工作了。

新東西&舊東西

有了前面的鋪墊,這個問題就很好回答了。

如果只對做新東西感興趣,可以多問幾個問題:舊的東西,我是否完全掌握了呢?舊的技術和架構,我能否完全應用到其他業務上?如果不能做到這兩點,同時對舊的業務不感興趣,而只想做新東西,那麼就有眼高手低的嫌疑了。

當有這個想法時,多問自己幾個問題。

團隊合作

我們都怕在工作中遇到難相處的同事,遇到了怎麼辦呢?這個問題很難回答。

多說無益,關於這個問題,我只建議大家儘量避免無效的溝通,所有不以解決問題爲目的的討論、爭吵、推諉都是無意義的。做到這一點,我們應該就能和絕大部分同事友好合作了。

多和正能量的同事合作,遠離負能量源。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章