Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am a PHP \'developer\' who codes for fun. My problem is I have never completed

ID: 649555 • Letter: I

Question

I am a PHP 'developer' who codes for fun. My problem is I have never completed my large projects. Please I would like to know how experienced programmers like you are able to complete projects single-handedly.

My problem is I tend to allow frustration get me. I think this is because I do all of the coding and the graphics alone and this is really challenging for me coming from a country where electricity is epileptic(In Nigeria - You would have to do things quickly, because power will be cut short after certain times that are sometimes unpredictable). So a very picky person like me finds it hard to immediately make design(graphics) decisions.

What am asking from you is a formula that works for you. A formula that gets the work done. Right now, I am thinking of a formula that involves the coding of a 'dirty' prototype of my idea. Then, when am done, I'll just focus on the graphics aspect. Is this really a good idea?

Please I need your advice because I may never get to complete any project of my own.

Note: I have no problem coding with PHP.

Thanks

Explanation / Answer

There are two main challenges I face when I work alone on a project:

Time management
Featuritis (always trying to add yet another feature)
To overcome both challenges you have to be extremely disciplined and professional.

So:

Use an issue tracker. It doesn't matter you are a lone wolf, keep track of everything you do for your project, whether it's a feature or a bug. Make a feature / components list. Mark truly essential components as version 1.0 and all else as version 2.0. And then delete everything that's marked as 2.0.
Use a version control system.
Use a framework. Focus your efforts only on what you actually have to do.
Buy a stopwatch. Code for an hour. Stop and relax for 10-15 minutes. Repeat until you get at least 5 hours of coding each day. Never ever code and design in the same interval.
In your issue tracker (or somewhere) write down specific timelines for milestones. Keep them. Better yet, use some project management app.
Open source some (or all) parts of your project. If you made some fantastic library, you can release it in the wild and get help from others.
Open source your old unfinished projects. There is a (slim) change that someone will step up and finish them.
Buy a UPS
Create a working environment free of any possible distraction.
Some (or all) of the above are stock advice and apply to everyone not just a lone developer. The main difference is that in your case you have to do all of that (and so many more) without having anyone to help you get back on track if you slip off.

Update

To give you a better idea, check out this project. I wrote it, and it's just 69 lines of code. But it has:

Source control,
Issue tracker
Wiki
An ohloh page
The first three are kindly provided by bitbucket. (bb rocks!)

I'm fully aware that the project is probably the least significant piece of code I've wrote the past few years, but there are at least two people nagging me to add mcrypt support already, so all of the above helped in giving me some sense of motive.