If you want to become a programmer, you must have these skills

For newcomers who are just starting to learn software development, "must have skills" often means a long list of learnings marked with importance, but an overly long list usually causes newcomers to not know how to start learning, and the pressure is multiplied.

This article attempts to list the most important skills, and hopes that this list will give newcomers a clearer learning focus and path.

Learn a programming language in depth

It is impossible to become a programmer without mastering any programming language.

Many programmers try to learn several programming languages ​​at a time at the beginning of their studies in order to cope with the demands of their first software development jobs. While I think developers will eventually learn multiple programming languages, I would advise against doing so at the beginning. Because learning multiple languages ​​at the same time will only lead to confusion and distraction from learning other skills. Instead, I recommend learning a programming language in depth so that you can also feel very confident in writing code in that language.

How to organize code

What a novice programmer needs to master after learning a programming language, or preferably while learning a programming language, is how to properly organize code.

Learn this valuable skill with Code Complete by Steven McConnell.

Organizing code means writing good, clearly understandable code that doesn't require a lot of comments because the code itself is self-commentable. Many software developers have never had this skill throughout their careers, but this skill is the primary criterion for judging a software developer's skills and abilities. Good code structure represents not only the completion of the coding work, but the passion and dedication to the coding business.

For novice programmers, clean, clear, and well-meaning code makes it easy to pass interviews.

Improving code structure has become an important part of software development, but the process of improving is very strict. In this process, although there is no need to write new code, it requires a lot of time with team members to maintain the existing code.

Object Oriented Design

In order to cope with the object-oriented design thinking in software development, developers also need to learn an object-oriented language.

Object-oriented design is a method of designing complex programs that separates code into separate classes and objects (instances of classes) that encapsulate some specific functionality.

We've always tried to manage complexity in software development, and thinking in terms of objects helps us do that. Object orientation allows us to clearly define and design a complex system by jumping out of a bunch of complicated components.

There are a plethora of functional programming languages ​​out there, but in software development, you'll find that the most popular languages ​​and models are heavily influenced by object-oriented design. So you need a deep understanding of classes, inheritance and how to use them, as well as polymorphism and encapsulation.

Data Structures and Algorithms

Software developers should be familiar with the following data structures:

  • array or vector

  • linked list

  • stack

  • queue

  • tree structure

  • hash

  • gather

Mastering and proficiently using the above data structures can help developers clearly define, access, and manage data. With reasonable data structures and algorithms, many difficult programming problems can be solved.

Common algorithms are as follows:

  • Sorting Algorithm

  • lookup algorithm

  • Graph Search Algorithms

  • dynamic programming algorithm

  • pattern matching algorithm

Making good use of good algorithms can do more with less. If you are not familiar with algorithms, it is difficult to come up with a good solution, which is why we need to master algorithms.

In fact, data structures and algorithms are also one of the most interesting areas of software development. Leveraging data structures and algorithms to develop a clean, concise solution can work really well.

Everything you need to know about algorithms and data structures is covered in the book Cracking the Coding Interview by Gayle Laakmann McDowell.

Learning this knowledge is a challenge, but well worth it. Mastering any one of these skills can put you far above the rest. This knowledge is exactly what other software developers do not have.

Development platform and related technologies

There should be at least some experience with one development platform and the technologies or frameworks associated with it.

Platform usually means operating system (OS), but it also applies to other abstract systems similar to operating systems. For example, you might be a Mac developer or Windows developer focused on the Mac or Windows operating system, while you could also be a web developer focused on a specific web platform.

Having professional knowledge of a specific platform means not only being familiar with the platform itself, but also mastering the development tools, patterns and general frameworks commonly used in the development platform.

Frameworks and Technology Stacks

In addition to learning a specific programming language and platform, it is also very important to learn and master a framework and technology stack.

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

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

数据库基础知识

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

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

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

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

  • 数据库的工作原理

  • 如何执行基本查询来获取数据

  • 如何插入、更新和删除数据

  • 如何添加数据集

源代码管理

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

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

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

构建和部署

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

构建

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

部署

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

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

测试

现在,很多的软件项目都采用了所谓的敏捷流程,软件开发人员和测试人员合作的更加密切。代码质量成为了整个开发团队的责任,所以开发人员也需要对测试知识有一定了解。

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

  • 白盒测试

  • 黑盒测试

  • 单元测试

  • 边界条件

  • 测试自动化

  • 验收测试

调试

对于软件开发人员来说,经常会花费90%左右的时间,来弄清楚自己的代码为什么不起作用了。不论你从事任何语言的代码开发,代码调试都是开发过程中不可缺少的一部分。

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

方法论

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

总结

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

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

 

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

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326450261&siteId=291194637