One of the hardest things that I have to battle whenever I try and start a new project is the question of where to begin. The project that I want to create seems SOO huge that it is always a challenge to know what to attempt first. I think the name for this is something like complexity paralysis.
The other problem that I have is knowing how to begin. This may be the harder of the two to combat. Once I have picked an area of the application to start with, the next question that always comes to mind is how to begin. What do I need to do and how am I going to accomplish it? When you first start a project there are so many things to think about. I think the biggest thing that stops me is my inexperience. I am just starting out in the world of application development and so I always find myself questioning my methodology and asking if this is the ‘right’ way to implement something. Questions like: is this the right directory structure to use; am I employing the correct design patterns; how should I handle the database connection; should this be a full J2EE project; and/or should I try and come up with class diagrams first or just start programming are things that are constantly going through my mind. Which is probably a good thing, but if I let it stop me from working, then that constant analysis is going too far.
When I was studying photography, one problem that new photographers always had to battle and get past was letting the tools get in the way of their creativity. This is also true for web designers, animators, creative artist, and anyone using a computer for creative pursuits. They get the idea that it is the tools that create the artwork and not the artist. This results in the thought that if they only had better tools then they could create better art. I think that I am struggling with a similar problem when it comes to Java programming.
This explains the problem, but it does not offer up any clues as to how to solve it. For photographers, they simply have to accept the tools they have and realize that it is their vision that creates the art. I don’t think it is this simple for programmers. Things like design patterns are an integral part of what is being created. To go back to photography, it is similar to someone worrying about what kind of light to use and telling that person it isn’t important. The reality is that it is the light that makes or breaks a photograph.
The only thing that teaches a photographer how to work with light is by using it; by making good photos with it and by making bad photos with it. Hopefully, the same is true for programming. If I do enough of it, both good and bad, I will eventually figure out how to do it. And how to do it well. At least that is my hope.