java 改別人代碼的bug,覺(jué)得有些吃力,是我太菜嗎?
改別人代碼的bug,覺(jué)得有些吃力,是我太菜嗎?調(diào)試程序的能力確實(shí)是評(píng)估程序員整體技術(shù)水平的一個(gè)重要方面。然而,由于不同的程序員經(jīng)常面臨不同的開(kāi)發(fā)場(chǎng)景,因此存在許多不同形式的bug。因此,如果調(diào)試一些復(fù)
改別人代碼的bug,覺(jué)得有些吃力,是我太菜嗎?
調(diào)試程序的能力確實(shí)是評(píng)估程序員整體技術(shù)水平的一個(gè)重要方面。然而,由于不同的程序員經(jīng)常面臨不同的開(kāi)發(fā)場(chǎng)景,因此存在許多不同形式的bug。因此,如果調(diào)試一些復(fù)雜度很高的程序,即使是有經(jīng)驗(yàn)的程序員也不會(huì)感到特別放松。
程序員調(diào)試程序的能力通常由三個(gè)因素決定:一是自己的經(jīng)驗(yàn);二是自己對(duì)業(yè)務(wù)的理解;三是算法設(shè)計(jì)的能力。
代碼量對(duì)程序員的調(diào)試能力有最直接的影響。一般來(lái)說(shuō),程序員擁有的代碼越多,調(diào)試能力就越強(qiáng)。這在調(diào)試一些常見(jiàn)的bug時(shí)尤其明顯。很多初級(jí)程序員在程序出現(xiàn)bug時(shí)往往需要很長(zhǎng)時(shí)間進(jìn)行調(diào)試,而老程序員幾乎一眼就能發(fā)現(xiàn)問(wèn)題的關(guān)鍵是角色的編程經(jīng)驗(yàn)。
程序員對(duì)業(yè)務(wù)流程的理解直接影響到調(diào)試能力,因?yàn)槌绦蛟O(shè)計(jì)往往需要與業(yè)務(wù)流程相適應(yīng),特別是對(duì)于管理軟件。許多復(fù)雜的邏輯來(lái)自于特定的業(yè)務(wù)規(guī)則,因此不理解業(yè)務(wù)規(guī)則就很難調(diào)試程序。事實(shí)上,許多程序員在中途接管程序代碼時(shí)需要對(duì)業(yè)務(wù)有一定的了解,而這個(gè)過(guò)程往往很耗時(shí)。
算法設(shè)計(jì)能力也會(huì)在很大程度上影響程序員的調(diào)試能力。雖然目前很多應(yīng)用級(jí)開(kāi)發(fā)任務(wù)中關(guān)于算法的內(nèi)容并不多,但算法設(shè)計(jì)能力對(duì)程序員的邏輯思維能力也有很大的影響。因此,具有較強(qiáng)算法設(shè)計(jì)能力的程序員往往能夠更快地理解代碼。
零基礎(chǔ)想學(xué)習(xí)java,應(yīng)該從哪學(xué)起?
事實(shí)上,這個(gè)問(wèn)題對(duì)于任何語(yǔ)言都是一樣的。從一門語(yǔ)言開(kāi)始,我們首先需要了解語(yǔ)言語(yǔ)法(可以使用),然后了解標(biāo)準(zhǔn)庫(kù)(可以使用)。有了這兩個(gè)步驟,再加上一點(diǎn)其他語(yǔ)言的知識(shí),我們應(yīng)該可以開(kāi)始了。我校招收的很多畢業(yè)生經(jīng)過(guò)1-2個(gè)月的輔導(dǎo),都能達(dá)到這個(gè)階段。
剩下的是第三步,通過(guò)項(xiàng)目或產(chǎn)品的實(shí)踐加深對(duì)技術(shù)和業(yè)務(wù)的理解。在這個(gè)階段,我們通常依靠自學(xué)、谷歌和理解。兩三年后,我們可以發(fā)現(xiàn),有些人對(duì)技術(shù)和業(yè)務(wù)的了解很深(老手),有些人還很膚淺。這段時(shí)間通常是另一個(gè)跳槽階段。在這個(gè)時(shí)候,不同的人的工資水平會(huì)有很大的差異。
總而言之,程序員最重要的是持續(xù)學(xué)習(xí)(第三階段)。事實(shí)上,IT行業(yè)是一個(gè)需要不斷學(xué)習(xí)的行業(yè)(因?yàn)榧夹g(shù)更新太快)。初出茅廬,我們都有同樣的基礎(chǔ)和能力。這一差距將在2-3年后出現(xiàn)。如果你是貧窮的一方,那就意味著你工作不夠努力。
最后,Java主要用于服務(wù)器。由于其出色的內(nèi)存管理,它阻止了許多程序員的能力差異(能力較弱的程序員可以編寫較少的糟糕系統(tǒng)),并且適合于長(zhǎng)期的服務(wù)器項(xiàng)目(如web和其他非UI應(yīng)用程序)。
雖然也有優(yōu)秀的UI庫(kù)(如SWT)和優(yōu)秀的桌面應(yīng)用程序(如idea、eclipse和netbean),但是桌面軟件應(yīng)用程序仍然很少,需要帶JRE,所以負(fù)擔(dān)相對(duì)較大。