Expensive books are cheap
Back in the 1990s books about programming were about 1,000 pages long and cost £50 GBP each (and that’s in 1990s money where you could literally buy a second hand car for that amount, and it would actually drive). There was very little on the internet – especially as I didn’t even have access to it until 1995, and books were pretty much the only source of learning other than chatting with other developers or going to University.
I remember a conversation on Usenet (which was a kind of online newsgroup back in the day where like-minded people would gather together to get angry with new people) where someone asked what was a good book for learning C++. One chap answered that he tried to buy at least a book per week on the subject, and this struck home with me.
You see, up until that point I had considered books to be extremely expensive things and you had to make a careful choice as to which one you invested in. What I didn’t appreciate at the time was that when you’re in a field such as software development, the £50 you pay for a decent book can be earned in a single hour as a software contractor. This was a turning point for me, no longer would I be starving my brain of the knowledge it craved, I too would own more than one book about C++. In fact there were times when I bought more than one book in a week.
Another benefit of owning multiple books on the same subject is that you will be getting multiple viewpoints. One author might be an expert at one particular aspect of a programming topic, another author an expert in a different aspect. Yet another author might not be an expert in any of the aforementioned topics, but has 40 years’ experience and pretty much knows what not to do in a given situation etc… Gain your knowledge from as many sources as you can and you shouldn’t end up with any blind spots.
Don’t read programming books
Once I bought a book called “Teach Yourself C in 21 Days”.
After 21 days I still couldn’t program in C and I felt cheated. The book title was a scam and I had been tricked. Afterall I had read most of the chapters in the book, and seemed to understand most of them.
I have to admit it was some time in the future where I realised the problem was with me and not the book. What I had done is read the book without typing a single line of code. It’s all very easy to read a programming book and think “yes, yes, all very straight forward”, but when you sit at a keyboard without the book somehow the obviousness of it all seems very far away and you realise you actually remember very little. Something to do with void and main, or was it main and void?
In order to learn programming, you have to write code. Don’t just read programming examples, sit there and type them in. Even if it seems really obvious to you, type in the examples and run them. I still do that today (sometimes). Recently I bought a book about automated testing using Selenium and practicing what I preach I typed in the code samples from the book. This gave me a real feeling of understanding and the knowledge imparted was much more persistent than if all I did was read the examples and not physically implement them. What’s more I had to resolve issues with the programming environment and other such hurdles which helps give you that working knowledge.
It’s a similar concept to studying at school where hand writing things into an exercise book helps you commit the information to memory far more effectively that just sitting back and listening to a lecturer.
Don’t read programming books, type them into a compiler.
Don’t watch free videos
I think you probably know where I’m going with this…
There are lots of free programming tutorials on YouTube, some of them are even good. But there are a lot of low-quality tutorials out there and finding really good learning material is difficult.
There’s a good reason for that. YouTube is incredibly stingy when it comes to paying its contributors, which means that the highly talented and learned people that you would want to watch on YouTube can’t be tempted to get out of bed to make a video. I hear you cry “but there are YouTube millionaires out there!”, which is true enough. But if you look at the number of views a programming tutorial about “Unit testing with MSTest V2 and C#” gets compared with the number of views a video about eating washing detergent tablets whilst giggling through a game of MineCraft gets, you can see why people eat detergent and film themselves doing it. Let’s face it, a video of someone explaining Liskov’s Substitution Principle isn’t going to go viral, even if they do have soap coming out of the corner of their mouth.
Free videos on YouTube will get you so far, but for good quality tutorial videos you’re going to need to pay for them.
Uncle Bob Martin videos (cleancoders.net) is an excellent source of paid for videos on the topic of software development craftsmanship, and the several hundred dollars they will cost you will repay themselves many times over.
Similarly, PluralSight.com is an excellent source of quality programming videos which are way higher quality than anything you’ll find for free.
Also check out bobtabor.com – Bob Tabor is an excellent instructor and all-round nice guy as well.
Do Your Homework
The software development business is like no other in terms of how much it evolves over time. Frameworks appear and go into legacy support faster than you can become an expert in them, and there is a continual forward movement towards newer and “better” programming paradigms.
That’s not to say everything gets replaced. If you learned a flavour of SQL back in the day it will still be relevant today. But have you familiarised yourself with No SQL databases, or immutable data storage? Have you embraced LINQ?
The changes in our industry are constant and persistent. Sometimes fast and furious but more often subtle and unseen. One day your pretty much up to speed with the latest developments, your programming tools are modern, up to date and razor sharp. The next day you wake up to find you’re a dinosaur. While you were asleep things moved on, and your code is now legacy and your tools are covered in a thin layer of rust. One day you’re cock of the walk, next day a feather duster…
Q) How can you avoid the fossilisation process?
Yes, good old homework. Many of us spend our days using existing knowledge and tools to earn a crust. We barely have time to get the days work done let alone take time out during the day to gen up on the latest programming paradigms, or to play with new tools. So the only option that lies open to you is to make some time at home and do a bit of homework.
Now you don’t have to stay up each and every night studying computer science from leather bound books. You’d pretty soon get bored with that and stop doing it altogether. Rather try to do little and often. If you’ve heard someone talking about this magical new programming pattern, take a few minutes one evening to look it up. If someone uses a phrase you’re not familiar with (I remember hearing “Idempotent” for the first time and wondering what Egyptian Gods had to do with coding), look it up and find out what it means. If you’re being left behind because you don’t understand automated testing, go back to the beginning of this post, buy two books on the subject and read them while you’re having a bath, then as you’re drying off crack open a test project and have a play.