為什么SA不會寫代碼?
大多數SA都會秒速告高呼:“俺不是碼農”!奇怪的是,他們經常會補充自己了解并使用過N多的編程語言。為什么會醬紫?可以改變嗎?為了讓系統管理員都可以成為牛叉的程序員,下面是我的5點建議。
1.找一個自己關注并想解決的問題
SA不實際使用工具,他們只想學習工具的原理。他們認為當問題發生時,知道如何解決問題比實際解決重要的多。SA有可以解決幾乎任何問題的有效方案。潛意識里,他們想要使用工具,但由于他們的最終目的是理解工具的原理,當他們希望用工具去解決問題的時候,他們學習了工具卻沒有實際解決問題。學習是目標,當目標達到,換個工具繼續學…
這使得許多SA成了hello_world之王…會用各種語言編寫helloworld,但只會寫helloworld(目標是掌握每個語言的基礎,然后繼續下一個語言)。
改變這種惡習的唯一方法是發現一個你自己要解決的問題,并且解決它。別為了別人寫程序,為你自己寫。寫一些程序連接ldap服務器或者計算數值并寫入數據庫…然后,讓這些程序變得實用,而不僅僅總是停留在練習。
2.選擇,就堅持到底
SA適應本領超強,于是乎產出了許多不同版本的hello_world,在取得實質編程的進步之前他們往往換了許多種語言。如果你想使用C,就別在遇到正則表達式問題的時候轉戰ruby或python…還是努力學習如何在C語言中使用正則吧。
SA需要知道別人所了解的知識,甚至要了解的更多。能成為各領域的牛人是他們引以為傲的地方。雖然Go語言在持續火熱,但不要認為PHP和Python無用過時了。如果你想要使用Go語言,很好,但請堅持。如果想使用Clojure語言,也很好,但不要在別人討論node.js時又覺得Clojure功能很差…
為了促進編程能力,寫很多小程序來練習這門語言的不同部分,然后你對這個語言核心的技術有深層的了解。將這些小程序存在你的源碼里用作以后的review,并幫助你來建立信心。
3.腳本并不是編程
SA是工具管理大師…他們知道海量的工具。這就是為什么對于他們來說,寫腳本變成了很自然的事情,用腳本把不同的工具組合起來使用。但這可不是編程,這是只能算得上管道。當你在一個非shell的環境中這會顯得更加明顯。SA的代碼里往往有很多程序…也就是說,本質上他們在一個非shell的環境里寫著shell。
4.模塊和庫必不可缺
SA有代碼潔癖,并且很自負。使用模塊或者庫就像在做欺騙。這就是為什么很多SA只知道基本的C語言,他們沒有本事來實現自己的庫,卻又恥于用別人的庫…于是他們成了指針和其他技術的大師。許多程序員編程時看待模塊和庫的態度就像SA看待一個程序本身一樣 —— 只不過是實現目標過程中的工具罷了。
別去使用工具,使用模塊或者庫,別覺得這樣很奇怪~
5.別太在乎別人說啥
導致不去寫代碼的***障礙之一是覺得寫出來不好。代碼不夠***或格式錯誤亦或是沒有使用合適方法。這就好像***天去學校感覺因為服裝不合適而被別人指點…你喜歡這些服裝,然而你錯了,他們并不適合你。對于別人來說可能只會因此非常沮喪,但對一個以掌握所有技術為榮的SA來說,這是難以忍受的,導致他們發飆:“我不是個碼農”!
解決方法是不要太在意比人的說辭。即使你的代碼一行有80個字符串,那又如何呢?如果你使用大括號結束,很好。不要在乎別人說什么。重要的是程序的功能實現,而不是優美的語法。如果你真正的選擇一個語言并且堅持下來,你會自然在某些時候使用良好的代碼習慣。在你寫代碼的時候可能會持續感到批評和諷刺,但在你養成習慣之前,別讓自己輕易放棄。這就是為什么自己寫程序解決自己的問題非常重要。