
Why Invest in Tools? - clessg
https://medium.com/@leeb/why-invest-in-tools-3240ce289930
======
timr
Other than _" letting people do whatever they like is good for recruiting"_,
and _" my project is really cool, IMO"_ I'm failing to see the argument here.
That's a shame, because I think it's important to invest in infrastructure,
but the trade-off is never easy, nor clear. It would be great to have some
reasoning on how to make that call.

Rapidly growing companies tend to over-hire, and then have bored engineers
that spend lots of time creating wheel-building framework frameworks instead
of working on wheels. Sometimes good stuff comes out of that, but there's a
ton of waste, too -- in the worst case, you end up in a company that has
hundreds or thousands of people, but only a core team of a few dozen are doing
all of the actual work. So you have to ask yourself: would it just be better
not to hire hundreds of engineers, and cut away the complexity and
inefficiency that comes with an organization of that size?

I've seen it first-hand, and I've also seen friends go to big, famous unicorn
companies and work on stuff that is _far_ separated from the company's core
business. It's sad, not invigorating.

~~~
brandonbloom
I think that game studios have the right model: Hire full-time tools engineers
and task them with making the tool-users more effective.

Stellar games simply can't exist without stellar tools, and since every game
is a little different, everyone's tooling needs are a little different. So you
have no choice but to build your own tools (to some extent). Unlike armchair
architects designing wheel frameworks or factory factories, the guy building
the level design tool has real users (in this example: level designers) he has
to build for.

This same model can be applied to web or service development. You just need to
involve users from the start, especially so if your users are themselves
developers who are especially demanding and critical and whose tools are
especially difficult to create.

~~~
atinoda-kestrel
> I think that game studios have the right model: Hire full-time tools
> engineers and task them with making the tool-users more effective.

That's one approach, but it's not always the right one. It's only really
necessary if your studio's selling point is pushing the limits, tech-wise. If
your focus is the gameplay mechanics and engine and art are secondary to that,
then focusing on tooling is more of a distraction than anything else. Hence
why Unity and the now-quite-cheap UE are sane choices, since they let people
focus on the gameplay.

General purpose software has the same pitfall that games do: people see the
big studios/development companies spending a lot of time on tool-building, and
they assume that's a prerequisite, which changes the mental model from "we
need to start building the next cool _____" to "we need to build the tool(s)
that will let us build the next cool _____". And that's a much more expensive
model.

I think it's easy to get sucked into that trap for another reason too:
developers know what developers want more than developers know what users
want. That's why I agree with the last paragraph you wrote, that user
involvement is key. I just think that companies need to be careful that
they're not simply redefining users from "users of our core product" to
"developers of the tools that will let us build our core product", since
there's going to be some natural internal bias that way.

