Technical skills as a software developer needed

Once we are novice, it may be a bit difficult at the beginning. However, if you just become a professional software developer, then this article will contain some practical and easy to understand recommendations.

If you can not actually write code and develop software, then all the soft skills you learn you will not have much help. Perhaps you will become a good manager or managers, but not software developers. However, if you are reading this part of the book, I assume that you are interested in becoming a software developer - or better - so let's talk about you need to know technical skills .

Pick up skills package

Now, this is a topic tends to overwhelm many junior software developers, because you may feel a lot of things you need to know , or even difficult to know where to begin .

I will try to break it down into the most useful and most useful technical skills that most help you become a software developer .

This chapter is by no means an exhaustive list, a list of all the technical skills as a software developer may be required, but I try to list the necessary technology, and this gives an overview.

So, without further explanation, here a brief overview I think the most important technical skills.

A programming language

I think we'd better from the start, is not it?

I do not know the programming language can not really be the programmer - you know what I mean, right!

However, I will quickly say , choose which programming language is not as important as you might think .

Instead, let's talk about why I recommend starting with a programming language, rather than trying to learn everything under the sun.

Many novice programmers trying to learn a programming language or several before they try as a software developer to complete the first job to enrich themselves.

Though I think you should eventually learn more than one programming language, but I suggest not to do ahead of time, because it will only lead to confusion, and your energy will be shifted away from many other technical skills you need to learn.

Instead, I suggest you in-depth study and learn the details of a single programming language , so you can be confident in the ability to write code in this language.

Recommended books and articles:

I picked a few of the entry-level books and articles were recommended, more in-depth book so you can choose to purchase completion

How to structure your code

After learning a programming language - or better while learning it - I believe you need to know how the next thing is to build your code correctly.

Build the code what I mean?

What I mean is to write good, clear, understandable code that does not require a lot of comments, because the code itself is generic .

Many software developers without experience in learning the skills of the entire career, which is unfortunate, because this is the main way the software developer skills and the ability to judge me and many others.

Good code structure shows that the focus on the process, not just the job done.

Building code is actually part of the art of software development , but it is also very important because you and your colleagues must use code will spend more time maintaining existing code instead of writing new code.

I do not intend in this book describes in detail how to build the code correctly - like I said - I have provided a good resource for you, but you should be trying to learn how to write good from the start, clean code and than after learning this skill.

I can assure you, even if you are a beginner, if you can write good, clean, simple, understandable code, expressing its meaning in the structure itself, then any code to see your visitors will think you are an experienced professional .

To some extent, you will, or at least not just a job in the future on the road, because you will be coded as a profession, in

Recommended books and articles:

Object Oriented Design

This is controversial, especially if you are learning a non-object-oriented (OO) programming language, but enough software developers in the world would consider OO design, so you need to make sure you understand it .

Object oriented design is a method of designing a complicated procedure, these procedures will decompose them into a single class or object (instance of the class) that encapsulate the functionality and have specific roles and responsibilities.

In software development, we always try to manage complexity .

Think will help us do so, because it allows us from a bunch of interacting components in defining and designing a complex system, rather than trying to solve the whole complex as a whole according to the object.

Today there are many functional programming languages, but the most popular languages and patterns in software development, you will find still be affected by object-oriented design and analysis. .

You should have a good understanding of what class, what are the different types of inheritance - and when to use them - and understand polymorphism and packaging terms.

Algorithms and data structures

If you attend a traditional college or university degree in Computer Science program, this will be a big part of you will want to learn or to learn the content.

Algorithm is a common method to solve a variety of computer science / programming problem.

For example, there are several algorithms commonly used to programmatically sort a list of things. These sorting algorithms each of which has a different set of attributes, including speed, memory size requirements, and type over the data it processes.

There are many such algorithms in computer science to understand how to write their own variants of these algorithms to solve the thorny problems that may be encountered in solving the actual programming problem is important .

In general, familiar with the algorithm allows a developer to resolve the problem within an hour, which can take several days to figure out another developer.

Unless you are familiar with and are familiar with algorithms, or you do not even know that there is already a elegant solution . So, just for this reason, I think this is a valuable skill.

Similar data structures belonging to the category, and the algorithm used in combination.

