Self-Discipline advice for a pedant, a perfectionist, and a newbie!

Hi all,

So a problem I have with learning to make games is that I want everything to be perfect all the time, and get annoyed when I spend hours on some code or a model and still not have it running exactly as I imagine. This then causes me to hit a brick wall.

Does anyone have any psychological advice about how to tell myself to just use a crude, half-baked model/script that kind-of works, just so I can continue developing the overall game?

On a related note, does anyone else have the urge to make every piece of code as mathematically general. and modular. as possible? I find that even with code that works, I want to eliminate as many hard-coded numbers or functions as possible. I almost want each component to have nothing to do with the GameObject it’s attached to at all, expect maybe for a raw data list of floats and ints and strings attached that the component references.

This can lead to highly generalisable code that can easily be recycled time and time again, but has the disadvantage of taking AGES, and causing me too much stress when I can never quite convince myself that it’s just good enough as is.

I dunno if this rant made any sense or chimes with anyone. But let me know how you go about taming your inner-pendant!

(I might be stereotyping and wrong here, but I’ve found this is more of a problem for people with a formal Maths background --my degree was Maths and Philosophy and my PhD is Cyber Security. People from a more engineering or computer-technology background seem to be able to steam-roll through a project and not care too much about how clean or pure it is!)

I hear you, and can answer yes to most of your points.

For myself, I tend to not worry too much about the visuals, but coming from a software development background, writing anything that feels dirty / cheap / lazy or has a smell is very difficult for me to just leave.

One of the first things to realise, probably, is that there is not going to be a perfect version of your model, your code, or anything else. Perfection is fairly objective, so accepting that, and trying to let go - just a little bit - I think is key.

If you like rules, and who doesn’t right :wink: You could make your own development process a bit of a game in itself. For example, you need to write some code to create a specific piece of functionality. Before you’ve pressed the first key on your keyboard your head has already run away with you and told you of all of the other places, which don’t exist yet, where you would be able to use this piece of code if it were just a bit more generic, less specific to the current piece of functionality. So add a TODO. Write the code now, quickly, reasonably tidily, but leave a TODO that says “This can be improved, I will return”. The game is to set an arbitary number for yourself, and it needs to be yourself as everyone will be different, this number is the number of TODOs you can tolerate not being resolved, your Perfection Threshold if you will.

Lets say you decide on 10. You keep writing the code so that you can add more features and at the same time are actually seeing the rewards of what you are creating, something which you may not if you head down the perfectionist road from day one. This gives you a good feeling and keeps enthusiasm high and thus helps with momentum. When you get to 10 TODOs its time to stop writing the code and take stock of where things are.

The second part of the game is to now determine which of these TODOs really matter RIGHT NOW, but also, have any of them perhaps changed now that you have seen other parts of the project unfold, is there a TODO that you thought you needed but actually, you can just get rid of a bit of code and also the TODO? Bargain.

Looking at the TODOs, can they be prioritsed? Is there one that is burning away at you like the Eye of Sauron?

Work through a few of these TODOs, but accept that these first sweep again doesn’t have to be perfect, maybe one of your TODOs creates another, but the aim to is reduce them a bit, not necessarily all. Now, return back to the more fun stuff, add another feature, some more functionality, play your own game… and repeat.

Bluntly, your code / game will never be perfect in anyone else’s eyes, and probably not in your own, strive for very good instead of perfect, but start with ok, build up to good and then refine for very good.

On the backgrounds front, I don’t come from a formal Maths background, but have experienced all of the things you’ve stated and have striven for perfection on a number of projects. In my case it may be OCD (CDO!) in some form, who knows, I think often we all like things to be a certain way, some just more than others, and this often only really stands out when a persons’ way of doing/wanting something seems odd to other people.

A final thought - think about the levels of happiness involved in your project. Your post reads a little of frustration, I’m guessing that not only do these things take you longer because you are aiming for perfection, but often maybe they don’t get completed, perhaps because what started off as a relatively simple objective is now huge because it has to be perfect. Your happiness is being affected by this and, the happiness of those who are waiting to play your game - they aren’t ever going to see it! :slight_smile:

I would strongly suggest trying to find a way to lower your own bar, doesn’t have to be by miles, maybe just aim for very good (as deemed by others!) than perfect. That potential customer waiting to play your game and tell their friends how good it is is not going to be peer reviewing your code.

