【来信】

我的基本情况:
1、今年33了,工作并不是IT行业的,稳定,收入也不错,不准备跳槽。
2、编程只作为业余兴趣,已经自学了1年左右,并且打算作为长期坚持下去的兴趣。
3、因为才学了一年左右,而且只是自学,只对汇编(16位)、C语言有一些了解,大概也就很一般的入门水平。
4、每一周可用于编程学习的时间大约为10~20小时。
--------------------
接触计算机一段时间,发现方向门类太多,我自己目前在今后学习的方向选择上很不清晰,今天看到这个不错,明天发现那个又很不错,所以想咨询您一下,下面是我自己比较倾向的方向(因为我很不专业,下面的描述可能有些模糊,我尽量说清楚说细):
1、网络应用方面:希望自己可以开发一些网络的应用程序,比如聊天室、IM、浏览器,下载工具之类(平台不限于windows和Unix或移动平台);
2、企业信息化方面:诸如CRM、ERP之类的应用软件;
上述1、2,因为我精力有限,我肯定只能选择其中之一作为方向,想请教您,这两个分别的大致学习路线该如何安排?
比如1,先学C?再学协议?套接字?还是啥?最好能具体一些。我想根据您的分析,选择自己的方向。
不管哪一个作为我的方向,我明白自己已经30多了,需要加倍花时间才可以,很可能在最后我也达不到自己的目标,但我相信自己努力就或多或少会有收获。
--------------------------------------------------
我非常确定您每天很忙碌,估计像我这般请教的信件也不会少,如果打扰到你,尽可以不理会;如果有幸得到回复指点,非常感激。

【回信】

  很欣赏和羡慕你能有纯为了兴趣的学习。

  针对你的情况,感觉选择方向1,即“网络应用”更好一些,这个方向上好玩的东西不少,相对企业级应用味道较浓的方向2而言,方向1的开发条件及自由度也更容易保证。
  你在网络应用中列举的几种软件,大多更倾向于做桌面应用。学习这些,我觉得可以再选择一门方便应用开发的语言,如C#、Java,学会利用语言中提供的框架和机制完成开发,有不少资料及案例教程之类的,可以带你完成这些学习。而其中底层的协议之类的,可以在自己对开发应用有体会以后再说。
  我想到另外一个和网络相关的应用方向,建议你考虑一下,那就是做Web开发或移动开发,这样的工作更具有“时代感”一些。Web应用可以利用云平台等将产品发布出来,可以结合上一些开放平台(如微博、人人、淘宝等),包含进去一些自己的创意。如果有机会,让未来业余开发出的东西产生点效益也是不错。而移动应用,不管Android还是iOS的,尝试将其发布到APP Store中,不也是很酷吗?如果选择前者,学HTML、CSS、PHP(或Java)开始,学习更容易编程的Python、Ruby等,也是可选的方案,而对于后者,从Java(可以直接结合Android开始)或者Objective-C学起。这条路子,可以做出一些好玩、实用的应用来。要学得顺利,从http://www.csto.com/等网络外包的空间中找点实用的项目做也不错。
  因为只是为了兴趣学,所以没有建议你学习更多基础性的东西,学汇编和C,我觉得你已经对计算机内部的东西了解了一些了。从语言入手,以做出看得见的软件为目标,以后走得顺了,再去看些基础的书籍,这也是一种更容易让人产生愉悦和成就感的路线。
  祝学习顺利!