8

我是一名学习软件开发的学生,我觉得编程一般来说是一门过于宽泛的学科,无法尝试了解所有内容。要精通,您必须决定将学习和理解的重点放在哪些领域。某些技能组合相互协同,例如数据驱动的 Web 开发和 SQL 经验。但是,世界上所有的 win32 API 经验可能并不直接适用于 linux 开发。这让我相信,作为一个初级程序员,我应该在对软件开发的基本原则有了大致的了解之后,开始决定我想专攻的领域。

这真的是一个多部分的问题:

  1. 计算机编程和软件开发中的常见专业有哪些?
  2. 作为其他专业的基础和/或作为适销对路的技能,这些专业中的哪一个具有更长期的价值?
  3. 哪些技能组合相互补充?
  4. 是否有任何专业领域阻碍您发展其他专业领域的能力。
4

6 回答 6

21

Ben,几乎所有经验丰富的程序员仍然是编程的学生。当您是开发人员时,您永远不会停止学习任何东西。但是如果你真的开始你的职业生涯,那么你应该最不担心专业化的事情。您期望在该领域长期存在的所有 API、框架和技能都不会发生。技术似乎发生了很大变化,你应该足够灵活和灵活,可以学习任何东西。您在一个平台/api/框架上获得的知识不会消失。您可以将这些技能应用到下一个最伟大的平台/api/框架。

话虽如此,您应该停止担心未来并专注于基础知识。数据结构、算法分析和设计、编译器设计、操作系统设计是您需要的最低限度的东西。此外,你应该愿意在你职业生涯的任何时候回去阅读那些领域的书籍。这就是所有必需的。祝你好运。

对不起,如果我听起来像个大屁股顾问;但这就是我的想法。:-)

于 2008-08-20T02:20:32.873 回答
5

不要直接拒绝你的前提,但我实际上认为成为一名多面手在编程中是一个很好的职位。您肯定会在特定领域发展专业知识,但这很可能是个人兴趣或工作需要的产物。随着时间的推移,你能够跨语言和问题领域转移的东西是成为优秀程序员的核心。

于 2008-08-20T02:12:21.190 回答
3

我认为更重要的问题是:您最感兴趣的专业领域是什么?

一旦你知道了,就开始在那个领域学习吧!

于 2008-08-20T02:14:12.000 回答
3

我认为最伟大的技能是与时俱进,因为如果你的雇主能看到你的这种潜力,那么他们将是明智的,紧紧抓住。

也就是说,我建议您潜入您喜欢的领域。学习是由热情驱动的

由于我目前的工作是与互联网提供商合作,因此我发现网络知识特别有用。但有一天我想玩 3D 图形(不一定是游戏)。

于 2008-08-20T02:22:26.673 回答
1

尽可能深入地从一个环境开始,win32、.net、Java、Objective C……随便什么。

深入了解 X 的工作原理非常重要……这样您就可以将相同的概念翻译成其他语言或平台/环境,如果您愿意的话。

“是否有任何专业领域阻碍了你发展其他专业领域的能力。” 有点,但我认为没有什么是永久性的。

由于我自己相对较年轻(不到 4 年),我来自一个真正的 OOP 心态。我很少跳出 .NET,所以在接触嵌入式代码时,我很难从事一份工作。嵌入式程序员担心对象创建和继承的性能损失。我必须学习环境,严重的内存不足和缓慢的时钟时间,它们来自。那是成长的时期,我玩得更好,因为我非常了解我的领域。

我会说,如果您选择专攻市场和金钱的东西,您可能会很快筋疲力尽。如果你开始专门挑选你喜欢的东西。我喜欢 GUI 编程,讨厌服务器端的东西,我的朋友正好相反,但我们都热爱我们的工作。如果他必须做我的工作,而我必须做他的工作,我们都会因为无聊而发疯。

于 2008-08-20T08:29:15.560 回答
1

作为一名学生,我建议忘记您正在编程的内容并专注于软件过程本身。了解如何分析问题并提出正确的问题;学习每一种设计模式,并实际应用它们,以获得对面向对象设计的真正理解和欣赏;编写测试,然后编写尽可能多的代码以使测试通过。我认为真正学习的最佳方式是尽可能多地编写代码——语言和领域并不重要,浏览sourceforgefreshmeat寻找任何听起来有趣的项目并参与其中。重要的是理解软件工程的基础。

是的,这包括 C. 或汇编程序。这是更好地了解您的计算机如何工作以及您的高级代码实际在做什么的最简单方法。

最后,永远不要停止学习——面向服务的架构、控制反转、特定领域的语言、业务流程管理都显示出巨大的好处,因此要注意它们很重要——但是当你完成学习并加入劳动力大军时知道下一件大事会是什么吗?

于 2008-08-20T13:40:51.160 回答