入门 IT 行业,该具备哪些技能?

  对于刚开始进入IT的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径。

  深入学习一门编程语言

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

  许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工作的需要。虽然我认为开发人员最终会学习多种编程语言, 但建议不要在开始时这样做。

  因为同时学习多种语言只会导致混乱,也会分散学习其它技能的精力。相反,我建议深入的学习一种编程语言,这样也会对使用这种语言编写代码感到非常有自信。

  如何组织代码

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

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

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

  方法论

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

  总结

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

  转载文章和图片均来自公开网络,版权归作者本人所有。


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验七作业

Part 1:验证性实验 将line29&#xff1a;for(i0;i<N;i)改为while(!feof(fp)) // 从文本文件file1.dat中读取数据&#xff0c;找出最高分和最低分学生信息&#xff0c;并输出在屏幕上 #include <stdio.h> #include <stdlib.h>#define N 10// 定义一个结构体类型…

块级格式化上下文(Block Formatting Context)

CSS块级格式化上下文是块级盒子的一种能力&#xff0c;这种能力并不是直接通过css属性声明而获得的&#xff0c;而是添加css的一部分相关属性之后自动获得的能力&#xff0c;也就是说没有一个明确的属性就是生成块级格式化上下文的。 块级格式化上下文的能力就是让具有该能力的…

前端性能优化方法总结

一个网站前端性能的好坏很大程度上影响了用户愿不愿意使用访问这个网站&#xff0c;因此对前端进行性能优化是个很重要的事情。  对于前端性能优化这个问题&#xff0c;主要学习自yahoo前端性能团队总结的35条黄金定律总结&#xff0c;觉得很全很赞&#xff0c;做个学习总结和…

Akka笔记–演员介绍

过去做过多线程的任何人都不会否认管理多线程应用程序有多么艰辛和痛苦。 我说管理是因为它一开始很简单&#xff0c;一旦您开始看到性能改进&#xff0c;它就会变得非常有趣。 但是&#xff0c;当您发现没有一种简单的方法可以从子任务中的错误或难以发现的僵尸错误中恢复时&a…

Java英雄:丹·艾伦

“ Java英雄 ”系列休息了很长时间。 老实说&#xff0c;我想即使有很多人想在这里收录&#xff0c;它也可能会以虚无收场。 其中之一是丹。 我第一次要求他捐款已经将近一年半了&#xff0c;与此同时发生的一切&#xff0c;让我不再有任何答案就让我安心了。 但是以下内容在Ja…

Java-Class-I:java.util.List

ylbtech-Java-Class-I&#xff1a;java.util.List1.返回顶部 1.1、import java.util.ArrayList;import java.util.List; 1.2、List<Integer> newList new ArrayList<Integer>();newList.add(3); 2、 2.返回顶部1.1、import java.util.*;public class Test{public …

推荐:个人时间跟踪工具 ManicTime

在《个人管理 &#xff0d; 目标管理之前&#xff0c;你会时间管理吗》中我介绍的时间管理三阶段之一“对时间的实际去处进行记录”时说过现在有很多时间管理工具&#xff0c;也有人希望我介绍一下我使用的工具&#xff0c;那么我就利用中午休息时间&#xff0c;马上给大家介绍…

SQL Server 2005怎样进行性能排错

很少会有偶然的性能下降。设计不良的数据库或工作负载配置不正确的系统会经常导致性能问题。管理员需要能预先阻止或最小化问题的影响&#xff0c;当管理员遇到问题时&#xff0c;应该诊断问题并采取正确操作来修复问题。本文提供了按部就班的指导&#xff0c;通过使用可用的工…

JVM PermGen –您在哪里?

这篇文章介绍了JVM内存结构的一些基础知识&#xff0c;并快速窥视了PermGen&#xff0c;以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程&#xff0c;魔术始于java命令。 像任何OS进程一样&#xff0c;它需要内存才能运行。 记住– JVM本身是…

python6-函数

转载于:https://www.cnblogs.com/WIU1905/p/11101249.html

Windows Phone 7.1 “芒果” SDK Beta 下载地址

Windows Phone 7.1 “芒果” SDK Beta 今天早上发布&#xff0c;第一时间下载体验。功能果然激动人心。 下载地址&#xff1a; 离线ISO请点我&#xff0c; 在线安装请点我。转载于:https://www.cnblogs.com/finehappy/archive/2011/05/25/2056849.html

Windows系统安装 ffmpeg

下载及解压 ffmpeg官方下载地址&#xff1a;https://ffmpeg.org/download.html 下载好后将其解压至你想保存的位置中。 环境变量设置 打开Windows设置&#xff0c;在搜索框输入&#xff1a;系统高级设置。 新建环境变量&#xff0c;并输入bin目录具体位置。 安装检查 按住 w…

Java黑科技之源:JVMTI完全解读

Java生态中有一些非常规的技术&#xff0c;它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。 形象地说&#xff0c;JVMTI是Java虚拟机提供的一整套后门。通过这套后…

常见的CSS布局

各种常见的CSS布局 在工作中会经常用到很多的布局方式&#xff0c;这里总结一下所遇到的布局&#xff0c;会持续更新。 悬挂布局 实现这种布局的方式有很多&#xff0c;这边主要挑两个&#xff0c;如下&#xff1a; 方式一&#xff1a;使用浮动和块级格式化上下文特性 这种…

OSCP-Kioptrix2014-2 漏洞利用

pChart 2.1.3 文件包含漏洞 搜索漏洞查看漏洞理由代码:hxxp://localhost/examples/index.php?ActionView&Script%2f..%2f..%2fetc/passwd 之前的8080端口禁止访问,看看apache的配置:http://192.168.1.78/pChart2.1.3/examples/index.php?ActionView&Script%2f..%2f..…

CodeSmith注册机,支持5.2.2和5.2.1版

CodeSmith&#xff0c;不用说了&#xff0c;大名鼎鼎的代码生成工具。最早是免费的&#xff0c;后来收费啦这个注册机是针对目前新的CodeSmith 5.2.2的&#xff0c;支持Professinal和其他版本。使用的方法&#xff1a;安装原版的试用版本&#xff0c;从官方网站下载运行试用版&…

linux epoll,poll,select

epoll函数用法&#xff0c;还有点poll和select 1&#xff0c;LT的epoll是select和poll函数的改进版。 特点是&#xff0c;读完缓冲区后&#xff0c;如果缓冲区还有内容的话&#xff0c;epoll_wait函数还会返回&#xff0c;直到把缓冲区全部读完。 2&#xff0c;ET的epoll&#…

shell学习笔记1-文件安全与权限

1&#xff0c;创建文件的用户和他所属的组拥有该文件&#xff0c;文件的属主可以设定谁具有读、写、执行该文件的权限&#xff0c;根用户可以改变任何普通用户的设置。 2&#xff0c;一个文件一经创建&#xff0c;就具有三种访问权限&#xff1a;读&#xff08;可以显示该文件的…

最新70佳单页网站设计案例欣赏(上篇)

单页网站是指只有一个页面的网站&#xff0c;这种形式的网站曾经非常流行&#xff0c;现在依然有很多人喜欢。不过&#xff0c;并不是每个网站都适合做成单页&#xff0c;一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

Kubernetes 中文文档

Kubernetes 中文文档 如果想学习 Kubernetes 的小伙伴&#xff0c;可以参考如下文档学习&#xff1a; https://www.kubernetes.org.cn/docs 文档中详细讲解了 k8s 的设计理念&#xff0c;基本概念&#xff0c;常用命令等。 转载于:https://www.cnblogs.com/miracle-luna/p/1111…