Monday 7 January 2013

Learning

The First Story
Let's going to start with a story, a real story that makes me blush. A few years ago I had to find repeated items in a collection. What I did was to put the items on a list and do a double for loop. As stupid as it sounds. I could say that I was sick (spend the next two days in bed), or that the job was killing my abilities (which I let it happen, so still my fault). Is not like i didn't learn about O notation and how to investigate if an algorithm was quick when I was at university). What a workmate did was to use a dictionary. As he was putting the items as keys he will add a count of repetitions as value. The difference on speed when from two days to 15 minutes (lots of items).

I decided then that it was time for me to re-learn my university stuff, and learn new things, But still an additional episode was needed to set me on my current path.

The Second Story
Some time later, I was doing another application in which, again, I think a double for loop and an if where involved (though completely different reason behind it). I was thinking to myself that the code was overly complicated, there had to be a better way of achieving what I wanted to accomplish.

Small tangent: when started on my current company I had no knowledge of C#. I was send on a week long course. Net 3.5 had just been released, if I remember correctly, and the instructor was excited about lambda expressions and Linq.

Now, from that course until I realised that I had some overly complicated code I had not touched either (again, a question of the working environment not really caring for our abilities), but somehow they came into my mind. I quickly investigated, and the resulting code was so much cleaner that it was an eye opener. Next thing I did was get the C# in depth of Jon Skeet.

Since then, I have slowly increasing the speed at which I learn new things, I read programming books, and practice (practice does do the master). Mythical Man-Month, Pragmatic Programmer, unit testing, design patterns, ...

Though three breaks have happened that had allow me to just start "running". Before was just walking.

The Three Breaks
First one was the change of CEO. The previous one was too involved in code (which by itself is not bad), and tend to drive things in his way, which involved no planning, testing, defined methodology and continuous change of ideas of what to do. In part his involvement was understandable as the main internal framework that the company used was his child.
The new one is not involved in the same way, and our development manager has left over my shoulders the introduction of good methodologies and techniques (and by Tutatis, that I am doing).

The second break was the combination of finding that I could have Safari Online on a tablet and that there was a tablet that had high res (iPad 3). Until then wasn't really interested in tablets, but the combo was kind of a deal maker for me.

Finally, I have moved to a place from where I can use the train to go to work (though it takes me ages). Which means that I can spend inordinately time reading. The net result is 5 books read in the last two months.

My Way Of Learning
Now, one quick regarding reading. There is a tale/story/fable abut two golfer friends, and the gift of a golf book from one to another. The actual consequence of that, on my case, would have been quicker learning.

The way I tend to learn is read books and articles about what I want to learn, even if I don't understand what it is about, and then start practicing  Maybe I will not remember 100% percent of what I read but I will acquire knowledge from practice far quicker and with better understanding of what is going on. Furthermore, I will know where to look for the information that I originally didn't understand.

Final Words
Education, education, education. Never stop learning. I forgot about it for a few years, and my skills decayed. Now I'am finally approaching where I was supposed to be. Lots to be done, lots of practice to be done, lots of reading to be done. But I am fully focused at the moment in achieving it.

No comments:

Post a Comment