A pencil and paper are the superior solution.<p>When you get to show the results to others - just use whatever you are presenting the rest of the message with - almost all "office" type products have sufficient capacity to manage that part. The clever bit is the bit you do by yourself.
I started using Dia (<a href="http://projects.gnome.org/dia/" rel="nofollow">http://projects.gnome.org/dia/</a>) when my employer wouldn't spring for Visio. A bit quirky at times, but overall not too bad for simple stuff.
I first use paper and pencil, but then I transcribe and keep it up to date electronically.<p><a href="http://lucidchart.com" rel="nofollow">http://lucidchart.com</a> has been my favorite service as it is free for simpler projects and can be upgraded if you need more complexity. I've watched the project grow from an idea, to recruiting developers in my CS classes, to a full blown project which has exceeded my expectations. It's exciting to watch!
Inkscape, when I want them to look really nice and am willing to put some time in to making them look the way I want.<p>I've also used kivio on occasion, and graphviz, and ploticus. Again, all depending on what I'm after.
Latex, with the TikZ package: <a href="http://www.texample.net/tikz/" rel="nofollow">http://www.texample.net/tikz/</a><p>Steep learning curve, but there are plenty of examples around the Internet, and it's certainly worth the investment.
Pencil + paper.<p>Then zap it with my DSLR. Or if it needs to be published, use Dia and export SVG/png into target document.<p>I occasionally write out graphviz stuff from my code using a very light weight library I wrote (C struct to stdout) if I'm trying to visualise what is in memory at a point in time. This has been invaluable whilst knocking up a simple mark-sweep GC for a project I was working on.
UML, network diagram, flowchart:
<a href="http://projects.gnome.org/dia/" rel="nofollow">http://projects.gnome.org/dia/</a><p>Sequence diagram:
<a href="http://sdedit.sourceforge.net/" rel="nofollow">http://sdedit.sourceforge.net/</a><p>Also for the corporate world where only Microsoft tools are an option, I tend to just use MS Word, you can make diagrams that are good enough to get the message across, yet everybody has access to it without requiring a special license.
- A variety of online software along the way (most already mentioned here, nothing cheap or good enough for the long haul)<p>- Dia<p>- Microsoft Visio (when available, makes nicer diagrams than above, but sucks at anything software modeling related)<p>- Enterprise Architect is supposedly the standard for the enterprise corp I work for.
Here is a list of web apps for making diagrams: <a href="https://starthq.com/apps/?q=diagrams" rel="nofollow">https://starthq.com/apps/?q=diagrams</a><p>I'll add any new ones that are included in the comments here.
I use Umlet: <a href="http://www.umlet.com/" rel="nofollow">http://www.umlet.com/</a><p>It's good for quick diagrams when you need to explain some of the more bizarre architectural choices in your system.
This is one of the best I have found:<p><a href="http://www.tentouchapps.com/grafio" rel="nofollow">http://www.tentouchapps.com/grafio</a><p>It makes good looking diagrams very quickly without hampering creativity. It requires almost no effort on formatting and beautification.<p>I wish they had an app for the desktop. People have requested the same on their forums a few times.
Flowcharts are stupid. Simple systems can be internalized (kept in your mind, perfectly), and complex systems are too complex to graph to any human scale size or useful purpose. These two categories do not overlap. They apply recursively all the way down. Waste of time, no value.
Last time I needed to to create a diagram, I experimented with Diagrams [1], which is an interesting way of doing it if you like Haskell.<p>[1]: <a href="http://projects.haskell.org/diagrams/" rel="nofollow">http://projects.haskell.org/diagrams/</a>
For the rare moment when I need create a diagram in a computer, I'll use PowerPoint. However, mostly it's just the whiteboard or pen+paper. I like the chance to not look at the screen and, for the former, getting out of my chair.
For ASCII diagrams: <a href="http://www.asciiflow.com/" rel="nofollow">http://www.asciiflow.com/</a> or <a href="http://ditaa.sourceforge.net/" rel="nofollow">http://ditaa.sourceforge.net/</a>
Sketchbook Pro + Wacom for sketching ideas and pasting in Campfire/Email/Whatever.<p>yUML for auto-generated diagrams or where I need something more pretty.<p>Sometimes a notepad + iPhone camera to capture meeting/whiteboard diagrams.
I use <a href="http://www.gliffy.com" rel="nofollow">http://www.gliffy.com</a> whenever I need to knock up a network diagram or similar. It's a browser based app but works very well.
Lekh Diagram (<a href="http://www.avabodh.com/lekh" rel="nofollow">http://www.avabodh.com/lekh</a>)
Quick way to draw flowchart, block diagram etc.
Only available for iOS though.
definitely <a href="http://www.websequencediagrams.com/" rel="nofollow">http://www.websequencediagrams.com/</a>, it produces clear results for management and clients
Gliffy. It's not perfect but it is quick and easy to get something decent looking. It also has reasonable integration with Confluence if you're using that internally.
Does anyone have enough expertise to tell me in which program this was made?<p><a href="http://cl.ly/image/1o070d3s2Y0b" rel="nofollow">http://cl.ly/image/1o070d3s2Y0b</a>
yUML ( <a href="http://yuml.me" rel="nofollow">http://yuml.me</a> ) is brilliant for quickly putting together simple, nice looking diagrams. It's based on Graphviz and doesn't require graphical tools, just a basic text language, so you can throw together something for a demo in 2 minutes.<p>I'm working on a tool to parse Objective-C into yUML at the moment- <a href="https://github.com/darkFunction/DFGrok" rel="nofollow">https://github.com/darkFunction/DFGrok</a>