
Ask HN: Why do so few software developers use software visualization tools? - nebucnaut
I&#x27;m a software dev that frequently uses software visualization and I&#x27;m wondering why so many people don&#x27;t. I posted this question to hear your thoughts on the topic. Please share them with me :)
======
detaro
I don't because I don't know any software viz tools that seemed to provide me
with a tangible benefit. Can you recommend some you find useful?

~~~
nebucnaut
Actually I started this question to hear some oppinions, not to advertize a
certain tool, but I'll answer you anyways. I'm one of the makers of Coati
([http://www.coati.io/](http://www.coati.io/)) and I'm using that tool quite
extensively. I don't wanna say that it's perfect and everyone should use it
(at least not in this Ask HN), because I want this to be a more general
discussion ;)

~~~
detaro
Ok.

To expand on my answer above a bit, a few categories of tools I've
(superficially) looked at or see others work on:

Code to UML (and the other way around): Generally have been clunky to use, and
can't distinguish between important/non-important things. Might be useful for
larger domain models, but that hasn't come up much for me.

Overview tools: typically generate a treemap of some sort from code
directories and/or commit history. I can see how they might be useful to find
specific hotspots in really large code bases, but I'm not so sure if that is a
thing that's actually needed all that often (I certainly haven't)

Projectional editors are related and are interesting, but also don't feel all
that practical. Incredibly hard to get right.

What I'm missing in the field: graphical debugging tools that e.g. visualize a
run-time object graph, plot values/events, ...

~~~
supercheetah
> What I'm missing in the field: graphical debugging tools that e.g. visualize
> a run-time object graph, plot values/events, ...

GNU DDD does this really well, but it's unfortunately limited to just C/C++,
and it still uses its old clunky Motif interface.

------
deepaksurti
Whenever I have had to work on an existing Common Lisp code base or even my
own CL code that I come to after a time, I use dtrace.lisp [1], [2].

I just choose to trace the application package/s and not the 3rd party
packages it uses, at least for the 1st run. Then I run any app feature that I
want to explore. What I get is the truth, the pieces of code which have been
executed to fulfill that feature. I then read the relevant source code shown
by the tracer doing deep dive/high level reading as I deem fit. For complex
features on a code base that is new to me, someone who gives me a high level
overview helps, but even if not, the tracer helps me do it. I don't know but
`dtrace` seems to be `detective trace`.

I haven't found yet more joyful experience of software visualization than a
session with dtrace, especially when I combine it with live updating the app
source code and see the change reflected.

Outside the lisp world where I can't do such tracing, well, I quirk!!!

[1] [https://github.com/deadcode/Learning-CL--David-
Touretzky/blo...](https://github.com/deadcode/Learning-CL--David-
Touretzky/blob/master/dtrace.lisp) [2]
[https://bitbucket.org/dmsurti/dtrace](https://bitbucket.org/dmsurti/dtrace)

------
rustyhacker
My personal view on this matter is that people in our industry believe high
quality code means it's easy to read/understand. So assuming that the code is
of good quality, the IDEs refactoring tools should suffice for navigating and
understanding the code.

Now I admit for large projects (~ >50k loc), visualisation could prove to be
very useful for architects or new people joining the room. But most
visualisations tools are very text oriented, because of the underlying
language itself. So what you end up with is the name of the
class/package/variable in a rectangle with lines drawn to another class. From
where I stand, that's very easy for me to either quickly draw on paper or
imagine it in my head. So the tools I've come across don't add much value.

Another point which is only speculation is that a number of users are not
visual, and have a different way of processing data. They'd rather read/hear
about the details and numbers to "understand" what is happening, rather than
visualise them.

~~~
nebucnaut
_" that's very easy for me to either quickly draw on paper or imagine it in my
head"_

Good point, but it's only easy to draw or imagine if you already know
everything involved. In my opinion software visualization should not just be
about visualizing what you already know but instead about providing
information that you don't know. So you don't need to go through all of your
code files in order to draw that inheritance diagram.

 _" number of users are not visual"_

I think I don't know any programmer who hasn't already scribbled some kind of
diagram on a piece of paper ;)

------
panic
Because the source code itself is already a visualization of the software.
It's easier to navigate around the code directly, using grep or IDE features
to discover where identifiers are used, than it is to go back and forth
between the code and a separate simplified representation.

------
grif-fin
I have the same question, and a speculative answer for it. Here it is, because
none have been useful enough in long run.

I've concluded this by asking two question:

-Has no one made one? Not true at all. We have always more apps & software in general that you think.

-Is there any reasons for not knowing any good tools and not using them extensively other than they have not been useful in long run? No.

------
jzl
Very interesting question and one I've been thinking about recently. For now
it seems to come down to "there are no good visualization tools", at least any
that are commonly known, but I suspect this will be a huge growth area in
coming years.

Would love to hear about any good ones.

~~~
detaro
> _but I suspect this will be a huge growth area in coming years._

What makes you think that? (I personally haven't noticed any signs pointing to
that, which is why I'm curious)

------
marssaxman
I had never heard the term before; after looking it up on Wikipedia, I have
never heard of any of the software packages listed. I don't know what I would
do with such a tool. If I'd ever needed one, I imagine I'd already have gone
looking for it, so I guess that these software visualization tools must be
solving problems which don't really exist in my part of the industry. Maybe
this is the sort of thing you need if you're trying to wrangle some giant mess
of a business app with millions of lines of Java? I don't know, I've never
gone near that world.

------
billconan
The software visualization tool I know is this
[http://gource.io/](http://gource.io/)

In my opinion, it's not that useful. Any visualization tools should help the
users understand and interpret the information.

But with this tool, all you can learn from the visualization is that code
bases grow....

If there is a visualization tool can generate diagrams of a large code base
and help me understand the code, I will buy it.

------
bsvalley
Visualization tools are like daily standups and burndown charts. They only
beneficit the management. It's just one extra task for developers that doesn't
get the job done. I think they're pretty useful when you first jump into a new
piece of code and want to have a quick overview. For people who work on the
code everday, it becomes quickly obsolete.

~~~
nebucnaut
I agree that you don't need visualization if you already know the code and the
internal references. But even people who work on a code base every day cannot
stay on top of every feature or refactoring of their coworkers while being
productive theirselfs. I think that in bigger teams reading unknown source
code continues to be part of the job ;)

------
k__
I don't know about good tools for JavaScript.

