我是帮助软件开发人员开发除技术技能之外的“软技能”的坚定支持者。不可否认:技术技能很重要。
我的意思是,如果您实际上不能编写代码和开发软件,那么您学到的所有软技能都不会真正帮到您。也许您会成为一名的项目经理,而不是一名的软件开发人员。
如果您正在阅读本书的这一部分,那么我假设您有兴趣成为一名软件开发人员,或者成为一名更好的软件开发人员,让我们谈谈您需要了解的技术技能。
一种编程语言
我认为好从这个开始,不是吗?
真的不懂编程语言就不能成为程序员-你知道我的意思吗,
我们将在巧妙地命名为“要学习的编程语言”一章中讨论选择要学习的编程语言,请不要再强调这一点。
我很快会说, 选择学习哪种编程语言 并不像您认为的那么重要。
让我们谈谈为什么我建议只从一种编程语言开始,而不是尝试学习阳光下的一切。
许多刚开始的程序员试图通过一次或多次学习几种编程语言来对冲自己的赌注,才尝试担任软件开发人员的份工作。
我认为您终应该学习一种以上的编程语言,但 我建议不要提前使用 它,因为这只会导致混乱,并且会将您的精力从您需要学习的许多其他技术技能中转移出来。
我建议您 深入学习,并专注于学习单一编程语言的来龙去脉,以便对使用该语言编写代码的能力充满信心。
还记得我们在决定要成为什么样的软件开发人员时如何谈论尽可能具体的事情?
这就是这里的想法。
如何构造代码
在学习了一种编程语言之后,或者好是在学习它的我坚信,您需要知道的是如何正确地构造代码。
结构化代码是什么意思?
我的意思是编写 ,清晰,可理解的代码,因为代码本身是可交流的,不需要大量注释。
许多软件开发人员在整个职业生涯中都没有学习此技能,这是不幸的,因为这是我以及其他许多人判断软件开发人员的技能和能力的主要方式。
良好的代码结构显示出对工艺的奉献精神,而不仅仅是完成工作。
结构化代码确实是软件开发中的艺术部分,但也很关键,因为您和您的必须与您的代码一起工作的同事将花费大量时间维护现有代码,而不是编写新代码。
就像我说过的那样,我不会在本书中讨论如何正确地构建代码,因为我已经为您提供了很好的资源, 您应该从一开始就努力学习如何编写优质,简洁的代码。 而不是事后学习这项技能。
我可以保证,您是初学者,也可以编写出清晰,简洁,易懂的代码来表达其在结构本身中的含义,几乎所有看到您的代码的面试官都将 假设您是有经验的人士。
在某种程度上,您将成为,或者至少在将来会成为,因为您将把这个职业视为一种职业,而不仅仅是一份工作: 一个真正的工匠的标志。
面向对象设计
这是值得商bat的,尤其是在您学习的不是面向对象(OO)的程序语言时,在软件开发界,有 足够的人从OO设计的角度来思考,您需要确保自己理解它。
面向对象设计 是一种设计复杂程序的方法,该程序将它们分解为单独的类或对象(类的实例),这些类或对象封装了功能并具有特定的角色和职责。
在软件开发中, 我们始终试图管理复杂性。
以对象的方式思考有助于我们做到这一点,因为它使我们能够从一堆相互作用的组件中定义和设计一个复杂的系统,而不是试图从整体上解决整个复杂性。
当今有许多功能性编程语言, 在软件开发中可以找到的流行的语言和模式,不是全部,也仍然会受到面向对象设计和分析的严重影响(不是完全)。
您应该对类是什么,继承的不同类型是什么以及何时使用它们有一个很好的了解,并且应该理解诸如多态性 和封装之类的术语 。
算法和数据结构
如果您修读传统的学院或大学课程来获得计算机科学学位,那么这将是您所学或将学到的大部分内容。
算法是解决各种计算机科学/编程问题的常用方法。
例如,有几种算法通常用于以编程方式对事物列表进行排序。这些排序算法中的每一个都具有关于速度,内存大小要求以及所处理的理想数据类型的不同属性集。
计算机科学领域中有许多这样的算法,了解如何编写自己 的这些算法的变体 以解决在解决实际编程问题时可能遇到的棘手问题也 很重要。
通常,擅长算法可以使一个开发人员在一个小时内解决问题,这可能需要另一位开发人员花费几天的时间才能弄清楚。
除非您熟悉算法并精通算法,否则您 甚至都不知道那里已经存在一个优雅的解决方案。仅出于这个原因,我认为这是一项宝贵的技能。
数据结构属于相似的类别, 并与算法结合使用。
所有软件开发人员都应该熟悉几种数据结构,包括:
· 数组或向量
· 链表
· 堆栈
· Queue列
· 树木
· 散列
· 套装
通过很好地掌握数据结构和算法,您可以轻松而优雅地解决许多困难的编程问题。
刚开始编程时,我真的很擅长数据结构和算法,因为我大多是自学成才。