开发人员的必备技能

转自:葡萄城控件

 
 

对于刚开始学习软件开发的新人来讲,“必备技能”每每意味着一个长长的、标有重要度的学习列表,可是过长的列表一般会致使新人不知如何开始学习,压力倍增。程序员

本文尝试列举出最重要的几个技能,也指望经过此列表能给新人一个比较明确的学习重点和路径。面试

深刻学习一门编程语言

没有掌握任何一门编程语言,就不可能成为一名编程人员。算法

许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工做的须要。虽然我认为开发人员最终会学习多种编程语言,  但建议不要在开始时这样作。  由于同时学习多种语言只会致使混乱,也会分散学习其它技能的精力。相反,我建议深刻的学习一种编程语言,这样也会对使用这种语言编写代码感到很是有自信。sql

如何组织代码

新手程序员在完成编程语言的学习以后,或者最好在学习编程语言的同时,须要掌握的是如何正确的组织代码。数据库

经过Steven McConnell所著的《Code Complete》,能够帮助学习这个宝贵的技能。编程

组织代码意味着编写良好的、清晰可理解的、不须要大量注释的代码,由于代码自己是可自注释的。许多软件开发人员究其整个职业生涯都未曾具有这样的技巧,可是这个技能倒是判断一个软件开发人员的技术和能力的首要标准。良好的代码结构表明的不只仅是完成了编码工做,而是对编码事业的热衷奉献。数组

对于新手程序员来讲,简洁清晰且含义明确的代码,能让你轻松地经过面试。网络

提高代码结构已经成为了软件开发的重要部分,可是提高的过程倒是十分严格的。在这个过程当中,虽然不须要编写新的代码,可是却须要和团队成员一块儿花费大量时间来维护现有的代码。数据结构

面向对象设计

为了应对软件开发中的面向对象设计思想,开发人员也须要学习一种面向对象的语言。

面向对象设计是一种设计复杂程序的方法,它将代码分红了单独的类和对象(类的实例),这些类和对象封装了一些特定的功能。

咱们一直试图在软件开发中管理复杂性,用对象的方式思考就能帮助咱们作到这点。面向对象容许咱们跳出一堆关系繁杂的组件,来清晰的定义和设计一个复杂的系统。

如今已经有大量的功能性编程语言,可是在软件开发过程当中,你会发现那些最受欢迎的语言和模型都深受面向对象设计的影响。因此就须要深刻的理解类、继承以及如何使用,还有多态和封装。

数据结构和算法

软件开发人员应该熟悉如下的数据结构

  • 数组或向量
  • 链表
  • 堆栈
  • 队列
  • 树结构
  • 哈希
  • 集合

掌握并熟练运用以上的数据结构,能帮助开发人员清晰的定义、存取、管理数据。经过合理的数据结构和算法,许多困难的编程问题就能迎刃而解。

常见的算法有如下几种:

  • 排序算法
  • 查找算法
  • 图搜索算法
  • 动态规划算法
  • 模式匹配算法

善于利用好的算法,能起到事半功倍的效果。若是你对算法不够熟悉的话,就很难提出一个好的解决方案,这也就是须要咱们掌握算法的缘由。

事实上,  数据结构和算法也是软件开发中最有趣的领域之一。利用数据结构和算法来开发一个干净、简洁的解决方案,效果会很是好。

Gayle Laakmann McDowell的“Cracking the Coding Interview”书中介绍了有关算法和数据结构的全部知识。

学习这些知识是一个挑战,但倒是很是值得的。掌握其中的任何一个技能,都能让你远远超过其余人。这些知识也正是其它软件开发人员所不具有的。

开发平台及相关技术

应该至少对一个开发平台以及与之相关的技术或框架有必定的经验。

平台一般意味着操做系统(OS),但它也适用于与操做系统相似的其余抽象系统。例如,你多是专一于Mac或Windows操做系统的Mac开发人员或Windows开发人员,同时你也能够是专一于特定Web平台的Web开发人员。

具有某个特定平台的专业知识,不只仅意味着须要熟悉平台自己,还须要掌握开发平台经常使用的开发工具、模式和通用框架。

