这是一篇关于软件开发人员经常面临但是从来没有重视的问题的有关讨论,如果你不感兴趣可以关闭此页。
程序员也好,软件开发员也好,中国目前大部分此类人员都在做着相似的事情。他们在面对准备开发的软件充满自信,但是开发进行以后他们面临很多问题,其中就包括某种功能如何实现的问题。这样的问题多半具有复杂的逻辑结构、繁琐的编码过程、令人捶胸顿足的错误调试过程。而业届的精英们也通常采用如下的办法:
1、编写原型代码;
2、修改原型代码;
3、测试修改代码;
4、再修改代码;
5、重复3,4不内容(可能是死循环);
……
N、结束。
当最后问题解决的时候精英们可能有几分成就感,但是浪费了太多的时间、太多的精力……
那么,我们可不可以不浪费时间呢?
作为一个三流程序员,我不知道我是否有发言权,但是这个答案一定是肯定的。软件从诞生到现在已经数十年,一代又一代的软件工作者在不停的努力奋斗,他们有过辉煌也同样有过困惑与无奈。他们除了给我们留下了很多辉煌的历史,更重要的是留给我们大量的经验和教训,以及由此产生的各种理论。这些理论是他们的智慧与实践的结晶,是软件届的圣经。
我们在工作中面对问题是选择理论还是自己尚未成熟的智慧。尽管你可能回答前者,但实际你会选择后者,还会狡辩道我会参考那些理论。然而,很多人在经历了一次又一次的挫折以后才会真正意识到自己应该选择前者。但是同样有很多对自己的智慧深信不疑,可是除了一些微不足道的成就他不会有别的收获。
我不止一次告诫身边的人,我们应该看看书,而不是在网上四处寻找别人留下的残羹剩饭。但是,他们没有,虽然书近在咫尺,他们还是会花几个小时从网上找到一些二进制垃圾,并为此兴奋不已。然后,还要拿着这些自己所谓的成果向别人炫耀。还有些人他们看书,但是只注重应用技能方面与新兴技术方面的学习,而忽视基本理论的学习。这是一个很不好的习惯,就是业界都很清楚的跟风现象。我从来不认为自己很聪明,所以我到现在也不像有些人那样喜欢夸耀自己会多少种语言,会使用多少种数据库软件,或者说起.NET来头头是道。我只是希望我编写的代码尽量符合《数据结构》中的描述,或者我设计的数据库结构可以达到标准的范式。对别人无端的讥笑与嘲讽,除了付之一笑,我也不想争辩什么。因为任何人的存在都是有理由的。
也许是来自头脑的智慧来得很容易,没有人会珍惜它而大加浪费。然而新的工作来临,他所付出的智慧就会化为乌有。而将智慧花费在学习理论上,就会象JAVA语言一样处处受用。但是,有关操作技巧的图书、资料仍然十分受欢迎甚至被极力推崇,而基础理论的图书却象路基上的石子一样无人问津。当我们看着并不算厚的《数据结构》望而却步的时候,当我们看着《软件工程》几个朱红的大字的时候,当我们把《离散数学》无奈的扔在一边的时候,你是否想过,这是几代人、几十代人,他们有数学家、电器工程师、电子工程师、哲学家……不懈探索发现的。说是发现的因为这些理论原本存在,我在不知不觉中被它们左右,我们不是上帝,是不可能逾越它们的。我们所做的也只有了解它们、学习他们、遵守它们、利用它们。即使是爱因斯坦也不可能让光象自己的爱车一样在公路奔跑。那么,我们在面临问题时是选择治标还是治本。
的确,基本理论真的很高深,大学老师总是不得不接受一些学生的小恩小惠让他们顺利毕业。但是,只要你去学习它,哪怕一点点,都会让你的工作少些烦恼,多些轻松。如果大学时光很短暂,我们可以在工作中学,如果工作很忙你可以在节假日看一看,如果节假日你要旅游你可以在无法入睡以前瞟上几眼,你会发现这些东西就象被你遗忘在路边的乞丐一语道破天机,或是和你相对数载的智者的一席妙语箴言。会让你欣喜,会让发自内心的醒悟。我可以告诉大家一个等式:永不放弃=奇迹。但其中的永不放弃不是重复的做相同的事,也不是盲目追赶潮流,不是永远做一些毫无意义的事,而是对未知的世界不懈的探索,对事物本原规律的发现。
说到这里,应该已经很明确了。这就是我的观点:没有理论的基石,任何智慧成就都是虚无飘渺的空中楼阁,在岁月的变迁中转瞬即逝。
我希望中国软件业多些发现者、创造者,而不是抄袭者和偷盗者。
网生