Programming thoughts

Just a list of ideas

Remember your goals and try not to get too bogged down with technicalities. If something's just not working the way you thought it would, then think there's a possiblility that there's a better way of doing it - perhaps even a less focused, bigger picture version. I find that when I'm stuck on something, it's usually because I haven't done enough research on the subject to have a better understanding of it, perhaps even a full understanding of it is what works best.

Sometimes, it's best just to ditch an idea altogether because it's just plain wrong or it's not going to get you what you were after in the first place. And make sure you do some research, if not some, a lot of it. Don't expect to get anywhere without research. I'd say the most successful implementations are ones that are very well researched. You'll have a much better design approach with doing your research, and a heavy amount of it is best. Once you know exactly what you're after, you'll probably know the road to get there.

When it comes to actual research, make sure you don't lose track of the exact topic you're after. It's easy when scouring the web to find an article that somewhat relates, just make sure to find the articles that REALLY relate.

Planning for the long road takes time, and it's hard to do things when people want something in a hurry. You can do the quick fix for now while you plan for the future. Remember just because you think you have it right, doesn't mean you do. And if you have something working, it doesn't mean it's the only or best way. And just because you stare at the computer screen, doesn't make you a programmer :)

Sometimes it's useful to start out with a stripped down, working version. Then progress to a more full-featured version. Usually it's best to plan ahead for this though so you don't end up re-writing for handling a larger feature set. I find it useful to take a step back and look at things from a higher level / big picture to see if a project is meeting the initial goals. Sometimes, it's also useful to look at the data flow to make sure things are happening when they should be and in the correct order. Also, make sure you are passing the correct data at the right time. Programming and development can be thought of as a progressive problem solving scenario and a Q & A for review, starting from nothing or researching an existing implementation, following a practical or better visioned design, whether or not it works, if it works as expected, bug checking, finding what needs to be there or not, figuring out if the implementation is suitable for it's use, and a check for whether or not there's a better way of doing it. I sometimes like to think of a system as a vertical beast that is read linearly :)

Manage your time, even when you're not under the gun. It's useful to think that you do have limited time, just to kick start yourself to try to accomplish more. Also, don't forget that programming is started in your mind, so try not to dismiss included code once it has been added to your project. If it's part of your project, then it will always be alive until removed from your project. Therefore, just because you added code X amount of time ago, doesn't make that code any less-existent than when it was first added to your project. Time is irrelevant to source code because code is static. Adding piece by piece is generally the best way to do things, but just because you added something, then ran into problems, doesn't mean an earlier piece of code isn't worth revisiting. Most of the time, code can be thought of as Dominos, in that if you have a piece missing, you're sequence might not make it to the end as you expected, as one piece of code is relying on the previous data to be available and correct.

Also, remember that programming can also be thought of many layers being built upon one another. If you are failing at something, it's quite possible that you're not starting at a low enough level. Every project needs some starting point, so try to aim for the lowest level you can think of.

When preparing a design, make sure you know at every stage of allocation, exactly what and how much space you are going to need for storage. This will help you determine a format for the data you are working with. A 3d game is a sequence of 2d images of 3d representations.

2 + 2 =