你做程序員已經(jīng)有好幾年并且已經(jīng)晉升過一兩次,最終升任了高級(jí)工程師或一些其他的同等職位,在此之前,你的職業(yè)道路簡單明了:你學(xué)會(huì)如何獨(dú)立工作,然后一步步升任為高級(jí)工程師。
現(xiàn)在的你開始思考自己職業(yè)生涯的下一步是什么,如果你還沒有明確的規(guī)劃,問自己幾個(gè)問題:
你是否成為了一個(gè)管理者且不再編程?
僅僅學(xué)習(xí)新技術(shù),你是否覺得不夠?
你的目標(biāo)是什么?
本文我想提出一個(gè)職業(yè)發(fā)展的替代方案,一個(gè)能給你更多自主權(quán)和討價(jià)還價(jià)能力的替代方案。與成為管理者不同的是,它仍然允許你編程。
從寫代碼到解決問題
作為程序員的工作到最后是解決問題,而不是編寫代碼,解決問題需要這些步驟:
發(fā)現(xiàn)和確認(rèn)問題
提出解決方案
實(shí)施解決方案
這里面的每一個(gè)都可以被認(rèn)為是一種技能樹:一組可以單獨(dú)和并行開發(fā)的相關(guān)技能。但是在實(shí)踐中,你通常會(huì)從使用第三個(gè)技能樹開始,在變得更有經(jīng)驗(yàn)的時(shí)候,才逐個(gè)添加其他技能。
Randall Koutnik 把這些描述為一種職業(yè)頭銜,一個(gè)職業(yè)發(fā)展走向:實(shí)施者、解決者和發(fā)現(xiàn)者。
作為實(shí)施者,你是一名沒有經(jīng)驗(yàn)的程序員,你的任務(wù)由其他人定義:你只需實(shí)現(xiàn)小的、明確指定的代碼塊。
假設(shè)一下,你在一家為養(yǎng)寵物的人搭建網(wǎng)站的公司工作。你在上班的時(shí)候會(huì)接收到一個(gè)任務(wù):“在這里添加一個(gè)下拉菜單,列出所有的鬣蜥疾病,你可以從 IGUANA_DISEASE 表中獲取這些疾病。選擇一個(gè)菜單項(xiàng)應(yīng)重定向到適當(dāng)?shù)捻撁妗!?/p>
你不知道用戶為什么會(huì)需要列出鬣蜥疾病,也不必花費(fèi)太多時(shí)間來弄清楚如何實(shí)現(xiàn)它,照吩咐去做就行了。
當(dāng)你變得更有經(jīng)驗(yàn)時(shí),你就成了一個(gè)解決者:你能夠?yàn)椴惶鞔_的問題想出解決方案。
當(dāng)你遇到一個(gè)問題:“我們需要在網(wǎng)站上添加一個(gè)部分,讓寵物主人知道自己的寵物是否生病了。”你先獲悉自己擁有什么數(shù)據(jù),可以使用哪些 API,然后與設(shè)計(jì)師一起設(shè)計(jì) UI,創(chuàng)建一個(gè)實(shí)現(xiàn)計(jì)劃,最后編寫代碼。
最終你會(huì)成為一個(gè)發(fā)現(xiàn)者:你開始自己發(fā)現(xiàn)問題并找出其根本原因。
你會(huì)去和你的經(jīng)理談鬣蜥:幾乎沒人擁有鬣蜥,為什么它們?cè)陧撁嫔虾拓埞酚幸粯拥目臻g?更不用說給鬣蜥編寫特定的代碼,這完全是在浪費(fèi)時(shí)間,難道不是應(yīng)該編寫適用于所有動(dòng)物的通用代碼嗎?
經(jīng)過一番討論,你發(fā)現(xiàn)必須重做網(wǎng)站架構(gòu)、業(yè)務(wù)邏輯和設(shè)計(jì),這樣就不必在每次添加新動(dòng)物的時(shí)候都編寫新代碼。如果你提出正確的架構(gòu),使得添加一個(gè)新的動(dòng)物只需要花一個(gè)小時(shí),公司就可以以低成本服務(wù)于許多動(dòng)物利基市場。你將與整個(gè)團(tuán)隊(duì)一起合作完成解決方案的設(shè)計(jì)和實(shí)施。
成為發(fā)現(xiàn)者的好處
許多程序員最終停留在解決者這個(gè)角色,不知道下一步該做什么。如果你不做管理,那么成為一個(gè)發(fā)現(xiàn)者是一個(gè)很好的選擇,原因有兩點(diǎn):自主性和生產(chǎn)力。
**Kutnk 的主要觀點(diǎn)是,這三個(gè)階段每走向下一步都會(huì)給你更多的自主權(quán)。**作為實(shí)現(xiàn)者,幾乎沒有自主權(quán),作為解決者,會(huì)擁有稍多的自主權(quán),作為發(fā)現(xiàn)者,你擁有非常多的自主權(quán):你被賦予一些模糊的目標(biāo)和約束,由你自己來決定做什么。這會(huì)帶來很多樂趣。
除此之外,還有一個(gè)好處:從 Implementer 到 Solver 再到 Finder,你將變得更有生產(chǎn)力,因?yàn)槟闼龅牟槐匾墓ぷ髯兊酶佟?/p>
如果你只是在執(zhí)行別人指定的解決方案,可能會(huì)陷入低效的工作。
如果你只看到問題的表面就提出一個(gè)解決方案,那最終解決的可能不是真正的問題。
你越擅長診斷和發(fā)現(xiàn)潛在的問題,提出解決方案,并與他人一起工作,你就越少做不必要的工作,你就會(huì)更有效率。
利用你的生產(chǎn)力
如果你是一個(gè)發(fā)現(xiàn)者,你的工作效率就會(huì)大大提高,這會(huì)讓你成為一個(gè)更有價(jià)值的員工。擅長挖掘高價(jià)值問題的人能發(fā)現(xiàn)那些無人知曉的障礙,發(fā)現(xiàn)客戶真正想要的東西,你會(huì)成為他們中的一員。
這意味著你有更多的談判優(yōu)勢:
協(xié)商加薪更容易成功。
可以找到更好的工作,即使這個(gè)工作涉及到你不了解的技術(shù)。
甚至可以申請(qǐng)為期三天的周末。
因此,如果你想在繼續(xù)編程的同時(shí)事業(yè)上也取得進(jìn)步,就從現(xiàn)在開始去尋找問題吧。一旦專門去注意這件事情,你會(huì)發(fā)現(xiàn)問題無處不在。
-
工程師
+關(guān)注
關(guān)注
59文章
1603瀏覽量
71018
發(fā)布評(píng)論請(qǐng)先 登錄
開發(fā)單片機(jī)需要具備多少的模電技能
BlackBerry QNX與眾森軟件進(jìn)一步深化戰(zhàn)略合作
【書籍評(píng)測活動(dòng)NO.68】龍芯之光·自主可控處理器設(shè)計(jì)解析
搭建自己的ubuntu系統(tǒng)之創(chuàng)建ubuntu虛擬機(jī)
電子發(fā)燒友工程師看!電子領(lǐng)域評(píng)職稱,技術(shù)之路更扎實(shí)
嵌入式工程師的進(jìn)階之路
CoT 數(shù)據(jù)集如何讓大模型學(xué)會(huì)一步一步思考?
硬件工程師手冊(cè)(全套)
工程師經(jīng)驗(yàn)分享:社區(qū)之星 趙云 沉著穩(wěn)定才能做好技術(shù)
高級(jí)工程師職業(yè)生涯的下一步是什么
評(píng)論