一 遭殉、喬爾測(cè)試
1.你們用源代碼管理系統(tǒng)嗎杀捻?
git 神器
2.你們能一鍵編譯嗎刁标?
這個(gè)要去研究一下
3.你們做每日編譯嗎颠通?
這個(gè)要去研究一下
4.你們有bug數(shù)據(jù)庫(kù)嗎?
有
5.你們?cè)趯懶麓a前修改以前的代碼嗎膀懈?
在做開(kāi)發(fā)規(guī)劃的時(shí)候顿锰,要預(yù)留修改以前代碼的時(shí)間,而不能只是考慮到不斷疊加新功能启搂。
6.你們的進(jìn)度表是最新的嗎硼控?
每周的進(jìn)度更新是必要的,這樣才能知道每月的計(jì)劃能否順利完成胳赌。我們有最新的每周進(jìn)度牢撼。
7.你們有軟件規(guī)格書(shū)嗎?
就是我們的產(chǎn)品設(shè)計(jì)文檔疑苫。產(chǎn)品設(shè)計(jì)文檔熏版,原型修改5遍,也好過(guò)代碼開(kāi)發(fā)出來(lái)了再推到重來(lái)捍掺。
沒(méi)想清楚產(chǎn)品細(xì)節(jié)之前撼短,不要開(kāi)始開(kāi)發(fā)!
- 程序員的工作環(huán)境安靜嗎挺勿?
遠(yuǎn)程工作者可以選擇自己的工作環(huán)境
9.你們使用了能買到的最好的工具嗎曲横?
可以有
10.你們有測(cè)試人員嗎?
3.1以前都是產(chǎn)品經(jīng)理同時(shí)負(fù)責(zé)測(cè)試满钟,3.2以后要引入專業(yè)的測(cè)試人才胜榔,提升測(cè)試完整度胳喷。
11.你們面試時(shí)會(huì)要求應(yīng)聘人員寫代碼嗎?
可以有夭织。
12.你們做過(guò)走廊可用性測(cè)試嗎吭露?
在做,且必須做尊惰。每次要提供不同版本讓用戶來(lái)比較體驗(yàn)讲竿,并給出反饋。
感覺(jué)上弄屡,喬爾十多年前提到的這些题禀,已經(jīng)逐步成為開(kāi)發(fā)團(tuán)隊(duì)的標(biāo)配。
二膀捷、軟件功能規(guī)格書(shū)
- 為什么要寫:
- 提高研發(fā)效率:能夠在開(kāi)始研發(fā)之前設(shè)計(jì)好軟件迈嘹,在設(shè)計(jì)的時(shí)候就暴露所有可能的邏輯問(wèn)題可用性問(wèn)題從而調(diào)整,而不是在研發(fā)的時(shí)候全庸,從而大幅度提高效率秀仲,降低研發(fā)損耗。
- 提高對(duì)合作伙伴的溝通效率: 便于設(shè)計(jì)壶笼,測(cè)試神僵,運(yùn)維,客服覆劈,運(yùn)營(yíng)等等合作伙伴來(lái)學(xué)習(xí)和了解軟件保礼,而不用把所有內(nèi)容都用一遍同時(shí)還要打擾程序員不斷追問(wèn),才知道這是什么责语,該怎么用炮障,有什么效果。而合作伙伴會(huì)面向用戶鹦筹,告訴用戶這個(gè)軟件該怎么用铝阐。
- 沒(méi)有規(guī)格書(shū),就無(wú)法制定進(jìn)度表铐拐。
- 什么是規(guī)格書(shū)徘键?
- 概述: 這個(gè)軟件是做什么用的
- 使用場(chǎng)景:產(chǎn)生需求的經(jīng)典用戶場(chǎng)景是什么,軟件如何幫助用戶解決問(wèn)題遍蟋。
書(shū)摘:
從你產(chǎn)品的使用者中吹害,選取積累代表性的目標(biāo)用戶群,為每一類虛構(gòu)一個(gè)想象中的虚青、但完全典型的用戶它呀。場(chǎng)景越生動(dòng),逼真,你設(shè)計(jì)出的產(chǎn)品就越適合用戶使用纵穿。(http://www.joelonsoftware.com/uibook/chapters/fog0000000065.html)
思考:
這于我而言是新穎的部分下隧。以后可以考慮在產(chǎn)品文檔里面也加上場(chǎng)景說(shuō)明部分。
有用戶場(chǎng)景的需求才應(yīng)該被重視和開(kāi)發(fā)谓媒。
如果一個(gè)需求僅僅是個(gè)人臆想出來(lái)淆院,找不到現(xiàn)實(shí)場(chǎng)景,那么不應(yīng)該投入開(kāi)發(fā)計(jì)劃句惯。
比如說(shuō)嘗試給ping這個(gè)功能寫一下用戶場(chǎng)景:
開(kāi)發(fā)者Jack經(jīng)歷了3個(gè)月的緊張工作土辩,總算如期交付了公司要求的新產(chǎn)品。接下來(lái)是測(cè)試抢野,運(yùn)營(yíng)推廣的事情了拷淘。預(yù)計(jì)會(huì)有差不多2周到1個(gè)月的相對(duì)空閑的時(shí)間,于是他到了客棧上指孤,想看看最近能不能接到一些不錯(cuò)的兼職启涯。
他會(huì)嘗試去聯(lián)系客棧的客服,標(biāo)明自己現(xiàn)在比較有空邓厕,想要接單逝嚎。
同時(shí),由于團(tuán)隊(duì)是按周來(lái)規(guī)劃任務(wù)的详恼,他對(duì)于一周后會(huì)不會(huì)有新的開(kāi)發(fā)任務(wù)并不是特別有信心,因此他希望這個(gè)最好是本周內(nèi)可以接到比較短期快速的小任務(wù)引几。
因此昧互,他可以使用Ping這個(gè)功能。
點(diǎn)擊Ping, 他可以登上當(dāng)天程序員列表的首頁(yè)伟桅,讓潛在的雇傭方有更多機(jī)會(huì)看到他敞掘;第二天他如果依然有空,可以繼續(xù)Ping;如果沒(méi)空了楣铁,可以不再操作玖雁,甚至點(diǎn)擊“接單”按鈕,切換到不接單狀態(tài)盖腕。
另外赫冬,Ping也會(huì)影響自動(dòng)對(duì)接排序,他的排序馬上會(huì)靠前溃列,而這個(gè)影響因子會(huì)在未來(lái)七天衰減劲厌,到第8天衰減為0.
- 非目標(biāo):本軟件本次不計(jì)劃做什么
這個(gè)我們目前也沒(méi)寫過(guò)。目前只寫了要做的內(nèi)容听隐,不做的內(nèi)容不寫补鼻,放到待規(guī)劃不分區(qū),留待以后規(guī)劃。
- 流程圖
- 每個(gè)頁(yè)面的功能規(guī)格說(shuō)明(概述风范,細(xì)節(jié))
- 本次不解決的問(wèn)題:這些一般都是基于已經(jīng)考慮到咨跌,但降低了優(yōu)先級(jí)的問(wèn)題。
- 多角度注解:技術(shù)注解硼婿,營(yíng)銷注解等锌半。
這個(gè)也很新鮮。目前我的產(chǎn)品文檔里面加酵,只有產(chǎn)品注解拳喻。
技術(shù)注解,營(yíng)銷注解都沒(méi)有做過(guò)猪腕。
7.如何招到靠譜的項(xiàng)目經(jīng)理
- 不把程序員提拔為項(xiàng)目經(jīng)理:優(yōu)秀的項(xiàng)目經(jīng)理需要具備的素質(zhì):文筆清晰冗澈,外交手腕,市場(chǎng)嗅覺(jué)陋葡,用戶視角亚亲,以及優(yōu)秀的界面設(shè)計(jì)能力。和優(yōu)秀程序員的能力發(fā)展路徑不一致腐缤。
從描述來(lái)看捌归,這個(gè)其實(shí)是產(chǎn)品經(jīng)理和項(xiàng)目經(jīng)理職責(zé)的融合職位。不僅僅是目前我們理解的項(xiàng)目經(jīng)理而已岭粤。
- 不要讓營(yíng)銷人員做項(xiàng)目經(jīng)理
不讓程序員聽(tīng)命于項(xiàng)目經(jīng)理:項(xiàng)目經(jīng)理應(yīng)該通過(guò)證明項(xiàng)目本身值得去做而贏得程序員的支持惜索,而不是靠地位優(yōu)勢(shì),行政命令剃浇。
8.輕松掌握項(xiàng)目進(jìn)度
- 只有最終寫代碼的人能夠預(yù)估需要多少時(shí)間
- 適當(dāng)細(xì)分任務(wù)巾兆,保持合適的顆粒度(小時(shí)):通常的規(guī)則,任務(wù)的顆粒度應(yīng)該在2小時(shí)-16小時(shí)之間
- 如何提升項(xiàng)目預(yù)估精準(zhǔn)度:只做開(kāi)發(fā)人員的預(yù)估/實(shí)際開(kāi)發(fā)時(shí)間對(duì)照表,斜率越小,誤差率越高嚼蚀。最好是斜率為1.把節(jié)假日解藻,調(diào)試代碼的時(shí)間,集成的時(shí)間,緩沖的時(shí)間都考慮在里面
- 永遠(yuǎn)不要讓開(kāi)發(fā)經(jīng)理壓縮程序員的時(shí)間
- 開(kāi)發(fā)Excel5時(shí),為了保證上線時(shí)間不得不把一些功能暫時(shí)延后到了以后版本。然而之后回顧窒朋,發(fā)現(xiàn)暫緩的那些功能在之后的幾個(gè)版本也都沒(méi)有精力去實(shí)現(xiàn),被證明是看起來(lái)重要但實(shí)際上對(duì)核心流程沒(méi)有關(guān)鍵影響的功能嫉嘀。 所以炼邀,每次當(dāng)時(shí)間和任務(wù)量沖突時(shí),保證時(shí)間剪侮,刪繁就簡(jiǎn)拭宁,反而能確保你一直專注于關(guān)鍵事務(wù)上洛退。
三、bug
- 修復(fù)bug這件事情杰标,只有當(dāng)收入大于付出的時(shí)候兵怯,才值得去做。
三明治廠超頻小bug的故事腔剂,是讓機(jī)器帶著bug運(yùn)轉(zhuǎn)3天媒区,按照正常速度修復(fù)- 72個(gè)漢堡損失,還是加急現(xiàn)在修復(fù)但是機(jī)器要停機(jī)三天-4.5萬(wàn)美金的損失掸犬?
2)大部分時(shí)候袜漩,bug還帶來(lái)隱形損失:公司和產(chǎn)品的名聲。因此湾碎,還是值得去修復(fù)的宙攻。
3)修復(fù)bug的步驟:
1-盡可能地收集bug相關(guān)的所有信息
2-衡量修改bug的成本和收益
3-算出修復(fù)所有bug的價(jià)值
4-不要斷章取義
4)忽略只出現(xiàn)一次的bug
四、干擾射擊
1)步兵戰(zhàn)中只要記住一條:干擾射擊介褥。不斷一邊前進(jìn)一邊射擊座掘,開(kāi)火迫使對(duì)手多筆,這樣他就不能向你射擊柔滔;同時(shí)你不斷越來(lái)越靠近溢陪,來(lái)離敵人越近,就越能打中目標(biāo)睛廊。
2)如果你不斷進(jìn)取形真,不斷寫代碼改代碼,時(shí)間就會(huì)站在你這邊超全。
3)當(dāng)競(jìng)爭(zhēng)者朝你開(kāi)火的時(shí)候要留神没酣,他們是不是在干擾射擊,希望借此來(lái)降低你的速度卵迂?
所以,要關(guān)注的绒净,永遠(yuǎn)是用戶價(jià)值见咒。不要被市場(chǎng)競(jìng)爭(zhēng)或者媒體宣傳,資本要求等等迷亂了視線挂疆。
產(chǎn)品經(jīng)理改览,要做的事情便是掌握人性,帶著善意去成就它缤言。
4)對(duì)于我們這樣的小公司宝当,干擾射擊意味著兩件事情:一是一定要抓緊時(shí)間,把開(kāi)發(fā)的主動(dòng)權(quán)掌握在自己手里胆萧;二是必須每天進(jìn)步庆揩。這樣遲早會(huì)勝出俐东。
五、針對(duì)開(kāi)發(fā)者的非正式面試指南
1)簡(jiǎn)歷上有語(yǔ)法錯(cuò)誤的不接受
2)給候選人打電話订晌,就某個(gè)編程問(wèn)題聊上半小時(shí) (想起培根的那句話虏辫,討論使人敏銳)
3)現(xiàn)場(chǎng)真人面試:6人中,5人應(yīng)該是他未來(lái)的同事锈拨。6人中有2人不同意砌庄,那么就不該過(guò)。
4)在面試中要避免將那些可能適合的程序員招進(jìn)來(lái)奕枢,只能招“程序員中的巨星”娄昆。
這個(gè)會(huì)成為技術(shù)為核心的團(tuán)隊(duì)的要求,對(duì)于大部分企業(yè)而言缝彬,這個(gè)比較難萌焰。
軟件行業(yè)瞬息萬(wàn)變,你需要的是有超強(qiáng)學(xué)習(xí)能力跌造,什么開(kāi)發(fā)任務(wù)都能勝任的人杆怕。
5)如何在面試中發(fā)現(xiàn)一個(gè)人是否聰明?你不需要向面試者重復(fù)解釋一件事情壳贪,溝通進(jìn)行得十分順暢陵珍,候選者經(jīng)常會(huì)妙語(yǔ)連珠,顯露出獨(dú)到的見(jiàn)解违施,深刻的思維或敏銳的直覺(jué)互纯。面試官的作用是問(wèn)開(kāi)放式的問(wèn)題,創(chuàng)造環(huán)境磕蒲,讓被面試者能夠充分發(fā)揮留潦。
問(wèn)哪些問(wèn)題:
1- 介紹
2-最近做過(guò)的項(xiàng)目
過(guò)程中,要關(guān)注:1.是否有激情辣往;2.是否能將復(fù)雜的問(wèn)題講得深入淺出兔院;3.在團(tuán)隊(duì)項(xiàng)目中努力尋找領(lǐng)導(dǎo)潛質(zhì)
3-不可能問(wèn)題 :比如,紐約有多少調(diào)琴師站削,重點(diǎn)考思路坊萝。
4-編程問(wèn)題 面試的大部分時(shí)間都應(yīng)該花在這個(gè)環(huán)節(jié)
5-你對(duì)自己的表現(xiàn)滿意嗎
6-你有什么問(wèn)題嗎?
不要問(wèn)哪些問(wèn)題:
1-違法
2-帶有歧視/偏見(jiàn)的問(wèn)題
3-腦筋急轉(zhuǎn)彎問(wèn)題
六许起、獎(jiǎng)勵(lì)有害論
1-成員對(duì)于盡責(zé)十偶,自我成就,價(jià)值認(rèn)同等方面的需求园细,會(huì)被誤導(dǎo)量化為簡(jiǎn)單的獎(jiǎng)勵(lì)惦积。
而物質(zhì)獎(jiǎng)勵(lì),是最沒(méi)有忠誠(chéng)度且邊際效應(yīng)遞減的刺激猛频。
七狮崩、揭開(kāi)冰山之謎
- 用戶界面只占開(kāi)發(fā)工作的5%蛛勉,而用戶能感受到的,只有這5%厉亏。
一定要平衡好 這5%和剩余95%的進(jìn)度關(guān)系董习,讓用戶能看到的,和實(shí)際開(kāi)發(fā)完成的進(jìn)度匹配爱只。
把展示在用戶面前的部分做的漂亮非常重要皿淋。有了漂亮易用的界面部分,用戶才有可能來(lái)使用恬试。
做產(chǎn)品演示的時(shí)候窝趣,唯一起作用的就是產(chǎn)品截圖。一定要讓截圖100%完美训柴,而不是讓用戶去想象產(chǎn)品哑舒。
4.掌控人們對(duì)于開(kāi)發(fā)的預(yù)期:每周更新進(jìn)度
八、吃自己做的狗糧
- 作為用戶來(lái)使用自己的產(chǎn)品幻馁,找到不足洗鸵,然后改變
九、凡是沒(méi)有看上去那么簡(jiǎn)單仗嗦,一定要先做好設(shè)計(jì)膘滨,再開(kāi)始開(kāi)發(fā)。
十稀拐、企業(yè)發(fā)展戰(zhàn)略:
1)小而美火邓,還是靠資本快速推動(dòng)壯大至市場(chǎng)領(lǐng)導(dǎo)地位?
1.小而美:競(jìng)爭(zhēng)對(duì)手多德撬,沒(méi)有網(wǎng)絡(luò)效應(yīng)铲咨,較低的用戶粘度,用時(shí)間慢慢累積金錢蜓洪,如本杰瑞
2.靠資本快速推動(dòng)壯大至市場(chǎng)領(lǐng)導(dǎo)地位:競(jìng)爭(zhēng)對(duì)手少纤勒,有網(wǎng)絡(luò)效應(yīng),強(qiáng)用戶粘度隆檀,用金錢換時(shí)間踊东,如亞馬遜
互聯(lián)網(wǎng)企業(yè)的價(jià)值,和其用戶的平方成正比刚操。
所以第2類型公司,時(shí)間是關(guān)鍵再芋。盡早覆蓋盡量多用戶并黏住菊霜,才能獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。
最不可取的發(fā)展模式济赎,就是在兩者中搖擺鉴逞。
2)先有雞還是先有蛋:提供某種向后兼容的模式记某,要不提供很多雞,要不提供很多蛋构捡,先專注于做大一端液南,通過(guò)這一端來(lái)吸引另外一端。
3)轉(zhuǎn)化競(jìng)爭(zhēng)對(duì)手的用戶成為自己的用戶:找到所有轉(zhuǎn)化障礙勾徽,并解決滑凉。
4)膨件和二八法則:
一般用戶只會(huì)使用到20%的功能,可是每個(gè)人的20%都是不一樣的喘帚。
5)開(kāi)源軟件:從微觀經(jīng)濟(jì)學(xué)的角度來(lái)看畅姊,開(kāi)源軟件的發(fā)展并不是來(lái)自于企業(yè)的善心,而是降低配套產(chǎn)品成本吹由,從而提升本身產(chǎn)品的銷售量若未。
比如:對(duì)旅游景點(diǎn)的機(jī)票降價(jià),刺激更多人到旅游景點(diǎn)消費(fèi)倾鲫,促進(jìn)了景區(qū)經(jīng)濟(jì)增長(zhǎng)粗合。
6)微軟是如何輸?shù)鬉PI戰(zhàn)爭(zhēng)的:
雷蒙德。陳乌昔,舊聞新知博客( https://blogs.msdn.microsoft.com/oldnewthing/),披露了很多微軟對(duì)于向后兼容(兼容更低級(jí)的版本隙疚,以及為這些版本操作系統(tǒng)所 開(kāi)發(fā)的第三方軟件)而做出的努力。
而MSDN派推出的longhorn玫荣,以及之后的版本甚淡,因?yàn)閱适Я诉@種信仰。導(dǎo)致用戶不愿意再來(lái)升級(jí)產(chǎn)品捅厂,開(kāi)發(fā)者也漸漸不愿意再基于不斷變化的windows來(lái)開(kāi)發(fā)贯卦。
?
網(wǎng)絡(luò)應(yīng)用成為新的潮流,而不是windows 操作系統(tǒng)焙贷。網(wǎng)絡(luò)成為了新的API撵割。
十一:?jiǎn)柎?br> 1)強(qiáng)大的競(jìng)爭(zhēng)對(duì)手推出了和自己一樣的功能怎么辦?
答:不用管競(jìng)爭(zhēng)對(duì)手辙芍,只用關(guān)心用戶的想法啡彬。
- 一定有用戶不知道競(jìng)爭(zhēng)對(duì)手的
- 盡快上線,通過(guò)用戶的反饋來(lái)不斷修正提升自己的產(chǎn)品故硅,讓用戶愿意買單庶灿。(實(shí)際上,用戶如果已經(jīng)買了你的單吃衅,是不愿意再轉(zhuǎn)移到其他產(chǎn)品上去的往踢。)
- 在產(chǎn)品上提供盡可能多的反饋途徑,讓用戶很容易能反饋意見(jiàn)徘层。(比如峻呕,在每個(gè)地方都能看到反饋入口)
2)關(guān)注“我不用是因?yàn)槟銈儾荒躼xx“的問(wèn)題利职,而不是我希望你們能夠xxx。前者說(shuō)明了使用障礙瘦癌,后者可能只是一些與決策無(wú)關(guān)的想象猪贪。
3)預(yù)留緩沖時(shí)間時(shí),需要考慮的幾種情況讯私。
- 臨時(shí)想到的新需求
- 競(jìng)爭(zhēng)對(duì)手帶來(lái)的新影響
- 把不同開(kāi)發(fā)者的代碼集成起來(lái)
- 在測(cè)試中尋找并修復(fù)bug.
- 雇員必須履行的與開(kāi)發(fā)無(wú)關(guān)的行動(dòng)
- 由于時(shí)間預(yù)估不足而引起的緩沖
- 某些任務(wù)沒(méi)有提供預(yù)計(jì)的時(shí)間热押,所以需要緩沖