<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator>Persumi - Level up your writing and blogging with AI</generator>
  <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
  <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/interview"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/interview/feed/rss"/>
  <link rel="self" href="http://persumi.com/u/fredwu/tech/e/blog/t/interview/feed/atom"/>
  <author>
    <name>Fred Wu</name>
    <email>ifredwu@gmail.com</email>
    <uri>http://persumi.com/u/fredwu</uri>
  </author>
  <subtitle/>
  <id>http://persumi.com/u/fredwu/tech/e/blog/t/interview</id>
  <title>Blog (interview) - Fred Wu&apos;s Tech</title>
  <updated>2026-06-21T03:24:57.990993Z</updated>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
As coding bootcamps such as &lt;a href=&quot;https://coderacademy.edu.au/&quot;&gt;Coder Academy&lt;/a&gt; and &lt;a href=&quot;https://generalassemb.ly/&quot;&gt;General Assembly&lt;/a&gt; churn out more and more software developers, and as more and more people start to realise the importance of software, companies these days are facing an increased amount of candidates applying for junior dev roles.&lt;/p&gt;
&lt;p&gt;
Recently we had to take down our job ad for a junior full stack React and Elixir role only a few days after posting it due to having received about 300 applications. Suffice to say, the competition is fierce at the entry-level end of the software engineer spectrum.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;a href=&quot;https://a16z.com/2011/08/20/why-software-is-eating-the-world/&quot;&gt;Software is eating the world.&lt;/a&gt; - Marc Andreessen  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
In the past three months alone I’ve had to sit through over a hundred interviews, many of which were for junior roles. Some candidates did really well but unfortunately the vast majority did quite poorly. In this article I am hoping to offer some tips and insights as a seasoned interviewer and hiring manager, to those who might be struggling landing an entry-level software engineer role.&lt;/p&gt;
&lt;p&gt;
I’ll break the tips into three sections: before an interview, during an interview and after an interview.&lt;/p&gt;
&lt;h2&gt;
Before an Interview&lt;/h2&gt;
&lt;p&gt;
This is arguably the most important stage of your interview - before it happens! Prepare yourself with enough knowledge and confidence in both software development and conversational skills in order to ace the interview and stand out amongst a sea of candidates.&lt;/p&gt;
&lt;h3&gt;
Study Software Engineering Fundamentals&lt;/h3&gt;
&lt;p&gt;
I get it, bootcamps and many online tutorials and courses focus on teaching the practical things to turn code into products. But just like running or even walking without correct postures, it can be incredibly dangerous over time.&lt;/p&gt;
&lt;p&gt;
My recommendation is to read on the basics of object-oriented programming, functional programming and some design patterns. For instance, build up some basic understanding of how the JavaScript prototype works or how the Ruby object model works can be extremely beneficial in progressing your technical capability on application design and architecture.&lt;/p&gt;
&lt;h3&gt;
Get More Project Experience&lt;/h3&gt;
&lt;p&gt;
Not having any substantial project experience on your CV is a sure way to significantly lower your chance of getting an interview.&lt;/p&gt;
&lt;p&gt;
Do junior developers really need substantial project experience, you may ask? Abso-fucking-lutely!&lt;/p&gt;
&lt;p&gt;
Build your own side projects, participate in open source projects, pick up some freelancing work - the choice is yours. These won’t be your most technically accomplished work, but they will help you accumulate experience, and more importantly to demonstrate your capability to your interviewers with real world experience.&lt;/p&gt;
&lt;h3&gt;
Why Software Development?&lt;/h3&gt;
&lt;p&gt;
I want you to put your hand on heart and answer this question honestly. If your answer is more money or FOMO, that’s okay, but be prepared to be disappointed with the reality - if you are not in this field because of your passion for building products or solving problems, you will find this a long and hard slog.&lt;/p&gt;
&lt;p&gt;
If you are passionate about building software, then let me tell you this - when you are starting your career you will have to give up your work life balance for a bit. That is, if you want to boost your career and progress quickly beyond being a junior developer.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
My interest is in the future, because I am going to spend the rest of my life there. - Charles Kettering  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Looking back at when I started my software career many moons ago, I never regretted giving up my social life early on in my career: I worked extremely hard, often did many jobs - a day job as a dev, a night job as a dev, freelancing and doing open source work all at the same time. Some would probably frown and say that I had no life, but I choose to believe that I was making sacrifices so I can become good at what I love doing in the shortest amount of time.&lt;/p&gt;
&lt;h3&gt;
Research the Company You Apply For&lt;/h3&gt;
&lt;p&gt;
If you are one of those who spam your CVs to every job opening, please consider changing your tactic. A well written cover letter will not only increase your chance of getting an interview, but also allow you to ask relevant questions during the interview.&lt;/p&gt;
&lt;p&gt;
Check out the company’s website and any social media pages on LinkedIn, Facebook and Instagram, etc. Do a bit of “stalking” on the people who work in the company, sometimes this will give you some insights into the type of work environment and culture the company has.&lt;/p&gt;
&lt;p&gt;
Doing enough research is not only for your own good - knowing whether you will enjoy working there should you end up getting a job offer, but also demonstrates your ability to do research and independent thinking to your interviewers.&lt;/p&gt;
&lt;h3&gt;
Read, Listen and Communicate&lt;/h3&gt;
&lt;p&gt;
This one might not be immediately obvious because it’s very high level and somewhat vague, bear with me.&lt;/p&gt;
&lt;p&gt;
Some people might be deep thinkers but really struggle to get their points across, and to communicate their ideas and thought process in a clear, concise and useful way. My advice is to read blogs, listen to talks and learn from other people on how they communicate. When you read and listen, pay more attention to how sentences are structured and how titbits of information are given.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
The most powerful person in the world is the story teller. - Steve Jobs  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
And don’t forget to practice! Get comfortable talking to others on various topics in software development.&lt;/p&gt;
&lt;h2&gt;
During an Interview&lt;/h2&gt;
&lt;p&gt;
Hopefully the tips given thus far would help you secure an interview. Now it’s show time!&lt;/p&gt;
&lt;h3&gt;
Turn Up On time, Have Equipment Sorted&lt;/h3&gt;
&lt;p&gt;
Whether you are attending an on-location interview, or more likely during Covid, an online interview, make sure you turn up on time!&lt;/p&gt;
&lt;p&gt;
If it’s an online interview, also make sure you have whatever software needed (Zoom, etc) installed and tested. I’ve had a few occasions where the first five minutes of the interview was spent on the candidate trying to get their mic or speaker working - it’s not a huge deal, but it does show the lack of preparation and organisational skills.&lt;/p&gt;
&lt;h3&gt;
A Smile Goes a Long Way&lt;/h3&gt;
&lt;p&gt;
Understandably, interviewing is stressful. However, remember to put on a smile when you greet your interviewer and when you do small talks. Everything needs a balance of course, when you’re giving technical answers it’s probably not a good idea to smile.&lt;/p&gt;
&lt;p&gt;
If you know you get uncomfortable talking to strangers or when under pressure - do more practices! If you can’t find a friend or don’t have a partner to practice with, use a mirror!&lt;/p&gt;
&lt;h3&gt;
Learn to Say “No, I don’t know”&lt;/h3&gt;
&lt;p&gt;
When you don’t know something or can’t recall the details of something, just say it. As an interviewer, when I ask you a technical question I can see through your hmms and ahs. A “sorry, I don’t know” is a much better answer than one that doesn’t make sense.&lt;/p&gt;
&lt;p&gt;
Bonus point: “Sorry I don’t know, but I will look it up after this interview.”&lt;/p&gt;
&lt;h3&gt;
Read Social Cues&lt;/h3&gt;
&lt;p&gt;
This one can be extremely easy or extremely hard depending on your personality. For those who might struggle with reading social cues, try pay more attention to what type of questions you were asked.&lt;/p&gt;
&lt;p&gt;
If it was an introduction of yourself to kick off the interview, make it more than just two sentences but also under five minutes - this is usually a warm up for you to find your feet and calm your nerve, and for the interviewer to extract any interesting information as a discussion point later. It doesn’t have to be your memoir and you shouldn’t robotically talk through your entire education and work history.&lt;/p&gt;
&lt;p&gt;
If it was a technical question, always try to time-box it. Don’t drag on and repeat yourself just because you have already answered it quickly and concisely. When in doubt, ask the interviewers whether they have anything in particular they were looking for.&lt;/p&gt;
&lt;p&gt;
If it was an open ended question, try to explain your thought process as you explain it. As an interviewer, I’d hate to ask an open ended question and get a short yes/no back. At the same time, give interviewers room to interject and ask follow-up questions by pacing yourself.&lt;/p&gt;
&lt;h3&gt;
Don’t Speak Too Fast&lt;/h3&gt;
&lt;p&gt;
Okay, you might be very nervous, or English might not be your first language, so you tend to speak fast to “get through it”.&lt;/p&gt;
&lt;p&gt;
If that’s the case, work on your speech pattern, make it concious enough that you will recognise it when you speak too fast. If interviewers can’t get your points clearly, they might not always ask you to clarify - because if you kept doing it repeatedly, you would already be written off as a suitable candidate.&lt;/p&gt;
&lt;h3&gt;
Be Humble&lt;/h3&gt;
&lt;p&gt;
I totally understand that in a competitive job market you want to present yourself in the best light. Just be confident and speak the truths.&lt;/p&gt;
&lt;p&gt;
As someone who’s been doing interviews for years, I really dislike people who overstate their capability either on their CV or during the interview because these are often very obvious. Claiming to be an Elixir expert but not knowing how the supervision tree works is a sure way to score a black mark, for example.&lt;/p&gt;
&lt;h3&gt;
Show Passion and Drive&lt;/h3&gt;
&lt;p&gt;
To counter the point on over-selling yourself, what works better is to show interviewers your willingness and determination to learn. Remember, you are still a junior therefore we don’t expect you to know everything we know.&lt;/p&gt;
&lt;p&gt;
What we do expect, is your commitment to learning - not by saying it, but by demonstrating it. Remember the earlier tip on getting more project experience?&lt;/p&gt;
&lt;h3&gt;
Ask Questions&lt;/h3&gt;
&lt;p&gt;
Usually towards the end of the interview, we’d ask you if you have any questions. Don’t say “no”.&lt;/p&gt;
&lt;p&gt;
Doesn’t matter how much research you’ve done on a company, there are always insights someone who’s working at the company can give you. How do they manage the delivery? How do they support learning? What makes them enjoy working at the company?&lt;/p&gt;
&lt;p&gt;
Use this opportunity to gain insights into why you should be working at this company, and to demonstrate your interests in working at the company to the interviewers too.&lt;/p&gt;
&lt;h2&gt;
After an Interview&lt;/h2&gt;
&lt;p&gt;
After completing an interview, it’s an opportunity to do a little retrospective and do a follow up when necessary.&lt;/p&gt;
&lt;h3&gt;
Close the Knowledge Gap&lt;/h3&gt;
&lt;p&gt;
Don’t over-analyse on what you could have or should have said. Instead, spend your energy on solidifying the topics you couldn’t or didn’t provide good answers for. If you’ve said “don’t know” or “not sure” during the interview, now is your chance to make it “sure”.&lt;/p&gt;
&lt;h3&gt;
Follow Up&lt;/h3&gt;
&lt;p&gt;
If during the interview there have been things mentioned that you could provide links or more information on, be sure to act on it. You never know, maybe the clarification is just what the interviewers needed to help them make a decision.&lt;/p&gt;
&lt;p&gt;
~&lt;/p&gt;
&lt;p&gt;
To all the junior developers out there - enjoy the journey! You are in for an amazing ride, make every second count.&lt;/p&gt;
&lt;hr class=&quot;thin&quot; /&gt;
&lt;p&gt;
&lt;em&gt;If you enjoyed this article, checkout my other tips articles:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;em&gt;&lt;a href=&quot;tips-for-becoming-a-better-software-developer/&quot;&gt;Tips for Becoming a Better Software Developer&lt;/a&gt;&lt;/em&gt;  &lt;/li&gt;
  &lt;li&gt;
