Writing software should be treated as a creative activity. Just think about it --the software that's interesting to make is software that '''hasn't been made before'''. Most other engineering disciplines are about building things that have been built before. -- RichardGabriel, quoted from http://java.sun.com/features/2002/11/gabriel_qa.html ''I take issue with the assertion about other disciplines. Engineering appeals to those who like to solve problems that haven't been solved before. Maybe it's that in software, there are many un-solved problems. --TerryLorber (trained as a mechanical engineer)'' Issue noted. The point however is not about solving problems as it is on building things. This page should be about "SoftwareEngineers" employing the creative forces in forming "new things". Certainly there could be other pages titled X''''''xxxIsCreative, but that is not what this page is about. This seems to be a wake up call to '''not''' ReinventTheWheel. ---- '''Find Out What the EndUser Wants''' We can start by finding out what people '''want''', which is usually not orthogonal to what programmers want to do. People do not want abstractions or clever algorithms, they want '''functionality'''. They want to buy software of which they can say ''ItWorks'', which installs and configures itself, has practical uses, and improves their quality of life. ''People want functionality presented in a form and organization they can understand.'' -- JonGrover ---- Creativity involves aesthetics but WhoDefinesTheBeauty ? See BeautyAintMyBusinessNoSir for part of the answer, particularly that utility is not necessarily pretty. If you don't believe this, look in your toolbox (the one containing claw hammers, pliers and screwdrivers), and describe for the me the "beauty" of the tools within. '''This is beautiful''' * My hammer is made to pound nails and extract them. It is beautful because it has tight cohesion. The same goes for my screwdriver. * My screwdriver and my hammer are both accessible from my toolbox, but I don't have to ask my screw driver for a nail or ask the toolbox for a piece of wood to use my hammer. There's the right amount, and no more, of coupling. ---- See ProgrammingAsTheoryBuilding ProgramsRepresentMentalModels GetTheRightAbstraction AbstractVsConcreteSoftware UserStoryTemplate, AgileRevolutionDiscussion