~~~
bananaboy
With Unity, that's a common misunderstanding. Unity provides nothing aside
from an engine and a very open, flexible editor. The editor gives you a way to
put game objects in the world and add script components to the game objects
and that's pretty much it. If you don't build tools for the level designers
you end up with a mess of bespoke game objects with random components. It's
very easy to end up with messy Unity projects that are hard to debug and don't
perform optimally (I've seen quite a few).

If you want to build something of a high quality in Unity you need structure
and rigidity, and you need level designers and artists to follow guidelines
and processes. So you still need tools and tools programmers. You might not
have an entire team building an editor, but you need something (and it's very
easy to build custom editor tools inside the Unity editor).

~~~
atinoda-kestrel
> So you still need tools and tools programmers. You might not have an entire
> team building an editor, but you need something (and it's very easy to build
> custom editor tools inside the Unity editor).

No disagreement there. I just meant that you don't need to start from a blank
canvas and start in on engine, editor, etc. development just to get to the
point where you can do good game mechanics. Obviously even if you use a canned
engine you'll still need to do _some_ work to get your asset pipeline squared
away (just as how everyone needs to do a bit of scripting/config, etc.
specific to their build process for example.)

I guess I didn't explain it well, but I was trying to contrast to the web
world where people [seem to] very often look at places like Facebook rolling
their own frameworks and saying "we need to do that to be good!" and thus
literally go on to start from scratch.

~~~
brandonbloom
React as Relay/GraphQL aren't from a blank slate either. Hell, nothing really
is. How much to invest in what level of tooling is, as it should be, a
function of what already exists, what you're trying to build, and what
resources you have at your disposal.

------
zkhalique
Well our company believes in the power of tools to empower people and
developers, and bring about social change. So I can definitely speak about
this. And so can my cofounder: [http://qbix.com/blog/index.php/2013/04/a-new-
kind-of-platfor...](http://qbix.com/blog/index.php/2013/04/a-new-kind-of-
platform/)

 _" Our job is not to just build Facebook, our job is to make the world more
open and connected — and we in Product Infrastructure are tasked with giving
the whole software industry the tools to help us accomplish this mission."_

Then open source your social network and let it be hosted in a distributed
manner around the world. Instead of shutting off access to APIs like this:
[http://techcrunch.com/2015/04/28/facebook-api-shut-
down/](http://techcrunch.com/2015/04/28/facebook-api-shut-down/)

When I see companies like Twitter and Facebook become open source like
Wordpress for blogs, then we can say they really care more about making the
world more open and connected instead of building their own silo.

~~~
machinshin_
haha, no.

they want to open source their _TOOLS_ and maybe even their model, but their
data(ie their users)? gods no, that's their profit center, giving that up
would be committing corporate suicide. Even if the engineers were willing &
able to do that, the managers would kill it like a 1st trimester abortion.

------
nickpsecurity
Bottom line: invest in good people, delegate responsibility to them, encourage
experimentation, and focus on long-term. Facebook wasn't the first to try this
model. They are one of its recent success stories, though. Most companies' IT
departments won't have similar success due to control-freak management,
conformance to established processes/agendas, or focus on quarterly-earnings.
We'd all be better off if they switched to the model that actually produces
innovation.

Even shifting a portion to it might send a hell of a shockwave through the
industry.

~~~
untilHellbanned
I'll state the obvious: FB has reached champagne problem status. It would be
great if "most companies' IT departments" have the luxury of time to build
non-core products but most companies don't have the bandwidth to "even shift a
portion" of time to experiment like this.

~~~
nickpsecurity
Sure they do if they have their IT priorities right. There's a small business
in my locale that I can't name that occupies one floor of an office, does all
kinds of app development for big companies, and still allocates enough time to
innovation that they regularly present clever stuff at conferences dedicated
to what they do. That stuff also directly improves their competitiveness in
most cases. People might say something similar about Jane St's Ocaml
contributions that they turned into a side-effect of doing their business.
There's been countless admins in companies with less vision that innovated
plenty on semi-automating monitoring, management, and reliability just out of
necessity to reduce stress on their overworked brains and hands.

There's tons of potential in companies for IT innovation, whether small- or
large-scale. It's proven by those, even tiny firms, that act on it. Most
companies act against it on top of under-funding, under-staffing, and over-
stretching their IT staff. That combination causes the effect you describe.
It's not inherent in any way. If it was, examples I described wouldn't exist.

~~~
feedjoelpie
I sort of agree with both of you. Yes, you can do it in a small shop, and my
company does. A lot, actually. But I wouldn't say we exactly allocate time to
innovation. It's more about taking a long view and integrating the long view
mentality into projects with tight deadlines and immediate needs.

It takes a lot of work, and it feels quite different than the luxury of overt
R&D and an emphasis on creating tools. We still mostly have to keep the
development of tools to an as-needed basis and just take those opportunities
to put an eye on the future. It's a delicate balance.

So to me the GP is not wrong when saying that these companies like Facebook
have a serious luxury. That's the luxury to repeatedly experiment and fail
with little relative consequence to the business. The rest of us can't afford
to spend nearly as much time or make nearly as many mistakes.

~~~
nickpsecurity
Good points. I agree with the point about luxury: some definitely have way
more lee-way than others. Your company's method is one of the good methods I
referred to. Another is Jane St's where they apparently dedicated time and
labor to building better Ocaml tools (incl standard library). Almost every
Global 2000 company can afford to do 100x that. Some, to their credit, are
contributing things to IT community. Most just don't and even reinforce
problems with their decisions.

So, there's certainly a huge gap between most companies and Facebook. Yet,
even allocating one person, day, 15% time, etc. to try or build some new
things might have quite some results over thousands to hundreds of thousands
of companies. I'm just arguing companies could be putting in significantly
more effort even without a true R&D department or luxurious business model.
Past that, mileage varies from company to company esp with their
circumstances.

------
natrius
_" Our job is not to just build Facebook, our job is to make the world more
open and connected — and we in Product Infrastructure are tasked with giving
the whole software industry the tools to help us accomplish this mission."_

If this is explicitly true, I've never heard of anything like it in a company
that doesn't sell to engineering organizations, and it's pretty amazing.

~~~
ams6110
They built their company on tools like this, so they do have a certain moral
obligation to give back. I don't like a lot of things about Facebook, but good
for them having this attitude.

~~~
benihana
> _so they do have a certain moral obligation to give back._

What moral obligation are you talking about? There's no moral obligation for
anyone using open source software to give anything back. Are you aware of how
software licenses work?

~~~
Stratoscope
There's an interesting nuance in the phrase "a certain moral obligation." In
my understanding, it's a fairly weak statement [1], somewhat akin to "People
will think more highly of you if you do this thing, and less highly if you
don't."

Contrast this with "they have a moral obligation." To me that is a much
stronger statement: "People will think you are behaving in an immoral way if
you do not do this thing."

It's funny how adding the word "certain" to the phrase actually makes it a
_less_ certain, gentler way of putting things - quite the opposite of the
literal meaning of the word.

Put another way, I could imagine a law being passed to enforce "a moral
obligation". But it seems much less likely to have a law enforcing something
described as "a certain moral obligation."

[1] I mean "weak" in the sense of not being a strong claim of obligation, not
"weak" in the sense that the phrase is a poor way to say something.

~~~
ams6110
Right, I just meant in a "pay it forward" or "the decent thing to do" sense.

------
epberry
Pretty fluffy piece, I'm not sure why it's so high. FB does have some pretty
cool stuff though - I've been itching to play with React and GraphQL.

One tangential point I often think about is the importance of investing time
in learning tools as a developer. What should the breakdown be? Should I spend
20% of my time "sharpening the ax" and the other 80% working on projects?
Someone else in this thread pointed out that companies face some of the same
questions. How many resources should be allocated to things like improving the
build system or developing custom tools? Where is the break even point where
time invested in tools starts saving time for developers working on core
products?

------
vezzy-fnord
The importance of pushing the bar for tooling and infrastructure aside, this
is still a laughably bombastic Facebook press release.

~~~
briandear
I do think the author overstates their importance. All of the technologies he
listed aren't exactly earth shattering; the web would be the same as it was
yesterday if these technologies disappeared today. For example, react
"native"; were apps not built before that? The only thing that did was let
JavaScript devs write for iOS. Have apps increased in quality since react
native? No. It just made it easier for JS devs to not learn Swift or Objective
C. But it hasn't innovated much in terms of the user. Most of what they've
done has been in Javascript frameworks; how innovative is that really? I
actually like React, but it isn't like they've invented HTTP. It's just
another framework. I can do some cool stuff, but nothing that could be done
before. It all feels like a self congratulatory circle jerk with actual user-
level improvements that would not be particularly noticeable by the average
user; the Facebook UX I am presented on the web is still the same cluttered
mess it has always been. So what magic is this innovation actually creating?
Just because we like a particular framework doesn't elevate it to the level of
earth shattering. It certainly hasn't had the effect on the web that Rails
has.

~~~
tvararu
I do think that Brian overstates Rails' importance. Rails and Ruby aren't
exactly earth shattering; the web would be the same as it was yesterday if
these technologies disappeared today. For example, RubyMotion; were apps not
built before that? The only thing that did was let Ruby devs write for iOS.
Have apps increased in quality since RubyMotion? No. It just made it easier
for Ruby devs to not learn Objective C. But it hasn't innovated much in terms
of the user. Most of what they've done has been in PHP frameworks; how
innovative is that really? I actually like Rails, but it isn't like they've
invented HTTP. It's just another framework. I can do some cool stuff, but
nothing that could not be done before. It all feels like a self congratulatory
circle jerk with actual user-level improvements that would not be particularly
noticeable by the average user; the Basecamp UX I am presented on the web is
still the same cluttered mess it has always been. So what magic is this
innovation actually creating? Just because we like a particular framework
doesn't elevate it to the level of earth shattering. It certainly hasn't had
the effect on the web that PHP has.

~~~
collyw
I think Rails (well Django is what I use) don't do anything earth shattering.
They however do allow me as a single developer to produce the sort of work
that would have needed a team of people 10 years ago.

------
shockzzz
There's some commentary here that's helpful, and some that's not. I don't
think it's fair to say "Facebook sux lolz" when many of us work, have worked,
or will work in companies that suck just as much if not more. Plus, this is
just one engineer focused on a certain set of tools and products. Lee does not
represent the history of Facebook's decisions. He is not Mark Zuckerberg.

It's totally fair to say, "thanks rich pplz, wut do WE do?" Though there's a
ton of "rich pplz" out there that don't let engineers experiment the way that
Facebook does. Perhaps Google. But the vast majority of these don't, I don't
think:

[http://fortune.com/2015/06/13/fortune-500-tech/](http://fortune.com/2015/06/13/fortune-500-tech/)

------
contingencies
What a ridiculous title. The reality is this is a backslapping Facebook post
about bringing out new open source javascript libraries for nothing in
particular with no particular benefit and a whole lot of fluff. Who were the
75 people who upvoted this? Probably Facebook employees.

