下班時(shí),我正坐在座位上,同事H突然找到我:“你現(xiàn)在忙嗎?我想學(xué)git,你能教教我怎么學(xué)嗎?”
我當(dāng)時(shí)一愣,有點(diǎn)奇怪她怎么會(huì)提出這樣一個(gè)問題。要知道,H是財(cái)務(wù)組的一個(gè)小女生,主要負(fù)責(zé)財(cái)務(wù)方面的工作,應(yīng)該是不需要用到git這么專業(yè)的版本控制工具的。
我問她:“你是要轉(zhuǎn)開發(fā)嗎?怎么會(huì)想到學(xué)git?”
她說:“不是的,其實(shí)我想學(xué)VB,這樣我可以在Excel中寫腳本來做一些自動(dòng)化的工作。同事Z教了我一些,可是他說,他不知道我每次代碼改了哪些,找起來很麻煩,所以讓我學(xué)git。用git是不是可以很方便的看到我這次的代碼跟上次有哪些地方不同?”
我明白了,這又是一個(gè)“一言不合就舍近求遠(yuǎn)”的例子。
我問她:“你用git僅僅是用來比較文件的差異嗎?你的VB代碼需要跟其他人協(xié)作嗎?”
她說不需要協(xié)作,“我之前的代碼都是保存在文件里的,每次修改了就先復(fù)制成一個(gè)新文件,同時(shí)在文件名上加上版本號(hào),比如版本1,版本2”
我又問她:“那你的VB代碼是保存一個(gè)文件中,還是多個(gè)文件中?”
她說每次只需要一個(gè)文件就夠了。
我又問“你是不是覺得git是很好學(xué)的,只需要我給你講一下你就會(huì)了?”
她點(diǎn)了點(diǎn)頭,“所以我才過來問你一下,你有空時(shí)教教我好不好?”
我心里嘆了一口氣,告訴她:“對(duì)于你來說,git還是一個(gè)很難掌握的一個(gè)東西,可能比你學(xué)會(huì)VB還要難。要不要看看有沒有別的簡單點(diǎn)的辦法解決你的問題,能讓你一分鐘就學(xué)會(huì)的?”
然后我打開google,搜索了關(guān)鍵字“online text comparison”,得到了一堆結(jié)果:
隨手打開了其中的https://text-compare.com,并輸入了一些內(nèi)容:
然后點(diǎn)擊了Compare按鈕:
可以看到,在上面的對(duì)比框中,左右兩邊代碼的不同之處,已經(jīng)通過高亮的形式展示出來了,一目了然。
如果想修改的話,直接在下面的兩個(gè)大框里改就行了。
我問她:“這個(gè)能不能滿足你的需求?如果不行,剛才搜索頁面上還有一大堆可以試試的”
她開心的說:“太棒了,我就是想要這個(gè)!我還可以按我之前的方式來做,當(dāng)我找同事Z幫我看代碼的時(shí)候,把修改前后的代碼分別貼在這里就行了!”
我問她還想學(xué)git嗎,然后我倆都笑了。
然后她又問我,“那你能不能教我怎么學(xué)VB呢?同事Z給我推薦了一本VB的書,太厚了,我看不進(jìn)去”。
我說我也沒有學(xué)過,但是我有一種方法,可以試試。
于是我打開mindnode,寫下了這幾個(gè)問題:
在寫的過程中,我每寫一個(gè),她都能快速的做出回答,說明她對(duì)VB已經(jīng)有一些了解了。其中的“VB怎么調(diào)試”這個(gè)問題,她還不清楚,但是因?yàn)檫@已經(jīng)是一個(gè)比較明確的問題,她說可以找同事Z教她一下。
然后我又接著寫下這個(gè)問題:
她說這些她都很熟悉,而且她對(duì)Excel中的函數(shù)也很了解,知道怎么在VB中調(diào)用它們。這很好。
我又問她是怎么學(xué)習(xí)的。她告訴了我一個(gè)很重要的信息,在Excel中,有一個(gè)叫“宏”的功能,可以錄制一些操作,就會(huì)自動(dòng)生成相應(yīng)的VB代碼。有這么棒的功能啊,我們必須利用它:
由于它錄制的是我們自己的操作,所以對(duì)于它產(chǎn)生的代碼,我們就很清楚其功能是什么。如果我們能夠仔細(xì)的閱讀這些代碼,不懂就問,是很容易搞清楚它的每一行在做什么。這是一種很好的學(xué)習(xí)方法。
她還告訴我,她現(xiàn)在特別想用VB做出來一個(gè)功能,所以她是邊學(xué)邊做,但是由于這個(gè)功能還是比較復(fù)雜的,所以中途老是出錯(cuò),她又找不到問題出在哪里,感覺很郁悶,不知從哪里下手。
我說,這樣的話,我們能不能先在網(wǎng)上找一些簡單的例子,先把它們搞懂。她說,她也找過一些,但是跟她想做的功能有點(diǎn)遠(yuǎn),感覺幫助不大,不想學(xué)它們。
那就只有“分解”啦!
我說,那我們能不能把你要做的功能分解成特別簡單的步驟,比如說,你要做一個(gè)“讀取兩個(gè)單元格里的內(nèi)容,經(jīng)過計(jì)算后,寫到另一個(gè)單元格”的功能,看起來有點(diǎn)大,那如果我們把它拆分成3個(gè)任務(wù),先搞清楚“怎么讀取單元格的內(nèi)容”,然后再研究“怎么計(jì)算”,最后再解決“怎么把文字寫入到一個(gè)單元格”中,那么這里的每一個(gè)任務(wù),你還覺得難嗎?
她非常肯定的說,“這不難,我自己就能搞定!”
于是,我又當(dāng)著她的面,畫了下面的這個(gè)圖,邊畫邊問她每個(gè)任務(wù)她覺得難不難:
前兩個(gè)她都覺得不難,但是第三個(gè),她覺得有點(diǎn)難。
沒關(guān)系,我們繼續(xù)拆分:
到了這里,她非常開心的說“我明白了你的意思啦!我會(huì)啦!”
我問她:“這半個(gè)小時(shí)的時(shí)間,是不是節(jié)省了你以后很多的時(shí)間?”
她說:“是的!能不能把這個(gè)圖發(fā)給我,我知道該怎么學(xué)習(xí)它了!”
注:這里貼出來的圖跟當(dāng)時(shí)略有不同,主要是修正了一些文字上的錯(cuò)誤