[Off-topic] Locklear308:
Hear me out for a few minutes guys.

Programmers now days are great...right? No... they really are not. Because programmers are making programs/games on extremely powerful machines (if you think about it) and have zero concept of "limits". A game for example, Titan Fall on PC is 50GB's. Why... for the love of all that is good, is this game 50GB's? Why? Because the programmers that made it suck. There are so many games that take up WAY too much space and take WAY too much power to run...

BUT

But this is NOT the programmers fault... They were not trained correctly. Hence my topic point.

Limitations Make you a Better Dev.

What is a limitation? It's something that limits you, like a gallon container can... only hold a gallon. Makes sense right? Well, let's move on the programming. Most programmers now days are making games/programs in what I like to refer to as "Creative Sandbox Mode". They don't really have limitations. They can almost do anything! But this is a problem... let's see an example to illustrate the reason why.

We will use the game "Kerbal Space Program" as our example for this topic. (Fantastic Game BTW) For those who have not seen/heard about it. It is a game where you build space rockets in, for the most part, a very well simulated Solar System. You start from a planet similar to earth. The only difference is the size of everything is scaled down. But just keep in your mind, "You build rockets to go to space".

Now, moving on...

When this game came out at first as early access. It was basically a sandbox, while you had no "God mode", you had access to all the rocket ship parts and they had zero costs. You could build anything, and people made all kinds of nonsense, went to the Mun (Game's name for the planet's moon) and beyond to other planets.

Sounds great right? It was... but then something changed a few years later.

Career and Science Sandbox were added. What is this? Well it's a mode with progression in mind, Career has you earning money through space missions and contracts, and Science Sandbox requires no money... but requires "science" points to acquire new parts.

You start out now...with very limited parts, and the things you are asked to do in the missions seem "impossible" at first.

"You mean I have to get to orbit with ONLY these parts? WHAT? THERE IS NO WAY!..."

Except...it was possible. Suddenly people, while under a great limitation, began to progress. They learned new and better ways and deigns to make more efficient rockets. You advance, and learn and become better. You progress, slowly unlocking more parts...but always being under this limitation wall, it forces you to grow and learn even more.

Now...end game. You've unlocked all the parts. You build the "best rocket" you can muster. Compare it to your "best rocket" while you played in Free Sandbox mode... It's a 1000x better. It can go much further on less fuel, it's less heavy, and it has far more research and science ability that ever before. Smaller rockets can now go beyond the moon and back, where as before, huge ones barely made it into orbit...

What does this mean? Now...with your super efficient skills, you can go EVEN further than ever before, you're able to truly maximize the potential of the parts given to you.

You've become efficient . You've become a better player.

But the KEY here for relation to my topic is...

"truly maximized potential"

Now, let's get back to programming. Now that we have an understanding of what my point is. Back in the day, game developers had extreme limits. Hyper tiny storage sizes, extremely low amounts of ram and processing power. You couldn't just do whatever you wanted. The PC wouldn't even run.

Look at games like Super Mario Bros, a classic simple game... But, fast forward to later in the NES's lifespan, look at Megaman. The difference in total quality, and game play, it's a night and day difference. You go from a super basic, jump on enemies, beat the same boss over and over, running through basic one color levels... to a game that has a "level select" and unique and difference bosses, and... TONS of different enemies. You see levels with lots of animations and color! Holy crap! This is amazing! AND WHAT!? YOU GET WEAPONS THAT DO DIFFERENT THINGS!? *mind explodes*

See what happen? NES programmers got better over time, they learned to maximize what the NES could do despite its limits. Games that at the start of its' life that would have been thought impossible... were suddenly happening.

So let's fast forward to today... what do we have? For the most part... our computers today have near limitless abilities. Most computers have over a 1000GB's of storage, over 4GB's of ram (if not over 8GB), and processors that can do millions, if not nearly billions of calculations per second... Vs computers with 32KB's of Ram, 1 MB of storage, and a 10 mhz processor.

