Yesterday I talked about my time management method which involves getting good enough at what you do so that you can learn to work efficiently and finish your work as fast as possible without sacrificing quality.
For me this means learning my main software well enough so that I can use all the tools available to me, all the plugins and all the shortcuts imbedded within the software. It means knowing what things are a waste of time and what things will get me to my result quicker. It means knowing how to prepare for work and what things I should pay attention to before even starting.
But aside from all those very important things there is another that can help you both finish your work in a quicker way and increase the quality of your project. It involves learning how to use the minimum amount of work you can to create the simplest working prototype.
Let me explain this better by giving an example. I do 3D modelling whenever I feel like I have a good enough idea to work on. There are different steps that I can follow to complete the project and get my final piece. I could begin working on each element individually and make them all perfect and then arrange everything in a scene, or I could get an overall idea of how everything should look like by using a very poorly made sketch and start working from there.
Both methods work well, but each has its own disadvantages, the main one being that you might realize, along the way, that there's a few details that you overlooked, a few extra objects you might want to add or a few that you might want to take out of the scene. This is fine and you can always work on fixing those problems, but they do take extra time (sometimes quite a lot) away and distract you from the main goal, which is to finish your project. You can easily get lost into working on small details and delay the project by weeks or months.
The way I do it is by trying my best to always make a prototype of the scene, a very "simple" sketch, meaning with no textures and not too many well made models, but that has all the details I think I will need. If I want to make a room I will create a prototype in which I'll have all the undetailed models in place, even the smallest ones, in order to get a very good understanding of how the scene will look like. I will add the lights even though there's nothing except unmodeled shapes in the scene and see how everything looks. And only when I have the first prototype will I start working on the actual details and everything else that needs to be done to complete the project.
The same thing applies to coding, even more than 3D modelling. The best way for me to figure out how to code something, anything (assuming it's simple enough for my very rudimentary knowledge of programming) is to code the simplest version of it that I can, without putting too much emphasis on how good the code is and whether it is written perfectly or not. I only wish to see that it works and it does what I need it to do.
Once I get to that point I can take all the code, refine it, debug it and improve it overall. I will add comments to know what everything does later, I improve the features of whatever it is I programmed or add more later if I get an extra idea, I rewrite the bad code so that it makes more sense and when I feel as if I have written a good enough version of the code I need, I will stop and consider it done.
I focus first on building a foundation upon which to begin my work, regardless of how unstable or unfinished it might look. I will sometimes do the bare minimum (like with coding) and sometimes I put more work into the first prototype (like with 3D) because I need to see some sort of representation of my idea, to understand whether my vision can be executed well enough or not. If I can successfully create a first prototype in a decent amount of time, I will continue working on the project. If not, I will start from scratch and try to understand what else I can do to transform it into what I wish it to be.
This helps me both with my speed and with the final product. It might seem better sometimes to work directly on the final version of the project and be done with it as soon as possible, but remember that it's not only about speed - it's also about quality. It doesn't matter if you're fast if what you do is bad. Therefore you must be careful to make something good as quickly as you can.
I do this by doing a prototype first, a working prototype that allows me to see if it's worth working on the project the way it is or if I should begin again. For me it's always much easier and faster to do this than to realize, in the middle of the project, that I dislike something significant or that what I worked on so far is too different from my original idea or just doesn't work.