1411609602260097

Fresh out of school, you step into the workplace carrying a diploma still reeking of ink, and immediately get a rude awakening from unwritten rules and all kinds of trivial daily affairs. Such stories are all too common, and programming work is no exception.

Few students are 100% prepared for their first real job. If you don't want to be one of them, learn the following 10 basic skills that you can pick up without hand-holding:

1. Version Control System (VCS)

VCS is perhaps the biggest oversight in computer science courses. These courses only remember to teach how to write code, but often forget to teach students how to manage code. Every programmer should know how to effectively create a repository using Git or Subversion, edit and commit code, branch and merge, and understand project workflows.

2. Learn to Write

As a programmer, you don't just write code. You also need to write project release notes, commit messages for version control, and bug reports in the system. These and many other places require clear and effective written communication—but computer science rarely emphasizes this skill.

3. Regular Expressions

Regular expressions are a language in themselves, and every modern programmer should be proficient in them. Every modern language supports regular expressions or has a related standard library. If the code needs to verify that a string contains 5 characters, 1 dash, and 1 digit, you should be able to immediately write /^[A-Z]{5}-\d$/.

4. Using Libraries

It's already 2014, so no one needs to use regular expressions to extract a hostname from a URL. Because every modern programming language has a standard library that performs common functions.

Programmers need to understand that code that has been developed, tested, and debugged is usually better than code they write themselves. More importantly, code that doesn't need to be written is much faster to implement.

5、SQL

Many people learn SQL on the job. How could databases be an elective course? Is there anyone who doesn't use a database?

The era of storing data in flat files is over. Everything goes in and out of databases, and SQL is the language for storing and retrieving data. It's a declarative language, not a procedural one, so using it to solve problems requires a new way of thinking. Every programmer should understand the basics of database normalization and be able to perform SELECT (including INNER and OUTER JOIN), INSERT, UPDATE, and DELETE.

6. Proficiency with IDEs, Editors, and CLI Tools

A carpenter who only knows how to use a saw will never complete an apprenticeship, so it's astonishing that computer science graduates only know Notepad or pico. Programming tools help manipulate code and other data, making a programmer's life easier. So every programmer should know how to use the command line, shell scripts, find, grep, and sed.

7. Debugging

Every programmer should know how to debug a program using an interactive debugger or by sprinkling output statements in the code. The ability to track down problems through stepwise refinement is extremely important.

8. Defensive Programming

Errors are inevitable, even for star programmers. Loss of control is the norm in the world, and errors are not surprising. Defensive programming is exactly about understanding this fact. If things never went wrong, we wouldn't check whether a file opened successfully, wouldn't check whether a customer ID is a valid number, and wouldn't need to test whether code runs correctly.

Programmers need to know that compiler warnings are useful tools that make our lives more comfortable, not nuisances to be avoided. Every programmer should know why every PHP program should start like this:

set_error_reporting(E_ALL)

Every Perl program should include these statements:

use strict; use warnings;

9. Team Collaboration

Few programming jobs let you work alone. If you do it often, your intellect will suffer and your performance will weaken. Your code must interact or mix with others' code. No matter how talented a programmer is, if they can't collaborate with others, they will negatively impact the project and quickly become a burden to the organization.

10. Leveraging Existing Code

In school, every assignment was a new project. But the real world isn't like that. For someone just starting work, the first task they receive is often fixing a bug in the code. Then, they add a small feature to an existing system based on the existing codebase. Designing new code is something that happens months later, if you're lucky.

Original source: http://www.36kr.com/p/212678.html