Over the past few weeks there have been some tweets from various people and lists I follow on Twitter requesting good books for game development or learning different software coding techniques. I always try to help out the #gamedev and #indiedev communities when I can, but in this case I had nothing to offer because I don’t read development books any longer, and haven’t for quite some time.
One of the top two reasons for this is because unless the book is on generalized concepts for the beginner to intermediary programmer, the books are usually outdated before they reach the shelf. That is the nature of technology, it changes and changes fast. Online resources tend to be more up to date with intermediary to advanced level programming concepts, even if the search engines are slow to get those resources to the forefront of the development communities. Subscribing to online resources is far better once you get to the “I am actually creating a game” level of your career/hobby.
But this post isn’t about that. It is actually about the number one reason I stopped buying programming books, which is because I am a #devsnob. I program mostly in C/C++ and if you know any C/C++ coders you know they are coding elitists by nature. Additionally, being a software programmer tends to give one a god complex. Programming involves creating things and eventually the god complex that goes along with being a creator kicks in – it is hard to avoid. I wasn’t always like this, nor are any programmers born with that god complex, but there usually comes a specific moment when their egos get too big for their heads.
My moment of inflated ego came from programming in Pascal. Our high school offered advanced computer programming course for their honors program, starting at the 10th grade level with a yearlong course and ending at the 12th grade with two semester long courses. I was not part of our honors program. However, the normal computer programming classes taught BASIC, which I had been doing for about 5 years at that time, while the honors courses taught Pascal. So I persuaded our school Principle to let me take the honors programming courses.
When my senior year began I was the only one taking the two semester long courses and the instructor allowed me to progress at my own pace for the curriculum. Before Thanksgiving rolled around I had finished the entirety of the Pascal course and started experimenting with what I could do on my own before being moved onto learning C by the instructor (class had basically become a study hall when it came to Pascal). At the same time this was going on, my older brother was in college as a computer science major and learning Pascal as part of his required courses.
During the Thanksgiving break my brother told me about the assignment he had due when he returned to class. The assignment was for storing data, adding to that data, sorting that data in various ways, and searching that data to return results. Obviously this was at the array point of the curriculum and something my brother could have easily accomplished from what he had learned thus far. Unfortunately for my brother he and I loved messing with our teachers and I had, unknowingly, started to develop my god complex.
Instead of submitting his own code using arrays and the various insert, sort and search functions he had been learning, he submitted code I had written a month or so prior. As I mentioned, I had finished the Pascal curriculum already and had been learning advanced concepts on my own in Pascal, so the code my brother brought back to school involved multidimensional dynamic linked-lists that constantly re-sorted and relinked connections as data was added all while the connections themselves were a separate dynamic linked-list which the programming created to classify the various connections. It was a bit of a monster of an algorithm and although I could follow the algorithm I wrote, it was an impossibility for me to map out the data by hand once the program had more than a handful of inputs. For small lists it was incredibly slow, but for large lists it was incredibly fast and often returned information that was unexpected (but still correct).
My brother got an F on the assignment. Granted he deserved an F for submitting someone else’s code, but the reason he received an F was because his College Professor could not understand the source code. My brother went on to change majors to Communications. Me, I went on programming and doing IT in general.
After a brief stint in the US Navy, I hopped back into the IT service industry and computer programming, and set about learning C++ on my own. This continued for a few years as I got into more and more advanced topics in computer science. Artificial Intelligence had always been a fascination of mine and so I eventually picked up a graduate level book on Neural Networks which was touted as one of the latest advances in AI programming techniques (now its all about deep learning; blah). There, about three quarters of the way through the book, was my Pascal code ported over to C. The same code my brother had submitted and received an F on. They even kept my function and variable names from the Pascal version.
I was pissed. I was beyond pissed. I wanted to kick and scream and sue and kill all at the same time. I had no idea who this author was but I knew it wasn’t my brother’s college professor; so how the hell did my code wind up in a graduate level book on Neural Networks and why wasn’t my name, or at least my brother’s name, attached to that code? Kill. Kill. Kill.
And then it dawned on me – at the age of 17, while still in high school and some 10 years prior – I had written a Neural Network. A concept which PhD Computer Science candidates write their thesis on. A concept that college grad professors get research funding for. And I had written one. A simplistic one? Definitely. Crude coding? Maybe. But a Neural Network all the same. God complex kicked in full bore and I forgot about “Kill. Kill. Kill.”
I stopped reading books on computer science (unless required for a college course) at that point. People still buy me some on occasion and they go on my bookshelf, right next to that book on Neural Networks. I did have several sets of reference books that I would use on a regular basis, but that is now all on the Internet or in help files (usually on the Internet). I haven’t stopped caring about Neural Networks or Fuzzy Logic (or Deep Learning as the kids call it these days), as I see that as the future of Artificial Intelligence, but that is another tale.
Anyway, that is the story of why I stopped reading software coding books, how I developed my god complex and why I am such an arrogant #devsnob. The end.