Plans Changing In Personal Project Development
In any type of development or project there is a plan and from the beginning too the end, that plan must be followed. The plan can be altered as problems are discovered and solutions found; solutions may change the plan even further. I learned my lessons as a Web Developer and found that clients are a big cause of plans being changed, not just problems or their solutions. The great thing about clients asking for changes is that they pay for it and providing you give them what they asked for, they must pay for the end results. If however the project is personal i.e. freelancer creating software for mass sale much like myself, things can be much different and there are imjportant factors to learn or take into consideration.
In short I’m trying impress the idea that restarting a project is simply part of the process and not a set back, especially if there was no serious prototype created prior to the main project.
Wrong Direction and Starting from Scratch
When I say “Direction” I mean the overall project and how it’s ability to satisfy you or your customers. It may be something that we all need to learn from experiance but in my experiance I know some people don’t learn such things quickly. So maybe by reading this you will be encouraged too make hard decisions a little quicker, when things go wrong for your project! Getting a software project mostly wrong can be one of those times in life where a fear stares us in the face but we look away instead of facing it. This would be the fear of wasting a lot of time, being set back days or weeks and having no idea how to fix it. I’m sure there has been a time where I never faced up to this fear but recently I did face up to it and realised doing so made my project far more valuable.
Knowing Its Wrong and Self Critiscm
If your design and plans are linear with little scope for change you may never realise that there are better ways to code or design something. If however your constantly researching, double checking and learning every step of the way (my approach); you allow more room for self criticism because you will realise something is not as good as it could be. Being able to criticise ones own work is an important trait in itself and it will lead to perfectionism which is often welcome in development. If you will work until something is right, no matter what obsticles are in your way or the time it takes then your going to deliver the perfect product at the end of your project.
At some point you may realise that your whole approach could be better in some way or maybe even wrong. Hopefully you do realise this and realise it early. Then you may have the opportunity to turn things around.
Example “Wrong Direction”
When I was developing my new csv import plugin to replace CSV 2 POST Pro, I thought I had the perfect approach laid out. I was going to use functions to an extreme and attempt to design the plugin in a modular fashion so that it could easily be adapted into other plugins or customised. Half-way through the development the plugin got harder to work with because even html forms were generated using functions. The pages themselves were not files but just very dynamic php scripts with a lot of if statements. It got too a point that there was so much going on within one file that although it was very modular, it would take a person a lot time to figure it out. It become pointless and my attempt to make the plugin enjoyable for working with was having the opposite effect. I realised this in time to change my design and I did, I actually started all over again!
One week of work was undone as I pressed delete on the folder holding the WordPress plugin files and that is the decision that we must all be ready too make. I knew that if I tried to re-design what was there already I would get too a point where it would be a total mess, a coding nightmare and that would have caused problem for me later. I’ve since found other developers who have refused to restart when realising their “Wrong Direction” with a project and this is the reason I am writing this. When you feel it’s not going well, something is just not right and the application already feels a chore to work. Then maybe you should take a step back, consider a new design which learns from mistakes already made and start all over again!
Starting from Scratch Equals Postive Outcome
The idea of working on a project for days or maybe weeks then scrapping it may just be too hard for some people too accept. It’s obviously the reason why we want to get it right first time around but thats not how the world works. We must make error in trial, learn from mistakes and feel easy about making mistakes while a project is not in the public eye. We cannot improve out own ability and applications without learning so consider the possibility that restarting should always result in an even better product. The old saying “Practice makes perfect” is no different when developing a website or software especially when your not long out of University like myself. Each project requires functions that are new to me and their best use is not always apparent. There are also multiple ways to do the same or similiar things with advantages and disadvantages too each but you won’t know them until you try. My theory is that a first attempt is always a prototype and you should be ready to have this view because if you don’t a competitor may just learn from the mistakes you made. Also by starting again and ensuring that your second attempt is better your obviously delivering an even better product to your customers. I the long run a week or month of your time wasted may be worth it depending on how better you can make your second attempt.
Productivity Suffers
In my WordPress plugin example where I restarted from scratch, I believe my new approach led me too realising even better interface designs and functions. I was pushed to be even more innovative which is good for confidence. The whole design was far better to work with and so more enjoyable which increases personal productivity. When things start to bog you down in a project, consider if the design is right for a longterm product and how your going to cope with working on the software again in future. If you can’t bare to restart and the project is hard to work with by half-way through then productivity suffers. You will not be as creative, generate ideas for improvements or get every correct. In short I’m trying impress the idea that restarting a large project is simply part of the process and not a set back.