Start of Buzzstarter Internship

I just started my internship at Buzzstarter ‘Buzzstarter is the world’s first scalable programmatic content marketing platform.’ As a trial, I am currently interning part-time and remotely, but if everything goes well, then it would become more around next month. This is my first day meeting the team via Google Hangout, and I participated in my first Scrum. I’m being on-boarded right now, but I’m learning about their development process and philosophies.

I’m currently going through the intro project they have for new devs, and I’m enjoying building this small project. Its basically a blog application using all the gems they actually use on the real Buzzstarter project. One gem I especially find enjoyable is ActiveAdmin. This is my first time using the ActiveAdmin gem, and I’m really liking it. The one thing that surprised me was not having to explicitly define the resource’s controller. ActiveAdmin handles all that for us. I’m currently only on the second part of the project, but the project’s tasks are well defined and easily researchable.

Buzzstarter intro project on GitHub

Buzzstarter uses Agile development to develop software. Although I have heard of Agile development before, I have never used the methodology directly. Despite not being familiar with Agile directly, the basic concepts I read about in the Buzzstarter wiki about Agile showed that Agile has similarities to the concepts I’ve read about in Lean Startup. Things like: Embrace Failure, Deliver Smallest Product you can, Iterate Constantly, and Collect feedback. They’re straightforward concepts after being exposed to them before.

As part of the development process, we are using various tools to help with development. We use well known tools like Pivotal Tracker, Basecamp, and GitHub. We also use tools I have never heard of up until this point. Tools like Segment.io, Flowdock, Errbit. This is one of benefits I see in working with a team. I am able to be exposed to gems and services that I would not normally be exposed to.

I’ve installed the app on my local machine successfully, and I’m looking forward for the rest of this internship.

CoffeeMeeting Internship

CoffeeMeeting.jp

I’m back in America after visiting and finishing my internship in Japan at the startup CoffeeMeeting.jp. Now seems like the perfect time to detail my experience on the internship and note some of the things I learnt.

A quick introduction to CoffeeMeeting is in order. CoffeeMeeting is a startup in Shibuya, Tokyo, Japan, and it was founded by Daisaku Yamamoto in 2011 with the goal of  making a service that makes it easier to meet new people.『もっと気軽に人と会えるアップサービス』Users allowed to register a timeslot when they are available to meet, then other people can see this timeslot and apply to meet with the original poster. The person who created the timeslot usually has a topic or theme they want to talk about, so they can choose an applicant based on the person’s profile. Since its launch two years ago, Yamamoto-san has been working on CoffeeMeeting as a single founder with over 30,000 registered users using the service to coordinate over 20,000 meetings.

coffeemeeting_website_login

I first became aware of CoffeeMeeting via Creww.me, a directory of startups in Japan, and I used the CoffeeMeeting to meet with a few people on a trip down to Tokyo. I was able to talk with different types of people I wouldn’t have had the chance to talk with normally. One person I met with was a nutritionist who wrote for a magazine and organized health events. Another person was a self-employed recruiter that helped people if they wanted a career change. I enjoyed the startup’s service initially just as a user.

After these meetings I added CoffeeMeeting to a list of companies I was interested in a interning at. From this list I looked at their company’s profile, and I found the CEO’s name. Using Rapportive and Gmail, I was able to find their emails and send off an email expressing that I was currently visiting Japan and I was looking for an internship. CoffeeMeeting’s Yamamoto-san replied back and we set up a meeting for a few days later. Before we met I took a look at the current website and saw that it needed more work on the design. I took to Photoshop and created my initial redesign of the website. During the meeting I was able to show this redesign, my portfolio, and my enthusiasm to work on this project, that Yamamoto-san offered me an internship in that same meeting. Looking back, finding an internship really went smoothly.

A week or so after, I moved down to Tokyo and my first day arrived. My first day started with a little bit embarrassingly because I had forgotten my laptop charger at home, so I had to go to the apple store and buy a brand new one. After I got back, we had to setup my development environment on my laptop. Fortunately I had a lot of the gems already installed, so what Yamamoto-san thought would take a whole day of setup, only took an hour.

A memorable moment came when Yamamoto-san told me he thought I knew a lot less than I actually did. +1 for going through the Rails Tutorial a couple times!

I then pulled the master git repo from GitHub, and I started to look at the source code. I knew the typical Rails app directory structure, but when I saw all the files used on the real live web app, I was a bit overwhelmed. There were so many models, controllers, and views I might have opened each one just to see what it did.

