Monday, October 10, 2016

Ruby Conf 2013 Living in the Fantasy Land by Yukihiro "Matz" Matsumoto

and Ruby Conf is always great
and a keynote make me depressed (laughs)
You know I'm a programmer
I'm a language designer
so you know, my main tasks should be is designing language
a great language
I admit that I did great things
you know
that influenced
so many people all around the world
including you guys
so I'm pretty happy with it
but still
you know
I'm not really a great presenter
I'm very
I'm not really good at english
that always makes me nervous
anyway, today I'm going to talk about the fantasy land
this way
fantasy land
that is a place being away from reality
the where the unicorn lives
in Japanese it is called
which is escaping from reality
my dictionary says that is escapism
is that correct word or something
so for example
so the starting cleanup right before the deadline
is kinda like escapism
starting debuging mruby right before the keynote
is escapism
that is what I did
so today
I'm going to talk about
oh excuse me
two fantasy lands
the first one is kinda like a distopia
in 1990
I graduated from university
I feel old
I was hired by a software development company
which does, which did some kind of enterprise software
in that, that age
the software development is totally different from now
so we had some kind of three year project or something
from the huge company or huge government department
we had some kind of analysis for months or even years
then we wrote some kind of very detailed documentation
this abstract documentation
the detailed documentation
then we code
which is the translation from natural language to computer language
so the process was driven by waterfall process
so the company's decision was very, very, very conservative
so at that time I felt something was wrong
but I couldn't explain why
just because it was so natural
everyone was doing it that way in software development
back then
so I couldn't explain why
everyone was doing that
it is quit difficult to tell what is wrong
when everyone is doing bad things
so yea I couldn't imagine what was right and what was wrong
so after more than 20 years of experience
I was a pretty experienced programmer
ah maybe
now I understand, I now understand what was wrong
we were wrong in software development
that depends on some false assumptions
we were depending on such false assumptions
assumption number one
we know what we make
back then we believed we are knowing what we are going to make
in reality we don't know what software is
so software does not have any physical entity
so it is not limited by physical law
so it can be very, very easily complex
so, for example, if I were a building architect
so I design a building like this hotel
so we need to think about, for example
about weather, or the strengths of the concrete,
or iron, or something, the building materials
then the strength of the building itself can be
calculated by physically, easily simulated
but you know
when we starting developing software it is easy, like
"hello world"
that's quite easy
there is no room for bug
but the software is getting bigger and bigger
so it's quite difficult to understand say 10,000 lines of code
but now days software is so huge
like if I had a Prius here, it is an automobile,
it has tons of lines of code, maybe hundreds of lines of code, tons of hundreds
maybe millions of code
so it's like, as a software developer, you can imagine how difficult to ensure no bugs
in the millions of lines of code
I'm sure I cannot do that
so, the software can be a most complex creation, maybe
and no document but code can explain the details
so the, we believe we knew what we were going to make
but in reality, we didn't
false assumption number two, which is
we know what we want
in reality, it's quite difficult to imagine
you know, in a waterfall age I write a code (?? 00:07:27.16) with sophistication
and I give that sophistication to our client
then clients said, OK, then we started development
a few weeks, few months, few years later
the software was finished
then I wrote
if we wrote it to the client, then
can you imagine what the client said?
it's not what I wanted
but, they said yes, this is OK
but, afterwards, they said, this is not what I wanted
even, I admit, I said OK
but, you know, we couldn't imagine what the software appears in reality
so, like a stupid boss says ?? (00:08:23.56) to the client
yeah, I complained a lot
I happened to complain so often, back then
but one day, I asked my colleague to create some kind of software
at that time I was so busy, so I
I explained what I want to my colleague
then he created the software, then back to me
and I said, this is not what I wanted! (laughs)
stupid me
I said I don't know why we should make too maximize business value
we couldn't, no, we couldn't understand what is gonna bring you success
so we are stupid, too
so, false assumption number three
which is
the situation will not be changed
in reality, we don't know the future
we're not prophets
we have wrong forecasts
so yeah, in this technology field, we have a lot of
we're gonna have this technology, we're gonna have this, too
we're gonna conquer the world, so
most forecasts will be wrong
so let's face it
we don't know anything
20 years ago
we should have admitted our ignorance, but we couldn't
so instead, we ignored our ignorance
so, when we know little, we have very few choices, so
choice number one is a conservative strategy
learn from the past
so, this is very good strategy
and the politicians often take
but it is pretty good unless factors don't change
unfortunately not in the IT industry, so
we change a lot, the situation will change drastically, day by day
so, in our industry it's kind of like the quote from Red Queen in Alice in Wonderland
"Now, here, you see, it takes all the running you can do, to keep in the same place.
If you want to get somewhere else, you must run at least twice as fast as that!"
It's our situation, here
probably, yeah
it's our situation
we have to run as fast as we can to be in the same place
so, strategy number two is
ostrich algorithm
in the ostrich algorithm
so when the sandstorm comes, ostrich dig in their head into sand
and wait until the sandstorm ends
so the, the ostrich strategy is ignore everything, and wait
it is a good strategy
only when situations will recover
so sandstorms will end
so, we will have the clear skies and we
we can enjoy our climate again
but, you know, in our industry
that's not going to happen
where the situation will change and change and change and not recover
so we, we cannot go back to the main frames
we can go back to the, you know, eighty, fifty years or something
so we must keep forward, keep going forward
so the ostrich algorithm is very good strategy in the past
when the situation will recover
so the, this strategy, this algorithm, is written in our instincts
so we are so easy to choose that strategy
but, otherwise, when the situation will not recover
it's kind of like the living in the fantasy land
so, going forward with false assumptions is kind of like living in the fantasy land
so, ignoring reality
we had two strategies
conservative strategy and ostrich algorithm
which strategy do we take?
neither of them are good
20 years ago
our goal was to create the software, somehow
having computerized system is the power
it is so powerful, the computer itself is so powerful, comparing to the human creation
so it has great power, so software development was pretty expensive back then
the computers were expensive
the network connection was expensive
the failure never be allowed in that age
so they needed to optimize, not to fail
at the cost of satisfaction
so I don't care you are satisfied our software or not
but I can re-use some kind of the power of computers with that computerized system
so everyone was dreaming
we believed that the only way to create software
we tried hard to believe that was the only way
but 20 years later, now
our goal is not really, not just create a software
our goal is to create the great software
you know, nowadays everyone has computer, everyone uses software
so, mere possession is no longer the power
everyone has computer, everyone has software
so we're saved
to differentiate, to have the power over others
we need to create great software, we need great software
we got to create great software, but how?
of course we don't know
we have made false assumptions
admit our ignorance
but, but there's good news, there's good news
the computers are cheaper
cloud computing is even cheaper
a network connection is cheaper now
and ubiquitous
everyone has imagination
even in this room
software development is cheaper
comparing to twenty-something years ago
so, we can be more productive, more abstract
and we now have better tools and a better language
like Ruby
and we have a lot of open source software
so we can rely on that kind of software
we can learn from that software
so, old days, it is quite difficult to study from the real source source code ?? (00:16:41.91)
if you would like to learn about the operating system
so you cannot access to the source code of, say, Microsoft Windows
or the ?? (00:17:00.68) or some other operating system
you, you can access through Linux?? (00:17:08.34)
or the very old version of Linux
but not the real software
but nowadays you can access the Linux
a whole bunch of Linux code and you have tons of operating systems
and that is used in reality
you can use some software in your system
you can learn from that source code
so it's much easier for us to learn and create the great software
and we can now have the collaboration via internet
it's, it's changed the game
so, 20 years ago, soon after I graduated the university
I was at the point I was working as a professional programmer in enterprise software
I was prohibit to write email abroad, outside Japan
only 20 years ago - not two hundred years ago
so, yeah, I, when I was a university student
I wrote some kind of software, free software
it was distributed by, it was quite minor, you know client on top of ?? (00:18:32.73)
and, I got to mail from some other guys, probably in the States
I don't remember quite
I tried to reply, and soon after that I got error mail
your company did not pay money to the internet connection
international internet connection, I mean
so, I forwarded that reply to my friend in the university
the university pay that kind of bill so that he could receive the mail
it was quite awkward corresponding, you know
he wrote mail to me then I did not respond
so that, the friend respond because of me or something like that
but, you know, now we can connect to everyone all over the world
so we can access through Japan, China, Moscow, everywhere
so we can now collaborate over the internet
so, that allows us to do some kind of social coding, so
so, GitHub changed everything
so these good things bring up the new fantasy land
the new perspective
so we can ignore gory detail of the hardware or the
and the new operating system, for most of the cases
we can stand on the shoulders of giants, so we can use the great huge software
of the operating system, framework, language, the tools, editors
so a lot of the things
so we can do great things with very little effort, comparing to the past
so we can do greater work than our real ability, real power
so, I think the genius 20 years ago does not recur enough, is not strong enough
they are almost fame ?? (00:21:05.97), the ability as a human, in genius
but, now, we can rely, we can collaborate, we can collaborate over internet
we can collaborate on top of open source software, free software, so
we can do greater works than our past
but that does not mean we are greater
so the situation has changed
we can have power, we can have more freedom
we can have more joy in software
so I remember that the, working on the enterprises software was not fun
so, it's quite boring, so translating human sophistication
in human language into the computer language was so boring
you know, that sophistication once said that, OK, assign this value to this variable
or something like that, so
why these kind of genius don't write the code by themselves?
it was quite boring when I was ?? (00:22:49.51)
so now, we can do by ourselves, we can have joy in our programming
it's kind of like engineers' heaven
that's where we are, and that's why we are here
but wait, it's still not real
in reality is as conflict as past
so, who maintains this fantasy land?
in reality, we cannot just ignore mess, so we don't need
something, so, we can ignore or just forget
but something's got to maintain this kind of a mess
so, it's, so somebody's got to work on that kind of mess
garbage collectors
no, that's not the garbage that you imagine
for that kind of topic you can go to to the Koichi talk
so, by the term garbage collector, I meant this (picture)
and, we have to rely on this kind of people in our daily life
even in our programming
without them, we would become mess
so welcome to the desert of reality
we rely on garbage collectors
so we'd better appreciate them
we rely on a lot of garbage collectors who keep the fantasy land
who created your favorite language?
the garbage collector
or, who created your favorite gems?
gem creators, raise your hands
you have to appreciate them (applause)
thank you
who created your favorite frameworks?
who wrote your favorite books? book writers, raise your hand (applause)
who created your opensource software, we have tons of open source software
in and out our Ruby community
so we have to appreciate them
so appreciation and respect is the key, I believe
the key to the open source community
the key to the moving forward
so open source community is kind of like a shark
we need to keep moving forward, or die
so, we have to, and I would advise to you, keep moving forward
so you have to run as fast as you can to stay in the same place
and you have to run twice as fast as that to move forward
so run fast, try often, fail early
keep moving forward, yes, that is my message
and in addition, appreciation is not enough
so, we are not creative to the gem writers
we are not creative to the language designer
we are not creative to the open source software programmers
so we became one
so, take the red pill
so, you can come join us
if you are a programmer, that's fine, that's fine you're a programmer
you take a great step to create something
you know, the programmer is a creator
so, you create software, then by your creation
the world will be better, I hope, I really will hope
the world will be better by your creation
you programmers, you create soft ware, and you make the world better
but, but you might still living in the fantasy land
which is kept by the garbage collectors
and if you're willing, I'm not forcing you
if you're willing, you can be one of them
you can be a garbage collector
you don't want?
but this garbage collector is much cleaner
so, be a garbage collector, take part in keeping the fantasy land
so this fantasy land, unlike the first one, which ignores everything
so this fantasy land, we currently enjoy is our result of the effort of the long time
maybe twenty, forty, fifty years of the great effort of the garbage collectors
so, I, I invite you guys to take part in keeping the fantasy land
and for example, so you can join the CRuby
even in writing some reporting some issues the bug trackers or something like that
so, once you know what we garbage collectors doing behind the CRuby
you can take the, that session
so, again, so I ask you to create a great fantasy land
currently we enjoy, and it can be even greater with your effort
so you can do as much, many things, so writing software on top of Ruby on Rails
or the ?? (00:22:49.51) or something like that
that will enrich the community and communicate with blogs, twitter and social net, social
or even, participate in the community, like the GitHub is our friend
you can do many things, submit bugs, write documents on the
you know, have a presentation in the conference, you can
or, write a small piece of software, write a part in the, submit a ?? (00:31:05.62)
so, so many things you can do, but in any way create
and try to keep a great fantasy land that we enjoy
change the world
so, I believe we've changed the world in better ways
in the past, say, ten years, so
a lot of people in this conference, in the past Ruby conferences
so presented the great things, so now I expect even more great work will be introduced in
this conference
so do not be a just a listener
do not be a passive receiver of information
so you hear something in this conference, you learn something, take action
change the world
so, this is the key of the open source community
this is the key of the Ruby community, so
I know myself, I'm not a great programmer
so, especially the Ruby commuters in the league knows I'm not a great programmer
I create so many bugs
but, but still, I could, I did great job that influenced the world
and I respect myself by changing the world better
so I believe you can do that too in someways
so change the world
thank you
domo arigato