【来信】
贺老师:
您好,我是一名13年刚刚毕业的大学生。先说说我的经历:2012年11月的时候开始在学校跟老师学习了JavaSE和JavaEE以及三大框架。之前也有C/C++基础,过了二级C。之后13年5月份来北京实习,面试了一家公司,也就是现在的公司,一直做android开发。
现在说说我的困惑:通过几个月的开发,越来越感觉做java没意思了,每天堆代码,了解API,一直处在上层应用。而且我在网上又看到程序员吐槽java如何如何的不好,写的代码越来越臃肿,性能也不好,java程序员只能做一辈子码农,好多java程序员都转C++。并且程序员吃青春饭的。做不了架构师和管理(路很窄),就等着被淘汰之类的话。
看到这些我就动摇了。感觉想学C++了(我基础还不错,C++ primer Plus看完了),因为C++程序员工资高,越老越好,靠经验吃饭,而且一般会C++就会C,可以做Linux开发系统软件,可以写底层。但是网上又有人说C++快没落了,学C++坑太多学习周期长,MFC也淘汰了,研究C++不如学其他语言如go语言。
我知道我是个新手,爱讨论语言的优劣性,但是我就想知道学java好还是学C++好,哪个有前途(钱途),不受年龄束缚,越老越吃香。
希望老师指点一下我这个还在争论语言优劣性的菜鸟。我该怎么办?我该学什么?接下来的路该怎么走,求老师指点迷津。
【回复】
你好:
你所提的问题是一个很简单的问题,也是一个说不清楚的问题。其实唯一可以清楚的事情是,就在语言上纠结,你也清楚,真的没有必要。
关于java,关于C++,你列举了很多别人说,我想问(不客气了哈):你怎么看?如果凡事都是将收集到的观点堆在一起,以至于将别人的吐槽也当作决策依据,这个迷津,我没法指点,或者说,我不敢指点。无论我给你什么样的“支持”,都将见证我的错误。
我想说的是,你需要有自己的观点,需要有独立的思考了。如果以前未曾有过,从现在开始,有意地培养。Java和C++的优劣你已经清楚,凡事都有黑白两面,你需要结合你的处境看问题,得出自己的结论。说java程序员做不了架构师和管理,这个依据是什么?Java程序员转型后能做的事还多着呢。C++程序员靠经验吃饭,Java程序员难道不也是吗?每一个这些所谓观点,都可以拿出众多的正例说其存在,也有同样多的反倒说明净是瞎扯。抛开具体事例论证其可能性,也是“一切皆有可能”。你必须从你的实际出发,去考虑这些观点。
还有一个事实是,这两种语言都有一天会都遭遇淘汰的,而新的语言市场又一时还建不起来,况且新的语言也会被淘汰的。所以,抛弃那种凭某种语言通吃天下的想法。选择哪个都可以是越老越吃香,选择哪个都可以是只能吃青春饭。
由于你已经在工作,我提倡在工作中学习,最好就结合现在的工作学(请参考《 在工作中学习》和《 在职人士,围绕工作开展学习更实在》)。你不必再用那种类似学校的学习,为学而学了。至少,你的表述中,我感觉到你所说的C++,仍然还是语法层面的C++,而不是工程实践中的C++。
结合工作实际的学习,要学什么?从技术上,着重工程方法、质量保证、需求分析(我感觉你求学的经历和现在的工作状态,算法能力不提也罢,也并不是所有技术工作都需要很强的算法能力);从管理角度,生产流程、人员组织、进度、成本,都可以是需要关注的问题。这些问题不必专门有人教,也不会有人专门去教,但要自己留心,做个有心人即可。作为职场新人,多操一些“闲心”(不见得要干涉别人多管闲事甚至添乱),还是可以的。可以看一些相关的书,结合工作的体会,你可以有学生时代不一样的感受。在工作中,积累对技术的感觉,对行业的认识,积累自己的人脉和影响力,塑造自己的敬业精神和扎实做事的工作作风,这是你现在最该学的东西。
贺老师:
您好,我是一名13年刚刚毕业的大学生。先说说我的经历:2012年11月的时候开始在学校跟老师学习了JavaSE和JavaEE以及三大框架。之前也有C/C++基础,过了二级C。之后13年5月份来北京实习,面试了一家公司,也就是现在的公司,一直做android开发。
现在说说我的困惑:通过几个月的开发,越来越感觉做java没意思了,每天堆代码,了解API,一直处在上层应用。而且我在网上又看到程序员吐槽java如何如何的不好,写的代码越来越臃肿,性能也不好,java程序员只能做一辈子码农,好多java程序员都转C++。并且程序员吃青春饭的。做不了架构师和管理(路很窄),就等着被淘汰之类的话。
看到这些我就动摇了。感觉想学C++了(我基础还不错,C++ primer Plus看完了),因为C++程序员工资高,越老越好,靠经验吃饭,而且一般会C++就会C,可以做Linux开发系统软件,可以写底层。但是网上又有人说C++快没落了,学C++坑太多学习周期长,MFC也淘汰了,研究C++不如学其他语言如go语言。
我知道我是个新手,爱讨论语言的优劣性,但是我就想知道学java好还是学C++好,哪个有前途(钱途),不受年龄束缚,越老越吃香。
希望老师指点一下我这个还在争论语言优劣性的菜鸟。我该怎么办?我该学什么?接下来的路该怎么走,求老师指点迷津。
【回复】
你好:
你所提的问题是一个很简单的问题,也是一个说不清楚的问题。其实唯一可以清楚的事情是,就在语言上纠结,你也清楚,真的没有必要。
关于java,关于C++,你列举了很多别人说,我想问(不客气了哈):你怎么看?如果凡事都是将收集到的观点堆在一起,以至于将别人的吐槽也当作决策依据,这个迷津,我没法指点,或者说,我不敢指点。无论我给你什么样的“支持”,都将见证我的错误。
我想说的是,你需要有自己的观点,需要有独立的思考了。如果以前未曾有过,从现在开始,有意地培养。Java和C++的优劣你已经清楚,凡事都有黑白两面,你需要结合你的处境看问题,得出自己的结论。说java程序员做不了架构师和管理,这个依据是什么?Java程序员转型后能做的事还多着呢。C++程序员靠经验吃饭,Java程序员难道不也是吗?每一个这些所谓观点,都可以拿出众多的正例说其存在,也有同样多的反倒说明净是瞎扯。抛开具体事例论证其可能性,也是“一切皆有可能”。你必须从你的实际出发,去考虑这些观点。
还有一个事实是,这两种语言都有一天会都遭遇淘汰的,而新的语言市场又一时还建不起来,况且新的语言也会被淘汰的。所以,抛弃那种凭某种语言通吃天下的想法。选择哪个都可以是越老越吃香,选择哪个都可以是只能吃青春饭。
由于你已经在工作,我提倡在工作中学习,最好就结合现在的工作学(请参考《 在工作中学习》和《 在职人士,围绕工作开展学习更实在》)。你不必再用那种类似学校的学习,为学而学了。至少,你的表述中,我感觉到你所说的C++,仍然还是语法层面的C++,而不是工程实践中的C++。
结合工作实际的学习,要学什么?从技术上,着重工程方法、质量保证、需求分析(我感觉你求学的经历和现在的工作状态,算法能力不提也罢,也并不是所有技术工作都需要很强的算法能力);从管理角度,生产流程、人员组织、进度、成本,都可以是需要关注的问题。这些问题不必专门有人教,也不会有人专门去教,但要自己留心,做个有心人即可。作为职场新人,多操一些“闲心”(不见得要干涉别人多管闲事甚至添乱),还是可以的。可以看一些相关的书,结合工作的体会,你可以有学生时代不一样的感受。在工作中,积累对技术的感觉,对行业的认识,积累自己的人脉和影响力,塑造自己的敬业精神和扎实做事的工作作风,这是你现在最该学的东西。
至于语言,也就真的不是一件很要紧的事情了。你在Java上的积累应该还远远不够,可拓展的空间还有很大。换了语言,但用同样的心态和做法,仍然会感到没意思。当你真的能够抛开语言层面的思维,能够自如地开展工作时,换语言是用不着下大决心,而是有段时间的尝试,或许需要点努力,实现转换并不难。
工作是你必需的选择,也是体现你价值的地方。在工作中多看到自己的进步,你会更快乐,不要让负面的情绪统治着你。码农、青春饭、挨踢之类,可以有另外的解释,看你如何看待这个问题,也看你如何去行动。
就提这些建议,请用你自己的思维做出判断。不要迷信任何人给你的指教,包括我的说辞,这样你才可以找到自己。
==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==|
|== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|
======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======