I hope the above helps a bit, even if by nothing more than knowing you are not alone :slight_smile:

I can’t thank you enough for such a detailed and thoughtful reply!!

I like this game idea of disciplining myself to use TODOs frequently whenever I have a new idea, instead of carrying-out that idea immediately (which usually creates an infinite regression of more ideas within those ideas ). Last week I spent 3 days writing a C# app that acts as a digital CV, where the employer can ask it questions about me. For some reason, this was the result of many tangents about how to write the most precise and customisable CV of all time).

I’m getting a bit better at setting one or two (at most) achievable tasks and not doing anything else at all until they are done. But I think your TODO idea is even better in that I can have my cake (get the job done, even if imperfectly) and eat it (let my free-mind and pedantry have their way).

You’re very insighfull regarding the happiness and frustration. I love my work and hobbies, sincerely, but my god do I get anxious and frustrated when things just aren’t coming together or my brain just can’t absorb all the ideas I have at once! When I can calm down to just one or two ideas, I’m very good at quickly realising one is rubbish and one is good, but when there are a dozen plans in my head, I just get dizzy.

Anyway, thanks for your advice!

You’re more than welcome Gregory :slight_smile:

I like this game idea of disciplining myself to use TODOs frequently whenever I have a new idea, instead of carrying-out that idea immediately

It could of course be anything else too, e.g. post-it notes, items on lined paper, tasks on a Trello board, that way it doesn’t have to be solely based on code, but I would suggest something visible.

For some reason, this was the result of many tangents about how to write the most precise and customisable CV of all time).

Sounds like a fantastically cool project, and if its working for you then well done, of course, that could have been 1 day on the CV and 2 days spent doing other things :wink:

I love my work and hobbies, sincerely, but my god do I get anxious and frustrated when things just aren’t coming together or my brain just can’t absorb all the ideas I have at once!

Need to remember to be kind to yourself along the way, the best person to look out for you, is you… I found the Pomodoro technique was quite useful for helping me to focus on a specific task, rather than many tasks, as after a short sprint of work, typically 25 minutes, you get a nice 5 minute break - time to down tools and rest… the more Pomodoros you complete, the longer the break you get.

I’m very good at quickly realising one is rubbish and one is good, but when there are a dozen plans in my head, I just get dizzy.

I don’t know if you are familiar with story points at all? From a Scrum perspective? If not, they are a way of scoring a task, the numbers are based on the Fibernachy sequence. The score can represent how difficult it may be to achieve the task, which could be for a number of reasons, maybe time, available skill set, needing more information from other people, and so on. It’s a handy way to help focus/prioritise your tasks with the aim of getting as much done as possible. The scores can be reviewed and updated as necessary. You could combine something like this with your TODOs/post-its/Trello tasks. You might want to refactor the entire project to make it even more awesome, but maybe that scores a 13, where-as you may be able to deliver three or four other lower scored features in the same amount of time and feel considerably more accomplished for doing so. This isn’t to say that those higher scoring tasks aren’t important or won’t get done, you are after-all responsible for scoring them, but maybe they need a re-think, or breaking down into smaller pieces, or maybe, they just don’t matter as much in a week or two as you felt they did today.

Another great way for not getting bogged down or blocked is by being accountable to someone other than yourself. When you develop on your own you can often find yourself with the luxury of lots of time, deadlines that can be easily shifted, no real hard goals to achieve. If however you work with someone else, you become immediate accountable to each other for not holding the other up with their work. By working with someone else, or a few people, you may find that you are simply unable to apply the perfectionism as much as you want to because you have to have something ready by next week, there simply isn’t time to do all of the things that would be needed for the perfectionists approach in that time, and you don’t want to let the others down etc etc. Even if its not people working on the project with you, you can generate some degree of accountability through sharing the development progress publically, perhaps in your own dev blog, or on the forum, once you get a few people interested in what you’re doing they are going to want to start seeing more and more updates, when you say “This week I’m going to add sharks with lasers on their heads” - in a week’s time your followers are going to want to be seeing those sharks and lasers!! :slight_smile:

The following one probably pushes the boat out a little further than most might be comfortable with, but I’ll put it out there anyway. During a spate of mental illness I saw a counsellor for CBT, whilst it didn’t quite go to plan (long story), I became quite interested in psychology in general. There was a form that I was given on one occasion that I remember very clearly which might help, depending on how much you may struggle to lower your perfection threshold. It was basically a chart for logging negative thoughts, you wrote down the thought, you scored it and so on, but then on the other side of the form were columns for challenging the thought, it looked a bit like this;

