It has often been tricky enough arguing with folks over the past few years when I tell them I predominantly use the Microsoft Stack in my startup projects (of course with tech like Solr etc when needed) but my argument has always been that other than i find their tools and platform allow me to create better apps that other platforms - and faster, because i know the toolset. It's important for a startup to get something out and learning a new set of technologies - unless something is really key to your product - is really not the best way to get started. I use the tools that work for me.
This brings me to a tweet I saw yesterday from 37 Signals co-founder David Heinemeier Hansson who wrote :
@dhh It's easy to forget that there are still people who proudly call themselves software architects, use UML, and clamor for repeatable process!
I quickly replied to say:
@weblivz uml isn't all bad ... like software - use the features that make your life easier rather than using every option just coz it's there.
Yes, like you i've been in the room when someone has presented a UML diagram that has taken about 3 weeks to create and has one for each UML2 type, every end on the diagram populated, every state mentioned, stereotypes, tagged values, a million associations, hierarchies and more ... and no-one has a clue what it means.
However, there is value if you stop yourself from over analysing everything (contrary to popular opinion, analysing what you are going to code isn't necessarily a bad thing is there is any degree of complexity in it).
Recently I had to write some code that would interact with the Facebook Graph API and with its interaction with my application there were a bunch of flows and outcomes. It would have been easy for me to start hacking code only to discover I was repeating various flows and discovering new primary flows and exceptions - trust me, when you are hooking together API's with oAuth there are a ton of considerations.
However, what i did was through up a few use cases (took about 15 minutes) and there created an activity diagram. The activity diagram did get quite complex and that was just looking primarily at the happy paths. It did make me realize where i was doing the same thing at different stages (such as the oAuth check when further permissions are needed) and gave me a much better understanding what what i needed to code (or rather what I am coding just now).
I'm not necessarily going to start writing sequence diagrams for everything too - i find them useful for very specific but complex code flows, but i do find activity diagrams to be one of the most useful pieces of UML for startups. Class diagrams, component diagrams, statecharts, interaction diagrams - they are for the most part things that don't directly impact on users but the UX is directly dependent on the flow of the app, so activity diagrams are very useful.
In short, i like to create a few variations. A very high level happy path activity diagram. A lower level activity diagram that shows some of the flows in the way you'd show it to your mum (mom) and finally a lower level activity diagram that shows some of the considerations for the code you need to write.
Use the features and tools that work for you - it's your startup.