&lt;em&gt;&lt;a href=&quot;tips-for-writing-a-good-cv-resume/&quot;&gt;Tips for Writing a Good CV / Résumé&lt;/a&gt;&lt;/em&gt;  &lt;/li&gt;
&lt;/ul&gt;
]]&gt;</content>
    <published>2020-09-27T05:56:03.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/tips-for-job-interviews-as-a-junior-software-developer"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/tips-for-job-interviews-as-a-junior-software-developer</id>
    <title>Tips for Job Interviews as a Junior Software Developer</title>
    <updated>2020-09-27T05:56:03.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
A while ago I &lt;a href=&quot;/blog/2012-11-25-an-interview-with-yukihiro-matz-matsumoto/&quot;&gt;translated an interview with Matz&lt;/a&gt; done by a Chinese book publisher. The interview and the translation were well received, so this time I am translating another interview with Matz, done by Ito, the editor-in-chief from Japanese website &lt;a href=&quot;http://engineer.typemag.jp/article/matz&quot;&gt;Engineer Type&lt;/a&gt;. Since I don’t read Japanese, the translation is based on &lt;a href=&quot;http://www.ituring.com.cn/article/45484&quot;&gt;Turing Book’s Chinese translation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
The Chinese translator has done a great job translating the interview, but there are still many words and sentences lack sufficient context and therefore are difficult to grasp. I have put in many hours translating the text as well as doing researches to ensure the final article is readable. I hope you will enjoy it! :)&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x3eZbVc1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Thank you for doing an interview with us, Matz. I have just finished reading your latest book &lt;em&gt;&lt;a href=&quot;http://www.amazon.co.jp/dp/4822234630/&quot;&gt;The Future of Computing&lt;/a&gt;&lt;/em&gt;, could you perhaps talk about the future of programming and software programmers in general?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Hmmm, this is difficult to answer… but thanks for reading my book!  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; In the book you’ve shared your thoughts on the past, present and future of different programming languages and software design patterns. Would you like to talk about the current state of the software industry? And is there going to be another paradigm shift in software development?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; As discussed in my book, to predict the future of a high tech industry such as computing is not particularly difficult. I believe in the foreseeable future the computing industry is still going to advance based on &lt;a href=&quot;http://en.wikipedia.org/wiki/Moore%27s_law&quot;&gt;Moore’s law&lt;/a&gt;. Although, it is possible that in the next year or two &lt;a href=&quot;https://en.wikipedia.org/wiki/Quantum_computer&quot;&gt;quantum computers&lt;/a&gt; become a practical reality, in that case it will change everything! *chuckles* On a serious note, according to Moore’s law, the cost of computing will decrease and the performance and capacity of computing will increase - this basic principle is unlikely to change. One thing I did notice in recent years is that due to the advancement in computer hardware, the software industry is subtly changing too.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Software Development in the Era of Multi-core and Cloud Computing&lt;/h2&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; It was about twenty years ago (in 1993) I invented the Ruby programming language, yet it still runs surprisingly well on modern computers.  &lt;/p&gt;
  &lt;p&gt;
