Fast learning for ambitious programmers

Learning has been one of my favorite activities since my childhood. I’ve tried many methods and found those that were the most appropriate for me. We are all different and the method that works perfectly work for George could fail with Amy.

Developing your ability to learn, before everything else, is the only viable job security strategy you could have. In fact, stopping learning is the most effective way to screw your career. Developing your ability to learn will not only help you to get more attractive jobs, but it will also increase your intellectual performance.

In this post, I’ll describe a few techniques I found useful during my career in the hope you find them interesting too.

Practice

The most obvious one you may think, but it seems that it’s also the most overlooked. I see many developers reading a technical book from cover to cover, closing it, then starting a new one. This is far from being effective.

I hear and I forget,
I see and I remember,
I do and I understand.
[Confucius]

This is really my favorite quote because it summarizes it all.  You should put everything you read into practice, when possible and when appropriate.  It’s how the learning process works best.  Many of the things we read are not understood until put into practice. And it is very likely that you’ll forget what you don’t understand, or worse, apply it improperly.

Without going into details, there is a technical explanation for this.  Practicing involves many other areas of your brain and it helps integrating everything. Here is some additional advice specifically related to technical books, blog posts or conferences:

  • When you finish a chapter, do the exercises. All of them, even the most simple ones. In fact you should give priority to books with exercises.
  • Try to summarize every chapter to a colleague. It will force you to deconstruct and therefore understand it. Talking about something you read also involves a different part of the brain and it helps with integrating the knowledge. You don’t have to speak to someone: you can just simulate a discussion. It will work just as well.
  • Put it together in a test project you build from scratch.
  • Don’t limit yourself to the single source of knowledge. Google everything you learn and read the different positions and perspectives available. Writing your own synthesis can help a lot too. Why not in a blog post?
Get feedback. Give feedback.

As an extension of practice, seeking feedback is another great learning method.  In programming, one of the most effective ways I know is pair programming & reviewing.  Don’t wait for it.  Ask for pair reviewing or programming actively.  If you are a solo developer, consider online reviewing platforms.

Also be sure to read as much code as you can. Open source projects are a great fit for that. It’s how many of us learn the features of the framework or language they are using.

Oh I wasn’t aware I could do that in just one line of code! [Random learner]

Another  effective way to learn is to actually teach. Teach another what you are supposed to learn. When you teach others, you are responsible for the information you give and you have special motivation. That one to many relationship is not the only available one. Participating in communities can stimulate your learning process. “Being there” makes you learn from other’s knowledge & experiences.  As a bonus, you learn how to teach or transmit your own knowledge.

Overcome information filters

Our brain is constantly overloaded with environmental data and we have developed a kind of mental filter that is supposed to let pass only the information important to us. This type of filter also stops our creativity from expressing itself and blocks the acquisition of knowledge – even the knowledge that will be useful in the future.

Stanley Kubrick has developed a special technique that he describes in his biography. According to him, this technique has allowed him to acquire considerable knowledge, increase his creativity and his ability to learn. The most visible and obvious result is his films.

The technique was extremely simple: he went regularly to a library and picked up a book at random, without even looking at the title. He read to the end even if he did not like it. This technique has forced his mind to expand into new territories by preventing the mental filters from operating. The new knowledge gets integrated with the previous and creates new perspectives.

You can train yourself like that with anything, not only books. As a programmer, it is often recommended you learn a completely different language than the one you have used every day for years. Just to give you another perspective on things. In fact, too much bias towards technologies or ideas often stops you from advancing and evolving to the next level.

Fail

If you don’t fail sometimes, you are not putting enough effort into what you are doing.

Failure is the most natural learning process you can find. In fact, we are physically and mentally wired to learn from failures.

I make more mistakes than anyone I know. And eventually I patent them. [Thomas Edison]

I do not suggest that you start doing anything carelessly. I suggest that you stop being afraid of failure. Fear of failure prevents you from doing the necessary experimentation to advance in life. Fear of failure is also completely irrational. Since most people try to hide their failures, we only have a tiny part of the information and we think people who never fail are the norm.

