Learning

Table of Contents

Introduction

Motivation

Cognitive research

Sources of information

Social Media

  • Twitter
  • LinkedIn
  • XING

Learning strategies

Progressive advancement

Knowledge aqusition isn't a linear process. However, the difficulty of the learning activities should be adjusted to the current competency level in order to make it a pleasent experience.

Novice

The learning journey for any new skill starts in the "Novice" stage. This phase is all about understanding the context and doing the first baby steps.

Understand the tools philosophy Who created it? Why did it get started? What problems does it solve?

Explore ecosystem Who is using it? Where are the money flows? What sources of information are available? How does it compare to its alternatives?

Define learning goals What are the sub-skills and what are their interdependencies? What are you trying to achieve? What elements are out of scope?

Getting started Set up an environment where you can do experiments (e.g. by writing a "Hello, World!" program).

Beginner

In the next stage you need to get an understanding of the basics (e.g. conditionals, loops, and statements for programming languages).

Training course Request to attend a training course. If this this is not possible try find a good video tutorial.

Buy a book Get an overview over all available books. Select one with the criteria of the author having real-world experience and the didactic preparation of the subject and minimum number of pages while still covering 80% of the important topics. Skim the book to now what you don't know and then be able to read the relevant sections when they become relevant.

Playground project Before diving into an enterprise project, explore the technology with a non-trivial example project like a TODO app. Even better would be to create an internal productivity tool.

Intermediary

Now that you are familiar with the basics you can start to work on real-world projects. Be aware that learning at this stage requires relatively high effort.

Experiments With the help of the playground project created in the Beginner stage new sub-skills can be explored without the burden of the complexities of the production system.

Documentation Document snippets of lessons learned in an internal wiki or another knowledge management tool like Evernote. This will help to reduce cognitive load in during the recollection. Maybe some day it will also help someone else that they don't have to research and trial and error by themselves.

Reading Read the book selected in the previous stage cover to cover when there is some slack time.

Also consider the application of different reading techniques.

Advanced

After being able to get work done the skill should be mastered so that it can be applied effortlessly.

Teach others Teaching is one of the best learning techniques as you will notice what you do not know when you try to explain it.

This could be done by conducting internal training courses or mentoring colleques. Other forms of teaching might be writing blog posts or recording screencasts.

Discussion Analyse the pros and cons of the technology. Then attend conferences and meetups to discuss them.

Probably you'll find a cool new technology there and then you can start the process again.

On-the-job training

Programming languages

Deliberate practice

Learning techniques

Watching video tutorials

Experimentation and excercises

Reading documentation, books and tutorials

Asking questions

  • Internet search engines
  • Colleques
  • Online communities like StackOverflow, forums, and mailing lists
  • How To Ask Questions The Smart Way
  • "I often find that writing up the question makes it clear in my head, and the solution becomes obvious."
  • "Please make sure to share what you’ve tried on GitHub, Gist, or, better yet, a fiddle before asking."
  • "a balance between sharing too few and too many details."
  • "Try to put yourself in the shoes of the person answering the question."
  • Create a minimal representation of the problem, e.g. as a GitHub project.
  • Short, Self Contained, Correct (Compilable), Example

Reading source code

Creating excerpts

Participate in study groups

Boot camps

University courses

Coding competitions

Hackathons

GitHubImpressum