I'm going to get back to my series on the factory class soon, but there was something on my mind yesterday that I wanted to post here. Before I start, I'd like to ask a couple of questions:
Have you ever sat in front of you computer, wracking your brain to solve a problem, then have the solution just come to you later when you are doing something totally unrelated to programming?
Have you ever been close to a project deadline and found yourself being totally unproductive because you can't stay focused?
Software development is an amazing pursuit. It requires knowledge, but at its core it requires creativity. Most non-developers don't understand that a developer can have the same relationship with an application that a songwriter has with a song.
The human mind is an amazing thing, as someone who uses their mind as a means of income, I suggest that you be attentive to how your mind works and when you are productive and when you are not.
I know that my experience is not the same as everyone, all of our minds work differently, but this has been my experience.
If I am dealing with a difficult problem, I'll work on it until I realize that I'm not going to find the answer quickly. At that point, if I walk away, and do something that I enjoy, the answer will just 'come to me'. My theory is that the mind keeps working on the problem even though you are consciously working on it, when it finds the answer, it will notify you.
There is tremendous power in explaining the problem to someone else. Find another developer that has time to listen to you. Start explaining the problem to them, most of the time, the process of explaining it to someone else will help you find the issue. My theory: by vocalizing the problem, you move the problem to a different part of the brain that might have a better chance at solving it.
Realistic deadlines motivate, unrealistic deadlines kill productivity. Software development requires creativity. Creativity requires that you be relaxed. Deadlines obviously have to be set, but they have to be realistic. I have found myself many time fighting unrealistic deadlines. What tends to happen is that my mind tends to focus on the deadline instead of the software. Stress kills productivity, do what ever you can to stay relaxed.
Many times over the years, I've been in situations where deadlines were set based on business needs with no respect for the amount of work that needed to be done. Since software is basically invisible, folks that don't write software typically don't understand the amount of effort that it requires. Many times I've had clients give a 15 minute explanation of what they want and the ask "How long will it take?". When asked this question, I usually try to ask questions that help them related to the process of software development. My favorite is: "How long does it take to solve a crossword puzzle?" The answer is: "it depends on the puzzle". That's right, and there are usually puzzles in an application that you can't completely understand until you get into it.
Just a few notes from an old code dog...
Thursday, December 18, 2008
Subscribe to:
Post Comments (Atom)

1 comments:
I agree. Most 'outsiders' may not understand that programming definitely can be a creative process. I also play music and I used to think that music and programming were on the opposite ends of the spectrum. One day however, I started to realize that they have a lot more in common than one would expect. They both have a scientific basis underpinned with rules and guidelines (ie scales/modes, language constructs/patterns). The way I see it, is that once you have an understanding of the building blocks, it is up to the individual to put them together creatively to create a solution.
Post a Comment