Archive for Philosophy & World View

How do you know if you’re an Over-Engineer?

There are a lot of programmers who are “over-engineers” which I guess the extreme opposite is the “brogrammer”. I consider myself a “practical programmer”. Over-engineers are people who look to the “Rube Goldberg” way to get to the finish. Like over-lords they want to micro-manage every detail because if offends their obsessive compulsive nature. While the point is to get to finish, they are the ones who tend to relish the process rather than the result. How do you know if you are one?

  1. You create a tool for another tool. “I’ve got this great tool it helps you do X. But to do X you have to use this other great tool called Y. I’ll have to create an installer, an icon and documentation, but I’ll save that for later.” Unless the tool saves at least double the time, I would avoid creating any tool at all.

  2. You never finish any projects. This is for the person who doesn’t even like the result, and ends up doing it for just the process. Back in the day I was making a fighting game, but focused on the sprite engine, then just quit. After about 5 years of doing it this way I stopped.

  3. You can’t document a moving target. Since everything changes all the time (OCD), you just can’t document anything. Everyone is left out of the loop. If you cannot teach someone what you made, you cannot grow, because no one can take over.

  4. You pass a deadline just to refactor code. “Screw the self-imposed deadline, screw marketing! This code must be refactored now!” Basically under the hood is more important than the final result.

  5. You want to use multi-core PureMVC on Hello World or Pong. It’s too simple, so you can’t let that stand. Get Robot Legs or PureMVC on it immediately!

  6. You make getters and setters when you could have just set it to public. This is for AS3, people do this even when their getters and setters have the same effect as setting them to public, I have no idea why.

If you want to add anything to my list let me know in the comments.

Differences between artists and programmers.

I work at a game company in Las Vegas.  We have artists, musicians and programmers.  I, of course am a programmer there.  I was working late one day, while seeing artists usually work normal hours and it got me thinking about our differences.  First off, there is a difference in salaries (not always!), personalities and world views.  When it comes to work though there is a definite difference:

Artists and graphic artists can have many skills using tools such as Photoshop, lllustrator, 3DS Max and Maya.  All of which I consider very difficult.  But the end-result of their work is subjective, that is, it depends on them and it depends on who is looking at it.  On top of that, they can adjust their work depending on their needs.  If there is a project that doesn’t interest them they can always change their style to reduce the time it takes to make it.  Same goes for deadlines, so if they were given one day to make something, they can adjust accordingly and make it in time.  On the opposite end, if it’s a project they enjoy the can spend more time on the quality and detail.

Programmers, on the other hand, their end-result is usually objective.  So for example, if I made a button that goes to a menu, and it doesn’t, that means it doesn’t work, and anyone who sees it will know it doesn’t work.  I can’t fudge it.  If I made a function to calculate total sales of widgets, it’s either right or wrong.  So if my game doesn’t connect to the server, I have to stay late until it does and does it right.  There is no way around it for me.  If your manager happens to also be a programmer, then you really won’t be able to save any time, especially ones that love coding standards and conventions.

In conclusion, programmers need precision and accuracy, while artists do not.  An artist can miss a stroke by a few pixels, while a programmer can’t be wrong.  I apologize to any artists who may be offended 🙂

How to think like a practical programmer

I’m going to put in some useful programming bits, but for now this is all I got. Here are some useful tips that should pop into your mind if you’re a practical programmer. Some might say its buzz-kill or kill-joy, others like me might say that it’s practical:

  • “Do what you can, with what you have, where you are.” -TDR
  • You don’t have to memorize it, you just have to know that it’s possible.
  • Everyone’s code is crap. “Judge not, lest ye be judged.”
  • If it doesn’t advance your cause don’t do it. This includes “feature creep”.
  • K.I.S.S. = It’s a good thing.
  • Occam’s Razer = Also a good thing.
  • Top 7 programmers bad habits
  • The four golden rules to be a better software developer