文档章节

开发人员的必备技能

葡萄城控件技术团队
 葡萄城控件技术团队
发布于 2017/05/10 10:05
字数 2674
阅读 1771
收藏 88
点赞 8
评论 5

对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。

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

深入学习一门编程语言

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

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

如何组织代码

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

通过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

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

© 著作权归作者所有

共有 人打赏支持
葡萄城控件技术团队

葡萄城控件技术团队

粉丝 321
博文 485
码字总数 692522
作品 13
西安
高级程序员
加载中

评论(5)

爱吃大肉包
爱吃大肉包
深表赞同
380121850Lee
380121850Lee
有点以偏概全,或者说,你这里的开发人员,指的是前端,或者更小范围的开发人员;
按照更加广义上理解的开发人员,
我要是学习的是C,为什么要求要面向对象;
代码组织、管理,我认为重要性不是放在前面的
数据库,并不是每个开发都会用到吧
最好还打了广告:alien:
葡萄城控件技术团队
葡萄城控件技术团队

引用来自“生活不作死便无味”的评论

作者你好,请问您的文章可以保存到本地分享给朋友吗,你
可以的(^_^)
生活不作死便无味
作者你好,请问您的文章可以保存到本地分享给朋友吗,你
种地瓜
种地瓜
路还很长啊
StuQ技能图谱

程序开发语言综述 前端工程师必备技能 大数据工程师必备技能 安全工程师必备技能 嵌入式开发必备技能.jpg iOS开发工程师必备技能 移动无线测试工程师必备技能 云计算工程师必备技能 微服务架...

牧师-Panda ⋅ 2016/10/29 ⋅ 0

IT职业技能图谱

运维工程师必备技能 程序开发语言综述 大数据工程师必备技能 云计算工程师必备技能 安全工程师必备技能 前端工程师必备技能 嵌入式开发必备技能 iOS开发工程师必备技能 移动无线测试工程师 ...

筱飞 ⋅ 2016/12/07 ⋅ 0

硅谷IT行业最热门职位总览,哪个能拿的工资最高

现在在硅谷,失业率就像是个笑话。为了争夺顶尖人才,很多公司都会提供更高的薪水来吸引高水准的开发人员。 这是湾区一家比较资深的猎头公司开出的价码,还有他们给的点评。 1.增强现实开发人...

ApplySquare ⋅ 2017/11/14 ⋅ 0

前端开发人员所必备的十大技能

前端开发的工作是要如何将自己的设计应用在网络上。它不同于网页设计,更关注于该网站将如何交互和浏览。前端开发布局,按钮和主要界面,使得它适用与网络。前端开发人员使用的开发平台如JavaS...

zoujiajun33 ⋅ 2016/12/14 ⋅ 0

IoT 101:IoT 开发人员入门指南

IoT 101:IoT 开发人员入门指南 IoT 开发人员如何快速开始开发 Anna Gerber 和Michelle Corbin 2017 年 10 月 30 日发布 获取最佳工具、培训和社区资源的每月集萃,帮助您开始开发自己的 Io...

Anna Gerber ⋅ 2017/10/30 ⋅ 0

开发人员、程序员与计算机科学家三者之间的区别

我经常使用这三个几乎可以互换的词,是的,甚至包括计算机科学家。毕竟,我们中的大多数人都拥有计算机科学学位,那这三者有什么不同呢?然而,最近我 发现这三者的特点在我脑海中愈发泾谓分...

jobBole ⋅ 2011/03/01 ⋅ 3

一个合格的程序员,需要哪些必备技能?

对于一个Java开发来说,编程技能毋庸置疑是很重要的。 但是,除了基本的编程开发能力,其他方面的能力也是体现一个程序员的能力的很重要因素。 比如,问题排查能力、线上运维能力、项目管理能...

⋅ 05/20 ⋅ 0

《Jquery实战》第3版:译者序 Frank Xu Lei

jQuery作为最流行的前端开发框架!是Web前端开发必备技能!我非常荣幸可以参与翻译《jQuery in Action》第3版,这是jQuery之父John Resig和jQuery基金会主席Dave Methvin强烈推荐的书籍。此书...

frankxulei ⋅ 2016/10/07 ⋅ 0

歌颂程序维护人员

本文是翻译,版权归原作者所有 原文地址(source):http://visualstudiomagazine.com/articles/2014/12/01/in-praise-of-the-maintenance-programmer.aspx 当然,构建新应用程序的开发人员是...

腊八粥 ⋅ 2014/12/23 ⋅ 21

做一个靠谱的软件测试工程师(二):进行有效地沟通

上一篇文章:做一个靠谱的软件测试工程师 在写上一篇靠谱文章的时候,王豆豆就计划再写一篇了,但依王豆豆的性格是不拖到最后一刻钟是不会开始写的,感觉王豆豆以后可以改名为王拖拖了,拖延...

资深Tester_王豆豆 ⋅ 05/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 34分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 43分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 10

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部