All software developers should be familiar with several data structures, including:

  • Array or vector
  • List of links
  • Stack
  • queue
  • tree
  • Hash
  • Collection

By mastering data structures and algorithms well, you can easily and elegantly solve many difficult programming problems .

When I first started programming, I am very bad in the data structures and algorithms, mainly because I was self-taught.

Soon, it is clear how useful these skills in the real world programming is, because I met did not know how to solve the problem, and now the problem is very easy and fun.

In fact, I think this is one of the most interesting software development field . By solving a difficult problem and use data structures and algorithms to develop a clean, elegant solution is very effective.

Learn these things is a challenge, but well worth it. This is far more than you can let one of their peers skills. Most software developers are ill-equipped in this regard .

If you want to by companies such as Microsoft or Google interview, you definitely need to master this skill .

Recommended books and articles:

Development platform and related technologies

You should have some experience and mastery of at least one development platform or framework and related technical attendant.

Platform What does it mean?

Ah, usually it means that the operating system (OS) , but it can also be applied to other similar abstract operating system.

For example, you may be focusing on Windows or Mac developers developers Mac or Windows operating systems, but you can be focused on specific Web developer Web platform.

I do not want it boils down to the platform on exactly what is discussed - different people have different opinions - but for purposes of this discussion, I will define the platform for you to develop a specific environment, it has its own ecosystem and particularity .

Again, this is another I do not think you choose something so important things, like you things like choice .

Companies usually hire developers to develop a particular platform or technology.

If you have expertise in that particular platform, it will be easier to get work as an iOS developer.

Itself, as well as programmers in developing for the platform commonly used development tools, idiomatic, and generic framework which means familiar platform.

You might think that the choice of programming language determines the platform, but in fact rarely so .

Today, take C #. You can become and C # developers to write code for Windows, Mac, iOS, Android, Linux and even embedded systems.

So do not choose a language only; selecting a platform.

Framework or technology stack

In addition to learning a specific programming language and platform, I also strongly recommend learning a framework, or better yet, a complete development stack.

What is the framework?

What is the technology stack?

Frame only used to develop a set of code on a particular platform or more platform libraries . It is usually the common programming tasks on the platform easier.

Back to C # examples. Most developers use C # .NET Framework application written in C #. .NET Framework consists of many libraries and classes, and class libraries allows C # developers to work at a higher level of abstraction, because he does not have to completely reinvent the wheel each time you want to do something.

For example, a portion of the .NET Framework contains code for processing images. This code is written from scratch is very difficult, so the need to prepare the framework for the operation of the code in some way the image of C # developers is a huge benefit.

Technology stack a little different. Technology stack is a set of technologies, generally includes a frame, which are commonly used together to create complete applications .

MongoDB is a database technology.

Express.js Node.js is a framework for creating Web applications.

AngularJS is a front-end JavaScript framework for Web applications to create a user interface.

Finally, Node.js is used to develop a Web-based application running in JavaScript environment.

Technology stack to make it easier to create applications, because they provide a number of developers to develop generic sample application, so you can easily share knowledge, and to ensure that a specific set of technologies can work together.

Learning technology stack can be very valuable, because it means that you have all the skills needed to develop complete applications. Many have applications that use a particular technology stack developed by the company will be looking for software developers familiar with the technology stack and can be run immediately.

Knowledge of the underlying database

Although the database in the past few years has been a lot of changes, but I believe that the database will not disappear soon, so I think you should probably understand them, is not it?

In preparing this article, there are two main types of database technology : relational databases and document databases.

I want to say today, developers should at least be familiar with relational databases, and may also should have some understanding of the non-relational database.

In software development, databases are typically used for data storage applications.

Of course, some teams will have a dedicated database developer or database administrator (DBA), but that does not make at least understand the basics of your database.

At least, you should know:

  • How database work
  • How to perform basic queries to obtain data
  • How to insert, update and delete data
  • How to connect together the data set

In addition, you may want to learn how to use the selected platforms and / or frameworks to programmatically retrieve and store data from the code .

We expect most developers to write code that can interact with databases.

Recommended books and articles:

  1. Relational database

    In addition, MySQL's official documentation , writing is also very good, good English reader, can see.

  2. Non-relational databases

version control

Version control is an integral part of any software development project.

