From Tomboy to EverNote  • • •  What is SUID,SGID and SBIT       all posts in Archive

Green Beret Programmer

想想计算机起步的时代,要做个程序员可真不是简单的事情,大多能从事这个行业的都是绝顶聪明的家伙,几乎可以说是科学家级别才能干的工作。即便到了后来诸如 C 语言这样的高级语言出现后,要想成为合格的程序员也是难于上青天的。紧随着Basic,Java,Python,PHP ... 这样的划时代语言出现,编程才成为了“普通人”能够期待的事。还记得以前鼓吹 UML 的时候,那时的口号是让高中生都能编程。

毫无疑问,比起计算机诞生的前期,做一个程序员的门槛几乎没有了,但凡逻辑思维不会混乱,也能专心学习的家伙都能写出不错的代码来。可其实要成为优秀程序员的路却从没有平坦过,看起来是只要学会 Google + Copy + Paste 就可成为合格的美国大兵,但要把它作为自己一生的职业可没那么简单。

程序员的职业规划是个老话题了,程序员本身是个不错的职业,富于变化,充满了新鲜感。可是大家都对未来感到不安和迷茫,毕竟人在变老,而技术是不知疲倦的向前。只在国外还能看到不少中年大叔们在继续编程着。不过前面前不久看到一个文章说,国内有人搞了一个“大龄程序员群”,组织一些“老资格”的程序员聚在一起。至少可以说中国也有人准备把它当成一生的事业来做的,可这毕竟是少数,要想有绝对的竞争力,长期坚守,普通的“美国大兵”是远远不够格的,你得成为绿色贝雷帽。

贝雷帽是什么样子的呢?他们身怀绝技,装备精良,时而一个人深入虎穴取上将首级,时而以小分队活动,完成mission impossible。这挺类似现在对软件开发人员的要求:

要有强大的“心”

如果贝雷帽是什么人道主义者,别想完成任何任务了,他们必须冷静果敢,该出手就出手,即便需要血染胸襟。当然搞软件可不需要流血牺牲,但你必须爱这个行业,你得真心的想把它做好。别以为这些事情能敷衍,你是否有一个战斗的心,实在是太容易就看透了。如果仅仅是期望打打酱油混日子,最后免不了死得不知其所。毕竟单兵作战时只能等死,而任何优秀的团队也只会选择把精英聚在一起,

有好多人进入软件行业,可能都是误打误撞而已,大学毕业了,又能干什么呢?可你必须培养起这个兴趣来,如果做不到,还是趁着年轻寻求其他出路为好。

记得十年前的软件测试和现在几乎是有着翻天覆地的区别。10年前的软件测试,还在说什么“白盒测试”和“黑盒测试”,而现在的趋势很明显,将只会有以自动化测试为主导,白盒黑盒全部被包含其中。如果作为当年的那些“黑盒测试人员”,在这看似漫长的10年没有能跟上这个步伐,学会用代码来测试,被淘汰只是迟早的事情。没有那个“心”,“学不动”的感觉一定会萦绕在你身边,不肯离去。

要能精通易容,千变万化

常看到贝雷帽伪装成各种职业,能到任何地方潜入虎穴,精通各种外语不用提,对各门类知识也得颇有研究。

10年前的大型软件开发,鼓吹的是CMMI,工作方式大多都是划分成各个模块,就像是划分责任田一般,包产到户。开发人员也分为架构师,需求分析人员,测试人员,软件工程师 ...... 作为程序员你唯一要搞定的人就是测试人员,几乎不需要和其他人有太多沟通。那真的是一个大家期望让高中生来编程的年代, 而也在为之努力。

很明显这条路走不通,效率低下,那些期望的优势也大多以失望告终。为了迎合现在这个瞬息变化的新时代,又开始鼓吹 Agile ,虽然最后能否成功还不知道,不过对程序员的沟通能力的要求在很长的一段时间都只能是越来越高。你可能要接触客户,各种联系人,测试人员,免不了要和各式各样的其他本项目的别的项目的程序员人打交道。即便不是外企,和国外客户打交道的机会也打打增加了,少不得还要把外语说溜了才行。

一个只能单兵作战,而无法融入集体的人,是必定不能在公司里存活下来。看起来好像,现在的软件行业给这样的人仍然有机会,比如移动应用开发。似乎凭借一个人的能力,还是有希望继续编程下去的。可实际上要做一个成功的移动软件容易吗?要做一个优秀的软件,只是会写好代码就行了?当然不是。你还得有良好的美术功底,你还要积累相当的文化背景,你还需要了解市场需求,有预见性,前瞻性。这些一般都不是一个人能做的,等你把所有的知识都累计够,可能也七老八十了。你不靠和别人交流吸收养分是不能迅速获得如此之多知识的,到目前为止的IT大牛们,也没有一个是能真靠自己一个人的积累就成功了的。一个厉害的Geek,搞搞破坏没问题,可要想在商业上成功,养家糊口难度很大。

十八般武艺样样精通

每个贝雷帽都有30秒击倒对手的能力;他们还善用大概85种冷热武器;还得接受航空航海训练;精于伏击,暗杀,爆破;具有在极端环境下的生存能力;精于战斗医疗 ... ... 简单的说,他们是无所不能的。

就程序员来说,学会一个编程语言,比如 Java, 就能有饭吃了?目前当然还是这样。有很多时候,“会”Java都谈不上,能够copy and paste可能就能找到饭吃。当然要吃的好一些,一定还是得真的 “会” Java 才行。而要想整个后半辈子都靠它,那必定还是得精通才可以。什么是精通呢? 你要能了解这个语言的各种泥潭;你怎么也得知道Java虚拟机的工作原理;你必须精通设计模式;你必须掌握各种各样的框架。到最后你还是必须了解计算机底层的工作原理,要不然你仍然无法解释为什么Java是这样工作的。

而仅用好Java是不足以应对各种情况的。拿Java比作重机枪的话,你不会期望潜入暗杀是,背着它攀山越岭。你需要更小巧威力十足的黑鹰,Python。使用 Java 确实让集体开发有了明显的优势,代码容易被理解和维护。可当成员都是贝雷帽时,这样的工作方式就不高效了,既然大家都是多面手,干嘛不能什么顺手就怎么来呢?

就拿开发平台来说,10年以前的国内各种商业软件开发,几乎不用选,一定都是 Windows,服务器也选择 Windows Server。可时过境迁,你不了解 Unix / Linux ,又怎么应付以后的主力移动平台 Andriod 和 OX。即便仍是电脑上,更多的人也开始选择各种各样的 Linux 平台。

 

有感于最近软件行业可能碰上的“寒流”或者是未来不知道何时可能到达的“冰河世纪”,如同其他行业将经历洗牌一样,软件也逃不了这一劫。在软件这个大泥潭中,肥皂泡沫般的程序员也不在少数。能不能顺利挨过这一道道劫,还是未知。如果那些本不该做软件的,因此反而找到了人生的路,可能是好事。但如果你还期望把这活干下去,那就要努力了,不能只是以美国大兵的水准要求自己,如果要活得更精彩,活得更自主,还是成为贝雷帽吧。