What this means is that in the past twenty years the computing environment which the software runs on did not see any fundamental changes. In recent years, we started seeing computing power being shifted from having higher CPU frequencies to being distributed over more CPU cores. And that means software needs to move in that direction too.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x3p6yvF1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz: Software has not seen major changes for years.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; And this is covered in the last chapter from the book, right?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Yes. Similarly to multi-core, cloud computing is advancing in the same direction. The future of computing is all about utilise multiple CPUs or computers effectively.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; So, how does that change software development?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; In the past ten years or so we have been seeing more and more things happen on the Internet, and the Internet is an amazing application platform for extension and distribution. Compared to software engineers working on &lt;a href=&quot;http://en.wikipedia.org/wiki/Mainframe_computer&quot;&gt;mainframe computers&lt;/a&gt;, web developers are naturally more familiar with the concepts of multi-core and cloud computing.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; After interviewing many web and mobile startups, we realised that the number of software engineers working in &lt;a href=&quot;http://en.wikipedia.org/wiki/Platform_as_a_service&quot;&gt;PaaS&lt;/a&gt; and cloud computing have been increasing rapidly.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Absolutely. And I do believe that “not needing to purchase and own dedicated hardware” is going to be the mainstream. The idea and thought process of “not owning” is not only important for software development, but also important for business development.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
“Owning” Becoming a Liability, Not Asset&lt;/h2&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; In the past, “owning” was seen as the source of vitality of a corporation - those who own high performance mainframe computers were able to do business transactions in high volume whereas those who do not were not able to compete.  &lt;/p&gt;
  &lt;p&gt;
These days the landscape is changing - those corporations who do not “own” expensive hardware have more competitive edge. Let’s say it takes five years to break even from the expensive investment of servers, during that time those machines are being put in use to realise their full potential and to justify their cost. It may appear to have saved the business cost but it is not, simply because the value of the hardware decreases as each day passes by.  &lt;/p&gt;
  &lt;p&gt;
To put simply, we are now entering the era of “owning” being a liability rather than asset. If you had the most advanced hardware, software engineers were able to develop efficiently. On the contrary, if you didn’t, then you might want to get used to the hours-long waiting for the code to compile. *chuckles* The rise of cloud computing platforms like &lt;a href=&quot;http://www.2gocn.com/&quot;&gt;Heroku&lt;/a&gt; is making “owning” a thing of the past.  &lt;/p&gt;
  &lt;p&gt;
Also, “not owning” has several advantages on the development as well as the commercial front. For instance, it allows many startups to rise. In the past, in order to start a new business you would need capital for purchasing servers and/or renting servers in a data centre. These days, to get started on a platform like Heroku couldn’t be easier, for example on Heroku you could start with just one dyno for free. This new way of developing software significantly reduces costs and risks.  &lt;/p&gt;
  &lt;p&gt;
