7 things that new programmers should learn

DebuggingVersion control

Please contribute by voting. Thanks!
6

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

Article created: Jun 2 '16. Edited Jun 20 '16.

5 Comments

3
Eduard Ruffert [3]  •  Jun 4 '16  •   •  Reply

Nice list of "operative things" new programmers should know as a baseline.

On the other hand they need to know the baseline of how to write good code and why = they should also be very much be aware that they need a solid understanding of the ... ah well ... the "SOLID principles".

combined with the previous comment of TDD and you're off to a running start.

2
Dave Kirby [2]  •  Jun 4 '16  •   •  Reply

You missed out Test Driven Development (TDD).

1
prasanth [1]  •  Jul 12 '16  •   •  Reply

Under point 6: Make it a habit of adding proper comments for your code.

1
eddie nugent [1]  •  Jun 19 '16  •   •  Reply

Teach Yourself Programming in Ten Years:

http://norvig.com/21-days.html

-1
Tim Dugan [-1]  •  Jun 5 '16  •   •  Reply

Of course there are lots of things to know. That's why folks go to school for YEARS. How did you come up with your list?

As you can see, no matter what you list, a lot of folks will say "you forgot X" and few will agree with each other. It's a wide Field and has many perspectives

Your comment

You need to sign up / log in to comment this article

Author

Created by Alex Palmer [6] Jun 2 '16

Share article

Do you know about

git?

Write an article