My learning quest

Early in January, I declared this the “Year of Learning”. The year I would immerse myself in technology and absorb as much as possible in all the areas I don’t yet consider myself knowledgeable enough. This means I have started and will continue to deepen my understanding of various aspects of software development from patterns to new programming language syntax, from modern data stores to effective debugging tools and techniques, from JavaScript and its myriad helper libraries to the intricacies of asynchronous programming.

Strategy Strategy

In order to accomplish this lofty self-improvement goal, I took the plunge and subscribed to PluralSight online training. This amazing library of on-demand videos is now my introductory-level training resource. Apress, O’Reilly and Manning are three great sources for technical books and regularly offer discounts on select eBook titles so I’ll be supplementing the online training with their wares, starting with the small collection of eBooks I purchased in the past year but never got around to reading. These should help flesh out concepts to a higher degree than an online course could ever do. But skills learned and never applied get lost quickly so I’ve also committed to spending more time developing code at home so I could try out interesting techniques and tools I might not otherwise get a chance to use.

How will I measure improvement?

I’ll know I’ve improved when I’m able to read the MSDN Magazine each month without feeling that every article has been written for someone much smarter and knowledgeable than I am.

Measuring Progress

It’s only February and already, I feel I’ve woken up to all sorts of new-to-me concepts and strategies that I can’t wait to put into practice. I must be doing something right!

What next?

Now that I have been at it for almost two months, I’m ready for the next step in the journey and that is to share some of what I’ve learned with others as I go. This is prompting me to dust off my “One Thing I’ve learned Today” series. I’m not aiming to write every day but I’ll post something here as often as I can in the hopes that someday, someone else may find a useful bit of information that will help them along their own journey.

Please join me!

To Learn or not to Learn

(with apologies to Shakespeare)

This week has been rife with opinions on what people should or should not do.

Jeff Atwood started it off by pleading with the world not to learn to code. His rant centers on what he calls the "everyone should learn programming" meme or movement which he claims is growing. His prime example? Mike Bloomberg, mayor of New York City, who tweeted earlier this year of his New Year’s resolution to learn to program via Codecademy.

Bloomberg-vows-to-code

On the strength of that single tweet, Mr. Atwood comes out all guns blazing with the scathing opinion that as a public official whose job description doesn’t encompass writing code, Mr. Bloomberg should stick to the tasks taxpayers are paying him to do and leave software programming to trained professionals.

An interesting position which has caused quite a bit of virtual ink to flow.

Of course, this assumes that Mr. Bloomberg’s intent is to learn and/or program during the work day rather than as a hobby outside of the demands of his employment. I can find no indication of this in the mayor’s tweet.

Perhaps the example wasn’t best chosen so let’s investigate some of the other arguments presented against the populace learning to program.

Apparently, there are "those", an undefined group of people out there, who, we are told, argue that programming is an essential skill that should be taught to our children in school. Our author views this as preposterous in light of the fact that the mayor of New York would unlikely be better suited for his job had he learned about pointers, functions and recursion in school. Strangely enough, in Ontario where I live, as well as in many other constituencies, music, visual arts and physical education are required courses until a child reaches a certain level of high-school education at which time they can choose to continue or veer towards other subjects. I wonder how many of those particular skills have been of direct use to the mayor in his current position?

Ah, perhaps that particular argument wasn’t fully thought out so let’s just move on.

Mr. Atwood proceeds to relate the writing of software as being limited to the solving of a problem. I agree that software can be used in that manner but my 12-year-old son is currently spending all of his spare hours programming his very own game. He is writing many more lines of code than strictly necessary because he’s in the process of learning how to program. "Refactoring", "abstraction", and "inheritance" have recently become part of his regular jargon and he’s even writing tests to ensure his code works according to his very own specifications. He is doing this, not because a tangible problem exists that must be solved, but because he’s curious about how games are built. Best of all, he thinks programming and being able to see his characters move on the screen and do as he directs is great fun!

Perhaps the drive to learn programming shouldn’t be exclusively reserved for the gifted few who, from day one, are capable of producing the most concise and perfect solution to a problem vetted by a third party as truly worth solving.

Scott Hanselman said it best in his rebuttal: "You don’t need to learn to code, you don’t need to be an expert in everything but know that you can learn." Zed Shaw’s insight is also one I can relate to: "If you attach your identity to being a programmer, then changes like ‘everyone can code’ will lead to resentment because you are no longer unique."

I happen to be employed as a software developer though I do take guitar lessons in my spare time. Will I ever use this skill in my day job or steal a session guitarist’s job? Not likely. What are you learning today?