So we should be seeing games with extremely outrageous levels of ability and graphics right...? No... we don't. Well, we have a few. And I think the reason is older devs who were used to coding efficiently. They suddenly become god like. But new programmers? They don't understand limitations like older ones do... so they code poorly without knowing it. This is why you have games like Dark Souls 2, which on PC runs at 60fps at 1440p without the SLIGHTEST hint of issues. (Seriously, it's the smoothest PC game I've ever seen). But then games like Arkham Knight, just barely run at all. (if it even starts...) Also... the version of the Dark Souls 2 that contains all the DLC and improvements to the game (SotFs), weighs in at 23 GB's. Whoa... that's so much! ... Well, it's an extremely huge game, most playthroughs will last you at least 50 to 70 hours. There is so much to see in the game, and it's intense. And...then you have Titan Fall. A multiplayer game with a few maps, no singleplayer (at least when I played it), and it's 50GB's? What? Why? Even GTA 5 is 55GB's (ish) and it's an absolutely MASSIVE map, with detail unlike any seen before. And they crammed it into 50GB's? Wow. While Rockstar and From Software have had a few bad ones *cough* GTA IV and Dark Souls 1 on PC *cough*. They still proved in the end, they knew how to properly make a PC game.

Also, for an example of "getting a ton" from very little processing power. Look at the gameboy advance. It had a 16.78 MHz processor... yet look at the outrageous abilities it had. Look at the games, compare them to mobile "games" (Mobile games are trash). Could you honestly recreate The Legend of Zelda: A link to the past run with just 16mhz of power? If someone didn't tell you it was possible, you'd most likely say, "You cannot do that...". But you can, they did. This is highly efficient coding.

Another example is Roller Coaster Tycoon 1 and 2. If you've not played this game series, I advise you ALL to look it up. This game, released in 1999, was coded by one man. And in 1999 (where the average CPU was Pentium 3) this game let's you build Parks, like with roller coasters and rides. This game could have THOUSANDS of guests (People in your park, 1000 to 4000+) , all with different likes and needs (ride types, needs like food or the restroom), with dozens, if not 50 to 100+ rides going on at the same time... and it ran perfectly fine. In fact, when I played it, I never remember it ever slowing down or crashing, not once. Could you build an entire game with 100s of rides and 1000s+ of guests each with their own unique needs, and plus all the other things going on, on a Pentium 3? With ZERO lag and near instant startup?

This is just one of my issues with devs/programmers today. It's not just about games, or graphics in games mind you. It's about programs, applications, media, just everything. Devs today, learn in a near unlimited environment. They don't learn tricks, they don't learn workarounds, they don't learn how to truly maximize what they have because nothing forces them too.

Now, as a big note... I don't want to sit here and sound like I'm saying any devs are dumb, or don't work hard. I don't mean that at all, because it truly isn't their fault. Schools and such today don't teach with limitations, in computer science and in everything else (that's another topic).

They don't force you to make a massive game that fits in a CD (700MB) that runs well, they don't teach you how to truly optimize, they don't teach you how to overcome limitations because they don't challenge you with limitations.

Limitations, force you to get better.

I ask that all new and aspiring devs now days, to try to limit yourself.

.. because in the end... you'll become a far better programmer than you thought possible! You created an android app that runs fine on a snapdragon 810? Alright, how about you make that same app run just as well on a phone with a dual core processor and half a GB of ram from 2010. Start with limitations, you'll think... "This is not possible" , but image to yourself that it is the only way... you soon start finding tricks and learn how to overcome the limitations and create an app that works fantastically with very minimal power and resources. Then, with your new found efficiency skills, you'll see a whole new world of possibilities on more powerful chipsets. Just like in the space game, when you are forced to do more with less, you soon found yourself able to go much further than before when you did have more.

Limitation Forced Growth increases your efficiency. This can allow you to make night and day more powerful applications that run with far less power.

Discuss.