
Black Triangles - mmastrac
http://rampantgames.com/blog/?p=7745 
======
ryandrake
>It had passed through our new modeling tools, through two different
intermediate converter programs, had been loaded up as a complete database,
and been rendered through a fairly complex scene hierarchy, fully textured and
lit (though there were no lights, so the triangle came out looking black). The
black triangle demonstrated that the foundation was finally complete the core
of a fairly complex system was completed, and we were now ready to put it to
work doing cool stuff.

Wow, talk about big design up front! This sounds like the opposite of today's
"MVP first, get something into the customer's hands RIGHT NOW and iterate
later" way of doing software development: YAGNI, KISS, etc. Nice reminder of
how things used to be done (and still are done in some verticals). I'm having
trouble recalling any projects I worked on recently where a "Black Triangle"
moment was even possible, given the usual focus on early, customer-visible
wins.

~~~
fake-name
Hahahahahaha, 'MVP' doesn't _exist_ in hardware or low-level hardware coding
(e.g. this, which is a playstation game that presumably runs bare-metal).

In hardware, it's generally like ~80% of the design work before you even have
a viable _demo_. If you're writing a bare-metal rendering engine, it's very
much the same. MVP isn't used because there is none of the infrastructure even
available to have one.

TL;DR MVP isn't possible if you don't have the infrastructure.

~~~
retroencabulato
Not sure I agree. It is certainly possible to hack up the basic functionality
of an embedded system; full of magic numbers and lacking the elegant hardware
abstractions, OS layer and power management we all want.

Edit: Not to mention in hardware, where you can neglect design for
manufacturing, solder modwires everywhere, and power everything off a 10kg
power supply. MVPs _do_ exist in hardware and embedded SW.

~~~
derefr
I think there's a difference between an MVP and a _proof of concept_.

You can hack together a one-off PoC for a hardware feature, in order to know
the _feature_ is viable--but what you've created isn't a viable _product_ ,
minimal or otherwise. With an MVP, you'd expect to be able to incrementally
improve the design into a non-minimal one, but with a PoC there's no real way
to take it and "refactor" it into a shipping product at all. The design with
modwires and a 10kg power supply (or the embedded-software equivalent) doesn't
share any similarities, except at the most abstract level, with the design
that can be mass-manufactured.

Once you're done experimenting and you know what you want, you really do need
to design the "production model" from the top down, with all the layers that
will enter into the solution considered in advance.

A concrete example: you can't just "write a voxel renderer" and then expand it
into a full game engine. If the full game engine will have a rendering
pipeline with support for things like dynamic lighting and fur physics, then
voxel rendering will be implemented in that engine in a completely different
way than in one that _only_ needs to render voxels.

Editing one into the other would be like editing the code defining a b-tree
into code for a hash-table: there would be exactly one edit, which would
replace all the old lines with entirely new ones.

------
saulrh
We get a lot of these in AI research. When your math is a hideous snarl of
abstract algebra and graph structures and your code includes a novel 3d
dynamics engine and custom collision detection, it's exhilarating to see your
simulated robot so much as twitch a finger in the right direction.

------
owenversteeg
Oh man, I've needed a term for this for so long and have never realized it!
Thanks!

I remember one time, similar to the story linked but I was refactoring rather
than coding something new. I made a major breakthrough and, like the people in
the article, I was very excited about it. Coworkers (who do low-level stuff -
I do FP and CSS stuff) didn't see what was so great (it was clearly visually
broken) until I said "Yes, but it's broken in just the right way that I can
fix it!" They understood instantly.

I think these kind of "black triangle successes" are something only
programmers and mathematicians experience (they are the only two types of
people that I've known to sympathize with the feeling.) It's like an invisible
thread that connects all types of programmers, from FP guys to kernel guys to
web developers to the three people still using Smalltalk to the guys in suits
making InterfaceFactoryFactories. I love it.

------
unoti
The same thing happens with building construction. If you've ever watched a
building being built somewhere near where you live or work, you've seen it:
Months go by with it as a vacant lot. Then one day someone cuts the weeds
down, and there are some flags sitting around. Then tons of time goes by with
bulldozers, and then interminable fiddling around with digging holes and
foundation laying. No progress is apparent for a long time, then one day,
"whoosh!" there's a building there, once the framework goes up.

There, too, the 80/20 rule applies just as it does in software. Because once
that framework goes up and there's all this fast progress, the next step is
months of finish work where-- from casual observation from the outside, at
least-- things look pretty much the same while all the details are wrapped up.

------
pm
Jay's a legend - worked with him on one of his indie games back in 2004. I
remember this doing the rounds a while back and am glad to read again.

------
JacobAldridge
I suspect most "overnight success stories" are actually built on a mountain of
Black Triangles.

------
lee
Back in 2009 I had written one of the first few SSH apps to hit the iOS App
Store.

I remember demo'ing it to my CEO, and all he could say was "Oh, you spent all
this time writing an App that displays text?"

I guess it's easy to trivialize something when you don't understand its
complexity.

------
shurcooL
Here are two orange triangles.

[https://github.com/gopherjs/webgl#example](https://github.com/gopherjs/webgl#example)

When iOS 8 comes out in two days, I'll be playing with that on my iOS device.
It's pretty exciting.

------
chairmankaga
Fun read, I'd always been interested in buying a playstation 1 devkit to
tinker but this might push me over the edge :)

~~~
coldpie
Emulators are pretty decent these days and might prove easier to work with and
debug.

~~~
chairmankaga
That's very true but there's something sexy about working with the actual
hardware. Maybe I'm part masochist.

------
robin_reala
Oh, this is back online? I looked for it earlier this year after I realised
that ‘black triangle’ wasn’t a known idiom among my colleagues, but had to dig
into web.archive.org to find it.

------
cpr
Isn't this just a "spike" in common parlance?

~~~
angersock
No, because this represents a good deal of engineering coming together and
actually _functioning_ in concert with itself and working.

It's not just some "woot let's crush some code" and a weekend later everything
works and that one difficult feature is working well enough for your live
demo; this is having several different layers of functionality coming together
and working in unison, each being relatively worthless without the rest of the
whole.

When you're building something like a high-performance 3D pipeline, or a low-
level embedded system, there's no MVP that really counts and there's seldom
any little features to egg you on until these black triangle moments.

It's like being an aerospace engineer--the whole damn thing works, together
and at once, or nothing does. That's why I've found web development to be such
a nice break from the work I used to do: I can always make seeming progress,
because I can always see the results of what I'm working on.

At the same time, I never get the same rush of accomplishment of seeing, say,
a model loaded from a custom conversion tool rendered using multiple threads
and being lit properly. It's a different sort of work.

------
Gravityloss
Not to be mixed up with the 1989 North Sea Black Triangle aircraft sighting by
Chris Gibson.

