I think over the last 10 years I’ve evolved as a coder. Here’s some of the milestones I achieved.
You Start Using Source Control
You spend half a day trying to find what you changed in your code that has suddenly made it stop working. You realise that your current form of source control (CTRL+Z) isn’t doing you any favors. You spend an hour learning about source control and never look back.
You Stop Obsessing Over Optimizations
You decide that getting everything working should be the first priority. Then you’ll worry whether that function that gets called once on shutdown is fast enough.
You Stop Coding The Same Things Over and Over
You realise that half your time is spent writing the same thing. You would have used your old code but it’s so messy and you feel dirty. You decide to seperate your common generic code into its own utility library. And never look back.
You Think A Step Higher
Instead of coding a new class factory for everything that requires it you make a generic class factory template.. now you never have to code a class factory again. You actively look at what you’re doing and think “what can I do to make sure I never have to do this again”.
Including Windows.h Makes You Itch
You don’t want to include Windows.h anywhere in your project anymore. You know it’s going to come and fuck you in the end somehow. It’s going to rename your functions. It’s going to give you shit loads to fix when you try to make your project portable. So instead you go the extra mile and you look for the standard functions. If you can’t find alternatives you make a platform.h which includes a platform_win32.h under windows. It feels good.
You Start Using Build Automation
You have come to find that dropping cpp files into a vcproj isn’t the best way to manage your project. This is drilled home when you come to compile it on another platform. So from now on you use something like premake to build your project files. Now you can generate projects for Visual Studio, GMake, XCode, CodeBlocks and anything else you would ever want to generate them for. You are portable.