Experience is how you should describe failure.

Learn by choice

I kept the most effective way to boost your knowledge for the end. This is a very simple technique that I developed over years. In my research of novelty, I was always attracted by new technologies and new domains. I discovered that this way of behaving helped me to gain knowledge faster than choosing the path of least resistance.

Every single time I had to choose between two or more projects, I took the most difficult and challenging one. The one that contained the most unknown technologies or the one in a new domain I wasn’t familiar with. Never stay in your comfort zone.

The most difficult part is not deciding to take the hardest path. The most difficult part is to justify your lack of experience in a given technology when an employer is specifically looking for it. Hopefully, you’ll be able to convince them that you are a fast learner and someone will give you the opportunity to show it.

And there is a positive side effect with this method: job satisfaction. The combination of competence & challenge leads you to satisfaction. I will end this blog post with a link to a video related to this that is really worth watching.

 

The 3 rules to quitting your job with style

Quitting your job can be very difficult.  Just the idea of announcing that you are leaving can be very stressful.  But leaving a company properly is also required to avoid any unwanted negative effect on your career. It can even boost it: every employer you leave is a potential sponsor.

This post will explain three rules to follow in order to avoid most of the troubles that you can encounter during the process. The outcome will depend on how you announce it, the feedback you give and the support you provide.

As usual, to know how to behave, you must put yourself in the other person’s shoes. You may know the feeling you get when you get fired. If your career is not long enough to have that kind of experience, you may remember how you felt when a loved one announced (s)he won’t continue the relationship with you. When an employee announces his departure, the employer can feel exactly the same.

So let’s look at it that way and imagine how you would prefer to be fired.

Announce it in person

You will certainly prefer to receive the letter from the hand of your boss rather than by a registered letter in the cold morning.

After you write a short resignation letter, book a meeting room with your manager. I don’t suggest you put every detail in the letter as this may be used against you or others. Since it is not required, I would avoid it completely.

Prepare in advance what you are going to say. Just like your letter, this has to be short too. The discussion that will emerge from your meeting can be lengthier of course, but the announcement itself should not be too long. Also be sure to prepare the announcement with a short introduction that will soften the effect a bit.

Give honest and personalized feedback

When you announce it, the most common question will be “why?”  You would probably appreciate some honest feedback on the reason(s) why your employer decided to end your contract. The feedback you give to your employer doesn’t have to be detailed and must be oriented to you, not him.

Example: if you decided to leave because they still work with an old programming language and you can’t do anything about it, don’t tell them it’s wrong, but simply say that you don’t feel comfortable with it. In fact, almost everything is personal; someone else might love to work with that language. Using the old programming language isn’t “wrong”, just less appropriate for you.

Here’s a few recommendations for the discussion:

  • be specific
  • put the emphasis on how you feel things, how it affected you
  • avoid any judgment on persons
  • don’t talk about problems that can’t be changed
  • be sure to have a neutral tone and avoid sarcasm or anger

Your feedback doesn’t have to be focused only on things that can be improved. It’s a very good opportunity to say what was great. Just like the reasons for leaving, prepare a list of what you really enjoyed at the company and be sure to talk about it during the last part of the discussion. It will soften the whole discussion.

Offer your full support

Leaving a company is not only a loss in resources, but also a source of potential problems. While your employer should have taken precautions to avoid trouble in such cases, you must ensure that you can provide the minimum support required for your former company and colleagues. Even if things didn’t go very well between you, you must stay professional.  Offer your support at the very end of the discussion. Be sincere but be sure to put some limits and don’t hesitate to say no if necessary.

Quitting a job is never easy and in almost all cases, feelings are hurt. It is very unlikely that you will never face this situation again in the future. You may be in the manager’s position one day and everything in this post also applies to employees being fired.

Summary:

  • Announce it person
  • Give honest & personalized feedback (oriented to you)
  • Offer your full support