Journal nizo's Journal: Why do I do this? 11
The next time you're knee deep in arcane language geekery, remember this: nobody cares what your code looks like. Except for us programmers. Yes, well-factored code written in a modern language is a laudable goal. But perhaps we should also focus a bit more on things the customer will see and care about, and less on the things they never will.
From: http://www.codinghorror.com/blog/archives/001022.html
I have all these ideas for code, websites, etc, but inevitably I spend inordinate amounts of my time worrying about things that, while they do matter, are not important enough to stall an idea. But sadly they keep me from actually finishing (or even worse, getting started) on a whole variety of projects. For example, yeah it is important to design a site that works in as many browsers as possible, uses CSS, etc. etc. but why the hell can't I just write the basic site (using html and php, that will work just fine in 90% of the browsers out there) and worry about all the little niggly bits later?
And of course this isn't just limited to coding; many things in life I don't even start, because I have the absurd expectation that if I don't do it perfect right away, I shouldn't even start. So rather than run the risk of having several lame drawings, I have none, and have learned nothing. Why?
Learned from a pro... (Score:3, Insightful)
The pro I learned this from? Richard Bach, of "Jonathan Livingston Seagull", et al, at a reading he did in Seattle for "Out Of Our Minds" - he said he'd had the same issue early in his career and he decided he was a much better author than he was an editor, so he did his authoring first and most, editing second and, well, less.
Re: (Score:2)
I love that book; it is very cool that you got to meet Mr. Bach. How are things going btw? Email me if you don't wanna spill the beans here
Because... (Score:3, Insightful)
Because if you worry about the "niggly bits" later, you'll find that you haven't sufficiently planned for them, necessitating either a (potentially) time-consuming re-factoring of your code, or at worst scrapping all your work and starting over again (actually, I lied: at worst, the original code will be so bad that you simply won't want to work on it anymore, and will let it wither and die).
Code maintenance is a significant issue; roughly 70% of the cost of software projects is in maintenance. If you use good designs in the beginning to ease overall maintenance, you're going to have lots of time to do all sorts of cool things down the line, instead of re-writing everything to wind up with the exact same functionality in order to be able to eventually add new functionality.
With all that out of the way, I think it is possible to start off with a small and well-focused project which is also maintainable. Perhaps your real problem is you just want to try to jam too much functionality into version 1.0, instead of starting off with a limited feature set and focusing on future maintainability (and expandability)?
I'd disagree with the quote you started your journal entry with, in that it seems to pre-suppose that users don't care about software change over time. They do. They're pretty much going to expect that you continue to work on and upgrade your software in a timely manner to improve functionality, reduce bugginess, and add new features they're interested in. You have to plan for this; few organizations and individuals in this industry stick with technologies that have no future and will never be maintained or improved. So those bits underneath do matter if you're interested in the long-term viability and usefulness of your code; the faster you can respond to feature requests and bug reports, the better off the entire system will be (and you'll have happier users too).
So if it's the "niggly bits" which appear to be time consuming and are going to cause you to simply put off the initial implementation, reduce the scope of your project (for my OSS projects, if I want to create an application that does X, I usually try to start off by creating an API for more easily doing X, and worry about creating the application to do X later. This tends to work especially nicely in OSS, as it causes me to reduce and focus the scope (and time requirements) of my first efforts, and it allows other developers to use my API/library output in their own projects while I get ready to write my own applications).
Yaz.
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
True enough -- there is no reason why the development cycle can't be iterative, with improvements along the way. What I tend to like to encourage however is that the back-end stuff should be well designed at the outset -- don't just ignore it in order to solely work on the front-end glitz. To borrow your example, you pro
Re: (Score:2)
Funny you should mention this. I did indeed make a "cabinet", and due to poor planning and inexperience, it ended up having a door I couldn't open :-| While it did waste my time and money, if I were to do it again, I could draw on the experience from building that one to build a much better one (or more likely in this case, buy a better one :-D) And of course I ended up taking it partially apart and making a functional (though su
Re: (Score:2)
I remember a while ago you mentioned the book "getting things done" and how you and checked it out, but had not had time to read it then. Well, that is one thing he talks about as being a very important motivator: deadlines. Basically every task that you are serious about doing should have it's own subtasks with deadlines.
It might be worth checking out again, if you haven't read it all the way through. It gave husband good ideas on how to increase his productivity and organization. Me, I'm just a m
Re: (Score:2)
You see yourself as going around in circles. You aren't. Every time you work through these things and then try things and judge the result, you're building a repetoire of t
Good question without an answer (Score:2)
Because you are afraid of failure? (Score:3, Interesting)
If I'm way off base, then feel free to ignore. If any of this makes sense, I found this book to be useful in defining what was going on inside my head: The Positive Power of Negative Thinking [google.com].
Similar? (Score:2)