Programmers are engineers. Sure we may not get a fancy ring, but we’re still engineers. Ask any programmer who’s ever had to build an application from the ground up. The problems, the tools, even the location, while different are all still present. We’re engineers alright, but instead of working in the physical world, we’re the next step. We work in the virtual. We build and design, we tweak and reinforce the current structure of the web. We envision the next iteration of things, and we make it happen. We’re engineers alright. But of a different variety.
And as engineers we have certain choices to make when developing our applications. Do we go with the more used proprietary tools? Do we build our own? Maybe we utilize free applications? Or maybe we hire the job out. All viable choices, but to a real engineer, only one is fun. Building our own. Whether on proprietary architechture or on open source languages, we have the most fun when faced with the monumental task of building something from scratch. And we do it. We do it because it’s fun and becuase we have to. But how we do it varies from person to person.
A big part of that is based on our experience as developers. When I first began my forays into development, I thought developing an application was simple. You sit down for a few days straight and work it out. Then you’re done and you move on to the next project. I wasn’t far off from the truth. I was a little misguided, but I had the essenence of the project right. I was just putting the focus on the wrong portion of it. Development happens in two places, first is the planning, then is the actual implementation. The planning part is what a lot of new developers have problems coming to terms with. They don’t want to sit down and write out a book outlining what they’re going to do. It’s all in their heads. They know what’s going to happen and they try and make it so.
And that’s why new programmers rarely finish their projects. They get so bogged up with everything that’s going on in a project that they can’t focus on any one aspect. Soon it becomes too much for them. That’s why we have so many different methods of doing things. That’s why planning your project is such a big deal. It gives you focus, an outline. It is something that they never teach you in school, because in school, your professors do that for you. They think out the assignment and tell you exactly how your end product will function. And depending on how well you stick to their guidelines, you get appropriately graded.
Before starting any project, a developer needs to sit down and think. Spend a few days thinking. Think and shower. Think before you sleep. For me, before I embark on a particularily straining project, I sit and think. I spend a lot of time thinking about what exactly I’ll be doing. I spend a lot of time envisioning the end product. How will it work? How will it look? What happens if I press Button X? These questions are important. They help you define a clear path to your goal. And this is what you need.
If possible do a mind map. Examine all the features that you would like your application to have and figure out what they do. Don’t think too much on how you will accomplish it, just focus on what you want the end result to be. Make a list of things that your project should be. These are essential. Treat these as your milestones to development completion. Every time you’ve finished one of these, you’re getting slightly closer to your goal.
*A Note To Project Managers*
Stay away from weightings. If you weight the tasks, they instantly become skewed. Each task is equally important and, most likely, dependent on the last. Programming rarely allows for completely separate elements. They must all be connected and treating them as separate elements just shows that you’re not quite up to the task.
Some important questions to ask while in this analysis phase are things like
- What will the interface look like?
- Does it make sense?
- What are the benefits of working on this project? What are the downfalls?
- What types of features will be required?
Notice the questions asked relate more to the whole project itself that to development. This is key. If we focus too much on the development without having an idea of where we are trying to take it we end up side tracked. We end up implementing too much that we probably wont use.
Don’t think this is just for programmers. The idea of project analysis is something that can help everyone. Building a new deck? Figure out what you want it to look like before yo blindly start working. Painting your house? Figure out what color. Building a framework for User Management? Figure out what a user is and what they can do. Writing a book on the intricacies of the Onomatopoeia? What is the overall tone of the book? Amusing? Angry? Superior?
Applying this idea of analysis to all your tasks and projects go a long way towards helping create an idea for what you want to achieve. And quantifying that idea into tasks makes it so much more achievable.