Years ago I read an essay called &lt;a href=&quot;http://www.paulgraham.com/ramenprofitable.html&quot;&gt;Ramen Profitable&lt;/a&gt; by &lt;a href=&quot;http://ycombinator.com/&quot;&gt;Y Combinator&lt;/a&gt;’s founder &lt;a href=&quot;http://en.wikipedia.org/wiki/Paul_Graham_%28computer_programmer%29&quot;&gt;Paul Graham&lt;/a&gt;. “Not owning”’s flexibility and agility contribute a great deal to it. And this trend has now grown beyond just relevant to startups, in fact in the recent years many large corporations have begun adapting this approach too.  &lt;/p&gt;
  &lt;p&gt;
In the United States, corporations like Disney and Best Buy are indeed utilising Ruby, Rails and Heroku to rapidly grow their internal infrastructure in a cost-effective fashion. What was once considered competitive edges to venture capitalists, like “rapid development” and “development flexibility” are now also possible for these giant corporations.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; What about the giant corporations in Japan?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; I have never worked in a big corporation so I can’t tell where they are heading. People have been optimistic, though as an observer I am concerned.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x3tRPEw1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;
Real Benefits of Innovation in Cloud Computing Not to Be Overlooked&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; What makes you concerned about software development?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; The traditional approach of developing software is still the norm. For example, some corporations, even though use Amazon Web Services, still rely on system administrators to handle their infrastructure. It is too common to see a software development team consists of over a dozen people.  &lt;/p&gt;
  &lt;p&gt;
This in my opinion defeats the purpose and forfeits the benefits of “not owning” servers. There are simply too many of these case studies whereby only on the surface of cloud computing is explored and understood.  &lt;/p&gt;
  &lt;p&gt;
I have to say I am disappointed by some of the so-called “private clouds” owned by large corporations. The advantage of cloud computing is to utilise multiple computers in the cloud, but those private clouds are essentially their internal data centres. Isn’t that the same as owning a bunch of servers?  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x3ym1v61qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz: Many companies barely scratch the surface of emerging technologies.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Indeed, it is too often to see the real benefits of emerging technologies overlooked or misunderstood. Anything else that makes you concerned about the future?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Nowadays the speed of development has always been a priority from big development projects in &lt;a href=&quot;http://en.wikipedia.org/wiki/Business-to-business&quot;&gt;B2B&lt;/a&gt; to small development projects in many startups. &lt;a href=&quot;http://www.yahoo.co.jp/&quot;&gt;Yahoo! Japan&lt;/a&gt; even coined a term “爆速化” (explosively high speed) to indicate the importance of development speed in the ever more competitive and engaging markets.  &lt;/p&gt;
  &lt;p&gt;
Looking at things this way, those so-called “system integrators” are becoming obsolete. Should they just give up what they do or continue? I don’t know, but I do know that the gap between them and engineers who have the capability and skills to create real value is increasing.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Career Longevity of Software Engineering&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Who are those engineers who have the capability and skills to create real value?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; The ones who would put in effort to create software or systems from a prototype to a final product. And this has nothing to do with whether they work in web or system integration, or whether it’s consumer oriented or corporate oriented.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x42bl5b1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz: Unbalanced skill combination leads to a gloomy future.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Do you mean the engineers who are capable from design to implementation?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Yes. Speaking of which, software developers have to know more than just system design - they cannot survive without knowing how to code. Just like in life, you cannot survive without being down to earth. *chuckles*  &lt;/p&gt;
  &lt;p&gt;
Despite the fact that it is pointless to have someone doing only the system design, and not the development as well, the System Integration industry is still going strong in Japan - and it is in fact an industry with high profit margin.  &lt;/p&gt;
  &lt;p&gt;
Even if the system designers came up with questionable specifications, or if the programmers were sloppy so the software was terrible to use, users would still use it despite whining. Flaws are easily glossed over under high profit margins.  &lt;/p&gt;
  &lt;p&gt;
But just as discussed before, as development speed increases, profit margins would undoubtedly become smaller. Flaws are therefore harder to gloss over.  &lt;/p&gt;
  &lt;p&gt;
In my opinion, if things don’t change, those run-of-the-mill software engineers might not survive in five years. Worse, the junior to mid-level to senior programmer corporate ladder is going to collapse.  &lt;/p&gt;
  &lt;p&gt;
Say, you wouldn’t want to start a VHS rental shop when DVDs were on the rise, would you?  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Difference Between Those Who Control Their Destiny to Those Who Don’t&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Do you have any advice for those who do not wish to be in a “gloomy future”? What can they do?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; To innovate and to create new things, I suppose.  &lt;/p&gt;
  &lt;p&gt;
It’s not all doom and gloom. Even though many ageing technologies have been or are being replaced by the web, jobs will not disappear overnight. I think many software developers will still be employed in those jobs.  &lt;/p&gt;
  &lt;p&gt;
Having said that, it is always good to create new things or even invent new programming languages.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; What are these “new things”?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; I see three types of new things.  &lt;/p&gt;
  &lt;p&gt;
First of all, new services. If you can create a new service, or a service that offers superior user experience - it would be an innovation.  &lt;/p&gt;
  &lt;p&gt;
Secondly, new technologies. To come up with technologies better than the existing ones - and this is what I have been doing.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;a href=&quot;https://github.com/mruby/mruby&quot;&gt;  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x45MsHv1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://github.com/mruby/mruby&quot;&gt;mruby&lt;/a&gt; was released earlier this year on Github.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
Or, another way is to invent new algorithms.  &lt;/p&gt;
  &lt;p&gt;
The three ways I mentioned have different difficulties, but they share the same goal - to create something that hasn’t existed yet. Those who keep working on these kinds of challenges are the true outstanding software engineers.  &lt;/p&gt;
  &lt;p&gt;
The ones who do not challenge themselves to create new things are often falling behind - they learn a hip new language today and try a new web framework tomorrow, but still lack the foresight to invent and to improve.  &lt;/p&gt;
  &lt;p&gt;
Of course, it is important to learn and try new things, but if you see them as your ultimate goal then you will lose control of your destiny. I believe that the ones who do not get boggled down in every new trendy thing will ultimately be happier.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x48UgIX1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;
Software Development is a Punch to Deficiency&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Here is a sharp question: be a follower rather than an inventor is always easier and perhaps makes more money too. What makes you keep inventing?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; My standard answer would be “because writing and running new programs make me happy”. But the real reason is because I don’t like deficiency.  &lt;/p&gt;
  &lt;p&gt;