Back then, before we used version control, we will have all the project files to a network share, or we use the U disk or hard copy items back and forth to the code.

When at least in college, graduation project development and design, I always do.

However, when I was younger. I was stupid. You do not need to.

Today, almost every professional developer should know how to submit code version control, check the code, and want to merge changes from multiple sources .

The most basic level of version control allows you to keep a history of software projects in different files of your changes.

It also allows multiple developers to simultaneously process the same code and merge these changes together.

I will not detail here, but you should at least know how to use a version control system , and you should be familiar with most of the basic concepts of source code control.

Almost all professional software development team will use some kind of version control in today's software development.

Recommended books and articles:

  1. Super highly recommended "Git Tutorial" Text + Photo + Video.

Text + Photo + Video.

Relatively easy to understand

  1. marklodato "illustrates Git"

Build and deploy

Today, most software development projects have some automated build and deployment system.

There are several different software applications can help teams automate these two tasks that used to be manual, and remains so for some teams.

You ask what is built and deployed?

good question.

At least, the build system will compile all the code and ensure that no compilation errors.

Construction of the complex system may also run a test unit or user testing, QA run code, and provides about the current state of the code libraries some reports .

Deployment of the system will be responsible for deploying the code to produce some kind of computer or be deployed to a test environment.

You do not have to be absolute experts in these technologies, but at least to understand the basics of how these systems work and the process of building and deploying code is very important .

In general, the creation and maintenance of building and deploying systems actually the responsibility of a rapidly growing field, called DevOps (referred to as the developer operation).

However, this does not become you understand at least the basics of how to operate the process of excuses.

Recommended books and articles:

Jenkins Official Website

<< >> continuous delivery

test

In the past, developers do not have knowledge about testing.

We'll write a bunch of code and "thrown on the wall" to a group of testers, they will find a variety of errors in our code, we'll fix the error, that's it.

no longer.

There are so many so-called agile software project process (which we'll discuss more in the discussion of the method), software developers and testers must work more closely together.

** the quality is really the responsibility of the whole team - ** I think it's always been.

Having said that, you need to know about the test of knowledge.

You should be familiar with at least some of the basic terms, such as:

  • White-box testing
  • Black box testing
  • Unit testing (not a real test)
  • Boundary conditions
  • Test Automation
  • Acceptance Test

I assume you at least want to be a good developer - test them before your own code to others.

If you really want to be a professional, not just a hacker, it can not be negotiated .

debugging

Ah, many novice software developers will his dream hit the rock debugger.

Everyone wanted to write the code, right?

But no one wants to debug their code? Did you hear it?

Truth time.

As a software developer, you will spend about 90% of the time to determine the cause of your code can not run .

I know it's not glamorous. I know you just want to write new code all day, but the world did not do so.

If you use this method to test-driven development, you will probably spend very little time on the debugger, but no matter what you do, no matter how you try and get around it, you will have to learn how to debug your code or others of.

So, do not take on what they know of have to do random method, you should bite the bullet and learn how to effectively do this .

method

You need to know the list of things to do there? So scary!

If not, there's a - but I promise this is the last one.

While some software development team just start writing code and complete the work is completed, but most teams have some of their methods at least pretend to follow .

(By the way, please note: Do not expect any real follow their team claim to use software development methodology here I do not want to accuse me of cynicism or just a realist, and I happen to know a lot of people say they are doing like. such Scrum software development methodology, because they will hold meetings every day.)

Therefore, at least familiar with some of the most common essential basic idea behind the method of software development.

Today, I want to say these are the waterfall and agile development .

Most teams have claimed that they are doing agility. Agile itself is a very loose concept, but there are some practical and, I dare say, if you want to be able to talk about the conversation, you can say, and is suitable for Agile teams, you should pay attention to the ceremony.

We will discuss this in more depth in the chapter on software development methods.

Recommended books and articles:

overwhelmed? Do not

I know this is quite a lot of things, and I almost did not go in depth on most of these topics.

Now you may feel a bit overwhelmed, and you do not know most of these technical skills.

It's ok. You should not - unless you are already a professional software developer, in which case, you would be ashamed! (Just kidding I love you, though. You'd better look at the above-mentioned new skill - really .)

Guess you like

Origin juejin.im/post/5d00bf896fb9a07f0219f924