Hi, VERY occasional poster here
Thanks to the articles and advices from Gamedev, I spent quite a number of summers practicing C++ concepts learned from school and applying to the game engine experiment I had. And now I have a job
Other than expressing my gratitude towards the community and share my joy of being able to create a rudimentary engine, I'd like to bring this topic to discussion.
Is it better to try to follow the new technology? Or is it better to sit back and wait and prepare for the future by strenghthening the basics?
Why I prefer the basics
Now there are new concepts, new technologies everywhere and every day, new phones, new frameworks, new IDEs almost every month. (okay, I'm exaggerating a bit, but you get the idea). I'm finding it hard to follow. And in reality, I'm a little resistant to these changes because deep down, I think they'll be obsolete by the time I'll need them anyway.
Although I know that the (not even general concensus, more of an accepted fact) is that we need to stay current to new technologies. I prefer to stick with the basics.
As an example, I didn't even know what design patterns were when I started applying for the jobs, so I just brushed it up before the interviews and forgot all about it when I started working. I didn't even know what the Interfaces were at the time.
But once I learned what the interfaces are, it was very easy for me to implement these patterns although I didn't even know I was implementing one. I mean, it simply made sense because I started writing my engine in spagetti code, it became a nightmare to debug, so I naturally started using inheritence (although I still didn't know interface) and proper namespace to organize my project.
It just seemed natural to me, sometimes I even think learning design patterns might limit the possibilities of these uses. Again, as an example of my engine, shortly after my work started, I learned my engine, albeit it used Lua to act as commands (so it was kinda cheating), it was almost an implementation MVVM/MVC pattern (sorry, i still can't quite grasp the difference)
Then I learned WCF, which I thought was a pretty awesome technology, but the configurations is a giant pain in the ass. We work with another company and our services would talk through WCF, sometimes it took almost a week just to identify a typo in the interfaces and then there's all these other settings like KnownTypes, Messages, sessions etc...
What triggered the discussion was today, I found the book i always wanted to read: MUD Game programming by Ron Penton and started reading it finally. I really enjoy it. But then again, this is OLD OLD technology. On the other hand, new technologies are all relying on these basics, they will change/evolve, but the basics won't.
Then I looked at my bookshelf: "Assembly Language for Intel-based computers", "Understanding Telephone Electronics", a book on how to fix cell phones using OLD OLD GSM chips, these are the books I've gotten a long time ago, but were still on my to-read list. I felt like I'm killing my career,lol
Now my beef with the new technologies
There are just too many abstractions~~ There are soo many things that are hidden from us it feels more like using an application (like MS Word) rather than writing code. I love the libraries Microcontroller developers make, they provide the bare minimum to do simple things, so we don't have to go too deep down on protocol level, but we have enough control to know exactly what's going on.
But the new frameworks? I've worked with Android for a bit, and thought that was the most annoying framework ever. So often I had to fight just to make it compile because of these rules imposed. I probably didn't learn how to use the UI Thread properly, ended up having to create another Thread inside the UI thread to show a simple text change.....
Sure, I could've spent more time on reading how to update the UI properly, but that's exactly the beef I have with these type of new technologies. Too many abstractions.
Yet, according to what some manufacturers are saying, programmers WANTED them to ditch WM and move to android, it wasn't the users, it was the Devs who wanted the change.
I suspect the real reason why, though, is something like this (using the graphics guy at work's quote):"I hate working with Magentas, why can't them use Alpha channels like a 21st century technology"
So, what do you guys think? Is it worth spending the time to try to follow as many new technologies as possible? Or is it better to occasionally taking peeks at some of them but really focusing on the basics?