So I've been going through the book Coders At Work by Peter Seibel, which has been amazing so far. It's almost jaw dropping reading the stories from the programmers he's interviewed and really reading about their thoughts at the time of key development. What was most shocking of all was just how a lot of the major milestones in web development and programming as a whole were not planned. Perhaps this message is most true when someone would discuss web development and how Javascript took off to be essentially the largest programming language of the world now in terms of SLOC written.
It is comforting that everyone else seems to share a disdain for C++ and concurrency issues (no surprise in really though).
As a software Engineer, I find the talks regarding Design Patterns pretty fascinating. I mean we were introduced Design Patterns by the GoF in University as these powerful tools to help solve intricate and complex problems. However I have always felt myself leaning towards the camp of that these design patters should be intrinsic to the language if they are so important and useful. Many notable programmers from the book divide themselves clearly on Design Patters as either a blessing from god or a curse from the devil and I find myself in the latter. I think to put it best, one of the programmers make note that the use of design patterns only display the defunct capabilities of the language in use. Definitely through my experience with C#, I enjoyed using EventHandlers nicely incorporated to the language in comparison to perhaps the way Observers are performed in Java.
My only gripe with the book is how "old school programmers" are constantly referred to as "hackers" and how many of these hackers advocate that perhaps these new generations of programmers (such as myself) will never be up to par because of our lack of experience of bit twiddling and working immensely in machine code/assembly.
On the internship side of things, I am finally approaching the top of the learning curve in my opinion of working with a huge code base. Perhaps the largest hurdle was just getting a mental map of the whole API and the network of dependencies. There is a fine line between discovering the implementation or interface for a specific functionality I am looking for or just asking a coworker. I think it is important to balance between doing it yourself so that I become more familiar with the code base but however do not waste too much time going in all directions.
It's pretty eye opening to see how a multi platform game is being produced and the difficulties in such a task.