程序员的方法论

来源:互联网 发布:淘宝订单体检 编辑:程序博客网 时间:2024/05/17 05:02

 

最近想到的问题比较多。触发事件是一位在中国软件行业摸爬滚打了若干年的资深老

总的一句话。他说:“在中国,做软件,除非你做到NO.1,如果你仅仅是NO.2,你都

将无法生存。”

这个问题放在我身上,就是一个发展方向的问题。以后有没有勇气去做这NO.1的软件

,如果做不到,是不是应该趁早不做。

 

我们会有选择性的关注一些我们认为对自身有意义的信息,而过滤掉其他纷繁无用的

信息。但是,这样可能使得我们只有一条路,忽略了其他有价值的信息。如果有一天

,这唯一的路走不通了呢?

 

其实,我想提出的问题是,怎样选择你想学的,然后怎样去学。怎样做项目决策,然

后怎样去实施这个决策。这两个问题可以推广到其他一切问题。

 

学什么,或者说做什么,这个问题的答案在于你对于某一领域的长期积累和深刻认识

。要冷静下来分析,什么才是有价值的。这个价值除了有潜在的商业利润以外,还应

该有你自身在该方面的各种基础,天赋、积累、灵感、兴趣。但是,前期有可能会不

可避免的花费大量的考察时间。我花了几年。一点一点的慢慢摸索。我天资愚笨,花

的时间比较久。任何一个人,只要静下心来,先广泛了解各种知识,然后再静静思考

自己要走的路是什么。相信,每一个人都能够得到一个让自己满意的答案。

 

你想学的,是你的兴趣和你的判断决定的。怎样学,是你的方法论决定的。同理,项

目决策是项目决策人的判断,项目实施是程序员的解决之道。思维方式和思维模式决

定了你对哪些方面感兴趣。这份热情是你成功的基石。但是,方法才是决定了你最后

能否成功的关键。

 

再说下去就流于形式了。打个比方,程序员作项目的时候,往往第一反应是选择用什

么语言,用什么架构。一个很典型的例子就是一个程序员习惯C#,要求实现进程通信

,他第一反应就是使用C#。事实上,C#也是用C++/C的库。如果直接用C++/C反而简单

多了。就是说,解决问题的第一步是清楚这个问题是什么。

 

在这些项目里面,我获得最大的认识就是,在做事前一定要明确目标。知道对方要的

是什么。否则,结果是,你辛苦了投入了,却得不到任何认可,对方还会认为你浪费

了时间。明确目标的时候,一定要了解到非常细致的程度,方方面面都考虑到。要向

对方反复确认细节。这样能够避免,做了很多又返工的麻烦。那可是很郁闷的,还无

法找人算账,谁让你自己没问清楚呢。

 

文档化非常重要。因为程序员常常写着写着,就忘了原来的版本是怎么实现的了。这

个相当于以前的一些工作完全被放弃了。而以前的工作的潜在价值也就被彻底埋没了

。做一个优秀的程序员,一定要有备忘性质的技术文档。要经常整理,自己以前写过

的程序,以前钻研过的架构和技术。这样,才能让这些不起眼的小东西,有朝一日发

挥用处。我有次整理电脑,发现一个小程序,结果一跑,跑不通。我的习惯是,没用

的东西一定马上删掉。留下来的程序一定都是编译通过了的。这就奇怪了。我查看源

码,是自己的风格,但是想破了不知道什么时候写的。后来,还调了半天,调通了,

写好注释,才打包保存。无形中浪费了不少时间。

 

项目和程序要分类整理好,写好注释和readme。你以为你现在脑子里很清楚,过段时

间就什么都不记得了。再现去读源代码,很费事。

 

我们的思维有很多固定模式,这些模式往往让我们走入误区。有时候你认为你什么都

了解了,只要动手,就可以让问题迎刃而解了,其实不一定。我受到的教训很多。也

在不断学习。总结一句话,就是想清楚了再动手。不要盲目的学习,也不要盲目的做

事。学固然是好,但是既然学,就一定要有收获。不能再浪费生命了.

 

最后的忠告是,一定要虚心。要承认,无论你有多牛,这个世界上一定还有比你更牛

的人。但是,你绝对是独一无二的。

原创粉丝点击