The Polyglot Programmer

In the recent months since I've entered the entrepreneural scene in Chicago, I've encountered quite a number of programmers: a decent number of veterans and an increasing number of new developers coming out of a new Ruby on Rails programming academy known as Starter League (formerly Code Academy). Most of the Starter League students and graduates I've met, were young, bright, optimistic and felt they could conquer the world with the tools at their disposal. However Chicago being home to 37Signals, birthplace of the Rails framework for Ruby, and Groupon, poster child for Ruby on Rails success gone wild, I see too many developers holding on to the tools that other companies have used to model their success. This is not a post about Ruby on Rails, Groovy on Grails, Scala on Lift, Java on Play etc.

The point is with all the success we've made in the open source world these last few years creating domain specific languages, and frameworks that specialize at one or more problem area in web development, a disturbing trend is arising. People are taking the position of defending the frameworks that they have learned and using it to bash other frameworks. Language bashing is going on all over the place. Ruby is a beautiful language, but it's not the only language. Rails is an awesome framework, but it's not the only framework. I once questioned a developer who was launching his startup at TechWeek, why he chose Ruby on Rails as his platform, and why he developed using a MacBook. I was actually geniunely interested. I was wondering if there were performance gains that Rails gave his application, and ability to handle concurrent connections? I was wondering if there was some special tool on the Mac that made it more well suited to development. The answer I got was astounding... "Because Groupon uses it!" Okay, that must be the dumbest reason to use a framework or buy a computer that I've ever heard. I also hear the same from the Scala crowd regarding Scala adoption, "Well, Twitter's using Scala now, so we're doing it too." Seriously? My dentist uses a sickle probe to clean plaque from my teeth, but I use a toothbrush and floss. Which one of us is right and which one of us is wrong? Neither. But my dentist has different goals than I do.

Somehow we got caught in this paradigm, where we believe that for one person to be right, the other person has to be wrong. So for one framework to be right, the other one has to be wrong. Several tools work for many jobs, and most frameworks are general purpose, as are most programming languages. But... and this is a big one, each have their own strengths and weaknesses which make them more or less appropriate for your project. Somehow, we're failing the newer generation of developers by failing to inform them that the biggest skill in development and eventually engineering is choosing the right tool for the job. If you don't know how to use the right tool, it's worth the investment to learn rather than try to use the wrong tool for the job. This is how we're going to create the next generation of programmers that we need, the pologlot programmer.

Learning the strengths and weaknesses of a few languages and frameworks can go a long way toward choosing which languages to begin your intial foray into polyglot programming.  While reading The Well-Grounded Java Developer, the author makes the case that languages and frameworks exist in Ola Bini's polyglot programming pyramid. To the bottom we have stable languages, in the middle we have dynamic languages and to the top we have domain specific languages. The higher up the pyramid we go, the more specific and newer the language and technology.  I would challenge every developer, or technical entrepreneur to choose the right tools for the right job that you're trying to address. While one might argue the learning curve on different languages make it impossible to do so, it will actually make you a better developer. Imagine a handy-man walking around with a hammer, and using it for every job, just because it was the first tool he learned to use. Sure he could hammer in my screws and they'd stay in place, but it would be an awful mess for the next person who needed to come by and unscrew it.

So do we need more Ruby developers in Chicago. Yes! But we need them as polyglot developers, not just programmers who know Ruby alone. And the same goes for the Java and .NET folks. 

A Data Driven Approach to Building a Startup

It's easy to brainstorm your next business idea and imagine hockey stick curves of success on your white-board or in the confines of a coffee shop where you think your idea could very well be the next Google or Groupon.  In the absence of data human beings are led by their personalities, so some will be either pessimistic, optimistic or just plain old neutral. Don't mistake enthusiasm for data.  In my startup's latest pivot, we were testing out a hypothesis and made huge assumptions about the size of the market and the products the market was demanding. Everyone, including myself, made the same bold assumptions, projecting their personalities on the imaginary consumer. While it would have been more effective if we had some in-depth user profiles to pass our idea by, we had even better - actual users.  Customer validation can make or break your best business idea. And the faster you get it in front of real customers, not friends and family, the faster you can test your assumptions and move on.

To test the market size, I wrote a simple web application (okay, simple for me... it involved data mining, lexical analysis, natural language processing, map reductions and so forth) to capture user sentiment on the products we were looking to pitch in front of users in the media that we were looking to pitch it - Twitter.  By narrowing our focus to the United States we were able to track daily user desire for new products.  A graph of the tweets by hour is shown below.


