Warning!程序員們小心被技術(shù)綁架
通常我們說程序員需要在某個(gè)技術(shù)方向上積累到一定的厚度,要能夠運(yùn)用技術(shù)有效地解決實(shí)際問題。可是當(dāng)程序員在某一項(xiàng)技術(shù)上浸淫時(shí)間長(zhǎng)了之后,卻經(jīng)常會(huì)出現(xiàn)另外的問題,那就是:看待問題時(shí)受限于自身的技術(shù)積累。
我打算從幾個(gè)方面來談這個(gè)話題。
一定有某一項(xiàng)技術(shù)最適合解決某個(gè)問題
有的人對(duì) C++ 比較熟悉,在開始一個(gè)新產(chǎn)品或新項(xiàng)目,比如做一個(gè) Android App ,就會(huì)考慮怎么用 C++ 來實(shí)現(xiàn)目標(biāo),于是就會(huì)去找可以用在移動(dòng)端的 C++ 框架,比如 Qt ,比如 NDK + Native Activity ……這是一種受限于現(xiàn)有技術(shù)的情況,其實(shí)呢,我們可以跳過 C++ 的藩籬,直接找 Java 去!
在我看來,技術(shù)是用來解決問題的,當(dāng)我們要解決某個(gè)問題實(shí)現(xiàn)某個(gè)目標(biāo)時(shí),技術(shù)可能有很多種,可能每種都可以實(shí)現(xiàn),但不同的技術(shù)面對(duì)的難度、付出的成本一定是不一樣的!對(duì)于公司、個(gè)人來講,都應(yīng)當(dāng)選擇綜合成本***的那項(xiàng)技術(shù)。
當(dāng)我們做技術(shù)方案選型時(shí),應(yīng)當(dāng)問“這項(xiàng)技術(shù)適合解決哪類問題?”、“這類問題最適合用哪種技術(shù)來解決?”,而不是問“我掌握的技術(shù)該怎么解決這個(gè)問題?”。
如果你總是想盡一切辦法用已經(jīng)掌握的技術(shù)來解決所有問題,雖然這種擔(dān)憂未知害怕變化害怕嘗試的心理可以理解,但我覺得這不是一種健康良好的心態(tài),也不是一個(gè)有益的習(xí)慣,它其實(shí)發(fā)出了“你被所學(xué)技術(shù)奴役”的告警信號(hào)。
要知道,我們學(xué)技術(shù)是用來解決問題的,是要能夠靈活有效的控制和運(yùn)用掌握的技術(shù),而不是把自己交給某項(xiàng)技術(shù)反受技術(shù)左右的。
一字槽口的螺釘就要用一字螺絲刀,內(nèi)六角的螺絲就要用內(nèi)六角的扳手。這是很直接很簡(jiǎn)單的道理,我們?cè)谏钪袝?huì)下意識(shí)地遵循這種規(guī)則,而一旦我們面對(duì)技術(shù)這種相對(duì)復(fù)雜的事情,卻往往不能回歸到事物的本源,這是需要我們思考的。
換工作時(shí)拒絕換技術(shù)
當(dāng)程序員熟練掌握了一門技術(shù)(比如 Java,C++,Qt,Spark……),他在選擇新工作時(shí)就經(jīng)常會(huì)主動(dòng)給自己設(shè)置路障,不用 Spark 的公司不去,不用 Qt 的崗位不考慮……其實(shí)我覺得這是不必要的。
學(xué)習(xí)一門技術(shù)當(dāng)然有成本,用精通的技術(shù)來解決問題會(huì)有得心應(yīng)手駕輕就熟的感覺,能夠事半功倍。這是非常好的。但是,等等!難道你真的打算一輩子把自己局限在某項(xiàng)技術(shù)上嗎?難道你認(rèn)為你干了N年程序員就只獲得了這項(xiàng)技術(shù)?
我覺得不是這樣子的。你熟練掌握了某門技術(shù),這當(dāng)然是你非常重要的收獲。但是這絕不是最重要的,真正重要的是下面兩點(diǎn):?
學(xué)習(xí)能力?
解決問題的能力?
對(duì),你沒看錯(cuò),這才是一個(gè)程序員在精通一門技術(shù)后真正的收獲。
你通過掌握、精通一門技術(shù)發(fā)現(xiàn)自己的學(xué)習(xí)模式確認(rèn)自己的學(xué)習(xí)能力,一通百通,再學(xué)其它技術(shù)就會(huì)快很多,因?yàn)槟惬@得的有關(guān)學(xué)習(xí)的經(jīng)驗(yàn)和認(rèn)知是通用的。所以,我認(rèn)為發(fā)現(xiàn)自己的學(xué)習(xí)模式強(qiáng)化自己的學(xué)習(xí)能力是真正核心、重要的收獲之一。
還有,技術(shù)只是一把劍,這把劍的威力如何,就看使用它的人怎么樣因地制宜審時(shí)度勢(shì)的運(yùn)用它。攻守之道,妙乎于心。真正的高手,摘葉飛花皆可傷人。這就是解決問題的能力了,同樣的太祖長(zhǎng)拳,在喬峰手里就有摧枯拉朽的氣勢(shì)和震懾人心的威力,這就是喬峰的本事,這個(gè)本事是獨(dú)立于太祖長(zhǎng)拳的。程序員也一樣。所以,解決問題的能力是一種真正重要的收獲。
如果你確認(rèn)你已經(jīng)收獲了學(xué)習(xí)能力和解決問題的能力,那具體的技術(shù)就已經(jīng)不重要了,它也不應(yīng)該成為你選擇新工作新產(chǎn)品的絆腳石。不設(shè)限,天高海闊任你遨游。
招人時(shí)限定精通某某技術(shù)
我們會(huì)發(fā)現(xiàn),絕大多數(shù)公司在招聘開發(fā)工程師都會(huì)列出諸如“精通 J2EE ”、“精通 MySQL”、“熟悉 Hadoop”等非常細(xì)的技術(shù)要求。
對(duì)公司來講,招聘擁有相關(guān)經(jīng)驗(yàn)和技術(shù)的人才能夠大大降低一個(gè)產(chǎn)品(項(xiàng)目)的成本,這本無可厚非,因?yàn)楣径际浅杀久舾械摹5菍?duì)于程序員來講,有時(shí)這是不公平的。
不公平體現(xiàn)在兩點(diǎn)。一是沒有相關(guān)技術(shù)經(jīng)驗(yàn)的程序員會(huì)因此而失去學(xué)習(xí)新技術(shù)的機(jī)會(huì),對(duì)于那些剛畢業(yè)不久或意圖轉(zhuǎn)換技術(shù)方向的人來講則更是殘酷的。二是擁有匹配技術(shù)的程序員,自身發(fā)展會(huì)因?yàn)楣镜倪@種傾向而受到限制,甚至裹足不前,他們會(huì)覺得,原來你僅僅是想利用我已有的技術(shù)和經(jīng)驗(yàn)來解決你的問題啊,技術(shù)人員的價(jià)值是在不斷戰(zhàn)勝新的挑戰(zhàn)的過程中提高的,失去面對(duì)這種挑戰(zhàn)的機(jī)會(huì),他們的能力和水平就會(huì)原地踏步,甚至回落、下降。
其實(shí)在我看來,招聘人員時(shí),擁有相關(guān)技術(shù)并不是最重要的,一個(gè)程序員是否具有學(xué)習(xí)能力和解決問題的能力才是關(guān)鍵!有了出色的學(xué)習(xí)能力,他一定能夠快速掌握產(chǎn)品需要的各項(xiàng)技能;有解決問題的能力,他一定能夠解決新產(chǎn)品開發(fā)中不時(shí)跳出的各種意外。也就是說,選擇程序員時(shí),公司更應(yīng)該從一個(gè)人的才干和能力出發(fā),而不是盯在某項(xiàng)具體的技術(shù)上,合適的人會(huì)帶給公司更多,唯有把正確的事情交給正確的人,成功才可預(yù)期。
總之,不論是程序員還是需要程序員的公司,都應(yīng)該從人才的核心出發(fā),發(fā)現(xiàn)關(guān)鍵才干和能力,不要被具體的技術(shù)蒙蔽,不要讓已有的技術(shù)成為包袱,不要讓自己的視野受到不必要的限制。心不設(shè)限,將來就沒有終點(diǎn)。