這個(gè)標(biāo)題也可以為: 程序員寫的程序,為什么非得有bug?
何為程序員?
首先,程序員的定位是工程師,即: 程序員不是碼字的人,或者說不只是碼字的人。需要站在工程維度上,需要站在相對(duì)高的高度上,去俯瞰工程。
何為程序?
那么,什么是程序?即: 算法 + 數(shù)據(jù)結(jié)構(gòu)。
算法用來求解(花式求解),數(shù)據(jù)結(jié)構(gòu)即可是支撐算法的內(nèi)容,也可以是算法的結(jié)果(類似于盤子,各種大小、各種用處的盤子,好比數(shù)據(jù)結(jié)構(gòu))。
反推新的問題
基于此,只要具備一定理性、邏輯思維的人,可以通過這個(gè)問題,反推出幾個(gè)有意思的問題,即:
1. 人生為什么不能一次性安排好?
2. 高考為什么不能一次性考好?
3. 。。。
此時(shí),這個(gè)問題已經(jīng)不攻自破,因?yàn)檫@是一種的非理性的訴求,奢望世界上存在所謂的靈丹妙藥,來解決自己眼前的問題。
可,實(shí)際上,是做不到的。
如果非得詳細(xì)、流程化的描述為什么程序不能一次寫好,這個(gè)過程會(huì)比較繁瑣,所以我通過簡單的描述來解釋。
簡解何為開發(fā)
1. 戰(zhàn)略
程序員(工程師),需要理解上下游訴求、限制,程序員的定位是在產(chǎn)品之后,理解產(chǎn)品的戰(zhàn)略方向,根據(jù)戰(zhàn)略方向制定出可執(zhí)行的方案。
這是一個(gè)大框架,保障大方向的準(zhǔn)確,也會(huì)通過具體的定時(shí)溝通,得到反饋重塑這個(gè)框架,保證對(duì)戰(zhàn)略方向的不跑偏。
2. 戰(zhàn)術(shù)
如果說戰(zhàn)略是框架的制定,那么戰(zhàn)術(shù)就是對(duì)框架中戰(zhàn)術(shù)的細(xì)節(jié)實(shí)現(xiàn),好比有一個(gè)目標(biāo): 我需要從西三旗抵達(dá)天安門廣場,看升國旗。
這個(gè)目標(biāo),可以是戰(zhàn)略中的一個(gè)實(shí)現(xiàn)。
此刻我們觀察這個(gè)目標(biāo)(產(chǎn)生所謂對(duì)象化的觀察), 那么我們會(huì)得到幾類處理方法:
交通工具選擇: (1) 騎自行車去 (2) 坐時(shí)光機(jī)去 (3)開宇宙飛船去
路線選擇: (1) 直來直去 (2)翻山越嶺路線 (3)騰云駕霧路線
在暫時(shí)忽略上述幾類處理方法的離譜狀況后,這些方法如果能落地,那么就是具體的戰(zhàn)術(shù),這些戰(zhàn)術(shù)會(huì)運(yùn)用到具體的大框架中,作為邏輯上的一環(huán),等待啟用。
至此,開發(fā)任務(wù),已經(jīng)簡單描述完畢,相信略懂其中工作環(huán)節(jié)的人,應(yīng)該會(huì)明白程序不能有bug,必然是一個(gè)悖論。因?yàn)樵诰唧w的工作環(huán)境中,能保障戰(zhàn)略的穩(wěn)定推進(jìn)已經(jīng)是一個(gè)難題了,何況還有戰(zhàn)術(shù)的制定/實(shí)施,上述兩個(gè)內(nèi)容,只要有一個(gè)動(dòng)作走形,那么就會(huì)得到一個(gè)類似bug的結(jié)果。
(甚至說,可能因?yàn)閼?zhàn)略上的錯(cuò)誤 與 戰(zhàn)術(shù)上的錯(cuò)誤, 可能會(huì)導(dǎo)致一個(gè)結(jié)果上的正確···這種情況也是存在的)
浙公網(wǎng)安備 33010602011771號(hào)