Perfectionism and Programmer's Block

Started by
14 comments, last by Giorgos Theocharis 9 years, 11 months ago

I think that there is merit in thinking very carefully about what you do before you do it, just to stress this point. However, it is true that you cannot foresee what you will eventually ask of your code, so the most important thing is to keep to good design principles. It becomes structurally much easier to later modify the flow of execution if everything is nicely encapsulated, and even change implementation details.

But best choose one or the other. Either spend an inordinate amount of time planning and thinking before writing anything, or do the basic ground work, and get started - and quickly identify what might need to be changed. That way you make the best use of your time :)

Advertisement

I will offer another suggestion.

http://amzn.com/0321146530

And older book, but it can really help you only write what you need. If you add some unit tests to your stuff, even if you don't test drive everything (because that's about impossible for the graphics part) you will still be able to re-factor your code when you find the design mistake. And its probably something new to learn, so that makes it fun.

Honestly, once you get enough tests in there, you don't even care about making mistakes. I find myself all the time doing something I know isn't going to work down the line, but because I've tested everything, I can fix it later.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

I can relate to this. Since I also fall into this block from time to time I can't give you the perfect cure but what helped me personally in dealing with this is getting busy with other stuff. The urge to focus on secondary stuff too much can be seen as a wrong/deceitful perception of time. In the moment of coding you probably have a lot of time on your hands and there isn't a perceived deadline which ultimately causes any project to fail but in reality there always is (life changes) and you know it. Keeping you busy with various things might remind you how badly you want at least your primary functions to work and eventually it will help you to use your (now perceived as limited) time to make any progress.

When in a pinch you will naturally decide to (given that you actually intended to make a whole game in the first place) make a badly looking/performing but complete game with horrible code rather than a well-concepted, feature-rich ressource-management system with fast performing gl calculations that you can only use in a demo-room.

If you find that the program you just completed sucks you can always make another one (which will most certainly be better).


You'll have to experiment to find out how you can teach yourself that definition. No-one can do it for you. For me, it works to consider each new project is a piece (not a whole) that I need to get closer to the "perfect" program. Part of that approach is to believe that perfection is avoiding mistakes;

Talk about profound! Life lesson here!

It is so true what you say about procrastination not just being laziness. In fact, before I read this post I have been wondering why it is that I can't finish a project. And I hardly even start a project, because I have this feeling it is not going to be exactly what I want it to be, and then I am going to scrap the whole thing. So indeed, I have been doing parts here and there as the ideas come. Slow process. I mean, all my little projects end up turning into AAA game ideas. So another thing I see is lack of focus.


I would add that you have to learn to accept that perfection is a process, not a goal.

Awesome quote!

They call me the Tutorial Doctor.

Same problem on hobby projects. Lots of time wasted on figuring out the perfect way and when it becomes obvious that a perfect way doesn't exist, it really kills my motivation.

Unfortunately at work nobody will care if you're motivated or if you're perfectly happy with your solution. Things need to get done and they need to get done in time. It tends to help on focusing on the _actual_ requirements. Look at what you really need, not at what you'd like or what somebody might find nice to have. The more complicated you make a problem in your mind, the less likely you'll ever start working on it.

Maybe in your case it already helps to set yourself a fixed deadline by which stuff has to work _somehow_. Most of the time, keeping in mind that your first implementation might be ugly and will be changed later can help with better design, because you want to isolate that "ugly" part from the rest as much as possible to keep it from having too much influence on the rest of the code.

f@dzhttp://festini.device-zero.de


It is so true what you say about procrastination not just being laziness. In fact, before I read this post I have been wondering why it is that I can't finish a project. And I hardly even start a project, because I have this feeling it is not going to be exactly what I want it to be, and then I am going to scrap the whole thing. So indeed, I have been doing parts here and there as the ideas come. Slow process. I mean, all my little projects end up turning into AAA game ideas. So another thing I see is lack of focus.

I feel the same thing, but i have begun to understand that it's on personal projects that i get this feeling. When there is a deadline, i forget everything and i am just developing. So what you need to do, is focus on some small projects and force yourself a deadline.

If needed, start a blog or something public to declare your goals and update your progress. Thus, you will have another reason to keep going. Hope it helps!

This topic is closed to new replies.

Advertisement