Myelin and software development

Today I would like to tell you something about relation between myelin and way how we can improve our coding skill.

First of all I have to introduce our Hero — Myelin.

Myelin(from wiki):

Myelin is a fatty white substance that surrounds the axon of some nerve cells, forming an electrically insulating layer. It is essential for the proper functioning of the nervous system.

Uhh. It isn’t the most comprehensive explanation I have ever read. The more interesting description is provided in a great book “The Talent Code”. Author of this book nice summarized what myelin is:

Skill is myelin insulation that wraps neural circuits and that grows according to certain signals. The story of skill and talent is the story of myelin…myelin is similar to another evolution-built mechanism you use every day: muscles.

Simply put, it is an important substance which creates “skill”. In this book author described how myelin works and why it is very important to us. He also stated(and proved) that myelin causes that hard work beats the talent and the talent is not inborn but talent is developed.

Rules

Author also introduced 3 main rules to develop skill(in respect of myelin):

Deep Practice — there is a need for daily and hard work to improve your skill.

Ignition — motivation. How highly motivated you stay when you trying to acquire your chosen skill.

Master Coaching — this is about feedback — what quality feedback is and how easy is to get this feedback.

In next section I would like to write how these three principles can radically improve our coding skill.

What is the coding skill?

Really good software developer has to master many different and difficult skills. And coding skill is one of them. Coding skill isn’t about software designing, it’s not about high level concepts(e.g. introducing namespaces, modules, create large class hierarchy).

No. Coding skill is programmer’s daily bread. It’s about writing function, comments, introducing good variable names and endless small refactoring.

So how is a myelin related to coding skill? Good coding skill is not the powerful booster of our productivity. It’s about save a time and focusing on a coding business use cases and not on how to rename this variable without breaking a project. Simple put: Coding skill is fast writing a high quality code while you can focusing only on important things.

In rest of article I would like to explain how three rules mentioned above is related to software coding.

Deep Practice

Deep practice is deliberately and focused “training”. Technique deep practice is consists of three steps. A first step is to look at the task at a whole. What I want to do and how I can achieve it. A second step is to divide it into its smallest possible chunks and practice and memorize these separately. In a third step is involved time. You should slowing the action down and then speeding it up.

So this was theory. Now I can show you how you can bring this theory to practice.

Let me give you example. Mastering your editor or IDE. Good knowledge how to proper use your IDE or editor is critical for your productivity.

In the most cases when developers start to use some new tools(in this case it is IDE) they learn some main concepts, a few keyboard shortcuts, some useful tools and features and that’s all. But in the most cases the IDE gets better and better in time and we still use only a few features of IDE which we have learned in the past. The result is that our knowledge is aging and our productivity doesn’t increasing.

So to improve your coding skill you have to challenge yourself. Learn new keyboard shortcuts, tools, watch presentations about new features and so on.

Second must-have skill is good knowledge of your main language or framework you use. It takes time but it is very important to know your language very well. To learn language I would advice find good author/opinion makers ->follow them on twitter, read some books and sometimes is good to read questions about your language on stackoverflow.

These advises is related to Deep practice. You should develop a system which you enable to constantly improve this skill. For example:

For next month I will learn every day one new keyboard shortcut. And in this month I read 10 blog posts about my IDE.

Ignition

Second rule is Ignition. Sometimes staying ignited and focused is very hard. And bad news is that to mastery any skill you should perceive a long time. Some scientists say to become master in any skill you need to practice for approximately 10 000 hours. So you need to have a ignition. There is no general advice to perceive ignition. In my case it works participating in community — I read blogs of software developers, listen podcasts, watch videos from conferences, write comments in user group for developers, write this blog etc...

Or you can find your own side project. Take the latest technology and build something easy where you can try new languages, frameworks and tools. For you it must be fun.

You need find your own spark that ignite your passion. Without ignition you can’t develop the magic like skill.

Master Coaching

In software development if you’re not senior developer with many experiences, it can be a little risky to teach yourself a new skill. But I have a good news for you: coding isn’t so hard that you have to coach who will continuously evaluate quality of your code. I will show you some tools to help you to improve your coding skill without needing any “teacher”.

Code convention. First of all you should find out if your language has some general style guidelines. For example for language C# there is Microsoft official code style guideline — coding conventions. I believe the most languages has some sort of this guideline.

Coding convention is good beginning but only a beginning. Your another step should be find a “linter” for your language.

Linting is:

Lint was the name originally given to a particular program that flagged some suspicious and non-portable constructs (likely to be bugs) in C language source code. The term is now applied generically to tools that flag suspicious usage in software written in any computer language.

Source: wiki

I believe that the almost every non-obscure language has some kind of linter. The linter can provide a valuable feedback to improve your code style.

Style checker — style checker is some sort of linter, but its main purpose is to provide automatic formatting that can do a lot of repetitive and boring job for you. These repetitive job can be: formatting braces, replacing tabs by spaces, order methods by their visible modifier and names and so on. This work you don’t have to do, and because formatting should have a well defined rules so the smart tool like style checker can do it for you.

So I believe that this article has showed you some tricks and tips how to improve your coding style.

Coding skill is not a new buzzword, it is not new nice and modern technique. This skill loses its attention and I think it is not good. So lets change this. Improve you coding skill and style. Be more productive by learn new keyboard shortcuts and find tool which can remove a lot of your repetitive work. Become a coding wizard:)