Fresh out of school or self-taught? Here are a few things that you might not have learned but will need to know as a developer...

1. Debugging & finding errors

Let's start by getting one thing straight - you will spend a lot of your time searching for errors in the code, so you better get good at it. Here are a few strategies for finding and analysing problems:

Using a debugger (set break point, step through the code and watch variable data change)

Debug printouts

Assertions

Logging

Profiling

And here are a few strategies that will help you solve your problem:

General problem solving strategies: Understanding the expected behaviour Understand the problem Reproduce & verify the problem Check the revision history to understand why and when the problem appeared Describe your problem for someone - by articulating it you might understand the problem better

Strategies for solving complex / big problems: Try to find the root cause Isolate the problem Break it down in to smaller pieces, solve each one by itself



2. Version control system

Version control is a must, but it's unfortunately often not taught in school. As the name implies, version control system helps you have control of the changes in your source code. Here are a few reasons to use version control:

Makes collaboration so much easier

Makes what you did, why you did it and when you did it clear

Makes it possible to revert a change that you do not want to keep

Makes it possible to maintain multiple versions of a software

Makes it possible to view the difference between two versions

Makes it possible to experiment with new features without interfering with working code

Backup

Here are a few of the most common free version control systems:

git

SVN

CVS

Mercurial

Bazaar

3. How to find answers

Learning is a key part of being a developer and you will spend a lot of time searching for information and solutions online. Here are a few strategies that might help:

Try searching for alternative terms

Limit your search in time (e.g. the last year) to remove outdated information

Limit your search to specific sites (e.g. StackOverflow, MDN, etc...) to remove irrelevant results Google - Add the site-keyword to your search term, eg.: MDN: site:developer.mozilla.org StackOverflow: site:stackoverflow.com DuckDuckGo - Add the bang syntax to your search term, eg.: MDN: !mdn StackOverflow: !so



When you have found information online, be sure to take time to read it thoroughly. It's also a good strategy to test whatever you are researching outside your program: open a second instance of your IDE and write a program that only do the stuff you want to know / understand / test.

4. Communication & teamwork

Communication might not be a typical strength of programmers but it's essential for anyone striving to be a successful developer and appreciated team member.

5. Standard data structures and primitive types

You might have read a bit about the standard data structures and primitive types in school but I bet you didn't understood just how important they really are.

Here are a few of them, be sure to know what each of them are good for and when to use them:

Standard data structures List Array Stack Hash table / Dictionary Linked List Set Queue

Standard primitive types Integers (int, byte, short, long - signed and unsigned) Floating point (float, double) String Character Boolean Decimal



6. (How to) refactor your code

School might have taught you how to write code, but refactoring (restructuring existing code without changing its external behaviour) is just as important. Over time your code will become inefficient, buggy, hard to extend and maintain and there is much to gain from rewriting it. Here are some strategies that will help you refactoring your code:

Writing unit tests

Layering your application

Using tools (e.g. ReSharper for C#)

Abstracting and encapsulating

Extracting and reusing

7. Basic understanding of how programs and computers work

Pure web development educations might not teach basic stuff about how programs and computers actually work. Do I as a web developer really have to know about low-level stuff? I would say yes - even if you just write JavaScript it's actually running on a vm or is compiled to machine code.

If you need to write efficient code (which you always should), you have to know about:

Memory management

I/O

Stack and heap

Compiling, Interpretation, byte code, VM, IL, etc..

Got anything else that new coders should learn? Drop a comment below