Things I'd Like to Tell the Younger Me |

Things I'd Like to Tell the Younger Me


Learn vim

Whatever editor you use as your main editor, learn vim to the point that you're fairly fluent in it. This is the editor that you're guaranteed to find on any platform you'll work on.

Learn one editor really, really well

A text editor is the most important piece of software you'll use as a programmer. It's therefore important that you find one you really like using.

Try out editors and find one you like. Then learn it really, really well. It doesn't matter which one, but pick one which runs on all the major platforms: Windows, Mac and Linux.

Give fair shot at learning Emacs, it's arguably the most powerful editor in the world, but you must be willing to invest some time learning it. If you don't like it, I'd recommend you to try out these ones: vim, Sublime, Atom, UltraEdit. But in any case, the important thing is that you pick one that you like and you can run on all platforms (you will probably use different platforms as you move jobs) and that you become as efficient as possible in this one.

Tell your editors to always add a final new line

It ensures the file looks nice in all contexts.

Emacs and vim do this out of the box.

IntelliJ IDEA: Settings → Editor → General → Ensure line feed at file end on Save

Tell your editors to remove trailing white space

This makes your files look nice and tidy in any context.

vim: put this in your ~/.vimrc:

"Strip trailing white space on save"
function! TrimWhiteSpace()
    let l = line(".")
    let c = col(".")
    call cursor(l, c)
autocmd BufWritePre *.* :call TrimWhiteSpace()

emacs: add this to your ~/.emacs:

(setq ws-butler-keep-whitespace-before-point nil)

Tell your editors to insert spaces instead of tabs

This makes your files look nice and tidy in any context.

vim: add this to your ~/.vimrc:

set expandtab

Emacs: add this to your ~/.emacs:

(setq-default indent-tabs-mode nil)


Remap CAPS LOCK to an extra Ctrl keyboard

You almost never needs CapsLock but you often need Ctrl especially if you're using shortcuts (which you should).

Using CapsLock as Ctrl also reduces the risk of RSI.

Learn to touch type

Touch typing isn't important at all. Most of the time, you don't write code, you think and reason about it! 😠

If you don't touch type, don't be offended by this, but after working for 15+ years, I'd say with very few exceptions, the best coders are the ones that touch type. This probably upsets a lot of people, but it's my honest opinion. The good news is that everyone can learn to touch type.

Text is the way of life as a programmer. Emails, chats, commit messages, wiki pages, documents and presentations. The written communication far outweighs the oral communication you do. Most jobs today are even distributed, with colleagues and stake holders in multiple countries and time zones. Limiting your communication to what you get to do around the coffee machine and your co worker sitting beside you and video conferences with the other colleagues just doesn't cut it.

If you touch type, communicating and documenting will not be a pain for you. If you don't touch type, you will tend to avoid written communication and documentation tasks or you will reduce it. You will write more cryptic commit messages (writing detailed messages costs too much if you type with four fingers), you will hesitate to create a wiki page to help out fellow coders on how to solve a tough problem you have just overcome and so on.

If you're not convinced, reads this blog post by Steve Yegge: Programming's Dirtiest Little Secret


Fellow developers

Spotting a good developer

Dare to say "I don't know"

The best developers I've worked with, are the ones that admit when they don't know something. Daring to say "I don't know" among his/her peers is often a sign of technical excellence.

Dare to ask "How does that work?"

Again, the best people I've worked with, dare to reveal that they don't know everything when discussing with a group of developers. Others fake it, just nod or don't say anything.


#1 The Pragmatic Programmer: From Journeyman to Master

Without a doubt the best programming book I've ever read:

The Pragmatic Programmer: From Journeyman to Master

Unix Power Tools

This book is a treasure chest for anyone working with Unix systems. Linux, OSX, Solaris, IRX, FreeBSD, NetBSD, OpenBSD users are all catered for alike. This is a true gem of a book. It's big and heavy, yet it can be enjoyed in small sips. Just pick it up, flip through the pages and read 2-3 of them. You'll turn away wiser than when you opened it!

Unix Power Tool

Effective Java

If I were to only read one Java book in my life, it should be this on. This excellent book from Joshua Block focuses on core Java programming and can be read by any developer, regardless of what platform or frameworks you're using.

Effective Java

gmail torstein.k.johansen @ gmail ~ twitter @torsteinkrause ~