框架与技术栈

除了学习特定的编程语言和平台外,学习并掌握一个框架和技术栈也是很是重要的。

框架是一组用于在特定平台或多个平台上开发代码的库,它一般会使该平台上的常见编程任务更加容易。例如,大多数C#开发人员使用.NET Framework编写C#应用程序。.NET Framework由许多库和类组成,容许C#开发人员在更高层次的抽象中工做。

技术栈则与框架有点不一样,技术栈是一组一般包括框架的技术,一般一块儿用于建立完整的应用程序。技术栈使得建立应用程序变得更加容易,  由于它们提供了许多开发人员用于开发应用程序的常见范例,所以能够轻松共享知识。学习技术栈是很是有价值的,由于这意味着你拥有开发完整应用程序所需的全部技能。许多使用特定技术栈开发应用程序的公司,也在寻找熟悉该技术栈的软件开发人员。

数据库基础知识

目前, 主要有两种数据库技术:关系数据库和文档数据库。

如今的开发人员应该很熟悉关系数据库,但同时也应该对文档数据库有所了解。

在软件开发中,数据库一般用于存储应用程序的数据。

对于数据库,开发人员至少应该了解如下方面:

  • 数据库的工做原理
  • 如何执行基本查询来获取数据
  • 如何插入、更新和删除数据
  • 如何添加数据集

源代码管理

管理源代码是任何软件开发项目不可或缺的组成部分。在使用源代码以前,应该有一个网络来共享项目的全部文件。

源代码管理工具最基本的功能,是保留软件项目中对文件所作更改的历史记录。它还容许多个开发人员同时处理相同的代码,  并将这些处理代码融合在一块儿。

全部的开发人员都应该知道如何使用源代码管理工具,以便可以检查代码并从多个来源融合代码。

构建和部署

目前,大多数软件开发项目都有一些自动化的构建和部署系统。同时也有许多不一样的软件应用程序,来帮助团队自动化构建和部署任务。

构建

当你编写代码并将其合入到源代码管理系统中后,你想经过一些方法了解你合入的代码是否运行的很好,这就须要进行构建。构建会编译系统中的全部代码,并确保没有编译错误。一个复杂的构建系统还能够运行单元测试和用户测试,或者代码质量检查,并提供一些有关代码库当前状态的报告。

部署

部署系统负责将代码部署到产品机器上,或者将其部署到某种测试环境中。

虽然开发人员不必定要成为部署方面的专家,可是了解系统的基础知识以及构建和部署代码的过程也是很是的重要。

测试

如今,不少的软件项目都采用了所谓的敏捷流程,软件开发人员和测试人员合做的更加密切。代码质量成为了整个开发团队的责任,因此开发人员也须要对测试知识有必定了解。

对于开发人员来讲,至少应该熟悉如下的基本术语:

  • 白盒测试
  • 黑盒测试
  • 单元测试
  • 边界条件
  • 测试自动化
  • 验收测试

调试

对于软件开发人员来讲,常常会花费90%左右的时间,来弄清楚本身的代码为何不起做用了。不论你从事任何语言的代码开发,代码调试都是开发过程当中不可缺乏的一部分。

因此开发人员应该下定决心,认真的学习如何作到高效的调试代码。

方法论

一些软件开发团队在编写代码并完成他们的项目时,都遵循着一些方法论。因此开发人员至少应该熟悉诸多最多见的软件开发方法论中的基本几种,这里要说的就是瀑布开发和敏捷开发。

总结

尽管本文中列举的软件开发人员应该了解的知识不少,其中不少知识也许正是你所不了解,可是请不要沮丧。咱们要作的就是认真的补充这些知识,不断的提升本身。

开发技能可以保证咱们开发任务的顺利进行,开发工具则能很好的提升开发效率。葡萄城控件一直致力于为广大.NET平台开发人员提供高品质的开发工具产品。

原文连接:https://dzone.com/articles/the-technical-skills-you-need-to-have-as-a-softwar

转载请注明出自:葡萄城控件

相关文章
相关标签/搜索