It's kind of funny.  Regardless of how many project management and development life cycle project and courses I've participated in, I still create software (personally) in the same way:

start with and idea

start coding

remove features as they are too hard or add some if they are quick wins

lather rinse repeat...

As I'm starting to pursue some endeavors which require the pursuit of patents - I'm starting to actually define my inventions before creating them.  It's fascinating how system design works itself out with out being bounded by the difficulty of implementing any given feature.  Writing a patent also forces you to drill deep down into your idea to ask the key questions developers so often forget:

Is it novel? Is it non-obvious? What is its application?

So often (I at least) have continued down the path of creation with out asking REALLY asking those key questions.  Only to realize after a few hours that I'd invented the wheel....back to the drawing board for me!

I know quite of few of my readers are students - and budding developers.  And, while the act of writing software can be pretty fun and definitely satisfying, it should really be for a purpose and it should be new.  Honestly, I think if everyone asked themselves that question before making something we'd have half the software we do today - but twice the number of useful applications :)

Creative Commons License
Design First or Code Later by Cy Khormaee is licensed under a Creative Commons Attribution 3.0 United States License.