There are people who have different opinions and thought processes, I would often come up with questions like “why was it done this way” or “this will be too hard to use”.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x4bIpWG1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz dislikes deficiency, so he invented the ruby programming language.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; True, but all products more or less reflect their producers’ preferences, right?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Absolutely, and I am not saying that this is bad or anything. I just hate to point fingers at other people’s preferences - if you don’t like something, make your own! This is a basic trait of a good software engineer, and is what makes open source sustainable.  &lt;/p&gt;
  &lt;p&gt;
In open source projects, all the source code is publicly available therefore it is very easy to see how a program is designed. As long as you have ideas on how to improve and optimise the design, you are welcome to do so.  &lt;/p&gt;
  &lt;p&gt;
Now it is an entirely different story for certain things in the society. *chuckles* At least in software development, we can rely on our skills and knowledge to improve and to change. If it’s your own creation, it can be adjusted and adapted to suit the ever changing needs.  &lt;/p&gt;
  &lt;p&gt;
This is same for Ruby - I like programming languages and more importantly I like improving programming languages myself, and that’s why I still work on Ruby till this day.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Software Development, One of the Rare Careers that Could Make a Change on Your Own&lt;/h2&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x4fRpd91qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz talking about developer happiness, wearing his “&lt;a&gt;Ruby City MATSUE&lt;/a&gt;“ polo shirt.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; I think I have the right personality for developing software. Only the software industry can tolerate my carefreeness - am I too arrogant for saying that? *chuckles*  &lt;/p&gt;
  &lt;p&gt;
In all honesty, software development is one of the rare careers that could bring positive changes to the society on your own. It’s a wonderful occupation that brings happiness and fulfillment!  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Many people would predict their software future based on theories, but Matz you always use “happiness”.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; That’s right. Because only you can control your own destiny. It doesn’t matter if you were told to do things in a way just becasue “Matz said so” - ultimately, I cannot be responsible for your destiny. You should make your own decisions.  &lt;/p&gt;
  &lt;p&gt;
I would still say things like “the future might look like this”, but these are just my personal opinions.  &lt;/p&gt;
  &lt;p&gt;
And this is the same even for today’s discussion - if someone thinks he does not agree with what Matz has said, he should follow his own decision and the path he chooses.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Exploring the Future: “You” Are the Only Constant&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Having read &lt;em&gt;The Future of Computing&lt;/em&gt;, I remember you talked about the inception and development of varies programming languages. But we all know that the IT industry is moving in a rapid pace, it is difficult to rely on history to guide us through to the future. If multi-core and cloud computing are only just the beginning of a paradigm shift, why did you write about the things happened in the past?&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_inline_mp4x4ismcI1qz4rgp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Matz: Technologies progress just like a pendulum clock.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; People see things differently - and I believe the IT industry is progressing in a manner similar to the swing motion of a pendulum clock.  &lt;/p&gt;
  &lt;p&gt;
As more and more new programming languages, techniques and frameworks pop up, software development related technologies are progressing whilst seeking for balance.  &lt;/p&gt;
  &lt;p&gt;
So, how does “the most balanced from the past” become “the most balanced right now”? Think about how pendulum clock swings and in the past how technologies have emerged - you could then predict roughly what would constitute “the most balanced in the future”.  &lt;/p&gt;
  &lt;p&gt;
Use “centralised computing vs distributed computing” as an example, in the past there was usually only one centralised mainframe computer, later on to increase the processing capability commodity server farms were utilised, and now we are moving towards cloud computing.  &lt;/p&gt;
  &lt;p&gt;
There is no point to look at a particular past event. If you wanted to predict a technology in the future, knowing what has contributed to the balance of a past technology’s rise and fall is going to help.  &lt;/p&gt;
  &lt;p&gt;
Human’s ability is one of the factors too, because we have limited capability as a language designer it is useful to look at what others have done to cater for our ability, and therefore improve and evolve the technology.  &lt;/p&gt;
  &lt;p&gt;
In the book I briefly talked about &lt;a href=&quot;http://www.dartlang.org/&quot;&gt;Dart&lt;/a&gt; and &lt;a href=&quot;http://golang.org/&quot;&gt;Go&lt;/a&gt;. As a programming language inventor I find it really fascinating to explore the thought processes behind those language designers. And it has helped me to gain a deeper understanding of human behaviour.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; I was going to ask why it is so important to study the past, now I know.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; I mentioned this in the beginning - computing has not seen major changes for years.  &lt;/p&gt;
  &lt;p&gt;
Programming languages invented over fifty years ago are still in use today, and Ruby has been around for twenty years now. This proves that computing is progressing slower than what a lot of people believe.  &lt;/p&gt;
  &lt;p&gt;
On that note, there are many past cases whereby focuses were put on what was cool and new without understanding why. Compared to those “follower” software developers, the ones who command and understand the principles and theories behind changes and progresses have a much longer career longevity.  &lt;/p&gt;
  &lt;p&gt;
If you are a software developer who wants a longer career longevity, please read &lt;em&gt;The Future of Computing&lt;/em&gt;! *chuckles*  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Ito:&lt;/strong&gt; Thank you Matz for talking to us today!&lt;/p&gt;
]]&gt;</content>
    <published>2013-06-29T12:04:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/the-future-of-computing-the-future-of-computer-programmers-an-interview-with-yukihiro-matz-matsumoto"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/the-future-of-computing-the-future-of-computer-programmers-an-interview-with-yukihiro-matz-matsumoto</id>
    <title>The Future of Computing, The Future of Computer Programmers - An Interview with Yukihiro &quot;Matz&quot; Matsumoto</title>
    <updated>2013-06-29T12:04:00.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