The views were where I spent most of my time because my internship projects were to implement the redesign and add a Skype meeting feature. The current design setup was implemented with a single large CSS file, view upon view file, and controller determined layouts for each page. Before I started I didn’t know what I was getting myself into because a large part of what I did was copying the same markup and classes into multiple partials and layouts. In more detail, there might have been two layouts that were exactly the same, but one layout might have one difference. It might have been better to wrap the differences in a conditional than creating a new layout file altogether.

The CSS wasn’t inherently bad, but I enjoy using Sass and a CSS framework like Twitter Bootstrap for styling more. One of the first things I did to the CSS files was append .scss so that it could go through the Sass preprocessor built into Ruby on Rails. One reason I chose to work with Sass instead of vanilla CSS was that ability to define variables. If for one reason down the line CoffeeMeeting wanted to change the color theme, then the default color variables could be commented out and replaced with another set of colors. This might be useful for a seasonal redesign that changes the colors while not changing the overall design.

My initial redesign was more a creative exercise to redesign the current website in a different way, so Yamamoto-san had some feedback to give about the redesign. He didn’t want to completely change the website in order to avoid overly and abruptly surprising the current users, so through iterating from pencil sketches, Yamamoto’s feedback, and to high fidelity mockups, we got to the final redesign. The final redesign can be characterized as flat. No borders, circles, and minimal effects.

CoffeeMeeting Redesign

With the redesign decided on, I went off to edit the actual app. I first split the redesign up into different sections of the site. The first section was the navbar. After checking out into a new branch, I set off to edit the views and styles with my toolbelt of Textmate and Chrome dev tools. This process continued for the other sections like the header, ribbons, cards, and the final Skype feature. I would describe the weeks after finishing the Photoshop redesign as the startup slog, the startup slog being having a plan and slowly executing on it. The biggest set backs came when I finished something in Chrome and I had to make it consistent in both Safari and Firefox. Sometimes I found myself spending a long time trying to figure out the differences between the browsers just to make sure everything was as similar as possible. The easy part was redesigning the site in Photoshop.

I also created some mockups for the future CoffeeMeeting app as well

Splash loginSlot Profile

Despite the slog of actually chiseling away at the redesign, there were some fun parts the highlighted the internship. During the same time, Yamamoto-san was creating a new app service called FriendToss for the web and iPhone. Much in the same vain as CoffeeMeeting, FriendToss connects you to new people. The concept is that you connect to the app via Facebook, and then FriendToss uses your current friends’ friends as the pool of potential people you could meet. Once a day at 10am, the app notifies you of a new ‘card’ for the day. On the card is a friend of a friend. You could either choose to ignore this person or choose a common friend so the three of you could start chatting in app.

スクリーンショット 2013-12-21 11.40.47

I was able to get the unreleased app installed on my phone through testflight so I could give feedback. I actually did get matched in the app with a friend of Yamamoto-san. After chatting a bit we all got together and organized a lunch for us to actually meet. The lunch was fun because I got to learn about Yamamoto-san’s friend’s experience in startups and his current projects. At the end we took a group photo that we were able to post back into the app. That way when someone looks at any one of the three of our profiles, they can see previous in-person meetings or ‘tosses’ we’ve participated in.

1508593_10151911412858751_1736300060_n

Another highlight was working so closely with Yamamoto-san. We worked in a co-working space in Shibuya and literally we were an arm’s length away from each other for hours a day. Because Yamamoto-san was a single founder, it was just the two of us working together. This situation created a far more intimate relationship than if I had taken an internship at a larger startup. Not to lose out on this opportunity to ask more non-technical questions, I asked about his motivations in creating the startup, how he got funding, and general advice he had for a twenty-year-old interested in startups. Some of the things he told me are worth a blog post in its own right, so I’ll leave it for a later date.

写真

One problem came up however, communication in Japanese. My Japanese isn’t perfect, but for the most part I am able to express what I am thinking. The problem came when we wanted to discuss more technical aspects. I might know how to describe what I was thinking in English, but I found myself a lost for words when translating that into Japanese. Or Yamamoto-san might say the English word with a Japanese pronunciation. This wasn’t a huge problem but one thing that might have limited the depth of the conversation.

The whole internship was a good experience overall. One common benefit in an internship is getting paid to learn on the job. So it felt as if I was being paid to do what I was already teaching myself on my own. One thing I did wish I had more exposure to, was working with Ruby and the Ruby on Rails app more. While I do have some experience with Ruby and Ruby on Rails, I would have liked to solidify the knowledge more. This internship gave me more experience working at a startup, and I am excited to work on my own projects or find another internship opportunity back here in the States.