Take the 2-minute tour ×
Personal Productivity Stack Exchange is a question and answer site for people wanting to improve their personal productivity. It's 100% free, no registration required.

I am not absolutely sure this is the correct place for this question, though I couldn't find a better one - please point me to a proper place if possible.

I am a 13 year old guy, I love technology in general, and I am most of the time programming. I believe I am actually a good programmer for my age, people tell me that too; but recently (not really, it was about 2-3 months ago) I have started working on a project which isn't really maintained by me, I am just a developer, and although there is no exact deadline, I think this is taking too much and I haven't done much (to be honest, I couldn't do anything at all), I mean, it's been half a summer since I started it.

The problem is I cannot start it (nor any other project), I either don't know where to start from, or nothing I do satisfies me. I can think of everything in my mind, out of here, but when it comes to writing the actual program, I just don't know what to do or what I do doesn't satisfy me, as I said, thus I either give up or start losing motivation to work on it because I cannot sleep with something insatisfying.

I do not want to live my whole life relying on others' solutions, looking up Google or calling other people to find a solution to my problem, or searching how to organise my projects. I want to be able to come up with creative solutions to solve my own and others' problems, plan my projects my way and have my own ideas & opinions.

I think all of this is due to the fact that I am a perfectionist, I think everything has to be perfect and perhaps I end up requiring things to be too perfect, which I cannot achieve - though, I don't know how to "bypass" this.

This all is probably just too subjective and doesn't belong here, heh.

EDIT: Just to clarify things a tiny bit: Planning the project is easy. I have lots of paper with plans for my projects. I get all kinds of ideas when I'm out of the computer. But when it comes to write it, when I'm in front of the computer writing it, it doesn't satisfy me - not the project itself, but the code I am writing - it bothers me that I cannot get satisfied with my code, although I follow various designs I see on web, I search a lot about designing code and laying out plans, yet when I am doing it, it doesn't satisfy me. This doesn't apply only to programming, but this is the worst of them, because that's the thing I care about and do the most (I'm pretty much all of my time sitting on the computer because there's simply not much else to do except watching TV :p), it prevents me from starting any project. I have projects, in which I am not the only one working on and have people expecting me to show them my work but I am unable to start it, although I HAVE the skills for it. I try to seek solutions for my projects design yet others' solutions don't satisfy me either, in fact some of them seem even worse.

share|improve this question
2  
Your question seems kind of scattered, you talk about motivation and organization, but then you talk about seeking help from others and perfectionism. I applaud you at looking for advice. Seeking help from others is not a crutch, it is a skill. You can learn so much from others and from there, you can build on what you've learned. Embrace it. –  Raystafarian Aug 29 '13 at 0:35
1  
I'm not sure if I understand your point correctly. Could you please explain, why you are not satisfied by what you do? If you want to code the solution for a problem and it finally works, this should be a satisfaction, no? –  MostlyHarmless Aug 29 '13 at 5:48
1  
Please re-read the topic, I have added a "small" text with a better explanation of what I tried to say. –  ixjf Aug 29 '13 at 13:46
    
hm, it is clearer now - thanks for the edit. One more question: do you find solutions for the problems (or at least parts of the problems of the project) and are not satisfied by them OR do you just sit "in front of the empty sheet of paper" and do not know how to start and do nothing at all? It is a common problem, that beginning something is difficult, but normally, as soon as you've started, it makes progress nearly by itself... –  MostlyHarmless Aug 30 '13 at 17:28
    
I know how to start them, but I am never satisfied with it in the end. –  ixjf Aug 30 '13 at 17:52

4 Answers 4

up vote 4 down vote accepted

There is a lot to tackle here, but I'll focus on what I consider the single most important item for any project. That's the Project Plan.

You need to know what you're doing before you try to do it. Laying out the purpose and objectives, describing the vision, defining the scope, and then stating the requirements is where it all starts. Without a plan, you get false starts, scope creep, and lots of distractions. Once you have it, your project can take shape and stand a chance at being finished. When you're not sure where to go next or what to work on, your project plan helps to point you in the right direction.

That being said, a project plan doesn't have to be some formal thing; it's not special. It should come easy and seem kind of raw but has to be reasonable. If you're spending excessive time trying to make it perfect, you're wasting your effort and missing the point. This isn't where you work out all the details, it's where you define the basics and the milestones. Someone should be able to read your project plan and understand what you're trying to accomplish.

Here are a few good resources that might help you get started:

The kind of plans outlined in the last two links may be overkill for your purposes, but they're still good places to start. You don't need to use everything they're offering, just use what pertains to you.

At the end of the day, your project plan should be the thing that brings focus to your project and reminds you of the vision that makes your continued commitment worthwhile.

share|improve this answer
    
Thanks for the effort, I really appreciate it, but could you please re-read the topic? I have added a "small" text with a better explanation of what I tried to mean. –  ixjf Aug 29 '13 at 13:47
    
A project plan should produce a series of "deliverables" for you to act on. Each deliverable is a complete task and might be broken into smaller pieces. If, for any given piece you work on, you aren't satisfied with the result, I would recommend setting it aside to work on another piece; don't throw away your work. You will likely have to remain unsatisfied with a number of pieces before the project takes shape. As things come together, that is the time to review and revise your pieces. Perfection is nowhere and everywhere at the same time; stop looking for it. –  bpcookson Aug 29 '13 at 17:37
    
I read what you said. Yet it is not as easy as saying to stop it, it's a weird feeling. –  ixjf Aug 31 '13 at 9:42

If you don't know where to start, then just start with the simplest way. Then look back at your code, and refactor it (not rewrite, but refactor). Rinse and repeat until you are happy with your result.

For my own game I did this. In fact I improved the original creators code on GitHub, then I "adopted" the game and made it my own. Then I attempted rewrite it, I got to a decent point with a nice system but I was still unhappy with my code. So I started to write it again, this is my second to fourth (not sure!) refactor but I maintain rules in my head.

Best way is to follow a code, for me it is use OOP wherever possible. You're a perfectionist, like me, so even though it hurts you start with rubbish code and improve it as you work along. Starting is the biggest hurdle, but once you get your system up it's easy to keep driving forward. Having a comfortable build system makes your development process faster, too!

Finally, work in order from beginning to end. This makes it appear like you've got some decent work done. For me, I first created the game splash screen. I then perfected the code for the splash (I am obsessed with efficiency too). Then I created an event system to prevent using the normal update/draw loops, this made my code cleaner by not having to reference functions in another file. Then I moved on to make my menu. Instead of implementing sliding and fading into my menu straight away I worked on the rendering first. It initially rendered from a simple array. Then I made it move up and down through the arrow keys. Then I made it work with a special "items.lua" file, so I keep my menu content and menu renderer apart from each other. Then I added some more interactions, like "select" functions. Then I implemented submenus etc. THEN I implemented fading, and THEN I implemented sliding.

The end result is nice, I still need to improve it more but you need to tell yourself "It's not how I want it to be, but I need to move on and work on the next part. I can perfect it later, and I will make it beautiful" Sorry, I'm rambling on a bit here but hey, I think this is the best piece of advice I've given to you even though we hang out in the same group every day.

Good luck :)

