Hi guys,
I've noticed recently that whenever I put some programming idea into a bigger project, my motivation drops. While the project seems to be worth it and seems to be a way to give my programming idea a bit more usefulness, it seems to turn the activity into a burden. After that, everything goes wrong, I start analyzing too much, perfectionism kicks in and so on...
The best programs and libraries I've coded were those that had no goal and for which I had no expectations.
Anyone has a trick to set a programming goal without making it seem like a burden? I'm going to avoid "projects" in favor of "experiments" for now and see how it goes... I mean I understand the psychological mechanism involved in me, and I think my experimentation here will help me, but I was wondering if you guys had tricks, perhaps something unique to programming, linux or C++... let me know if you have any other ideas.
I've never previously managed to finish making a game. This time, I hope to finish it and my motivation is that I started a blog. I'm writing about my experiences with SFML and game programming for all the world to see (well a very small portion of the world, but still :P), so I can't stop without bringing an end to all of that. Sure, it's a pain at times to fit in writing posts, programming and all my university work (and Team Fortress...), but I hope it will keep me going - it has so far.
Yay! I have a rather nice post number right now XD
You're basically increasing pressure by involving the world (or a small part of it).
The good part of your strategy is found in your "intent to commit to the project" and by making this intent public, you're basically making it stronger. But there are other ways which are even more efficient and do not require the world (you can google for "intention implementation" which is used for people who want to quit smoking and even helps people with brain injuries or heavy psy-illnesses like schizophrenia).
The bad part of your strategy deals with external pressure which has been found to nearly only decrease motivation (says the psychologists I've been reading). A good twist is instead of just telling people about it, is to have a group of people working together on the project (but then it depends on the people and the relationships).
In any case, thanks a lot for sharing your trick, I hope it can lead you to success.
For my part, I know it would make things worse for me. I'm seeking a means to reach a goal without increasing pressure possibly by removing pressure instead, allowing free flow.
same here, I had trouble with the "real" projects too. I was spending hours and days on my own coding stuff, but couldn't focus enough on the real ones. And the worst, I was always having those "big ideas", which are really great, and improves functionality etc. BUT, the problem is that I had no time to work on the algorithms or implementation itself (of those ideas)
after a while, I realized that I'm going nowhere with this attitude. seriously, nowhere. and I watch others doing less and low quality job but moving away (up) from me.
so I decided to educate myself. yes. when I have a great idea about the project I'm working on, I stop myself intentionally from thinking about it. I push myself to keep working on what I am supposed to work on.
at first, it is just a pure pain in the ..... but later, it pays off. now I can finish my hw/sw projects on time. and also find time to implement my "great" ideas as an experiment (if I still do have the passion for it).
in short, what I can tell you is all about self discipline. don't start anything before you finish the one you have. if you want to go parallel, make sure that you're not just killing your time. because it's most likely a way to escape from reality.
@corto Haha true. Of course, that's not the only reason I do the blog. I did want to start one anyway ;)
@acorn My blog doesn't really have that much personal stuff on it, really - it's become more of a tutorial site than a documentation of my experience. If I ever get more time for my own projects then perhaps I can talk about them some more.
The blog is 'SFML Coder': http://sfmlcoder.wordpress.com/
@muratagenc I try not to have too many projects on the go as well. Right now I have one main one and one huge one on the side because the other one was a higher priority.
I'm going to just drop in here and say a bit about my experiences with larger projects.
When I have a larger project, I divide it up into logical sections that each make sense. I plan out roughly how I'm supposed to do something, and then I do it without too many expectations as to how it will turn out. I'll explain why later.
Whenever I get something working, be it as insignificant as a simple command-line interface to something as interesting as a simple custom NFA regex class, I always get a bit of "solution euphoria". However, when I run into a roadblock that I can't solve by thinking and minor program tweaks alone, my motivation drops.
I try to keep the solution euphoria as a incentive to keep going, and I always try to plan ahead to avoid running into roadblocks when I'm actually coding that might drop my motivation. I avoid optimizing on the first pass, but I make sure to write my code so that I could optimize later if I wanted to. If I try to optimize on the first pass, I run an increased risk of hitting a roadblock.
Those are my 2ยข. I hope they'll help. *flaps off*
Actually, I don't have this problem with actually coding in C++, but in designing the program before hand. I can make a optimized insertion or shellsort sort algorithm in just a few minutes, but it's how I'm going to use that sort algorithm that absolutely confuses the hell out of me. Should I use templates? Should it be a function? How can I make it flexible? The list goes on and on~
In the end, I just pick something, and regret it later. I find that if you spend to much time in design, you hate yourself when you decide the design you spent so long on turns out to be rather poor.
Another thing I have problems with is how I'm going to do something. For instance, in networking, there are SOOOOO many ways you can treat data, it's ridiculous. std::string, POD types, streams, and so on. "Which one is better than the other?" is the answer you find yourself asking and there is never an answer T.T
Most of the projects I start on are dropped prematurely because I noticed that what I originally planned is garbage so I just scrap the idea and restart which gets me nowhere.
Albatross: This up and down thing is normal and there's no way to get rid of that. There will always be something you like or that is easy for you and some other stuff that you will dislike or will find difficult to do. Best thing is probably to mix them together rather than do all you like and keep all the difficult stuff for the end.
computerquip: Giving importance to your goals and then giving them up is likely to trigger guilt. It's like maths at this point. But if "reaching" the goal isn't that important, then giving up isn't so bad. Like if my goal is to make a game, publish it and let my friends download and play it, then I _have_ to finish it to reach my goal. But if the goal is to make a game for the fun of it, it is likely I will never finish it, yet it doesn't mean this is bad... it can be a good learning experience or a safe way to try something experimental.
As for the choice overload, I have the same problem. However, I find that if I stick to my client requirements (and not the ones I come up when thinking about the future), then the client requirements help make these choices. And then again, there are these choices that have the same weight and there's no real argument in favor of one. At this point you can try to go with the stuff you have experience with unless it is part of your goal to learn and experience some new stuff.