If you are smart, you understand new things fast. When you are wise, you apply your new knowledge on a day to day stuff. If you feel that you know a lot about your daily job, try to read something different but from a related field. The software industry is very broad. There are hundreds of programming languages. Some are popular some are not. However, the engineers and researchers, who are developing them, are trying to solve some particular problems.

I am a java developer. Java programs run on a virtual machine. It covers most quirks of the hardware and operational system. My willingness, to learn more how hardware works, feels me full of beans study a system programming language. In order not completely drown I went through a few educational stages:

  • awareness;
  • small everyday practice;
  • writing a pet project; and
  • contribute to an open source project.

Awareness

There is not a big choice among system programming languages. The most popular are C, C++ and D programming languages. However, I heard about Rust in late 2014. It is a system programming language which was under development. I watched a few conference presentations and read small blogs that observe key language features.

Small every day practice

At that time my team leader told me about code katas and practicing test-driven development. It was exceptional opportunity to kill two birds with one stone, so I did.

Writing a pet project

A pet project is a sort of project where you can work with what you want in the way you want. You don’t have to finish the project, you are not going to ship it. But it must be started if you want to gain experience. It must be a subject that you are very interested. What about me - I like database and distributed systems. You may want to have a look at my article database as a pet project where I describe why it is a good example of practicing software development skills. Indeed, more than a year ago I started the pet project. It’s already taken me two attempts … and I am going to have one more. The most exciting part of the process is seeing how my view of software engineering is changing.

Contribute to an open source project

I haven’t yet come to this point, but it could be hard for many reasons. There is no such project that you are willing contribute to. You don’t have time. Or, you may hesitate that you are not capable of making the project better.

If you are a software developer who wants to learn something new; replace my interests of system programming languages and database systems with your specified interest, reread the article and keep moving toward your aim.