Basic Skills
Engineers (and perhaps managers too) need a lot of core basic skills and experience to be effective. The following is a shopping list.
Text editing
Everyone should be comfortable using plain text editors of some kind or another.
- edit with vi, vim, emacs, (or at worst nano, gedit, geany or similar)
- non-trivial document navigation, including jump to specific line, page up, page down, beginning or end of document
- search for complex pattern
- search and replace
- delete n characters
- delete n lines
- cut and paste
- quit without saving
- save to current file or a different one
- install the Linux-based distro
- understand how a desktop works
- understand how a command line shell works
- bash (or some other shell) – pipes – stdin and stdout, and redirecting them
- Use command line utilities, at a minimum (with their common options): man (this should help with all the others), info, /usr/share/doc, cd, pwd, ls, cp, mv, grep, find, sort, uniq, sed, awk
- understand regexp syntax and be able to decompose/evaluate existing regexps
- create your own regexp, especially for pattern matching
- understand the difference between shell globs and regular expressions
- be able to install your chosen client
- use it to join the network, and freenode
- join and leave channels
- send channel messages
- send and read private messages
- understand common abbreviations and slang
- understand public/private keys, create your own, understand how/what to copy
- use ssh
- access services (eg access) via ssh (Note: 2048bit or larger RSA keys, or else 384 bit or larger ECDSA keys are the only acceptable options here. DSA keys are not acceptable any longer).
- initialise a new repo
- clone an existing repo
- make changes and commit them with appropriate commenting
- work with local branches - create, checkout, commit, merge, delete etc.
- switch between branches
- work with remotes
- push work from your local branch to a remote branch
- work with remote branches - create, checkout, merge, delete etc.
- work with tags
- cherry-pick
- reset
- rebase
- understand git datastore structure principles