Situation / Trigger:
Feelings (rate 0-100%):
Unhelpful thoughts/images:
Facts that support the unhelpful thought:
Facts that provide evidence AGAINST the unhelpful thought:
Alternative, more balanced perspective:
Outcome (re-rate emotion):

To give a slightly out-of-game-dev-context example;

  • I let another driver pull out in their car and they don’t say thanks
  • Upset/hurt/angry - 100%
  • If I was a better/nice person, people would see me, acknowledge me, and thank me for my good deed
  • Everytime I let someone out they never say thanks.
  • It’s not actually everytime, just sometimes.
  • Occasionally, other people don’t thank me for letting them pull out, maybe they are not rude, horrible people, they just have other things going on themselves.
  • A little upset, but in the grand scheme of things, everything is ok. 10%

Ok, a bit noddy, but hopefully you get the idea… but here’s the thing, this can help with the perfection thing too… if you find yourself facing a task that you feel has to be just so and it becomes a block, e.g. you can’t move because you feel 100% that this thing just has to be perfect, trying filling out these columns. Asking yourself why it has to be just right might open a train of thought you hadn’t considered before but when it comes to the challenging yourself part of the form it will be really interesting. You will write things in that challenge your previous belief, now, if you can write it, you’ve clearly thought it, and if you can think it it is definitely achievable.

  • Situation/Trigger: This project’s code has to be perfect, scaleable, re-useable, generic, perfect!
  • Feelings: Stress, worry, anxious - 100%
  • Uphelpful thoughts: If this code isn’t perfect and I share it with anyone else they may find fault in it, in me. If the code isn’t perfect I may have to re-write some of it at a later stage. If this code isn’t perfect it may contain problem I haven’t thought of yet.
  • Facts: I posted some code on a forum once and a couple of people criticised it. One said I should do it all a completely different way. I worked on a project once and was criticised by my boss because I had to change some of the code I’d written because it didn’t work as it was supposed to.
  • Facts that prove against: Despite what they said, I managed to get the code to work, the project did what it needed to it. I didn’t need to revisit the code, the customer was happy. I will never know every problem that this project may face.
  • Alternative thinking: 7.6 billion people in the world, only two of them criticised my code. I found my own solution and got the code to work. I often need to re-visit my code and make changes, sometimes because the direction of the project change, sometimes because I found other/better ways of accomplishing tasks, this is OK, other developers do this, it isn’t just me. Code will always have bugs, but I can fix them as they arise because I have the skillset I need to do so.
  • Outcome: Stress 0%, Worry 0%, Anxious 5%

The above is obviously a bit of a mashed together example, but you will hopefully see how this could help but it depends on the individual and what they are facing. I by no means am suggesting you need this, I just happened to find this sheet quite useful when considering my own feelings regarding perfection. If you can challenge those thoughts then you can lower the bar a little, and lowering the bar a little will help you to move forward again - in my opinion.

Here’s a link to a version of the sheet in question;

Sorry for the lengthy post!

1 Like

Ahh excellent, thanks Rob.

I’m sorry to hear about your struggles, unfortunately mental health problems are both prevalent yet still almost-taboo. No one would be embarassed about sayingf they have a broken leg, but we are shamed from talking about anxiety, or depression.

You mentioned something that rings true for me: being accountable. Both in my gamedev hobby and my PhD research, I am very much unaccountable to anyone. On a day-to-day or even month-to-month basis, it really doesn’t seem to matter to anyone how far I’ve progressed or how well I’ve done. (Even when I deviced a Cyber Insurance statistical risk model for an insurance firm in London, they didn’t criticise me, and would be thrilled with anything I did even if I don’t feel I actually did anything half-decent. It’s weird.)

This creates a bubble where my only supervisor is myself, and I can be quite harsh and picky with me! If I ever get a job in GameDev, this would change pretty quickly I expect.

I’ll work with your CDB pdf too, thanks for that :slight_smile:

Also don’t feel obliged to reply! I feel kind of guilty that you wrote such a long and insightful reply!

~Greg

…I may have got a little carried away with my reply, sorry ref the post length. Interesting subjects which often can’t be constrained to a paragraph :slight_smile:

Privacy & Terms