2022-05-10 分類: 網(wǎng)站建設(shè)
這是一個(gè)“如有雷同,純屬巧合”的故事,外加一些廢話,大家請(qǐng)勿對(duì)號(hào)入座。開始了……
我有些尷尬地拿著水杯,正對(duì)面坐著來訪的王總,他是在別處打拼的人,這幾年據(jù)說收獲頗豐,見移動(dòng)互聯(lián)網(wǎng)如火如荼,自然也想著要進(jìn)來干一場(chǎng),盡管王總從事的行當(dāng)也算跟IT沾邊,但畢竟太長(zhǎng)時(shí)間不接觸技術(shù),有些東西不太熟,總要咨詢下我這個(gè)在一線開發(fā)混了十幾年的老程序員,十幾年的開發(fā),有好幾種可能性,不過這不是重點(diǎn),所以暫時(shí)忽略掉這個(gè)細(xì)節(jié)吧。
我之所以尷尬,是對(duì)王總的需求有些不知如何回答,仿佛陷入了某種習(xí)慣性的沉思中。
王總站了起來,把手機(jī)遞到我面前,說:“你看看,就這樣一個(gè)APP?!彼惶炀毜卦谄聊簧蟿澚藥紫?,我并沒有很認(rèn)真地看,因?yàn)槲抑肋@個(gè)問題很難,那就是所有的開發(fā)者都會(huì)被問,并且可能是被問得最頻的一個(gè)問題:“開發(fā)這么一個(gè)APP需要多長(zhǎng)時(shí)間?”我很想說不知道,這可能是最直截了當(dāng)和準(zhǔn)確的回答,但面對(duì)王總這位老朋友,我要是這么回答估計(jì)有些失禮,所以這個(gè)時(shí)候,我除了大致思量了一下他所指的那個(gè)APP大致涉及到哪些方面之外,還要組織下自己的語(yǔ)言,如何用非常得體的話告訴他,這個(gè)事情我估算不出。“你看,就這么簡(jiǎn)單的一個(gè)APP”,王總繼續(xù)在屏幕上撥弄了幾下,然后帶著幾分期待的眼神看著我。
我謹(jǐn)慎地說:“坦白說,我說不準(zhǔn),我這方面經(jīng)驗(yàn)也不是很足,盡管做過APP開發(fā),但又跟這個(gè)很不一樣,得具體分析好所有的邏輯,才能估算出時(shí)間?!?br/>
王總對(duì)我的說法似乎不以為然,他晃了晃手機(jī),說:“我要求不多,其實(shí)比這個(gè)還簡(jiǎn)單”,他指著屏幕上某些地方,繼續(xù)說:“這個(gè),這個(gè),這個(gè)都可以不要,只需要這么一個(gè)列表,里面有詳情,可以查看修改……”
我心里很自然地想到這是很典型的“想當(dāng)然簡(jiǎn)單”的態(tài)度,我想我得讓他認(rèn)識(shí)到這個(gè)問題的復(fù)雜程度,我反問道:“需要登錄嗎?”
王總稍作停頓后,說:“那當(dāng)然?!?br/>
“什么登錄?用戶名密碼方式,還是手機(jī)登錄,抑或像QQ,微博,微信這種可以借用的第三方登錄?”
王總這回似乎想了一下:“作為移動(dòng)互聯(lián)網(wǎng),我想手機(jī)登錄肯定是要的,QQ,微博,對(duì)了,微信,微信最好也要……哦,你前面說用戶名密碼,這個(gè)應(yīng)該也是要的吧?!?br/>
我很流利地接著問:“那總得有注冊(cè),如果你打算用手機(jī)登錄,那得找個(gè)短信平臺(tái),還有微信登錄,你得先做好企業(yè)身份認(rèn)證,對(duì)了,有登錄,有密碼,那密碼找回功能也得有吧。”
“這是肯定的?!?br/>
“同時(shí)有多種登錄途徑,你必須要想出一種合理的邏輯來將它們‘整合’,最常見的當(dāng)然是賬號(hào)綁定,例如給你的賬號(hào)綁定手機(jī)號(hào)碼,這樣就能用手機(jī)號(hào)來登錄同樣一個(gè)賬號(hào),對(duì)微信登錄也同理,但如今移動(dòng)互聯(lián)網(wǎng)的用戶們都挺厭惡注冊(cè)流程的,所以往往會(huì)要求直接手機(jī)登錄或者直接微信登錄,自動(dòng)完成注冊(cè)過程,那考慮這種情況,如果用戶先用微信登錄,然后再用手機(jī)登錄,而不是綁定,那么就會(huì)產(chǎn)生兩個(gè)不同的賬號(hào),而且無法將其再‘整合’起來,我們得想出一套比較完善的方案……”
王總對(duì)我所說的似乎有些缺乏耐心:“沒必要這么復(fù)雜吧?你看看這個(gè)APP,這些不都有嗎?”
“有沒有我前面所描述的那個(gè)問題,你嘗試過了嗎?”
但王總似乎對(duì)問題并不關(guān)心,他只想知道做這么一個(gè)APP需要多長(zhǎng)時(shí)間,當(dāng)然要多少錢,這也是他關(guān)心的問題,他拿出了信心滿滿的語(yǔ)氣:“有問題怕什么?困難算什么?這些我相信都能解決,但時(shí)間很要緊,得快,我們的競(jìng)爭(zhēng)對(duì)手不會(huì)等我們,就這么一個(gè)東西,你想想看,要多久?”
看他的架勢(shì),像十足那種混得風(fēng)生水起的成功人士,而我這種身份低微的程序員在他面前確實(shí)是有口難言,我本來還想繼續(xù)告訴他細(xì)節(jié)的重要性,卻被他打斷:“不,不需要有多精確,你只需要估算一個(gè)范圍,兩個(gè)星期?或是兩個(gè)月?”
我覺得我沒必要再隱瞞什么了:“我真的不知道,也許一支優(yōu)秀的團(tuán)隊(duì)兩個(gè)星期就能做好(不過我自己可不相信有這么牛逼的團(tuán)隊(duì)),但我很明顯不是那個(gè)能創(chuàng)造這種奇跡的人?!蔽倚南肫鋵?shí)就算說出了“兩個(gè)星期到兩年”這么一個(gè)開玩笑式的范圍,也可能是錯(cuò)的。
王總似乎對(duì)我這樣的回答很失望。但他是個(gè)執(zhí)行力很強(qiáng)的人,想做一件事,就一定會(huì)行動(dòng),行動(dòng)一定快,一定要有結(jié)果,這種雷厲風(fēng)行的行事風(fēng)格,確實(shí),我挺欣賞,不過他的這個(gè)項(xiàng)目,我可真幫不上忙,但我還是出于禮貌,說道:“技術(shù)方面有什么問題,還是可以來問我的?!?br/>
====================== 不怎么華麗的分隔線 ======================
“做一個(gè)APP需要多長(zhǎng)時(shí)間?”這個(gè)問題估計(jì)比測(cè)一個(gè)人還能活幾天還難,一個(gè)條件如此不充分的問題,如何回答呢?
總體來說,需求越是明確,團(tuán)隊(duì)越是成熟,估算出來的時(shí)間就越是準(zhǔn)確。而軟件開發(fā)這個(gè)事情,不管發(fā)展多少年,不管提出了怎樣的方法論,都沒辦法像傳統(tǒng)制造業(yè)那樣把“工時(shí)”算得那么精確,其內(nèi)部錯(cuò)綜復(fù)雜的邏輯關(guān)系使然,軟件工程,絕無可能量產(chǎn)。
用戶看到的只是一個(gè)APP,如果他用的是iOS系統(tǒng),也許他根本就不會(huì)接觸Android,不知道開發(fā)者除了iOS版之外,還需要做一個(gè)Android版,(有沒可能還有Windows版?這樣工作量無疑更大)或者,網(wǎng)頁(yè)版搞定一切?也許你真正動(dòng)手做過后就不會(huì)這么認(rèn)為,再說微信小店那種模式真能適用于所有場(chǎng)合么?而且,如果不是網(wǎng)絡(luò)出現(xiàn)異常的話,一般用戶也不會(huì)注意到服務(wù)器的存在,服務(wù)器總是那么默默無聞地為用戶全天候地工作,它的開發(fā)難度恐怕也不亞于APP本身,而負(fù)責(zé)APP運(yùn)維的還需一些人力,大了之后甚至需要組建一個(gè)專業(yè)團(tuán)隊(duì),他們需要一個(gè)“后臺(tái)”,能隨時(shí)查看和處理數(shù)據(jù),如果需要隨時(shí)隨地都能查看和處理數(shù)據(jù),恐怕還得給后臺(tái)專門弄個(gè)APP。
這個(gè)道理就有點(diǎn)類似:我們看到了戰(zhàn)機(jī)在天上華麗地完成了殲敵任務(wù),以為只是戰(zhàn)機(jī)本身很牛,往往忽視了戰(zhàn)機(jī)相關(guān)的那些配套,如果沒有嫻熟的飛行員、作戰(zhàn)指揮中心、地面雷達(dá)、預(yù)警機(jī)、補(bǔ)給、機(jī)場(chǎng)或航母、地勤人員等等,那么戰(zhàn)機(jī)將失去戰(zhàn)斗力。APP也一樣,它不是一個(gè)只要能跑起來就完事的東西,支持它的配套設(shè)施和維護(hù)工作絲毫不比APP本身簡(jiǎn)單。
除開這些大的方面,細(xì)節(jié)上也帶有許多的不確定性,所以一支成熟的團(tuán)隊(duì)尤為重要,一個(gè)經(jīng)驗(yàn)豐富的開發(fā)者會(huì)知道,至少大致知道這個(gè)開發(fā)過程會(huì)遇到哪些問題,哪些問題比較簡(jiǎn)單,哪些問題則可能需要耗費(fèi)大量的時(shí)間,這得依賴經(jīng)驗(yàn)。我有一句話常常掛在嘴邊,那就是:“沒做過的東西別輕易說簡(jiǎn)單?!薄跋氘?dāng)然簡(jiǎn)單”的態(tài)度對(duì)項(xiàng)目沒有任何好處,如果自己不確定,那么去咨詢一個(gè)有這方面經(jīng)驗(yàn)的人,就算得不到具體的答案也有大致的方向,沿著這些方向研究一下,就能知道會(huì)面臨的那些問題,當(dāng)然往往還不是全部。
關(guān)于“低估了難度”這事情,我過去的公司有個(gè)經(jīng)典故事,當(dāng)時(shí)有個(gè)小項(xiàng)目,就是準(zhǔn)備把一套已經(jīng)在儀器上使用的只支持英語(yǔ)的程序增加多語(yǔ)言支持,程序并不大,涉及內(nèi)容也不算太多,工程師一開始認(rèn)為這只是個(gè)簡(jiǎn)單的翻譯工作,頂多兩個(gè)星期就能完成,但一做下去就發(fā)現(xiàn)不簡(jiǎn)單,首先翻譯得找專業(yè)人士來做,自己做不好,我們沒人精通歐洲各國(guó)語(yǔ)言,接下來還有單位換算,有些國(guó)家用公制,有些用英制,這個(gè)得考慮,包括日期顯示格式也得考慮,一下子不知道多了多少工作,這些都差不多了之后又發(fā)現(xiàn)了德語(yǔ)單詞過長(zhǎng),我們的儀器的屏幕顯示不下,超出范圍,于是再調(diào)字體,做精簡(jiǎn),前前后后開會(huì)討論了N次,最后想Release的時(shí)候發(fā)現(xiàn)這么一改,程序的Size變大了很多,有些儀器的存儲(chǔ)器裝不下,這下大家可都傻了,優(yōu)化唄,精簡(jiǎn)唄,程序開始有些凌亂不堪了,最后勉強(qiáng)通過質(zhì)控部檢驗(yàn),總算發(fā)布了,發(fā)覺足足搞了半年。不過如今想想之所以耗費(fèi)了這么多時(shí)間,一個(gè)很重要的原因是經(jīng)驗(yàn)不足,對(duì)多語(yǔ)言,國(guó)際化這塊不熟,走了不少?gòu)澛?,所以我前面也提到,成熟的團(tuán)隊(duì)尤為重要。
我們?cè)诠浪沩?xiàng)目時(shí)間的時(shí)候,往往只算了“寫代碼的時(shí)間”,而把那些和老板或客戶扯皮,做需求分析,設(shè)計(jì),測(cè)試,和修復(fù)bug的時(shí)間不考慮進(jìn)去,而這些時(shí)間加起來通常比寫代碼的時(shí)間多出不少,我個(gè)人是不輕易為了討好老板而把完成時(shí)間說得很短的,為啥?——根本做不到嘛,干嘛要撒謊?如果一個(gè)需要一星期完成的新功能開發(fā),我通常得把這個(gè)時(shí)間double,這已經(jīng)算比較“不保守”的了。
即便只算寫代碼的時(shí)間,也往往會(huì)被低估,老板或客戶對(duì)你開發(fā)的東西很可能不滿意,或許你誤解了他的功能需求,或者界面有點(diǎn)卡頓,或者這個(gè)圖標(biāo)顏色不好看,你是開發(fā)者,不是美工,雖然湊合可以當(dāng)一下美工,但畢竟不專業(yè),更重要的是做做UI設(shè)計(jì),做做圖這種事情,也得耗費(fèi)不少時(shí)間,當(dāng)你為“一個(gè)像素”焦頭爛額的時(shí)候,是不是很渴望團(tuán)隊(duì)中有一名設(shè)計(jì)師?這時(shí)候得提醒下老板:你必須要在時(shí)間和功能之間,做點(diǎn)取舍。老板當(dāng)然很不高興,但也不得不在功能上做出了一些妥協(xié)。雖然這樣做能讓難產(chǎn)的項(xiàng)目早點(diǎn)上線,但卻為來日項(xiàng)目的失敗,給老板添加了一個(gè)很好的借口:我們的工程師太差了,沒按我說的去做。
老板或客戶除了會(huì)抱怨你做出來的東西不夠好看之外,還會(huì)再提很多東西:這個(gè)界面能不能改成多選,能否增加通知功能,已讀未讀狀態(tài)要有,界面能不能再流暢點(diǎn),昨晚程序咋“閃退”了一次……需求只管提功能,但沒說具體這個(gè)UI要多美觀,也沒說程序穩(wěn)定性要好,更沒涉及到要達(dá)到多大的吞吐量,當(dāng)然,可能更重要的——安全性也沒提,你心一驚:是啊,如果有黑客,不,只要稍微懂一點(diǎn)技術(shù)的惡意用戶想刷爆我們的服務(wù)器,那簡(jiǎn)直太簡(jiǎn)單了,而這些防護(hù)措施我都沒做!所幸的是項(xiàng)目名氣太小,暫時(shí)無需考慮這個(gè)。(貌似大多數(shù)APP都活不到需要考慮這個(gè)的時(shí)候)
所有這些,你說功能也好,細(xì)節(jié)也好,穩(wěn)健性也好,都不是能自動(dòng)從土里長(zhǎng)出來的東西,都得需要花時(shí)間去想,去做,有些甚至還是個(gè)“系統(tǒng)工程”,如果頭痛醫(yī)頭腳痛醫(yī)腳去做的話,系統(tǒng)里到處充滿“飛線”,無疑會(huì)給將來的維護(hù)留下了許多隱患。攻城獅的你,都考慮了嗎?更別說老板為了節(jié)省成本而給你購(gòu)置的低性能電腦讓你整天抓狂這些“無關(guān)緊要”的事。
====================== 不怎么華麗的分隔線 ======================
話說王總告別我之后就以迅雷不及掩耳之勢(shì)注冊(cè)了公司,注冊(cè)了域名,搞到了辦公室,還一下子叫來了一幫子人風(fēng)風(fēng)火火地搞了起來,這種發(fā)展勢(shì)頭,這種干勁,我只有自嘆不如。心底里真有些后悔怎么沒跟他去干事業(yè),不過這只是感性的一瞬間,理性又在接下來的幾百毫秒里將我拉了回來:還是別去好,跟他溝通不來的。
王總的項(xiàng)目后來以一飛沖天之勢(shì)迅猛發(fā)展,而他如今已經(jīng)是一家估值幾億的公司的CEO,我嘛,越來越覺得自己是個(gè)Loser,獨(dú)自坐在辦公室里,還是拿著那個(gè)水杯,懊惱不已——打??!這樣是不是比較有戲劇性?可雖然一開始我就聲明此故事“如有雷同,純屬巧合”,但也不能胡亂瞎編,真正的結(jié)局是:確實(shí)風(fēng)風(fēng)火火弄了幾個(gè)月,后來就突然杳無音訊了,本來想打電話問問王總究竟怎樣,無奈他變成了另一個(gè)超級(jí)忙人,再無心思跟我聊家常了。嗯,結(jié)局還是差不多,我還是那個(gè)繼續(xù)苦逼地坐在辦公室里的程序員,唉,別想了,開工吧!
當(dāng)前標(biāo)題:做一個(gè)這樣的APP要多久?
標(biāo)題URL:http://jinyejixie.com/news20/151770.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、自適應(yīng)網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、服務(wù)器托管、App開發(fā)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容