導(dǎo)語(yǔ):一個(gè)成功的人的標(biāo)志是什么?是堅(jiān)持。一個(gè)非常成功的人的標(biāo)志是什么?是面對(duì)自己最討厭的事也能夠一如既往的堅(jiān)持,并且堅(jiān)持到底,直至成功。
我這個(gè) 尼古拉斯·澀郎·非著名程序員的心靈雞湯,講的不是堅(jiān)持的力量,而是面對(duì)討厭而抵制,并戰(zhàn)勝討厭的力量。
我們其實(shí)大部分程序員都聽(tīng)過(guò)這個(gè)段子,程序員最討厭的四件事,是哪四件事呢?
寫(xiě)注釋、寫(xiě)文檔、別人不寫(xiě)注釋、別人不寫(xiě)文檔。
其實(shí),我認(rèn)為還有比這更嚴(yán)重的問(wèn)題,那就是:程序員也不愛(ài)看文檔??赡苡悬c(diǎn)絕對(duì),但是大部分程序員都不愛(ài)看文檔。
其實(shí),說(shuō)到這個(gè)話題,還是因?yàn)樽鳛橐粋€(gè)團(tuán)隊(duì)領(lǐng)導(dǎo)之后才深刻意識(shí)到的,畢竟敲代碼少了,寫(xiě)文檔多了。慢慢的我突然發(fā)現(xiàn)一個(gè)很嚴(yán)重的問(wèn)題,那就是大部分程序員都不愛(ài)看文檔。
舉個(gè)例子:
程序員小猿,在開(kāi)發(fā)一款手機(jī)軟件,拿到需求說(shuō)明書(shū)和原型圖之后,大致瞄了兩眼,然后問(wèn) UI:設(shè)計(jì)圖搞好了沒(méi)?發(fā)過(guò)來(lái),然后就看著原型或者設(shè)計(jì)圖,開(kāi)始了開(kāi)發(fā)工作。當(dāng)中遇到了一些技術(shù)問(wèn)題或者某些控件的屬性不記得了,甚至忘記了,然后找度娘和 Google ,一搜,噢,這樣用??!復(fù)制粘貼,完畢。最后也如期交工了。
讀完上面一段話,不知道大家有所反思嗎?發(fā)現(xiàn)問(wèn)題了么?可以思考一下,自己的開(kāi)發(fā)過(guò)程是不是大致是這樣的?三個(gè)反問(wèn),好好問(wèn)問(wèn)自己。
其實(shí)作為一個(gè)部門或者團(tuán)隊(duì)領(lǐng)導(dǎo)之后,我對(duì)這個(gè)問(wèn)題才有了深刻的意識(shí)。畢竟作為團(tuán)隊(duì)負(fù)責(zé)人可能更多的工作重心在制定任務(wù),協(xié)調(diào)關(guān)系,定需求,制定開(kāi)發(fā)文檔,管理團(tuán)隊(duì),并協(xié)調(diào)整個(gè)團(tuán)隊(duì)開(kāi)發(fā)順利完成任務(wù),開(kāi)發(fā)出產(chǎn)品來(lái)。這時(shí),不免要寫(xiě)很多文檔,需求文檔,開(kāi)發(fā)文檔等等。然后在開(kāi)發(fā)過(guò)程中,處在開(kāi)發(fā)之外的我(當(dāng)局者迷,旁觀者清),往往很容易發(fā)現(xiàn):程序員不愛(ài)看文檔,而且更多得去問(wèn)產(chǎn)品經(jīng)理,這個(gè)業(yè)務(wù)邏輯是什么?或者在測(cè)試過(guò)程中,讓測(cè)試測(cè)出來(lái)這個(gè)業(yè)務(wù)邏輯不對(duì)。再進(jìn)一步反思一下,想一想,其實(shí)連 API 文檔估計(jì)很多程序員都不愛(ài)看,不愛(ài)讀。
關(guān)于需求說(shuō)明書(shū)
其實(shí)團(tuán)隊(duì)的產(chǎn)品經(jīng)理和負(fù)責(zé)人可能已經(jīng)把需求說(shuō)明書(shū)已經(jīng)寫(xiě)得很清楚了,整體的交互設(shè)計(jì)也能從原型圖上體現(xiàn)出來(lái),業(yè)務(wù)邏輯也有對(duì)應(yīng)的介紹。但是還是有很多程序員在開(kāi)發(fā)之前連自己讀一遍的時(shí)間都沒(méi)有,我不知道這是不是懶?
其實(shí)關(guān)于需求說(shuō)明書(shū),我認(rèn)為程序員必須通讀一遍,而且得配合著原型交互。最最應(yīng)該通讀和研究一遍的是后端程序員,因?yàn)楫a(chǎn)品設(shè)計(jì)初期,后臺(tái)的架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì)必須依賴這個(gè),如果你都沒(méi)讀明白這個(gè)產(chǎn)品的業(yè)務(wù)邏輯,設(shè)計(jì)出來(lái)的后臺(tái)數(shù)據(jù)庫(kù),架構(gòu)以及接口可能前端對(duì)接起來(lái)很困難,可能不止一遍又一遍的聯(lián)調(diào),還有可能重新設(shè)計(jì)。這是非常耗費(fèi)時(shí)間和精力的。這些都是成本。
前端程序員當(dāng)然也有必要一讀,不要簡(jiǎn)簡(jiǎn)單單的認(rèn)為照著設(shè)計(jì)師設(shè)計(jì)的效果圖,照著葫蘆畫(huà)瓢就可以了。你的每個(gè)界面的跳轉(zhuǎn)和后臺(tái)接口的對(duì)接都需要熟悉整個(gè)業(yè)務(wù)邏輯,前期不讀,后期改,一樣是浪費(fèi)時(shí)間。
我就發(fā)現(xiàn)很多程序員,遇到設(shè)計(jì)上的問(wèn)題,產(chǎn)品交互上的問(wèn)題,就大喊產(chǎn)品經(jīng)理:你這里是怎么設(shè)計(jì)的?什么邏輯?明明人家已經(jīng)寫(xiě)的很清楚了,產(chǎn)品經(jīng)理還得背這個(gè)鍋。所以,需求說(shuō)明書(shū),原型設(shè)計(jì)圖,不只是放在那里的一張廢紙,而且產(chǎn)品的血液。你讀了,才會(huì)流暢。
關(guān)于 API 文檔
其實(shí)學(xué)習(xí)一門語(yǔ)言,一個(gè)技術(shù),最好的資料就是官方的 API 文檔,不是市面上某某大神的秘籍,也不是某某教學(xué)視頻網(wǎng)站上的教學(xué)視頻??偢杏X(jué)自己身邊的東西不值錢,能夠直接拿來(lái)看的不珍惜,而且喜歡去買什么書(shū)籍,學(xué)什么視頻?Java 剛出來(lái)的時(shí)候,沒(méi)書(shū)籍,那些初學(xué)的大神不是看的文檔么?Android 剛出來(lái)的時(shí)候,沒(méi)有書(shū)籍,他們不是看的文檔么?文檔你們都不讀,而是去看那些通過(guò)學(xué)習(xí)文檔成為大神而出的書(shū)籍和視頻。
我發(fā)現(xiàn)身邊很多程序員朋友,在開(kāi)發(fā)的過(guò)程中遇到問(wèn)題的第一時(shí)間是去找度娘和 Google ,而不是查文檔。你說(shuō)這文檔是寫(xiě)給誰(shuí)看的?跟個(gè)擺設(shè),古董物件似的。這么一說(shuō)的話,我們程序員都是不懂古董的收藏家,只收藏,不欣賞。
我只是弱弱的想問(wèn)一句:你們有這個(gè)嚴(yán)重的問(wèn)題么?有的話,歡迎大家留言交流。