`
labile
  • 浏览: 43183 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

7年软件开发技术学习的经验与模式总结 part1

阅读更多

7年软件开发技术学习的经验与模式总结

 

一个好大的标题。当年还用着学习机的BASIC写“打字练习”程序的还上小学的我,或者想不到若干年后会有能力写出这样的文章。

 

一般来讲,写这样标题的人最好先介绍一下自己的技术学习经历或工作经历,以免浪费你的时间:)但我担心如果我介绍后,你就没兴趣往下看了 :)

 

我2000年就读于广州的一间一般的大学,毕业后一直从事开发工作,也不是什么出名的公司或大型的项目。我有不折不扣的技术人的“通病”:单纯而朋友不多,只会苦心钻研技术而缺少表达能力实际中的应变能力,内向,不合群……以前,我跟很多技术人一样,讨厌别人抽自己的短处。但后来我想,对于一个技术人来讲,这是对你“专业”程度的赞美词,因为这些缺点让你可以专注于技术。

 

但,慢着,先别因以上的言论而高兴或批评我。给点耐性再听我讲讲这离题的言论。好的技术人不等于是好的程序员。你可以是个技术强人,但如果你有以上我提到的缺点,并且程度严重到不能让你积极地参加到实际项目开发中,那你就不是一个好的程序员。程序员除了技术,还要懂得做人。或者,学会做人对一个程序员来讲,甚至比学会技术重要,如果你不用养家活口,那就可以是个例外了:)

 

正题吧:

 

一.如果要学习或应用新技术或框架或API。你如何下手?

 

1.知道这是什么 (What/Why)

 

假设你要学习JSF,并只知道它是一个Web Framework,会如何开始?

一般的回答是:在 www.googlecom 或 BaiDu 中以 JSF 作关键字找相关资料。情况可能是你找到了:

  1. 官方资料:SUN Micro公司的JSF技术主页:http://java.sun.com/javaee/javaserverfaces/ 甚至 JCP 的网站
  2. 中文的文章或BLOG
  3. 英文的文章或BLOG
  4. eBook

 (一般,对于外国的技术,Goolge会将官方网站排到第一位。主要的,也是英文的资料)

 

如果你是一个喜欢即学即用,不关心技术理论与规范的人,当然首先网上的文章或BLOG,一步步地跟着做 Hello World ,这里我不详述了。但如果你要将JSF应用于严紧的项目,那可以先看看官方的网站,找到(What is JSF / JSF Overview) 等文档。再看看非官方的,易入门的技术介绍文章。这可以让你对JSF有个了解,它能为你做什么,不能做什么,什么时候应该用,什么时候不应该用。新的技术,不一定就是最合适你项目的技术!

 

2.看Hello World 或 Sample (How)

 

不用多讲了,下载相关的类库(Class Library/Jar),找到一步一步教路的 Hello World 文章,跟着做,出现文章中没有提到的小问题,找到解决方法,千辛万苦后,Hello World总算可以运行了。兴奋一阵子后,再细看Hello World的实现方法。这是个无趣但一定要经过的过程。然后呢?

 

3.找书看

 

如果你面对的技术复杂,你又认为自己跟我一样不是一个天才,最好还是找个“导师”比较好。选一本好书,可以节省许多学习时间。因我大二前曾深受劣书之害:

当时我在学习C++,以VC为开发平台。我没有钱到书店购书,就一天到晚跑图书馆。什么"精通VC"、"百例学VC"、“VC教程”……一个个操作界面截图,一步步地教你如何做到书中的例子。但当中却没有讲到为什么要这样做,如果不这样做或不完全这样做或出现例外时如何处理。你不应该只停留于一步步地跟例子输程序,更应该了解例子的原理。或许这是我们从小教育模式的问题了,这里就不多说了。


其实,作为一个好的导师,除了教你如何用VC,更应该告诉你什么是VC,如何去学VC。他最少也要告诉你:

  • 这是什么,它适合做什么,不适合做什么,其它的选择(What is it) : VC 只是一个开发平台,包括 IDE、C/C++ 编译器、C/C++ Std Library、Windows SDK 等,C++开发环境除VC外还有其它的。 它适合做Windows平台下的比较底层的系统级应用的开发。
    C++本身不适合做信息化系统开发。用 VC 中的 MFC 库开发的软件一般不适合移植到其它非 Microsoft 平台(如 Linxu/Untix)。
    除了 VC,你还可以选择  GCC 等。

  • 如何到找参考资料
    授人以鱼,不如授人以渔。导师,更应该明白这道理。我有过这样的“惨痛”经历:
    有两年时间,我直在练打字学 VC。为是什么说练打字。因我要把书中的例子输入到电脑中,但书中基本不会写,为什么要这样做。为什么要调用这个函数。每见到一个新的函数。我都用纸记下来它的参数与功能。直到后来,我发现有 “MSDN”API参考光盘,眼界才开宽了。
    一般来讲,在网络时代,除了API参考文档,我们也要到官方网站,网上人气旺的网站,去学习与参考。学 VC 的人,如果不去 MSDN,可能要比别人多用几倍时间。

    但,在工作中,我时常看到 Java 程序员电脑中居然可以没 Java API 文档。他也从来不去看在线的 API 文档。通常,这样的人要么是记忆力极好的高手,要么是不求甚解的程序员。通常,后者根本不去调用一个 Java 方法(method)前从不看文档……但通常,这样的人写程序比较快,BOSS比较看重。让我们在现实与理想间找到平衡点吧 : )

  • 实现细节
    OOP、框架,函数库(Library),等已经深入人心的今天。“细节”我们有很多的理由不再去理会。用 C/C++ 的人不了解 编译(compile) 与 链接(link) 的原理。用 Java的人不了解 ClassLoader 的原理。有没有需要了解工具下层的实现细节?我觉得在于你是用工具来干什么,与使用工具的频率。例如,如果要长期用 Java 作开发,而且要自己直接面对不同的环境与平台(如JBOSS,Spring,Seam),且不是有其它人为你操心这些,那么,你有必要了解 Class Loader 是怎么样加载 Class 的。对于C/C++,我很难想像一个不了解其编译与链接基理的人会写出严谨的程序。
分享到:
评论
4 楼 抛出异常的爱 2008-01-23  
一个字用.强迫你学下去的方式
3 楼 garid 2008-01-23  
有感受,在图书馆借了好多书,结果两年下来 ,不断地换书,效果却很差!
2 楼 Xiaohanne 2008-01-07  
从前有一个人,进了宫,后来大家都叫他公公?
1 楼 han0332217 2008-01-02  
如果要学习或应用新技术或框架或API。你如何下手?
最好还是先了解其中原理,比如What is JSF ,jsf生命周期.工作中遇到问题吗,当然是看其帮助文档了

相关推荐

Global site tag (gtag.js) - Google Analytics