The Learning Process of a Software Developer 2


Learning and software development goes hand in hand. The world of software is vast and it is impossible to know everything. It is only natural that you will have to do some learning on the job.

The process of learning a new framework does not have to be painful. Usually, learning something new is painful when you are trying to learn in the wrong way for you or viewing it negatively. When you have a learning system that works for you, the learning process will not seem so bad and even is enjoyable.

My goal for this post is to go over what I do when learning something new for software projects. It is not going to work for all of you out there, but it will provide you a head start in creating your own learning system.


Starting a Fresh Project

Starting a new project from the ground up with a new technology can be intimidating. There are ways for you make it manageable. The first thing you must do is to make sure that you thoroughly understand the requirements for the project. Once the requirements are confirmed, you can start thinking about the high-level aspect of the project. The main idea is to break the project down into small problems so you can tackle them one-by-one.

When you have the project broken down, you can start becoming familiar with the new framework. This basically allows you to see what is possible and not and then revise the high-level ideas. Keep repeating this process until you feel there is a way to address each of the problems. Notice during this phase you do not do much coding and it is all just research. Another way to look at it is to remove as much unknown as possible.

Starting a Project with Legacy Code

Understanding legacy codebase

When starting a project with legacy code, the most important thing to do is to familiarize yourself with the codebase and understand why some technical decisions were made. During the process, you will do little to no coding at all. Instead, you will be reading through a lot of the code and doing research. It will take some time to understand the codebase, so do not stress yourself out if you do not pick it up immediately.

To speed up with learning the codebase, you should break the codebase up into smaller parts. There will be many modules communicating between one another. Understand that is happening in each module before trying to understand how they are all connected will help reduce confusion.

When you start to gain an understanding of the codebase, you can start experimenting with the codebase to test your understanding. Make minor changes and see if the result is what you would expect. This will confirm if you have a grasp of what is happening in the code or you got more work to do. Keep up this process and eventually, you will find yourself adding new code to the codebase.

Experiment

Experiment with what you learn

One of the best ways to test what you learn is to experiment. For example, create a new project and just implement something simple with what you learned. Along the way, you will make mistakes and need to resolve them. This process will help reinforce your learning by making the information “stick”.

Learn What You Need

learn only what you need

Learning only what you need will not only save you plenty of time; it also prevents you from wasting your time. When you are just learning everything about a topic, most of the information get lost quickly. Think back to a time when you were given a lecture, most of it probably did not stick with you.

Now consider the case where you are on a helicopter and you need to parachute down and you have no idea how to parachute. When you are given a lecture about how to work with a parachute at that moment, you will listen to every word. You will absorb all the information because you need it.

Tailor Learning Experience for Your Learning Style

Learning how to learn is often regarded as a myth. However, from my own experience, I do not believe it is. Why is that? I have gained great success from learning how I learn best and then taking advantage of it. I was able to learn new frameworks and programming languages in a short time and deliver quality functioning code.

I have a post about effective learning and learning styles that goes into detail about this topic. I will just summarize some of the key information here.

  • We learn in four different styles:
    1. By doing (kinesthetic)
      learning by doing
    2. By seeing (visual)
      learning by seeing/visual
    3. By taking notes (read & write)
      learning by reading and writing
    4. By speaking/listening (auditorial)
      learning by speaking and listening
  • Each one of these styles contributes to how much information we retain from what we learned and will vary from person to person.
  • To find out what kind of learner you are, you can experiment around with different ways of learning. The VARK questionnaire can point you in the right direction.

Get Good Quality Sleep

We all know getting good quality sleep is important. However, what you may not know is that sleep influences your learning capacity far more than you think. The transformation of what you learned (information) into memories occur during sleep. Also, sleep affects your level of energy throughout the day.

I have a post about how sleep affects our learning and the general benefits of sleep for developers. Check them out if it interests you.

Have Fun

Having fun while learning

One of the most important things is to have fun while learning. It is easier to go through the learning process when you find it enjoyable. In addition, you will retain more of what you learned.

Once you figure out your own system for learning, the learning process just seems enjoyable naturally.


I hope you found this post helpful to you by giving you an idea of how you can structure your own learning system. If you found this post helpful, share it with others.

If you have any questions or would like to share your learning process, leave a comment. I will be glad to hear about your learning system.

To stay in touch, you can follow me on twitter.


About Steven To

Steven To is a software developer that specializes in mobile development with a background in computer engineering. Beyond his passion for software development, he also has an interest in Virtual Reality, Augmented Reality, Artificial Intelligence, Personal Development, and Personal Finance. If he is not writing software, then he is out learning something new.

2 thoughts on “The Learning Process of a Software Developer

Comments are closed.