You’re more than welcome Gregory
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
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!!
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!