想成为程序员,这些技能不能少

欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~

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

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

深入学习一门编程语言

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

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

如何组织代码

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

通过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%左右的时间,来弄清楚自己的代码为什么不起作用了。不论你从事任何语言的代码开发,代码调试都是开发过程中不可缺少的一部分。

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

方法论

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

总结

尽管本文中列举的软件开发人员应该了解的知识很多,其中很多知识也许正是你所不了解,但是请不要沮丧。我们要做的就是认真的补充这些知识,不断的提高自己。

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

相关阅读:

是什么让C#成为最值得学习的编程语言

从Visual Studio看微软20年技术变迁

C#开发人员应该知道的13件事情

Visual Studio 2017正式版发布全纪录

时间: 2024-11-08 16:41:01

想成为程序员,这些技能不能少的相关文章

程序员必备技能

1.分享 尽可能地使用开源,并且如果有能力的话也可以把自己的成果分享给大家.整个社会的智慧结晶肯定比一些大公司自管自闭门造车要好. 2.公平的心态 不要以为你的选择就是唯一能奏效的,试试其他技术.框架.方法和建议,也许其他的选择比你原先的好也未可知.要用开放的心态去对待任何方法和抉择. 3.不可攻击他人 如第2条所言,不要因为别人恰巧使用的是.Net.Java或PHP这些技术就随意攻击他们(我在这方面有过教训).有时,这些你看不上眼的技术或许要比你想象的更有用.只要你怀着一种平和的心态,你就可以

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作

想讨好程序员?在他面前开产品经理的玩笑就对了

很多人都觉得软件工程师们是一群聪明绝顶但装模作样的家伙,通常身边有这种朋友,大家心里都是又敬又惧又恨啊! 但其实要让他们把你当自己人倒也不难,先赢得他们的尊重即可.以下提供「内行人」的七大绝招,让软件工程师们对你另眼相待! 第一招:发送纯文字电子邮件 工程师们不欣赏内容繁琐又花俏的电子邮件,有人喜欢加上一堆修饰用语.花俏字体格式来丰富邮件内容,这种图文并茂的风格不会得到工程师青睐的!他们要看的是简洁有力的内容,最好是类似程序用语的写法,如果你想要加粗什么关键字,就在**关键字**两边加上星号表示

程序员必备技能——怎样快速接手一个项目

作为一个程序员,我们很少能从头到尾参与一个新项目的开发.如果你经常开发的是新项目,那你真是太幸福了. 更多的情况是半路进入一个项目组进行开发,或者是有其他同事离职了,之前由他维护的系统转交给你维护. 还有一种情况就是领导不知道从哪里弄过来一个系统和一堆文档,然后就直接就把系统交给你了维护了. 遇到以上几种情况我们怎样才能快速熟悉上手项目,应对生产问题呢?下面是我自己在工作中的一点总结,希望能对大家有所帮助. 资料要要全 当你接手一个新项目(别人的项目)的时候,你要第一时间向把项目移交给你的人要到

论理想的程序员

理想的程序员心眼儿不坏(他们从来都不是办公室政治的宠儿,是一群单纯明亮快乐的手艺人),有天真烂漫的好奇心(他们的眼睛里经常闪着「哇,这个是怎么做到的!」),永远精益求精(他们的口头禅是「我再研究一下」),还乐于分享(他们活跃于GitHub.各大问答社区和你的身边,舍得将宝贵时间用于帮助新手).是的,他们不需要被管理,只需要给一个大的方向,总能回报以意想不到的结果. 理想的程序员与平庸的程序员只有一墙之隔.两者的差距只有6个一点点,而人与人的差距,正是在这日积月累的一点点中,被永远拉开了.有意思的

【经验分享】-PHP程序员的技能图谱

一.技术知识积累作为参与工作一定年限的程序员,最重要的就是静下心来把遇到的和遗漏的知识点记录下来,做好学习和总结的准备.学习方面,除了看书上网查资料之外,实践也是非常重要的一点,很多不懂的或者不明白的点,可以本地或者云服务器自己动手搞搞demo,很快就能让你印象深刻了,这些实践尝试也可以通过GitHub来记录.总结方面,相信很多程序员都有写技术博客的习惯,我也有,但是不多.个人感觉最方便的还是用上各种云笔记软件,这样效率很高,也可以在平时比较方便地查看,闲下来的时候可以像刷微博刷知乎一样去刷自己

程序员必备技能:如何画好架构图?

架构图分类 搜集了很多资料,分类有很多,有一种比较流行的是4+1视图,分别为场景视图.逻辑视图.物理视图.处理流程视图和开发视图. 场景视图 场景视图用于描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计,通常由用例图表示. 逻辑视图 逻辑视图用于描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系 统如何构建的过程,通常由UML的组件图和类图来表示. 物理视图 物理视图用于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可    计算机器节点上

程序员小技能及技巧

好用的软件 1.Clover 在WIN7和winxp系统可以使得我的电脑具有chrome浏览器多网页的标签功能,非常方便. 2.Everything 搜索利器,搜索速度超快,非常好用 3.FileSearchy Pro 可以搜索文件内容的软件,在编程序的时候,如果需要搜索某个函数声明在哪个头文件,可以使用该文件搜索头文件目录. 4.wise folder hider 可以将系统的文件或文件夹隐藏掉,需要使用密码打开该软件然后访问隐藏的文件和文件夹,你懂得! 5.Altrun软件 可以将系统的软件

约会倍增术(必背要点)之程序员必备技能

第一章 女人不是理性的动物 不要认为女人需要的会和你一样. 记住这是生物遗传造成男性和女性思维的差异. 不要让它困扰你(几乎99.9%的男人会困惑于此),而应当学着利用它,将了解它作为你的优势. 相比于相貌.金钱和权利,女人更在意的是你给予她们的感觉. 如果你能想到这点,那么你也会试图给予女人她们期待得到的感觉. 通常的情况是,当男人没有被女人的身体吸引住时,女人是无法左右他的感觉的. 对我们来说幸运的是,女人并不和男人一样.男人在一开始和女人接触时就可以左右她的感觉. 男人可能不高,不帅,也不