還未畢業(yè)就在百度實(shí)習(xí)了,兩年多的磨練,有被磨平的棱角,也有精彩的收獲;謹(jǐn)以此文獻(xiàn)給在百度并肩奮戰(zhàn)兩年多的兄弟姐妹們。忘不了離職日那場(chǎng)特殊的告別午餐;忘不了這兩年和你們的討論、爭(zhēng)論;忘不了腦海中你們的一個(gè)個(gè)優(yōu)秀的細(xì)節(jié)。真想說(shuō)無(wú)論“嫁”到何方,你們都是我的娘家人,我在天貓玩得蠻開(kāi)心,請(qǐng)不要牽掛!
3月底,離職前的閑暇跑了趟蜀地,去九寨的山道上觸景生情,整理出這么一篇,多是從細(xì)節(jié)總結(jié)出來(lái)的心得,不喜勿噴可輕拍,各種原因拖到今天才發(fā)上來(lái)。
大巴行駛在通往九寨的環(huán)山道上,望著奇險(xiǎn)的山景,睡意全無(wú)……
團(tuán)隊(duì)
隨著時(shí)間的推移,對(duì)于團(tuán)隊(duì)的理解在不斷改變和加深。團(tuán)隊(duì)中一些有趣的現(xiàn)象,比如:
誤解往往來(lái)自于缺乏溝通;原來(lái)的團(tuán)隊(duì)中角色眾多,因?yàn)椴涣私馄渌巧墓ぷ鞫l(fā)生的不愉快經(jīng)歷是難免的,發(fā)生了就要溝通,大家坐下來(lái)聊聊天化解誤會(huì)就好了;這種事情我經(jīng)歷過(guò)兩次,大家平心靜氣地談過(guò)后彼此更加信任,完全不會(huì)因?yàn)檎`會(huì)而交惡。
團(tuán)隊(duì)間的合作分工是有講究的,互相補(bǔ)充、制衡、各盡其責(zé);在遇到緊急問(wèn)題時(shí)也能表現(xiàn)出一貫的效率,最終推動(dòng)問(wèn)題的解決;這有點(diǎn)像《寒戰(zhàn)》中的情節(jié)。
曾問(wèn)“技術(shù)和產(chǎn)品是什么關(guān)系”,答曰“合作的關(guān)系”,何嘗是與產(chǎn)品,技術(shù)與任何角色不都是合作的關(guān)系嗎?
合作
筆者在百度的兩年經(jīng)歷中,作為團(tuán)隊(duì)中的客戶端(web前端+移動(dòng)app)tech leader有一年的時(shí)間,需要頻繁和各類角色打交道,為了讓工作更加平滑地開(kāi)展,需要了解每一種角色關(guān)注的焦點(diǎn),與他們密切地合作。在一個(gè)產(chǎn)品的生命周期中,依次會(huì)接觸到這些角色:產(chǎn)品、設(shè)計(jì)師、前/后端、測(cè)試,之間還穿插著和老板以及其他tech leader的溝通。
產(chǎn)品
需求的發(fā)起人。這群人能說(shuō)會(huì)道,砍他們的需求就和要他們的命一樣;一般情況下“砍”不如“拆”,需求可以分期做,通常雙方都能接受;特殊的情況需要說(shuō)明下,漂亮mm帶著水汪汪的大眼睛死死盯著你的時(shí)候,你的思路一定要保持清晰 :)
設(shè)計(jì)師
需求像水一樣流到設(shè)計(jì)師這里。設(shè)計(jì)師一般分為交互和視覺(jué);交互根據(jù)產(chǎn)品方需求提供交互稿原型,視覺(jué)在交互稿基礎(chǔ)上豐富頁(yè)面元素、配色、細(xì)節(jié)調(diào)整等;和設(shè)計(jì)師尤其是視覺(jué)要處理好退化的問(wèn)題,真不是所有的設(shè)計(jì)師都能夠理解“漸進(jìn)增強(qiáng),平穩(wěn)退化”的概念,這個(gè)需要溝通;之前在圓角問(wèn)題上遇到過(guò)阻力,通過(guò)和視覺(jué)的溝通,視覺(jué)最終還是接受了前端的退化處理(border-radius)建議。
前/后端
之前,前端無(wú)論與業(yè)務(wù)端后端還是服務(wù)器后端的合作都是很順暢的;前后端之間應(yīng)該盡量解耦,只通過(guò)規(guī)范接口通信是最理想的狀態(tài);以java環(huán)境的業(yè)務(wù)端為例,jsp和freemarker(fm)二選一,應(yīng)該選fm,因?yàn)閒m是模板語(yǔ)言,盡管仍包含邏輯控制,但在前后端解耦上優(yōu)于jsp;再進(jìn)一步,fm和整站ajax通信(js渲染頁(yè)面)相比,顯然選ajax,因?yàn)檫@樣前后端的耦合又更小了。
業(yè)務(wù)系統(tǒng)中是否選擇ajax需要根據(jù)業(yè)務(wù)類型來(lái)考慮,引用ER框架中的一段描述:
整站式Ajax應(yīng)用不利于搜索引擎抓取。故ER框架不適用于內(nèi)容提供的WEB站點(diǎn)。
測(cè)試
見(jiàn)到過(guò)技術(shù)和測(cè)試掐架的場(chǎng)景,實(shí)際工作中這兩塊人的合作遠(yuǎn)多于分歧;而且必要的掐架是對(duì)項(xiàng)目負(fù)責(zé)的表現(xiàn),大家吵完架還是可以坐一桌吃飯的。有一點(diǎn)應(yīng)該注意,不要等到項(xiàng)目快結(jié)束了想到讓測(cè)試介入,這樣測(cè)試很被動(dòng),對(duì)整個(gè)項(xiàng)目的進(jìn)度也可能帶來(lái)風(fēng)險(xiǎn);應(yīng)該盡可能拆分手頭的需求,安排開(kāi)發(fā)計(jì)劃,讓測(cè)試能盡早介入,技術(shù)和測(cè)試能夠交替完成各自任務(wù)是最理想的。
選擇團(tuán)隊(duì)
新團(tuán)隊(duì)機(jī)會(huì)多,但是可能會(huì)缺乏足夠的指導(dǎo)
新團(tuán)隊(duì)往往沒(méi)確立在公司的地位,對(duì)個(gè)人晉升有可能造成影響
老團(tuán)隊(duì)高手云集,如果沒(méi)有好的新人成長(zhǎng)計(jì)劃,要想殺出重圍也不容易
總體來(lái)說(shuō)建議在老團(tuán)隊(duì)學(xué)習(xí),打下基礎(chǔ),尋找合適的機(jī)會(huì)去新團(tuán)隊(duì)闖一片天地
這些觀點(diǎn)仍然很泛,請(qǐng)具體情況具體分析。
帶新人
帶新人是老板對(duì)你能力的認(rèn)可,是好事
帶新人對(duì)自己的能力提高是顯著的,因?yàn)橛幸粋€(gè)機(jī)會(huì)把業(yè)務(wù)和技術(shù)的基礎(chǔ)回顧一遍,給自己查漏補(bǔ)缺甚至是理解得更深刻
安排好自己的時(shí)間,因?yàn)橐霂Ш眯氯耸且ňΦ?/p>
新人可能隨時(shí)會(huì)打斷你,要有忍耐力
如果新人太多,應(yīng)該考慮找人幫忙帶,都攬下來(lái)的話對(duì)自己和新人都是不負(fù)責(zé)任的
結(jié)果導(dǎo)向
面試過(guò)的互聯(lián)網(wǎng)公司,HR都會(huì)來(lái)上一句“我們是結(jié)果導(dǎo)向的”,當(dāng)時(shí)很配合的點(diǎn)點(diǎn)頭,以示理解(其實(shí)壓根沒(méi)聽(tīng)懂)。兩年下來(lái),我對(duì)結(jié)果導(dǎo)向的理解變成了:
上下班時(shí)間可以自由,但是要干滿8個(gè)小時(shí)或更多,因?yàn)榛罹驮谀睦铮浑x不棄
半年或年度考核時(shí),KPI可能是唯一的評(píng)價(jià)標(biāo)準(zhǔn)
團(tuán)隊(duì)的結(jié)果不夠好,個(gè)人肯定受影響,因?yàn)榻Y(jié)果導(dǎo)向嘛
個(gè)人承受壓力
盡管筆者在學(xué)校的時(shí)候已經(jīng)做了一些小項(xiàng)目,初到公司環(huán)境還是有點(diǎn)發(fā)懵,人家提的需幾乎不加判斷地接受了,導(dǎo)致初期工作量奇大,壓力劇增。這個(gè)過(guò)程持續(xù)了1-2個(gè)月,高負(fù)荷的工作帶來(lái)的副作用竟然是承受壓力的能力變強(qiáng)了,好神奇!
仔細(xì)想想,壓力還是可以細(xì)分的,各個(gè)擊破:
高負(fù)荷工作量帶來(lái)的壓力;和主管客觀地溝通自己的上限,上限可以慢慢提高,要知道高負(fù)荷也可能給項(xiàng)目帶來(lái)潛在的隱患,比如累掛了
不熟悉的業(yè)務(wù)場(chǎng)景帶來(lái)的壓力;有時(shí)候看文檔緩解不了壓力,就找人多問(wèn),給你演示,然后自己先用起來(lái),再去看文檔就會(huì)好一些
從未接觸過(guò)的技術(shù)帶來(lái)的學(xué)習(xí)壓力;和業(yè)務(wù)場(chǎng)景是一樣的處理,只有理解了“是什么”,才能更快地掌握它
技術(shù)復(fù)雜性遠(yuǎn)超過(guò)心理預(yù)期產(chǎn)生的壓力;冷靜下來(lái)!看清復(fù)雜性到底是結(jié)構(gòu)很龐雜,還是某個(gè)算法超難理解;如果是結(jié)構(gòu)復(fù)雜理不清頭緒,嘗試下類似斷點(diǎn)調(diào)試的辦法,還不行的話找人幫忙看看;如果是算法太復(fù)雜,也務(wù)必找到資料或人詳細(xì)了解算法的作用、使用場(chǎng)景、局限性等,一般上來(lái)就直接看代碼是很痛苦的
還遇到一種情況比較特殊,代碼中用了很個(gè)性化的寫(xiě)法(不知道魂淡當(dāng)時(shí)怎么想的),而且對(duì)方已經(jīng)不在公司了,最后放棄了,只能重寫(xiě)!這種情況比較極端,不過(guò)也給我們一個(gè)經(jīng)驗(yàn),代碼還是通俗點(diǎn)比較好,耍酷可以在github找個(gè)項(xiàng)目去炫耀肌肉
透明度
坊間流傳(原話找不到出處)程序有兩類:一類是設(shè)計(jì)得足夠簡(jiǎn)單明了,以至于一眼看上去就知道沒(méi)有大的問(wèn)題;另一類是設(shè)計(jì)得足夠復(fù)雜,以至于看不出是否有問(wèn)題。想說(shuō)的是,程序設(shè)計(jì)越是清晰透明,潛在風(fēng)險(xiǎn)越小,后期維護(hù)溝通成本也越小;筆者曾經(jīng)有過(guò)這種念頭“設(shè)計(jì)寫(xiě)得太明白,人家一看就明白會(huì)不會(huì)太沒(méi)深度了”,現(xiàn)在想想只能對(duì)那時(shí)的自己“呵呵”了。
推廣技術(shù)
優(yōu)秀的程序員會(huì)推廣自己的技術(shù)
最初不理解,寫(xiě)好代碼不就行了嗎,干嘛要搞這些?現(xiàn)實(shí)是:再好的設(shè)計(jì)和代碼,沒(méi)有人了解的話就會(huì)被扔進(jìn)歷史的垃圾堆!
對(duì)自己成果負(fù)責(zé)的話,就必須努力推動(dòng)它被更多的人認(rèn)可;這個(gè)推動(dòng)的過(guò)程中往往又可以收到那些看似苛刻但卻極為重要的建議;這樣就走進(jìn)良性循環(huán)中了。
推廣的方式有:團(tuán)隊(duì)內(nèi)分享、公司內(nèi)部的技術(shù)刊物、外部的如博客、微博、微信、IT咨詢站點(diǎn)……
經(jīng)營(yíng)博客
最初是覺(jué)得“好記性不如爛筆頭”,但真正寫(xiě)起來(lái)后發(fā)現(xiàn)寫(xiě)博客其實(shí)能夠深化那些停留在口頭的結(jié)論;寫(xiě)博客讓自己更有目的,會(huì)促使自己留心積累;功利一點(diǎn)看,無(wú)論面試新同學(xué),還是自己被面,都提到了博客,好的文章是極好的面試材料。
開(kāi)源
如果時(shí)間允許,又是自己感興趣的可以考慮為項(xiàng)目貢獻(xiàn)代碼、文檔、測(cè)試case、demo甚至是宣傳推廣,能做的不僅僅只是coding。
筆者之前是閑著的時(shí)候去逛github,后來(lái)慢慢成了習(xí)慣,最后干脆把自己所有的demo、讀書(shū)筆記、最后是所有文章和開(kāi)源項(xiàng)目都扔到github上;公司立項(xiàng)前也會(huì)習(xí)慣地上去找找思路,也避免重復(fù)造輪子。
最好 vs 最合適
這是一個(gè)取舍的過(guò)程,或者說(shuō)是在理想和現(xiàn)實(shí)中尋找平衡點(diǎn);商業(yè)項(xiàng)目往往非常看重時(shí)效性,一種原因是合同已經(jīng)簽好了,未按時(shí)完成就是違約,所以在這種壓力下很多時(shí)候就需要精簡(jiǎn)設(shè)計(jì),使用最合理的方案來(lái)做。
但是好在有“迭代”。
迭代
不同類型的公司,迭代周期差異巨大,比如電信設(shè)備行業(yè)會(huì)是1年至3個(gè)月,而互聯(lián)網(wǎng)公司通常會(huì)是1個(gè)月至1周,甚至是按天發(fā)布;很多迫于時(shí)間做出的折中方案往往可以在迭代中改進(jìn)。
迭代的前提是產(chǎn)品本身允許增量發(fā)布,一個(gè)有趣的對(duì)比是:計(jì)算機(jī)芯片和互聯(lián)網(wǎng)公司的門(mén)戶,顯然門(mén)戶更適合增量發(fā)布;為什么需要迭代呢?看到過(guò)這些原因:
產(chǎn)品需求太龐大;一次發(fā)布的話將會(huì)把開(kāi)發(fā)周期拖得很長(zhǎng)
實(shí)驗(yàn)性產(chǎn)品;丫不知道下一步要做什么,先扔個(gè)版本出去看看市場(chǎng)的反應(yīng)
迭代需要一個(gè)強(qiáng)有力的質(zhì)量保證,單元測(cè)試和自動(dòng)化測(cè)試都是保證質(zhì)量的有效手段。
技術(shù) vs 工具
比較認(rèn)同《前端開(kāi)發(fā)的工程之美》中技術(shù)和工具的對(duì)比:
對(duì)待技術(shù)和工具,技術(shù)自然是最基礎(chǔ)的,工具是照著“說(shuō)明書(shū)”就可以很快上手,對(duì)工具不必太執(zhí)念,否則會(huì)很快遇到成長(zhǎng)的“天花板”。
解耦
書(shū)里無(wú)數(shù)次提到要“解耦”,心想聯(lián)系得緊密點(diǎn)有什么不好。現(xiàn)實(shí)的項(xiàng)目中,尤其是在快速迭代的環(huán)境下,要是耦合非常緊,一個(gè)小改動(dòng)就可能拉出一堆回歸,等著哭吧。
大巴緩緩開(kāi)進(jìn)了九寨景區(qū),望向遠(yuǎn)方灰白的山脊,似乎看到了山腳下那五彩斑斕的海子……
-
工程師
+關(guān)注
關(guān)注
59文章
1570瀏覽量
68514 -
百度
+關(guān)注
關(guān)注
9文章
2268瀏覽量
90383
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論