share|improve this answer
    
I'm really grateful for the effort put into this, though you forgot to read the comments :P I am able to work on the project, I know what I have to do, yet when I do it, it doesn't satisfy me - no matter how I do it, no matter how many times I re-write/re-factor it. –  ixjf Aug 30 '13 at 20:01
    
WHAT satisfies you? I adopted a scripting style from whom and where I learnt how to code. When someone wrote code for me, I actually removed all the brackets because I never learnt to include brackets in my if statements until absolutely necessary. Later, I grew upon using brackets. It's really important you pick your favourite scripting style and adopt it to your needs. I want to add semicolons to the end of all my code, I try to, but that's not my style. So I stopped. I shouldn't have said this comment until I asked you if you're unhappy with the outcome or with the quality of the code. –  qaisjp Aug 30 '13 at 20:18
    
Like I said, follow a code. My "code" or "set of rules" is to use OOP wherever possible, my rules contain how spacing should be done. I don't have it written down, I just write code the way I feel it should be done. I can't explain my rules without looking at my own code. –  qaisjp Aug 30 '13 at 20:21
    
To be honest, nothing does. That's the problem, I can never achieve some state which satisfies me. It all started when I was working on a project long ago (two years at least) and I for no reason lost interest on it, from there on it's been this way. First I thought I just didn't have motivation to continue that project, but the fact is that that happens even in projects which I really want to work on. –  ixjf Aug 30 '13 at 20:25
    
The last time you told me about this, you told me it was because you couldn't decide on whether the code looked nice. But you need to find out why it doesn't satisfy you. This could turn into a psychological topic, why doesn't it satisfy you? Ask yourself these questions to help you realise why it doesn't satisfy you: "is it because I expect myself to do better?", "is it because the code is ugly?", "is it because the API is rubbish?", "is it because the end result looks crap?". –  qaisjp Aug 30 '13 at 20:30

When you don't know where to start on something, in particular a programming project that you are joining, start by breaking things. Really. Set up a sandbox environment where you can experiment and not affect other people, then start writing tiny little tests to see how things work. Google for Test Driven Development, especially "exploratory testing" for some ideas on how to approach this. As you develop an understanding of how the existing system works, you can then develop a realistic plan for making the change you want to make.

share|improve this answer
    
Thanks for the effort, but please re-read the topic, I have added a "small" text with a better explanation of what I tried to mean :) I'm sorry for the misunderstanding. –  ixjf Aug 29 '13 at 13:49

Software projects are notoriously difficult to plan because you tend to focus too far out in the distance. What does it mean for software to be done?

Try focusing in shorter bursts. Find a small, but important, improvement you can make and spend a week on that. At the end of the week, if you finished, declare it a success and grab the next small piece.

Small, but rapid, baby steps are predictable. You can use them to pace yourself and build better estimates.

This is one of the core premises of agile development. Continuous improvement in short measurable sprints.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.