While this exercise was useful for scientific purposes, and the engineer in me would love to delve even deeper into the data to find other patterns, we did notice something right off the bat - the very low hourly tweet count for the products we were looking to pitch.  We weren't simply measuring mentions of the keyword, but an actual sentiment analysis for users who were ready to buy the new product.  So while we could spend weeks analyzing the data and ooing and ahhing over trends, or the fact that people tweet about personal needs during working hours and between primetime and midnight, the numbers were so insubstantial there was little to motivate even the most enthusiastic member of our team.

Without hard data, we could've spent weeks and months building a product for a market that was too small, and making a product that no one wants.  We were also testing another hypothesis at the same time to see how easy it would be to attract customers as part of our minimum viable product, that was also a flop. However the fact that we were able to do all of this in a week was amazing to me. I've seen many companies spend weeks and months thinking through an idea and sometimes even bringing it to market without ever asking if users want it.  Surely if making a minimum viable product takes as long as building your product, then bring your full product to market in a couple days.  However most business ideas take more than a couple days to bring to market.

Get out there and talk to customers. Or in this day of public online social expressions, simply tap into the social networks and listen to what people are saying and see if it matches up with your hypothesis.  Let the data lead you, not your assumptions.

One interesting tidbit from our little exercise, is that although people are a expressing a small number of needs online, the most ripe market is actually in shoes. Zappos if you're listening - there's a market here for you!

As for me and my team, we're going to learn and move on.  This is all part of building a lean startup.


Health & Technology

Over the past couple months I've started hanging around with some Chicagoland techies, and attending tech events around the city. One particular trend that I started noticing is the poor health choices that techies are given during events like hackathons, workshops, meetups or company launches. I initially thought the poor food choices were just constrained to my old job, but not as widespread across the industry.

Pockets of hope

The only other workplace that I had the opportunity to fraternize prior to June, was Google Chicago. They're an awesome office, and Google invests heavily in the health and well-being of their employees. Ask any Google software engineer to name their top 10 ten things about the company and the cafeteria will definitely come near the top of the list. Complete with SteelCase furniture, rest areas, massage therapists, two chefs and loads of healthy eating options they seem to be a place where health and wellness of employees is put to the front. Of course, even with their healthy eating options, employees still have wine, beer, sodas and a range of unhealthy options to contend with.

Hold the Pizza

Of the umpteen events that I attended, all but one was replete with pizza and beer, and the other event was catered with burritos and Coca-Cola. I didn't attend college in the US, so my only reference I have for this pizza and beer regime is from watching college movies. In Trinidad we had many other options for food; doubles, bake doubles, bake & shark on the beach and BBQ. Some research on this pizza epidemic shows that this stems back to WWII when wearied allied troops occupied Italy and were on the lookout for good food to satisfy their hunger. Pizza soon found international fame through the troops, and today it's the food of choice at hackathons and tech events alike. Even for events open to the public, with a high range of people who are allergic to either dairy or wheat, pizza still remains the go-to dish at events - much to the chagrin of either the health conscious or the allergic.

Doing some average and not-so-precise math, we can approximate 2 the average number of calories in a slice of 12 inch pizza to 200 calories. Then with 3 slices of pizza and 2 beers, we're looking at at least 900 calories... 900 empty calories. Seeing as pizza is mostly carbs and cheese we can see how this gets converted to sugar and cholesterol. Yum! It seems while the tech industry is out solving problems for the world we're creating quite a few health problems for ourselves. Although a warm slice of pizza initially makes your belly feel good, the end product usually sits like a log in your intestines while your body converts most of it to glucose. So there's that initial rush of energy followed by the crash when the energy runs out. The same goes for too much beer and wine, and over-consumption those have the adverse effect of making you look like an utter fool in front of potential business partners.


The next time you host a tech event, skip the empty calories. When your tempted to have sodas and beers also add bottles of water and fresh juices or vitamin water. Instead of RedBull or 5 Hour Energy, encourage participants to take a social walk, a short nap or even natural energy drinks. Instead of providing loads of carbs, provide a mix of carbs and protein like trail mixes and nuts. Think of a hackathon as more of a marathon, where its about the long haul not the short sprints.

If you've never been to a hackathon before, you can tell the experienced software engineers from the young 'uns. The wiser folk pack their own midnight snacks and have a water bottle with them, the inexperienced ones are running around at midnight hyped up on RedBull. It would be good the healthy generation of engineers shared the secrets of healthy development lifestyles with the next generation.

The last thing we need is for the intuitive development minds of this generation to be debilitated by poor health when we could so easily prevent it. Make healthy choices my friends.  And if it's within your power... skip the pizza.