DEVHermit | Valuable Lessons Learned
2008.12.29 : (Developing)A couple of valuable lessons were learned from my last post. Of course, I realize now that I was talking about two disparate ideas, but that’s not one of the lessons. No, I’m talking about truly important, earth moving, lessons. First, if you don’t have the time to do it right, when are you going to get the time to change it, and second, there is actually information out there about how to create object models.
Shortly after publishing, I notified a couple of friends about the new post, and one of them immediately pointed out my folly in thinking that I could just get by with what I was doing only to go back later and fix it. As he said, “if you don’t have time to do it right, when are you going to have time to fix it.” On one level, I agree with him. If I’m not going to take the time to think through what I’m doing, then I shouldn’t be doing it in the first place because I’ll just end up creating more crap.
On the other hand, there is something to be said for getting something out there and refining it afterward. Honestly, we make decisions and develop software based on the knowledge we have at the time. Unfortunately, as time goes on, our knowledge about what we are doing increases, hopefully, and we figure out that we haven’t always made the best decisions. So, we build and then we refine. It feels similar to something my creative writing teacher used to tell us. Rewrite, rewrite, rewrite.
Fortunately, for us, we don’t always have to build first and then refine. In many cases, something already exists out there and we can use our expertise to refine it. I think I only learned this lesson after reading an old blog post on Joel on Software concerning the number one thing you should never do, which is to think you can write something from scratch better than those that have been working on the problem for years. So, I took his article to heart, and over the last few days, I’ve migrated the couple of blog posts that I have made into a WordPress installation. Honestly, I’m not going to have time to create new blog software from scratch and do a better job than some of the stuff that is out there. It would be much more profitable to use a system that already exists and learn from it, perhaps even contributing to the project as I get more familiar with it.
The second lesson I learned from the previous post was one of humility. In particular, that one shouldn’t hold others to a given standard unless they too are willing to follow those standards. Take for instance an occurence from the day I posted last.
I imagine that we are all acquainted with a person that can only be described as the pretentious smart guy (hereafter called PSG). This is the guy that no matter the topic of conversation, he always has to be right. Now that in and of itself is annoying. The PSG, however, brings annoyance to new levels by expressing his superior opinion in a subtle yet extremely condescending way. Of course, given the very nature of the PSG, it is intensely gratifying to point out a simple oversight on his part and call attention to his moment of weakness.
So it was the case that our PSG raised a question to which he did not have an answer. Ahhh, the rapture, knowing that he had not done the most basic of prerequisites to posing such a question. Yes, that’s right, he had made no attempt to look up the answer on Google. I furiously entered in a series of words into Google and came back with several pages that answered his question. Then, after pointing him to the results, I commented that one should always check with Google before asking the world at large.
And yet, here I was that very night presenting to the world a question to which I had no answer, and which I had not researched on my own prior to posing the question. Truly, there is nothing like one’s pride leading you into a steaming pile of hubris. Again, within a few moments of posting, I was able to find a great deal of information on Google about Object Oriented Analysis and Design.
One article in particular increased my understanding of how to get started down the path of designing an object oriented product. It was clear however, that the original author was not a native speaker of English, which I assume most of you are. Perhaps I can use his article, and the others I found to produce something that would be more accessible. If so, it will have to come at a later date.
Once again, any questions or comments can be directed to me via email, or in the comments sections.
Related posts:
Hi there,
I have already seen it somethere
Thank you
Tania
I think the statement “If you don’t have time…” implies completion of time spent. Iterating through something is always a good idea. Leaving yourself time to only write a rough draft of a novel is a bad idea. Starting an iteration and then continuing to improve it means you are still actively working on the project. You’re still working to “… do it right”.
Starting with an iteration but not having a definite idea of when you’ll get back to the next one, as you implied in your previous post, fits the maxim. As far as you were concerned, it was complete. You knew it wasn’t great and that you would *like* to get back to it someday. Life is a list of priorities and this now became a lower priority. Something with a higher priority will always come up that will prevent you from spending more time on it… until it becomes a high enough priority again!