I think the universe is fundamentally broke.
As a young person, you are in your best years to learn new things yet most young people don’t want to learn. The thoughts of going to school come a very distant second to the Xbox, chatting with your friends on your phone or just plain having fun.Then, one day, you find yourself the oldest member of the team, the kids telling you you’re out of touch with modern development (which you probably are) and the need to learn and learn quickly comes to the fore and, frankly, learning becomes hard. You’ve probably not done any proper training for years. Frankly, you have forgotten how to learn.
Being in IT, I hit this regularly and often. Technologies I use this year will be “legacy” next year and laughable in two or three years. You have to keep moving forward and learning more and more “stuff” to keep up. It’s not optional, so you have to get past the “learning is hard” state of mind and develop a learning style that works for you.
Paid for courses
Some people thrive on paid-for courses. I think this is a reflection of school days and is familiar and comfortable. You spend the day sat in a classroom and then have the all expenses paid joy of a hotel room for a week or two. You can see why employers aren’t entirely enamoured of this style of learning any more. I’m not entirely convinced it works and I’m not entirely convinced that developers really like to learn this way. It’s rather too structured for the modern developer brain which is attuned to more agile thinking practices. I’ve been in IT way too many years and have attended only half a dozen such courses and I gained little from them.
I have had subscriptions to Pluralsight and Lynda.com for online training and these are valuable resources, but they just don’t get me where I need to be. Both have a number of excellent courses and I would recommend them to anyone wishing to pick up a new development technology, but both lack that one vital element; the project. You see, online training largely consists of demonstrating features, button pushing and trivial snippets of code. Nothing substantial.
Time is the biggest limiting factor in online training. The need to present features takes over from the important step of applying those features. I have watched a number of video courses which concluded with the thought “so what”. I have a bunch of disjointed facts and have watched a bunch of videos and all I have is a bunch of disjointed facts. No clear definition of how to apply them. What I need is the “project” that brings it all together. The most useful courses I have done recently have been from Lynda.com on the subject of Bootstrap 3 and that’s because these courses all build something real and occasionally stop and give you tasks to complete. Just having a target site to build and having to apply what you have learnt makes a major difference. Sadly, not all courses are like this.
Then there are the plethora of eBooks. Tens of thousands of them. epub, pdf, mobi whatever else. Some free, some pirated, but many costing as much as a paper copy of the book. My problem with eBooks (ok, one of my problems) is that I need to be tied to technology to use them and, if I’m sitting in front of my PC, I’m not going to be reading a book. I actually have a reasonable collection of eBooks, most of which I have not read. I find staring at a screen uncomfortable and rapidly get the itch to write some code.
And don’t get me started on Murach books and their use of Lock Lizard. Excellent books ruined by DRM. I don’t buy their books any more.
So, what else is there?
My preference, and this probably reinforces the fact that I am an old bloke, is paper. I buy books (yes, paper ones, dead trees). Books present the same facts as the videos and in the same small chunk way as videos, but they can be book-marked, can be scribbled on, are always there when you need them and don’t need a bunch of technology to make them work. I can sit quietly and read a chapter of a book. No fear of the battery running out or, as happens with the iPad, the screen suddenly dimming or going blank in order to save those precious battery seconds.
Allied to this is a project. You need something to write. You need a goal. Getting that right is probably the hardest part of the learning experience. Too complicated a project and you’ll never achieve it. Too simple and it’s no more helpful and the snippets presented in the book. Armed with a project that can be expanded as knowledge expands and a good book, learning becomes an exciting, interactive process. Something that is, more importantly, achievable.
Ironically for me, I am embarking on a new learning experience. I’m joining the ancient and much maligned world of PHP. Yep, legacy web technology. I have a couple of books, delivered in dead tree format, and I have a couple of projects I can get started with. My web site at theoldbloke.com was my first attempt at PHP. Having picked up enough bootstrap to be able to put the basics of the pages together, I needed to take the repetition out of the site; all those bits and pieces of a page that get repeated over and over. PHP was the tool for doing that and was the starting point for my latest learning experience.
With a real need to go at, learning enough code to produce this site was fairly straight forward and quite pleasurable. It also led me to the point where I had a working system that I could be proud of but that I didn’t fully understand. Hence the deeper dive in to PHP. It’s also led to a more professional looking web site for my employers Lucidus. That in turn led to a panic session when I discovered that all the carefully crafted PHP 5 code I had written wouldn’t work as our ISP only offered PHP 4. Another learning experience as I learnt the difference and backed out the code to PHP 4.
You never stop learning.
However hard it is, the rewards at the end are worth the journey.