大多数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个字符串,那又如何呢?如果你使用大括号结束,很好。不要在乎别人说什么。重要的是程序的功能实现,而不是优美的语法。如果你真正的选择一个语言并且坚持下来,你会自然在某些时候使用良好的代码习惯。在你写代码的时候可能会持续感到批评和讽刺,但在你养成习惯之前,别让自己轻易放弃。这就是为什么自己写程序解决自己的问题非常重要。