&lt;em&gt;Update: Please check out &lt;a href=&quot;/blog/2013-06-29-the-future-of-computing-the-future-of-computer/&quot;&gt;this new interview with Matz&lt;/a&gt;, done by Engineer Type.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
A week ago I went to Shanghai, China to attend and to give a talk at &lt;a href=&quot;http://rubyconfchina.org/&quot;&gt;RubyConf China&lt;/a&gt;. The day before the conference’s first day a bunch of us were invited to a VIP dinner where we &lt;a href=&quot;http://www.flickr.com/photos/76172385@N07/8212328817/in/set-72157632083056277/lightbox/&quot;&gt;met with Matz&lt;/a&gt; and got to play with &lt;a href=&quot;http://www.flickr.com/photos/76172385@N07/8213422808/in/set-72157632083056277/lightbox/&quot;&gt;a device running MRuby&lt;/a&gt;. And I heard that earlier on that day Matz was ‘adopted’ by a book publisher to do an interview.&lt;/p&gt;
&lt;p&gt;
I have found the interview (&lt;a href=&quot;http://www.ituring.com.cn/article/17487&quot;&gt;in Chinese&lt;/a&gt;), and found it to be really useful. So I translated it to English. Hope more people will like it. :)&lt;/p&gt;
&lt;p&gt;
On November 16th, 2012 - a day before &lt;a href=&quot;http://rubyconfchina.org/&quot;&gt;RubyConf China&lt;/a&gt;, a Chinese book publisher &lt;a href=&quot;http://www.ituring.com.cn/&quot;&gt;Turing Book&lt;/a&gt; has done an interview with Matz on his new book &lt;em&gt;&lt;a href=&quot;http://www.amazon.co.jp/dp/4822234630/&quot;&gt;The Future of Computing&lt;/a&gt;&lt;/em&gt; as well as about a few topics interested to Chinese readers. &lt;a href=&quot;http://www.ituring.com.cn/article/17487&quot;&gt;The interview&lt;/a&gt; was conducted by &lt;em&gt;The Future of Computing&lt;/em&gt;’s Chinese translator &lt;a href=&quot;http://www.ituring.com.cn/users/86141&quot;&gt;Zi Heng Zhou&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Mr. Matsumoto’s new book &lt;em&gt;The Future of Computing&lt;/em&gt; is published earlier this year and the Chinese version is being translated by yours truly, and that is going to be released some time next year in China. Your last book &lt;em&gt;&lt;a href=&quot;http://www.amazon.co.jp/dp/4822234312/&quot;&gt;The World of Code&lt;/a&gt;&lt;/em&gt; has received high praises amongst the readers in China, so what are the differences between the last and the new book?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; &lt;em&gt;The World of Code&lt;/em&gt; has 14 topics in total, and each topic covers the basics - they covered more breadth than depth. The new book on the other hand has one set topic - thoughts on the emerging technologies in the future, therefore the ground covered would be narrower and more in depth than the last book. On top of that, the new book discusses several things by timescale, such as the history and the changes since the invention of computing, and computing’s impact on our future lives. Therefore it’s the thoughts of both the past and the future. The computing world is changing rapidly, and this book’s purpose is to discuss the direction of computing heading into the future.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Speaking of the history of computing, you have touched on a few things about Moore’s law in the book?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Moore’s law describes the rule of changes over the history of computing hardware. The book discusses not only the changes on computing itself, but also the changes on its surrounding environment.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; On the topic of the evolution of programming languages, Paul Graham said in &lt;em&gt;&lt;a href=&quot;http://paulgraham.com/hundred.html&quot;&gt;The Hundred-Year Language&lt;/a&gt;&lt;/em&gt; that &lt;em&gt;the main branches of the evolutionary tree pass through the languages that have the smallest, cleanest cores&lt;/em&gt;. In the new book you seem to hold a different opinion, can you tell us why? And what’s your take on the evolution of programming languages?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Paul loves Lisp, and Lisp perfectly matches the characteristics of the programming languages described in his essay, and so Paul reckons the programming languages in a hundred years from now will look like Lisp. In reality though, Lisp has been around for over 50 years, and to be honest it isn’t one of the mainstream programming languages. In my opinion this may have been because most programmers don’t find Lisp charming enough. In other words, there is a gap between the so-called “smallest, cleanest cores”, “beautiful” languages and the expectation of programmers. It would be understandable if Lisp’s charm had not been accepted by everyone in a year or two, but for 50+ years it hasn’t reached the mainstream, could it be because it fundamentally does not match our expectation? There is a huge difference between &lt;strong&gt;human friendly&lt;/strong&gt; languages and languages that have &lt;strong&gt;smallest, cleanest cores&lt;/strong&gt; , and I am afraid the gap between them might not close even in a hundred years. As for what future programming languages should look like, I think they should have a runtime model similar to that of Lisp &lt;strong&gt;and&lt;/strong&gt; be easily understandable by humans. All of a sudden, Ruby looks a lot closer to that, doesn’t it?  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Mr. Matsumoto you are the father of Ruby. We know that during the design of a programming language there might be a lot of different choices to be made, e.g. dynamically typed vs statically typed, prototype based vs class based, etc. When you were designing Ruby, what was the most difficult choice you made?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Before Ruby I actually have designed another language when I was in university, and that language was statically typed, similar to Eiffel. I liked statically typed languages, but the language I designed during university was more for academic purposes. Several years later, when I wanted to design a language as a tool I could use, I preferred to have it dynamically typed as I think they were more practical. So I designed Ruby. And I think it was the correct decision - it might not have been the most difficult decision, but it certainly was the biggest decision. Now that the decision of being a dynamic language is made, languages such as Smalltalk, Lisp and to an extent Perl have all had influences on Ruby. One of the features of Ruby is “mixins”, and mixins were not very common at the time Ruby was created. But because I don’t like multiple inheritance, I always believed that there must be an easier way to achieve similar results, so I designed mixins in Ruby.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Looking back, is there anything in Ruby you wish you did differently?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; In the beginning my goal was to replace Perl as my tool therefore I have borrowed many ideas from Perl, such as using the dollar sign ($) to indicate special variables. Looking at it now it seems to be a little bit too much and too similar to Perl. There are a few other things but mainly I think it is too similar to Perl. Back then before the ruby idioms were formed, there were many things that were borrowed from Perl - nowadays I think many of them weren’t necessary thanks to the ruby and rails idioms.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Many believe Ruby’s popularity was because of Ruby on Rails, and you agreed with this in the book. So what do you think made Rails so successful?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; The first and foremost, it benefitted from the rapid growth of the web - almost every software development platform is eyeing on the web field. What was developed using the traditional Client-Server architecture can now be implemented on the web. The number of applications that can be developed for the web has grown, and that’s important. Secondly, Ruby is optimised for easier development and higher development productivity. I think these two reasons combined, is what made Rails so successful.  &lt;/p&gt;
  &lt;p&gt;
Also, Ruby has many powerful features such as meta-programming and extendability via monkey patching. Through these features, basic classes can be enhanced, and DHH created Rails using these powerful features of Ruby. For people who have never touched Ruby, for example those Java programmers who like “inflexible” languages, they will be like, “Huh? You can do that?” - and I think that’s also one of the reasons why Rails is so popular.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; It is said that DHH was going to create a web framework using PHP, but eventually moved to Ruby?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Yes, and I think the reason for that might be the limitation of meta-programming in PHP. After Rails was released there were a bunch of PHP frameworks came out that are inspired by Rails, such as Symfony and CakePHP. PHP however does not have many of the powerful features found in Ruby, and purely from the development perspective I still believe Rails is the more powerful one out of the bunch. By the way, I actually met with DHH before, in Denmark. Back then he hadn’t started learning Ruby yet, perhaps that had a small impact on him too.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Ruby is being used widely for the web, but one hot topic amongst Chinese readers is the development direction of Ruby outside of the web. Any thoughts?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; True, many web based projects use Ruby, for instance web frameworks like Rails and Sinatra, etc. The world of programming however is far beyond simply web, and I have always wanted Ruby to break out from the web to other areas. In the near future, I would like to see Ruby being used in three fields:  &lt;/p&gt;
  &lt;p&gt;
1.  &lt;/p&gt;
  &lt;p&gt;
Scientific computing. In this field, languages like Python, R and Matlab are popular choices. I hope Ruby will soon be one of them. In fact, we are developing a project called SciRuby, and we hope it will help us with the adoption in scientific computing.  &lt;/p&gt;
  &lt;p&gt;
2.  &lt;/p&gt;
  &lt;p&gt;
High performance computing. This is somewhat related to scientific computing - to use super computers for doing computational work. Compared to C++, Ruby indeed is very slow, and that’s why people think Ruby isn’t suitable for doing high performance computing. In University of Tokyo a research student is working on an academic research project that compiles Ruby code to C code before compiling the binary code. The process involves techniques such as type inference, and in optimal scenarios the speed could reach up to 90% of typical hand-written C code. So far there is only a paper published, no open source code yet, but I’m hoping next year everything will be revealed.  &lt;/p&gt;
  &lt;p&gt;
3.  &lt;/p&gt;
  &lt;p&gt;
Embedded systems. For micro devices such as cell phones, medical equipment and robots, Ruby isn’t really suitable due to its memory use and APIs. Therefore we need something that’s more suitable for these embedded systems where memory consumption has to be low and APIs have to be optimised. And that’s what MRuby is designed for.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Twitter is mainly built using Rails, but I read a news recently about the traffic surge during the US president election period and Twitter is now migrating to other platforms to help with the scaling. What’s your view on this?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; There are many reasons I believe. First of all, nobody could have predicted Twitter’s huge success - who would’ve thought a service that essentially provides 140 characters of text for blogging to become one of the largest social networks. During their rapid growth they have added a lot of new features, and I think Ruby has contributed to that - it allowed many new features to be thought and implemented in very short amount of time. Twitter could not have anticipated the traffic it is now handling, so it’s fair to say that they have now hit the limit of their architecture designed from way back.  &lt;/p&gt;
  &lt;p&gt;
To solve the issue, Twitter needs to design a new architecture from the ground up in order to handle the ever increasing traffic. Although, Ruby can still be used for rewriting the architecture (chuckles). More seriously though, when a platform hits its limit, there are a few ways of solving it such as rewriting the architecture and changing to another language/platform, etc. I believe the most effective way is to rewrite the architecture, and this is exactly what Twitter’s been doing. During the rewriting process the Twitter engineers wanted to take on more challenges so they picked Scala. Because Scala is a compiled language it has great performance, so it is a fine choice for the new architecture.  &lt;/p&gt;
  &lt;p&gt;
My opinion is that when your system is still in its growing stage, it is far more important to have the ability to react quickly to changes, and that’s what a highly flexible language such as Ruby offers. Once your system reaches to a point of maturity, stability and success, then to have a new architecture that saves on resources makes sense. Twitter only chose to use Scala for its core components, the web front-end and many of their internal tools are still using Ruby. As a matter of fact, I paid Twitter a visit last month and talked to many of their engineers there - Ruby is still in great use (chuckles).  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Mobile platforms become hotter and hotter in recent years due the increased use of smartphones, tablets and other mobile devices. As far as programming language is concerned, Android uses Java and iOS uses Objective-C. What about scripting languages like Ruby, how do you see them fit in this picture?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; It is no doubt that so far in order to develop for Android you use Java, and for iOS you use Objective-C. But that also creates a huge barrier because you would need to rewrite your application if you wanted to port from one platform to another. Projects like PhoneGap and Titanium try to solve this very issue, via languages such as JavaScript and Lua to offer cross-platform compatibility. For Ruby, there is a project called Rhodes - you can use Ruby to write applications that will run on iOS, Android and Blackberry.  &lt;/p&gt;
  &lt;p&gt;
In the old days, mobile devices are much less powerful than PCs, and if applications can’t run in full speed then they are useless. Nowadays though, mobile devices have gotten significantly faster, and the use of cross-platform frameworks becomes far more practical than ever before. I think this way of developing for mobile platforms will become more and more popular. And by the way, we spoke about MRuby before, and using MRuby for iOS and Android is already underway, hopefully more applications will get developed using MRuby in the near future.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; You mentioned MRuby, and the topic of your keynote presentation tomorrow is Ruby 2.0. Could you talk about MRuby and Ruby 2.0’s highlights a little bit?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; As we discussed earlier, MRuby is designed to run on embedded devices, it does not have everything from Ruby. As a result, many devices which traditionally can’t use Ruby, such as vendor machines, controllers and robots can soon utilise MRuby. Perhaps in a few years time, we could see Ruby used in televisions and cars.  &lt;/p&gt;
  &lt;p&gt;
Ruby 2.0 indicates two messages. Firstly, by next year it will be 20 years since the development of Ruby started. What better version number can there be to celebrate this special moment! Contrary to what it might seem like, in terms of the changes, from 1.9 to 2.0 is not as big as from 1.8 to 1.9. In fact, our goal for 2.0 is to be fully backward compatible with 1.9. Your 1.9 applications should run just fine on 2.0.  &lt;/p&gt;
  &lt;p&gt;
Secondly, Ruby 2.0 does offer a few new features. For instance, use monkey patching to add new or replace features has global effects and it might cause conflicts and bugs. In order to avoid situations like this, Ruby 2.0 limits the scope of monkey patching via Refinements. As bigger teams and bigger projects are adopting Ruby, scoped monkey patching will increasingly show its importance. There are many other features in Ruby 2.0 that are designed to cater for bigger teams and projects.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; As far as I know most of the mainstream programming languages are from America and Europe - though there are Lua from Brazil and Ruby from Japan. You too mentioned this in your book and you said this feels “lonely”. So what is the cause of this, and what can we do about it?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; Well, for Lua you can include it in Europe/America too because Brazil is part of South America (chuckles). In the south eastern Asia region though there is only Ruby, and it is lonely. Europe and America still remain the most powerful regions as far as programming languages go. Asia, although has massive population, does not compete in this regard, that indeed feels lonely.  &lt;/p&gt;
  &lt;p&gt;
I am not sure about other countries, but at least in Japan there are many people working on programming languages, unfortunately other than Ruby none of them are well known. If more people are interested in programming and designing programming languages, there bound to be one or two that’ll break out, right? There is another hurdle in Japan - language. Most Japanese people only speak Japanese and they cannot speak English well. Funnily enough there are programming languages written entirely in Japanese. ( &lt;strong&gt;Zhou:&lt;/strong&gt; In China there also are programming languages written entirely in Chinese.) In China too? I knew it! No matter how interesting these programming languages are, they will never influence anyone beyond the ones in their own country.  &lt;/p&gt;
  &lt;p&gt;
On a side note, I once received an email from an American. He said that you are Japanese, but Ruby looks like English because it’s written in English, why isn’t there any Japanese-written languages? I replied saying that there are, you just don’t know them, and even if you did, you wouldn’t be able to use them.  &lt;/p&gt;
  &lt;p&gt;
In Japan, more and more people are interested in programming, maybe because both online and in my books I always talk about how fun programming can be. Many people are now taking on the challenge of designing new programming languages. Out of these new languages, even only 0.1% of them ever get any success, I think it’s a win. I don’t know how many people want to take on the same challenge in China, Korea and other countries in Asia, but if people could look beyond &lt;em&gt;programming languages are created for us, we just passively accept them&lt;/em&gt;, and think &lt;em&gt;to create a new programming language can also be fun&lt;/em&gt;, then I am sure some of them will succeed.  &lt;/p&gt;
  &lt;p&gt;
Talking about open source projects, not many of them are from Japan, China and Korea, and I think this could be an entry point for many. There are many reasons why this is the case though, for example English is hard to learn… ( &lt;strong&gt;Zhou:&lt;/strong&gt; And GitHub is also difficult to use?) Haha, is GitHub usable in China? ( &lt;strong&gt;Zhou:&lt;/strong&gt; It is, it is…) Oh, that’s not too bad then. But, China’s Great Firewall still has a huge impact, many resources can’t be accessed here, right? ( &lt;strong&gt;Zhou:&lt;/strong&gt; That’s right, for instance the Go programming language’s website is blocked.) Ah really? Is it because it’s made by Google? (Chuckles.) In any case, I think there are still many difficulties to face. Also, in Japan many programmers still spend most of the time at work (to put food on the table), it’s very difficult for them to contribute to open source projects. Ten years ago nobody cares about open source in Japan, but nowadays people start to realise the importance of open source, and the number of open source projects is growing. I believe China will soon follow this pattern as well, I am looking forward to it.  &lt;/p&gt;
  &lt;p&gt;
In the beginning no one knows what will succeed. When I started with Ruby I could not possibly have predicted its success. So I think for a programming language, timing is really important - and you’ll never know until you tried. I think in China there might also be languages that emerge from the right time that will eventually be a global success.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; In the book when you were talking about Dart, you mentioned that the ecological environment is really important for a programming language. So what do we need to do to ensure a good ecological environment?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; From a user’s perspective, the most important thing is what benefits a programming language can offer. Before Rails came along, many Ruby users including myself, believe Ruby is a user-friendly language, and that’s the reason we like to use it. After Rails was born, more and more people like to use Ruby because &lt;em&gt;making websites using Rails is really productive&lt;/em&gt;. So I think if you could communicate to your users what the benefits are by using your new programming language, it will help with its adoption and increase the chance of success.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;Zhou:&lt;/strong&gt; Thank you very much Matz! Do you have anything else to say to Chinese programmers?&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
&lt;strong&gt;Matz:&lt;/strong&gt; In the book &lt;em&gt;The World of Code&lt;/em&gt; I have mentioned that programming will likely to develop and evolve in the form of open source. New generations of programming languages and software are likely to emerge as open source projects. People are happy to freely use the software developed by others, and to take from that, and work on your own open source projects and make a little impact on the world - then you would become a world class software engineer. The software engineers I met in China are all very hard working and enjoying learning. I hope more of these people will step up and take on the challenge, and become world class programmers who will make a decent impact.  &lt;/p&gt;
&lt;/blockquote&gt;
]]&gt;</content>
    <published>2012-11-25T06:45:00.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/an-interview-with-yukihiro-matz-matsumoto"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/an-interview-with-yukihiro-matz-matsumoto</id>
    <title>An Interview with Yukihiro &quot;Matz&quot; Matsumoto</title>
    <updated>2012-11-25T06:45:00.000000Z</updated>
  </entry>
</feed>