无论对于初学者还是已经具备一定基础的人,要想进一步提高自己的技术能力,就必须不断地学习。学习我比较推崇的,也一直在实践的是一种“目标驱动学习法”。换句话来说,不是为了学技术而学技术,而是因为有某件事情(某个项目)要去做,而目前我并不了解这种技术,所以需要去探寻这种技术。学技术的唯一目标,就是为了把这个项目做完!否则,技术学起来是枯燥和乏味的。
学习软件开发技术所指的项目,就是各种软件项目了。只有在做项目的过程中,你才会明了自己的不足,也才会有兴趣和深入的理解各种技术。我原来在某个公司呆的时候,公司做了几次关于项目管理方面的讲座,我听得晕晕乎乎的,什么WBS,什么甘特图,各种文档之类的,纯粹把它视为一种需要记住的东西来学习,无论强调它多重要,但是我根本意识不到。后来真正需要我将一个项目拿起来,需要把这个项目给团队成员、上级说得清楚,需要去估计工作量、成本,需要去找人来做这个项目的时候,一大堆的问题产生了:项目规模应该怎么估算呢?按照哪种方式来把项目工作进行细分呢?时间安排应该怎么才算合理呢?我需要用一个什么文档才能把这件事情说清楚呢?直到这个时候,我才对研究项目管理中的各种理论视为一件趣事,因为我必须找到一种理论来为行动进行指导,我必须表现出专业的样子!
无论学哪个技术,均是项目为先!无论怎么强调项目的重要性都不为过。因为只有项目,才是真正产生价值的东西。
项目为先,就意味着学技术是被动的,被项目推着走的。
为什么要研究内存数据库?因为项目需要!
为什么要研究android?因为项目需要!
为什么要研究缓存策略?因为项目需要!
为什么要关注分布式、集群?因为项目需要!
为什么要学习JBPM?因为项目需要!
。。。。。。
学完某种技术,马上应用到项目中,立马看到效果,你学习的兴趣就会越来越浓厚;相反,学完某种技术,长时间不用,很快就会忘光了!
项目中需要用到的技术,就是需要掌握的技术,项目中没有用到的技术,我只需要简单了解,等真正要用到的时候,再去学习也不晚!
哪里有这么多项目啊?你肯定会有这样一些问题。况且,某个项目,可能也只是涉及到其中某些方面的技术而已,为了项目的需要而学习,会不会有点片面而不完整呢?
如果你现在所在的公司,你正在做的项目,本身并没有用到太多新的东西,那么你就类似于一个代码搬运工,机械的搬运代码。或者项目本身很复杂,但是你干的活却用到的技术不多,那该怎么办呢?我的建议就是:问问自己,你真的学不到东西吗?你正在做的这个项目,难道真的没有任何东西可以难倒你了吗?你对目前要用到的技术已经非常熟练了吗?如果答案是否定的,那你就知道你的目标在哪里了;如果答案是肯定的,那我只能建议你换工作了!
很多人跟我说:“我现在想学点技术,整天看书,也看不出个什么东西来”,我的建议就是找个项目来做。而且在做项目的时候,应该侧重训练自己的分析和设计能力。
如果你目前还没有工作,刚刚毕业,工作都找不到(缺乏项目经验),你甚至都不知道项目是个什么玩意,那你真的应该好好寻找你的目标在哪里了(找个项目来做呗)!都说学Java好找工作,这话不假,其实学别的,也不难找工作,关键在于:项目经验!学哪门技术也逃脱不了项目经验。你想见识真正的项目是什么样子的吗?你想知道什么是项目经验吗?只要你有心想学项目开发,只要你能提出问题来,那么肯定可以找到答案,各种大门对你都是敞开着的!
如果你目前很无聊很清闲,那你可以自己给自己找点项目,找点自己感兴趣的、而且对以后找工作或换工作也有用的东西去做一做。这就每个人都不一样了,因为每个人的兴趣是不一样的。而且每个人目前掌握的技术水平也不一样。
绝大部分情况下,你需要专注于自己目前所做的项目。
为了项目而学习,确实有可能会导致有点片面。所以,才需要接触各种不同的项目。但是绝大部分情况下,一个综合性的项目,所涉及到的范围还是非常广的。项目越多,项目越难(有挑战性),你学习到的东西才会越多。抱着学习、迎接挑战的心态去做项目,你才会越挫越勇!你才会感谢你有这个机会接触到了能学很多东西的项目!你会感谢项目经理把一个很难的模块分配给你去完成!你会感谢项目经理把你一块叫去做需求(很多程序员觉得这做需求就是在扯皮,特别是跟*部门的人打交道的时候)!。。。。。。
学习项目,就是要学习其中的需求;学习如何从需求转换为软件的实现(过程);需求描述了一个什么样的目标;如何进行概念建模,如何进行分析和设计;实现过程中有哪些技巧。等等等等。。。。
你看到有的人刚去公司就能拿7000、8000元/月,觉得羡慕吗?为什么你只能拿3000、4000元/月的工资?或甚至连工作都找不到呢?你觉得差距在哪里呢?你是不是要填补这个差距呢?你准备在什么时候要拿到一个什么样的工资水平呢?
一句话,赶紧找项目来做吧!只有接触了项目,你才能明白自己的差距,你才能找到自己的目标,你才能找到自己学习的兴趣!