Stages

While the Learning Spiral and Balanced Learning focused on the main basic sources of learning, this article discusses the stages one goes through in his or her everlasting quest for skill and expertise in the IT world.

Stage 1: Copy Existing Code

You get fascinated with something. Your experiencing it gives you a pleasant feeling that you like. The next this is that you find yourself having the urge and desire to create such an ‘object’ that fascinated you by yourself. The easiest and fastest way to do so is to follow a clear step-by-step zero-explanation procedure that enables you to reach the desired results. For instance, you may do no more than copying the code of a program, without understanding one word of it, then running it. Although you did nothing but copy the code, yet the satisfaction you get from creating the program yourself, though just by copying, is enormous. You feel so glad that you ‘did’ it.

Stage 2: Modify Existing Code

In the next stage, you start to move from the mere copying of the code or following of the steps to making your own modifications and observing the results.

Stage 3: Develop New Code

In this stage, you start creating your own works from scratch. First you’ve only copied, then you’ve done your own modifications now you start creating your own stuff from scratch.

Stage 4: Design System Before Coding

The final stage of this 4-stage learning process is when you reach the point where you have started to accumulate a wealth of experiences by being exposed to a variety of problems and solving them. You will have recognized patterns and have a clear overall view of how you will go about creating a new work as it comes. In this stage, you plan ahead when creating a new work, you take correct paths from the start and avoid dead ends or costly paths. You do the work much faster and in a more standard way.

The cool thing about those four stages is that reaching the 4th stage, if you ever do reach it, is not the end. You will most probably be switching back and forth between different stages as need arises. For instance, you might start copying code or modifying ready code to learn some new concepts or technologies faster. You might, when faced with a new problem, get back to stage 3 and start creating things from scratch and experimenting instead of relying on your set patterns you have gained from your experience, simply because those patterns or ’standards’ might not cover this new problem you are facing.