3 ms·
I thought this was a really interesting idea. In uni (college) I became pretty dependent on Mind Maps (using FreeMind) for planning essays. Laying all the relev
by angusgr 17y ago
I thought this was a really interesting idea. In uni (college) I became pretty dependent on Mind Maps (using FreeMind) for planning essays. Laying all the relevant concepts and relationships out visually worked really well for me.
From that angle, I think anything that helps programmers visualize the structure of their software is a good thing. I think any half-decent programmer is good at maintaining these kind of relationship graphs in their head, anyhow. But that's no reason why tooling can't make that even better. There's potential for a programmer to visualise the structure of their program, beyond what they can hold in their head.
I also like that this idea encourages good overall design, short logically arranged methods, and neatly compartmentalises "workspaces" in a visual way.
I have a few criticisms, though:
- Nowhere near enough keyboard-driving for my liking. :).
- It'd be great if zooming out could transform the representation a bit, so instead of ant-size pieces of code the user could work with only the higher-level abstractions between the bubbles they've laid out. I see this happening from the "groups" and "workspaces", but not being inferred from the code itself.
- Is there some other way to show bubbles that were opened independently, but are actually related in the code? Apart from drawing a specific line and seeing the call graph (which is neat, btw.)
- I'm concerned about what happens when a single workspace gets bigger than a single window.
- What happens when design (as it often needs to) breaks through neatly defined abstractions, and lines start needing to be drawn all over the place. Can Code Bubbles represent this without driving the programmer insane, and (also) can it represent this in a way which encourages the programmer to see better ways to refactor?
- Arbitrary areas and names, in a flat namespace on a flat 2D plane, with no relationships between them, is nice and simple. However, it seems like it would limit you when working with big projects and lots of different, but related, spaces.